Skip to main content

Python client for CloudShell Sandbox REST api - consume sandboxes via CI

Project description

Python 3.7 Lint and Test PyPI version

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cloudshell-sandbox-rest-0.1.1.tar.gz (6.0 kB view details)

Uploaded Source

Built Distribution

cloudshell_sandbox_rest-0.1.1-py3-none-any.whl (7.1 kB view details)

Uploaded Python 3

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

Hashes for cloudshell-sandbox-rest-0.1.1.tar.gz
Algorithm Hash digest
SHA256 0196bd56c4585a35ed4fc657d19e01fb0063b32dc5ea79ca235e3a3a4398a3de
MD5 d75a02fa5d51b5a956994e7fc19a31bc
BLAKE2b-256 890b8529dc934fc1b2bc46417142dced707e4840de5104424239b4e87fa7adbb

See more details on using hashes here.

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

Hashes for cloudshell_sandbox_rest-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 3d09c05703f462cfbe4afd2e70287bd500911fbc772c25f67d4977d6136be9d6
MD5 902f1f0c52130efa33dfff7bacc05a4d
BLAKE2b-256 e12909fd16671e055aa51e07b77994844d01a62053caeb6c5861b79c9c914320

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page