A cloudscale.ch API client for Python3 and your command line.
pip3 install -U cloudscale --user
export PATH=$PATH:$HOME/.local/bin
cloudscale-cli version
zsh:
eval"$(_CLOUDSCALE_CLI_COMPLETE=source_zsh cloudscale-cli)"bash:
eval"$(_CLOUDSCALE_CLI_COMPLETE=source cloudscale-cli)"Using the ENV CLOUDSCALE_API_TOKEN variable:
export CLOUDSCALE_API_TOKEN=<your token>
cloudscale-cli flavor listPassing the --api-token parameter:
cloudscale-cli server --api-token <your_token> create ...Creating an ini file .cloudscale.ini (leading dot) in your $HOME or a cloudscale.ini (without leading dot) in the CWD with the following schema:
[default]api_token = <token>The default profile taken if available is default. The profile can be chosen by passing --profile or CLOUDSCALE_PROFILE ENV variable.
export CLOUDSCALE_PROFILE=staging
[production]api_token = <token>
[staging]api_token = <token>Passing the command line option will overwrite the ENV var as one would expect:
cloudscale-cli server --profile production list
See all options:
$ cloudscale-cli
Usage: cloudscale-cli [OPTIONS] COMMAND [ARGS]...
Options:
-h, --help Show this message and exit.
Commands:
flavor
floating-ip
image
network
objects-user
region
server
server-group
subnet
version
volumecloudscale-cli server create --flavor flex-2 --name my-server --image centos-7 --ssh-key "$(cat ~/.ssh/id_rsa.pub)"cloudscale-cli server listcloudscale-cli server list --filter-tag project=geminicloudscale-cli server list --filter-tag projectcloudscale-cli server update <uuid> --tag project=apollo --tag stage=prodcloudscale-cli server update <uuid> --tag project=apollo --tag stage=prod --clear-tag statuscloudscale-cli server update <uuid> --tag project=apollo --tag stage=prod --clear-all-tagscloudscale-cli server stop <uuid>cloudscale-cli server start <uuid>importosfromcloudscaleimportCloudscale, CloudscaleApiExceptionapi_token=os.getenv('CLOUDSCALE_API_TOKEN')
cloudscale=Cloudscale(api_token=api_token)
flavors=cloudscale.flavor.get_all()
forflavorinflavors:
print(flavor['slug'])importosfromcloudscaleimportCloudscale, CloudscaleApiExceptionapi_token=os.getenv('CLOUDSCALE_API_TOKEN')
cloudscale=Cloudscale(api_token=api_token)
servers=cloudscale.server.get_all()
forserverinservers:
ifserver['status'] =="running":
print(server['name'])importosfromcloudscaleimportCloudscale, CloudscaleApiExceptionapi_token=os.getenv('CLOUDSCALE_API_TOKEN')
cloudscale=Cloudscale(api_token=api_token)
servers=cloudscale.server.get_all(filter_tag='project')
forserverinservers:
print(server['name'])importosfromcloudscaleimportCloudscale, CloudscaleApiExceptionapi_token=os.getenv('CLOUDSCALE_API_TOKEN')
cloudscale=Cloudscale(api_token=api_token)
servers=cloudscale.server.get_all(filter_tag='project=apollo')
forserverinservers:
print(server['name'])importosfromcloudscaleimportCloudscale, CloudscaleApiExceptionapi_token=os.getenv('CLOUDSCALE_API_TOKEN')
try:
cloudscale=Cloudscale(api_token=api_token)
server_group=cloudscale.server_group.get_by_uuid(uuid="5a1e5b28-d354-47a8-bfb2-01b048c20204")
print(server_group['name'])
exceptCloudscaleApiExceptionase:
print(e)importosfromcloudscaleimportCloudscale, CloudscaleApiExceptionapi_token=os.getenv('CLOUDSCALE_API_TOKEN')
try:
cloudscale=Cloudscale(api_token=api_token)
server=cloudscale.server.get_by_uuid(uuid="does-not-exist")
print(server['name'])
exceptCloudscaleApiExceptionase:
# Prints "API Response Error (404): Not found."print(e)
# Prints "404"print(e.status_code)
# Prints raw API responseprint(e.response)tox -e coverage