Skip to content
This repository was archived by the owner on May 5, 2020. It is now read-only.

resmo/python-cloudscale

 
 

Repository files navigation

license python versions status pypi version PyPI - Downloads codecov

Cloudscale

A cloudscale.ch API client for Python3 and your command line.

Install / Update

pip3 install -U cloudscale --user
export PATH=$PATH:$HOME/.local/bin
cloudscale-cli version

Command Line Interface

Autocompletion

zsh:

eval "$(_CLOUDSCALE_CLI_COMPLETE=source_zsh cloudscale-cli)"

bash:

eval "$(_CLOUDSCALE_CLI_COMPLETE=source cloudscale-cli)"

Authentication

Evironment variable

Using the ENV CLOUDSCALE_API_TOKEN variable:

export CLOUDSCALE_API_TOKEN=<your token>
cloudscale-cli flavor list

Command line argument

Passing the --api-token parameter:

cloudscale-cli server --api-token <your_token> create ...

Config file

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

Help

See all options:

$ cloudscale-cli --help
Usage: cloudscale-cli [OPTIONS] COMMAND [ARGS]...

Options:
  -h, --help  Show this message and exit.

Commands:
  version
  server
  server-group
  floating-ip
  flavor
  image
  region
  network

Usage Examples

Create a Server

cloudscale-cli server create --flavor flex-2 --name my-server --image centos-7 --ssh-keys "$(cat ~/.ssh/id_rsa.pub)"

List all Servers

cloudscale-cli server list

Get Servers having the tag project=gemini

cloudscale-cli server list --filter-tag project=gemini

Usage in Python

List the slug of all flavors

import os
from cloudscale import Cloudscale, CloudscaleApiException

api_token = os.getenv('CLOUDSCALE_API_TOKEN')

cloudscale = Cloudscale(api_token=api_token)
flavors = cloudscale.flavor.get_all()
for flavor in flavors:
    print(flavor['slug'])

Print the server names of running servers

import os
from cloudscale import Cloudscale, CloudscaleApiException

api_token = os.getenv('CLOUDSCALE_API_TOKEN')

cloudscale = Cloudscale(api_token=api_token)
servers = cloudscale.server.get_all()
for server in servers:
    if server['status'] == "running":
        print(server['name'])

Get resource by UUID

import os
from cloudscale import Cloudscale, CloudscaleApiException

api_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'])
except CloudscaleApiException as e:
    print(e)

Error handling

import os
from cloudscale import Cloudscale, CloudscaleApiException

api_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'])
except CloudscaleApiException as e:
    # Prints "API Response Error (404): Not found."
    print(e)
    # Prints "404"
    print(e.status_code)
    # Prints raw API response
    print(e.response)

About

A cloudscale.ch API client for Python3 and your command line.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages