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'])