Python bindings and utils for CloudCIX API.
Project description
Python SDK for CloudCIX API
An Python SDK implementation to make the work with CloudCIX API fun.
API Docs: http://docs.cloudcix.com
CloudCIX is developed by CIX: http://www.cix.ie
Installation
pip install cloudcix
Required settings
When you run your project you should set the settings variable CLOUDCIX_SETTINGS_MODULE to point to the module that contains all the necessary settings.
Example when used with django (in manage.py add):
import os os.environ['CLOUDCIX_SETTINGS_MODULE'] = 'django.conf.settings'
Required CLOUDCIX and OPENSTACK settings
CLOUDCIX_SERVER_URL = 'https://api.cloudcix.com' CLOUDCIX_API_USERNAME = 'user@cloudcix.com' CLOUDCIX_API_PASSWORD = 'super53cr3t3' CLOUDCIX_API_ID_MEMBER = 2243 OPENSTACK_KEYSTONE_URL = 'http://keystone.cloudcix.com:5000/v3'
As an alternative when used from console the settings can be set as environment variables
os.environ['CLOUDCIX_SERVER_URL'] = 'https://api.cloudcix.com/'
utils method get_admin_token and get_admin_session, will require you to set following environment variables as well
os.environ['CLOUDCIX_API_USERNAME'] = 'user@cloudcix.com' os.environ['CLOUDCIX_API_PASSWORD'] = 'super53cr3t3' os.environ['CLOUDCIX_API_ID_MEMBER'] = '2243' os.environ['OPENSTACK_KEYSTONE_URL'] = 'http://keystone.cloudcix.com:5000/v3'
Sample usage
Use the language service
from cloudcix import api from cloudcix.utils import get_admin_session # get an admin token token = get_admin_session().get_token() # call a sample membership service api.membership.language.list()
Create token for a User, and read the User Address
from cloudcix import api from cloudcix.cloudcixauth import CloudCIXAuth from cloudcix.utils import KeystoneSession, KeystoneClient, \ get_admin_client from keystoneclient.exceptions import NotFound # create auth payload auth = CloudCIXAuth( auth_url=settings.OPENSTACK_KEYSTONE_URL, username='john@doe.com', password='ubersecret', idMember=2243) auth_session = KeystoneSession(auth=auth) user_token = auth_session.get_token() token_data = auth_session.auth.auth_ref # for the sake of example check that the token is valid # you should use your admin credentials to check user's token admin_cli = get_admin_client() try: admin_cli.tokens.validate(user_token) except NotFound as e: # Token is invalid, re-raise the exception raise e # token is valid, continue # Finally, read the address response = api.membership.address.read( pk=token_data['user']['address']['idAddress'], token=user_token) # check the response status to ensure we've been able to read the address if response.status_code != 200: # we couldn't read the address return response.content address = response.json()['content'] # Finally delete the token admin_cli.tokens.revoke_token(user_token) # And make sure it's not longer valid try: admin_cli.tokens.validate(user_token) except NotFound as e: # Token is not longer valid pass
Given an expiring token, get a new token for further calls
from cloudcix.utils import KeystoneTokenAuth, KeystoneSession expiring_token = 'xyz123' auth = KeystoneTokenAuth( auth_url=settings.OPENSTACK_KEYSTONE_URL, token=expiring_token) new_token = KeystoneSession(auth=auth).get_token()