NebulaPythonSDK is a Pythonic SDK to manage Nebula container orchestrator
Project description
Nebula-Python-SDK
Travis CI unit tests & auto PyPi push status:
An SDK for managing nebula via python.
translates all of Nebula API calls to something more pythonic.
Source code is available at github
How To Use
first get NebulaPythonSDK onto your machine
# Install from PyPi
pip install NebulaPythonSDK
now use it in your code
# Load API wrapper from library
from NebulaPythonSDK import Nebula
# Create API object.
# port defaults to 80, protocol defaults to "http" & request_timeout defaults to 60 if any of them is not set.
connection = Nebula(username="your_nebula_user", password="your_nebula_pass", host="nebula.example.com", port=80, protocol="http", request_timeout=60)
# List apps
app_list = connection.list_apps()
# List app info
app_config = connection.list_app_info("app_name")
# Create app
app_conf = {
"containers_per_cpu": 8,
"env_vars": {
"test": "blabla",
"test3t2t32": "tesg4ehgee"
},
"docker_ulimits": [],
"networks": ["nebula"],
"running": True,
"rolling_restart": False,
"volumes": ["/tmp:/tmp/1", "/var/tmp/:/var/tmp/1:ro"],
"containers_per": {
"cpu": 6
},
"starting_ports": [
{
"81": 80
}
],
"docker_image": "httpd",
"privileged": False,
"devices": []
}
connection.create_app("app_name", app_conf)
# create device group
device_group_config = {"apps": ["app_name"]}
connection.create_device_group("device_group_name", device_group_config)
# list device group
connection.list_device_group("device_group_name")
# list device group info
connection.list_device_group_info("device_group_name")
# ping api
connection.check_api()
# delete app
connection.delete_app("app_name")
# stop app
connection.stop_app("app_name")
# start app
connection.start_app("app_name")
# restart app
connection.restart_app("app_name")
# update app
connection.update_app("app_name", app_conf)
# update app force all params - will reset all params to default values if not declared and raise an error for params
# that are required but not given, similar to the POST update of the API
connection.update_app("app_name", app_conf, force_all=True)
# prune images on all device groups
connection.prune_images()
# delete device_group
connection.delete_device_group("device_group_name")
# prune images on a selected device groups
connection.prune__device_group_images("device_group_name")
# update device group
connection.update_device_group("device_group_name", device_group_config)
# list paginated reports
connection.list_reports()
# create a user
user_config = {"password": "user_password", "token": "user_token"}
connection.create_user("user_name", user_config)
# list user info
connection.list_user("user_name")
# list all users
connection.list_users()
# update a user
user_config = {"password": "new_password", "token": "new_token"}
connection.update_user("user_name", user_config)
# refresh a user token
connection.refresh_user_token("user_name")
# delete a user
connection.delete_user("user_name")
# create a user group
user_group_config = {
"group_members": [
"user_name"
],
"pruning_allowed": True,
"apps": {
"app_name": "rw"
},
"device_groups": {
"device_group_name": "ro"
},
"admin": False
}
connection.create_user_group("user_group_name", user_group_config)
# list user group info
connection.list_user_group("user_group_name")
# list all users group
connection.list_user_groups()
# update a user group
user_group_config = {"admin": False}
connection.update_user_group("user_group_name", user_group_config)
# delete a user group
connection.delete_user_group("user_group_name")
# list all cron jobs
connection.list_cron_jobs()
# delete a cron job
connection.delete_cron_job("cron_job_name")
# list a cron job
connection.list_cron_job_info("cron_job_name")
# create a cron job
cron_job_config = {
"env_vars": {"test": "test123"},
"docker_image" : "nginx",
"running": True,
"volumes": [],
"networks": ["nebula", "bridge"],
"devices": [],
"privileged": False,
"schedule": "0 * * * *"
}
connection.create_cron_job("cron_job_name", cron_job_config)
# update a cron job
cron_job_config = {
"schedule": "5 * * * *"
}
connection.update_cron_job("cron_job_name", cron_job_config)
# update a cron job force all params - will reset all params to default values if not declared and raise an error for
# params that are required but not given, similar to the POST update of the API
cron_job_config = {
"schedule": "5 * * * *",
"docker_image" : "nginx"
}
connection.update_cron_job("cron_job_name", cron_job_config, force_all=True)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
NebulaPythonSDK-2.8.0.tar.gz
(8.0 kB
view details)
Built Distribution
File details
Details for the file NebulaPythonSDK-2.8.0.tar.gz
.
File metadata
- Download URL: NebulaPythonSDK-2.8.0.tar.gz
- Upload date:
- Size: 8.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.49.0 CPython/3.7.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 054df103301176aedd2153df57eb528a97cd2bd571d4d91390b48551f90b002d |
|
MD5 | 7ea989c8d5e987836a630221f5fb6da5 |
|
BLAKE2b-256 | 66054359c9122309c2e6f917f30b9b72811b1e6c075c73e17f3856163bfa0a0a |
File details
Details for the file NebulaPythonSDK-2.8.0-py3-none-any.whl
.
File metadata
- Download URL: NebulaPythonSDK-2.8.0-py3-none-any.whl
- Upload date:
- Size: 12.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.49.0 CPython/3.7.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a5d1bc1ad386f11ced168eff6c8b3a17dd2d19eb17faf483fd35215817247fa3 |
|
MD5 | 575d0cfeb72c65aea739605ff6099ea7 |
|
BLAKE2b-256 | 671711f5b365738da0e51bf123385dd964ba3951edf8dab83788968060353fd0 |