Skip to content
Snippets Groups Projects

OpenStack Python API

  • Clone with SSH
  • Clone with HTTPS
  • Embed
  • Share
    The snippet can be accessed without any authentication.
    Authored by Claudio Pisa
    Edited
    openstackapi.py 2.60 KiB
    from keystoneauth1.identity import v3
    from keystoneauth1 import session
    import os
    
    auth_url = os.environ.get('OS_AUTH_URL')
    ac_id = os.environ.get('OS_APPLICATION_CREDENTIAL_ID')
    ac_secret=os.environ.get('OS_APPLICATION_CREDENTIAL_SECRET')
    region_name = os.environ.get('OS_REGION_NAME')
    
    auth = v3.ApplicationCredential(
                                    auth_url=auth_url,
                                    application_credential_id=ac_id,
                                    application_credential_secret=ac_secret
                                    )
    mysession = session.Session(auth=auth)
    
    #-----------------------------------------------------------------
    
    
    from keystoneclient.v3 import client as keystone
    keystone_client = keystone.Client(session=mysession)
    
    projects = keystone_client.projects.list()
    p = projects[42]
    print(type(p))
    print(p.id)
    print(p.name)
    
    users = keystone_client.users.list()
    u = users[42]
    print(type(u))
    print(u.id)
    print(u.email)
    
    #-----------------------------------------------------------------
    
    import novaclient
    nova_client = novaclient.client.Client(novaclient.API_MAX_VERSION, session=mysession, region_name=region_name)
    
    flavors = nova_client.flavors.list()
    hypervisors = nova_client.hypervisors.list()
    my_servers = nova_client.servers.list()
    
    help(nova_client.usage.list)
    import datetime
    usage = nova_client.usage.list(datetime.datetime(2019,1,1), datetime.datetime(2019,04,30))
    us = usage[42]
    print(us.tenant_id)
    print(us.total_vcpus_usage)
    
    #-----------------------------------------------------------------
    
    import glanceclient
    glance_client = glanceclient.client.Client(version='2', session=mysession)
    
    images = glance_client.images.list()
    print(type(images))
    imagelist = list(images)
    i = imagelist[42]
    print(i[name])
    print(i[status])
    print(i[size])
    
    
    #-----------------------------------------------------------------
    
    
    import cinderclient.client
    cinder_client = cinderclient.client.Client('3', session=mysession, region_name=region_name)
    
    volumes = cinder_client.volumes.list()
    print(len(volumes))
    help(cinder_client.volumes.list)
    volumes = cinder_client.volumes.list(detailed=True, search_opts={'all_tenants': True})
    v = volumes[42]
    print(type(v))
    print(v.name)
    help(v)
    
    
    #-----------------------------------------------------------------
    
    
    import neutronclient.v2_0.client
    neutron_client = neutronclient.v2_0.client.Client(session=mysession, region_name=region_name)
    
    routers = neutron_client.list_routers()
    r = routers[routers][42]
    print(type(r))
    print(r[name])
    
    floatingips = neutron_client.list_floatingips()
    f = floatingips['floatingips'][42]
    print(type(f))
    print(f['floating_ip_address'])
    
    
    
    
    
    
    0% Loading or .
    You are about to add 0 people to the discussion. Proceed with caution.
    Finish editing this message first!
    Please register or to comment