Foxx

Python-arango provides support for Foxx, a microservice framework which lets you define custom HTTP endpoints to extend ArangoDB’s REST API. For more information, refer to ArangoDB manual.

Example:

from arango import ArangoClient

# Initialize the ArangoDB client.
client = ArangoClient()

# Connect to "_system" database as root user.
db = client.db('_system', username='root', password='passwd')

# Get the Foxx API wrapper.
foxx = db.foxx

# Define the test mount point.
service_mount = '/test_mount'

# List services.
foxx.services()

# Create a service using source on server.
foxx.create_service(
    mount=service_mount,
    source='/tests/static/service.zip',
    config={},
    dependencies={},
    development=True,
    setup=True,
    legacy=True
)

# Update (upgrade) a service.
service = db.foxx.update_service(
    mount=service_mount,
    source='/tests/static/service.zip',
    config={},
    dependencies={},
    teardown=True,
    setup=True,
    legacy=False
)

# Replace (overwrite) a service.
service = db.foxx.replace_service(
    mount=service_mount,
    source='/tests/static/service.zip',
    config={},
    dependencies={},
    teardown=True,
    setup=True,
    legacy=True,
    force=False
)

# Get service details.
foxx.service(service_mount)

# Manage service configuration.
foxx.config(service_mount)
foxx.update_config(service_mount, config={})
foxx.replace_config(service_mount, config={})

# Manage service dependencies.
foxx.dependencies(service_mount)
foxx.update_dependencies(service_mount, dependencies={})
foxx.replace_dependencies(service_mount, dependencies={})

# Toggle development mode for a service.
foxx.enable_development(service_mount)
foxx.disable_development(service_mount)

# Other miscellaneous functions.
foxx.readme(service_mount)
foxx.swagger(service_mount)
foxx.download(service_mount)
foxx.commit(service_mount)
foxx.scripts(service_mount)
foxx.run_script(service_mount, 'setup', [])
foxx.run_tests(service_mount, reporter='xunit', output_format='xml')

# Delete a service.
foxx.delete_service(service_mount)

You can also manage Foxx services by using zip or Javascript files directly:

from arango import ArangoClient

# Initialize the ArangoDB client.
client = ArangoClient()

# Connect to "_system" database as root user.
db = client.db('_system', username='root', password='passwd')

# Get the Foxx API wrapper.
foxx = db.foxx

# Define the test mount point.
service_mount = '/test_mount'

# Create a service by providing a file directly.
foxx.create_service_with_file(
    mount=service_mount,
    filename='/home/user/service.zip',
    development=True,
    setup=True,
    legacy=True
)

# Update (upgrade) a service by providing a file directly.
foxx.update_service_with_file(
    mount=service_mount,
    filename='/home/user/service.zip',
    teardown=False,
    setup=True,
    legacy=True,
    force=False
)

# Replace a service by providing a file directly.
foxx.replace_service_with_file(
    mount=service_mount,
    filename='/home/user/service.zip',
    teardown=False,
    setup=True,
    legacy=True,
    force=False
)

# Delete a service.
foxx.delete_service(service_mount)

See Foxx for API specification.