Skip to content

Repository files navigation

AsyncOpenStackClient

image0image1

Introduction

The AsyncOpenStackClient is a asynchronous rest wrapper for the OpenStack API. It provides a nice abstraction for authentication. For method specification, see the official OpenStack documentation: https://docs.openstack.org/queens/api/.

Installation

Use pip:

pip install AsyncOpenStackClient

Usage

fromasyncopenstackclientimportNovaClient, GlanceClient, CinderClient, AuthPassword# you can either pass credentials explicitly (as shown below)# or use environmental variables from OpenStack RC file# https://docs.openstack.org/mitaka/cli-reference/common/cli_set_environment_variables_using_openstack_rc.htmlauth=AuthPassword(
auth_url='https://keystone:5999/v3'username='USER', password='PASS',
project_name='my-project',
user_domain_name='default',
project_domain_name='foo.bar'
)
# alternatively you can also use application_credentials to authenticate with the OpenStack Keystone API# https://docs.openstack.org/keystone/queens/user/application_credentials.htmlalternative_auth=AuthPassword(
auth_url='https://keystone:5999/v3'application_credential_id="ID",
application_credential_secret="SECRET"
)
nova=NovaClient(session=auth)
glance=GlanceClient(session=auth)
cinder=CinderClient(session=auth)
# api url for each service will be taken from catalog,# but you may pass `api_url` param to force custom url eg.# nova = NovaClient(session=auth, api_url='http://my-local-nova:9876/v2/')awaitnova.init_api()
awaitglance.init_api()
awaitcinder.init_api()
servers=awaitnova.servers.list(name='testvm')
vm=awaitnova.servers.get(server_id)
action_spec= {'os-stop': None}
awaitnova.servers.run_action(server_id, **action_spec)
specs= {
"name": 'some_name',
"flavorRef": 'flavor_id',
"imageRef": 'image_id',
"security_groups": [{'name': 'group1'}, {'name': 'group2'}]
"user_data": base64.b64encode(userdata).decode('utf-8')
}
response=awaitnova.servers.create(server=specs)
print(response)
volume= {"size": 200,
"imageRef": "image_id",
"name": "some_name"}
response=awaitcinder.volumes.create(volume=volume)
print(response)

Available functions

License

Apache License 2.0

About

Asyncio wrapper to OpenStack API

Topics

Resources

Stars

18 stars

Watchers

12 watching

Forks

Releases

Packages

Used by

Contributors

Languages