Python client for CloudShell Sandbox REST api - consume sandboxes via CI
Project description
Cloudshell Sandbox Rest Api Client
A python client wrapper around the cloudshell sandbox api . No additional library object wrapping implemented. All methods return the json.loads python object in the shape of the documented json response. See the documentation for details.
Installation
pip install cloudshell-sandbox-rest
Basic Usage
from cloudshell.sandbox_rest.sandbox_api import SandboxRestApiSession
# pull in api user credentials
CS_SERVER = "localhost"
CS_USER = "admin"
CS_PASSWORD = "admin"
CS_DOMAIN = "Global"
TARGET_BLUEPRINT = "<MY_BLUEPRINT_NAME>"
DEPLOYED_SANDBOX_NAME = "My Rest Api Blueprint"
api = SandboxRestApiSession(host=CS_SERVER, username=CS_USER, password=CS_PASSWORD, domain=CS_DOMAIN)
start_response = api.start_sandbox(blueprint_id=TARGET_BLUEPRINT, sandbox_name=DEPLOYED_SANDBOX_NAME)
sandbox_id = start_response["id"]
components_response = api.get_sandbox_components(sandbox_id)
print(f"total components in sandbox: {len(components_response)}")
Context Manager Usage
Using the api session with a context manager "with" statement will log out and invalidate the token for you.
from cloudshell.sandbox_rest.sandbox_api import SandboxRestApiSession
CS_SERVER = "localhost"
CS_USER = "admin"
CS_PASSWORD = "admin"
CS_DOMAIN = "Global"
TARGET_BLUEPRINT = "<MY_BLUEPRINT_NAME>"
DEPLOYED_SANDBOX_NAME = "My Rest Api Blueprint"
api = SandboxRestApiSession(host=CS_SERVER, username=CS_USER, password=CS_PASSWORD, domain=CS_DOMAIN)
with api:
start_response = api.start_sandbox(blueprint_id=TARGET_BLUEPRINT, sandbox_name=DEPLOYED_SANDBOX_NAME)
sandbox_id = start_response["id"]
components_response = api.get_sandbox_components(sandbox_id)
print(f"total components in sandbox: {len(components_response)}")
print(f"session token is: {api.token}")
print(f"session token outside context manager: {api.token}")
- NOTE: api login happens during init, not on entering context
- context exit invalidates token
Instantiate Session with Token
Common use case is for admin to pull user token and start a session on their behalf. This can be done as seen in example below.
from cloudshell.sandbox_rest.sandbox_api import SandboxRestApiSession
# admin credentials
CS_SERVER = "localhost"
CS_USER = "admin"
CS_PASSWORD = "admin"
ADMIN_DOMAIN = "Global"
# end user details
TARGET_END_USER = "end user"
TARGET_USER_DOMAIN = "<END_USERS_DOMAIN>"
TARGET_BLUEPRINT = "<MY_BLUEPRINT_NAME>"
DEPLOYED_SANDBOX_NAME = "My Rest Api Blueprint"
admin_api = SandboxRestApiSession(host=CS_SERVER, username=CS_USER, password=CS_PASSWORD, domain=ADMIN_DOMAIN)
with admin_api:
user_token = admin_api.get_token_for_target_user(TARGET_END_USER)
user_api = SandboxRestApiSession(host=CS_SERVER, token=user_token, domain=TARGET_USER_DOMAIN)
with user_api:
start_response = user_api.start_sandbox(blueprint_id=TARGET_BLUEPRINT, sandbox_name=DEPLOYED_SANDBOX_NAME)
sandbox_id = start_response["id"]
components_response = user_api.get_sandbox_components(sandbox_id)
print(f"total components in sandbox: {len(components_response)}")
- Note the use of nested context managers to manage the different session tokens
License
Free Software: MIT License
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
Built Distribution
File details
Details for the file cloudshell-sandbox-rest-0.1.1.tar.gz
.
File metadata
- Download URL: cloudshell-sandbox-rest-0.1.1.tar.gz
- Upload date:
- Size: 6.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0196bd56c4585a35ed4fc657d19e01fb0063b32dc5ea79ca235e3a3a4398a3de |
|
MD5 | d75a02fa5d51b5a956994e7fc19a31bc |
|
BLAKE2b-256 | 890b8529dc934fc1b2bc46417142dced707e4840de5104424239b4e87fa7adbb |
File details
Details for the file cloudshell_sandbox_rest-0.1.1-py3-none-any.whl
.
File metadata
- Download URL: cloudshell_sandbox_rest-0.1.1-py3-none-any.whl
- Upload date:
- Size: 7.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3d09c05703f462cfbe4afd2e70287bd500911fbc772c25f67d4977d6136be9d6 |
|
MD5 | 902f1f0c52130efa33dfff7bacc05a4d |
|
BLAKE2b-256 | e12909fd16671e055aa51e07b77994844d01a62053caeb6c5861b79c9c914320 |