CloudCIX APIs

Installation

Prerequisites

  1. Create an account on the CloudCIX Platform - Register

  2. Retrieve your CloudCIX Memebr API Key - Under the My Membership tab in the sidebar, click on Member Details - The API Key be available at the top of the form

Python

pip3 install -U "cloudcix>=5.0.0"

Required settings

# File my_project/my_settings.py

CLOUDCIX_API_URL="https://legacyapi.api.cloudcix.com/"
CLOUDCIX_API_V2_URL="https://api.cloudcix.com/"
CLOUDCIX_API_VERSION="5.0"
CLOUDCIX_API_USERNAME="user@example.com"  # Email Address registered in Prerequisites
CLOUDCIX_API_PASSWORD=""                   # Password for email registered
CLOUDCIX_API_KEY=""                       # CloudCIX Memebr API Key

Sample Python Script

# File my_project/script.py

import os

os.environ.setdefault('CLOUDCIX_SETTINGS_MODULE', 'my_settings')

# NOTE: environ variables must be set before importing cloudcix

from cloudcix.api.membership import Membership
from cloudcix.api.compute import Compute

# Get a util function to get a session using the credentials in your settings file
from cloudcix.auth import get_admin_token

# ================================================================= #
#                      Get CloudCIX Token                           #
# ================================================================= #
token = get_admin_token()

params = {'limit': 10, 'page': 0}

# ================================================================= #
#                      List Compute Projects                        #
# ================================================================= #
response = Compute.project.list(token=token, params=params)

# Print out the json of the response data
print(response.json())   # {'content': [...], '_metadata': {...}}

HTTP Requests

from cloudcix.rcc import comms_http, CONNECTION_ERROR

CLOUDCIX_API_SUCCESS_CODES = [200, 201, 204]


def success(response, payload_number): # Error check function
    if response['channel_code'] == CONNECTION_ERROR:
        print(f'{payload_number}: {response["channel_message"]}')
        print(f'{payload_number}: {response["channel_error"]}')
        return False
    elif response['payload_code'] not in CLOUDCIX_API_SUCCESS_CODES:
        print(f'{payload_number}: {response["payload_message"]}')
        print(f'{payload_number}: {response["payload_error"]}')
        return False
    else:
        return True

membership_url = 'https://membership.api.cloudcix.com/'
compute_url = 'https://compute.api.cloudcix.com/'

# ================================================================= #
#                      Get CloudCIX Token                           #
# ================================================================= #
# auth/login/
data = {
    'email': '',     # Email Address registered in Prerequisites
    'password': '',  # Password for account registered in Prerequisites
    'api_key': '',   # CloudCIX Memebr API Key
}

# response = requests.post(f'{membership_url}auth/login/', data=data)
response = comms_http(
    url=f'{membership_url}auth/login/',
    method='POST',
    payload=data,
)
if not success(response, 1): # False
    exit()

token = response['payload_message']['token']  # Valid for two hours
headers = {'X-Auth-Token': token}             # Add token to headers

# ================================================================= #
#                      List Compute Projects                        #
# ================================================================= #

# response = requests.get(f'{compute_url}project/', headers=headers)
response = comms_http(
    url=f'{compute_url}project/',
    method='GET',
    headers=headers,
)
if not success(response, 2): # False
    exit()

projects = response['payload_message']['content']
for project in projects:
    print(project['name'])