def keystone_client(): openstack = OpenStack.get() # authenticate with keystone return ksclient.Client(auth_url=openstack.authurl, username=openstack.osusername, password=openstack.ospassword, tenant_id=openstack.tenantid)
def keystone_client(): openstack = OpenStack.get() # authenticate with keystone return ksclient.Client( auth_url = openstack.authurl, username = openstack.osusername, password = openstack.ospassword, tenant_id = openstack.tenantid )
def nova_connection(): # openstack connection openstack = OpenStack.get() # establish connection to openstack connection = novaclient.Client(openstack.osusername, openstack.ospassword, openstack.tenantname, openstack.authurl, service_type="compute") return connection
def nova_connection(): # openstack connection openstack = OpenStack.get() # establish connection to openstack connection = novaclient.Client( openstack.osusername, openstack.ospassword, openstack.tenantname, openstack.authurl, service_type="compute" ) return connection
def glance_client(): keystone = keystone_client() openstack = OpenStack.get() service_type = "image" # get list of endpoints for image and our region from keystone endpoints = keystone.service_catalog.get_endpoints( service_type=service_type, region_name=openstack.region)[service_type] # if len is 0 there is no endpoint for us available if len(endpoints) == 0: raise Exception('No endpoints for service type "{0}".'.format(service_type)) # get public url endpoint = endpoints[0]['publicURL'] # establish connection to glance return glanceclient.Client('1', endpoint=endpoint, token=keystone.auth_token, timeout=10)
def glance_client(): keystone = keystone_client() openstack = OpenStack.get() service_type = "image" # get list of endpoints for image and our region from keystone endpoints = keystone.service_catalog.get_endpoints( service_type=service_type, region_name=openstack.region)[service_type] # if len is 0 there is no endpoint for us available if len(endpoints) == 0: raise Exception( 'No endpoints for service type "{0}".'.format(service_type)) # get public url endpoint = endpoints[0]['publicURL'] # establish connection to glance return glanceclient.Client('1', endpoint=endpoint, token=keystone.auth_token, timeout=10)
def get_stats(): # default response response = {"response": "success", "result": {"message": ""}} # openstack settings openstack = OpenStack.get() # try establishing nova connection try: nova = nova_connection() except: response['response'] = "error" response['result'] = "Can't communicate with OpenStack cluster." app.logger.error("Can't communicate with OpenStack cluster.") return response try: # grab the infos from openstack cluster_quota = nova.quotas.get(openstack.tenantid) # build the stats object stats = { "quota": { "cores": cluster_quota.cores, "fixips": cluster_quota.fixed_ips, "instances": cluster_quota.instances, "ram": cluster_quota.ram }, "hypervisors": [] } except: response['response'] = "error" response['result']['message'] = "OpenStack quota list unavailable." app.logger.error("The OpenStack cluster is refusing to provide quota information.") return response # try to talk to the hypervisor list function try: cluster_hypervisors = nova.hypervisors.list() # loop through hypervisors for cluster_hypervisor in cluster_hypervisors: hypervisor = {} hypervisor['hypervisor_hostname'] = cluster_hypervisor.hypervisor_hostname hypervisor['is_loaded'] = cluster_hypervisor.is_loaded() hypervisor['current_workload'] = cluster_hypervisor.current_workload hypervisor['local_gb'] = cluster_hypervisor.local_gb hypervisor['local_gb_used'] = cluster_hypervisor.local_gb_used hypervisor['memory_mb'] = cluster_hypervisor.memory_mb hypervisor['memory_mb_used'] = cluster_hypervisor.memory_mb_used hypervisor['free_disk_gb'] = cluster_hypervisor.free_disk_gb hypervisor['free_ram_mb'] = cluster_hypervisor.free_ram_mb hypervisor['vcpus'] = cluster_hypervisor.vcpus hypervisor['vcpus_used'] = cluster_hypervisor.vcpus_used hypervisor['running_vms'] = cluster_hypervisor.running_vms hypervisor['disk_available_least'] = cluster_hypervisor.disk_available_least stats['hypervisors'].append(hypervisor) except: # nevermind then app.logger.error("The OpenStack cluster is refusing to provide hypervisor information.") pass # return one or both of quota and hypervisor stats response['response'] = "success" response['result']['message'] = "OpenStack stats detail." response['result']['stats'] = stats return response
def get_stats(): # default response response = {"response": "success", "result": {"message": ""}} # openstack settings openstack = OpenStack.get() # try establishing nova connection try: nova = nova_connection() except: response['response'] = "error" response['result'] = "Can't communicate with OpenStack cluster." app.logger.error("Can't communicate with OpenStack cluster.") return response try: # grab the infos from openstack cluster_quota = nova.quotas.get(openstack.tenantid) # build the stats object stats = { "quota": { "cores": cluster_quota.cores, "fixips": cluster_quota.fixed_ips, "instances": cluster_quota.instances, "ram": cluster_quota.ram }, "hypervisors": [] } except: response['response'] = "error" response['result']['message'] = "OpenStack quota list unavailable." app.logger.error( "The OpenStack cluster is refusing to provide quota information.") return response # try to talk to the hypervisor list function try: cluster_hypervisors = nova.hypervisors.list() # loop through hypervisors for cluster_hypervisor in cluster_hypervisors: hypervisor = {} hypervisor[ 'hypervisor_hostname'] = cluster_hypervisor.hypervisor_hostname hypervisor['is_loaded'] = cluster_hypervisor.is_loaded() hypervisor[ 'current_workload'] = cluster_hypervisor.current_workload hypervisor['local_gb'] = cluster_hypervisor.local_gb hypervisor['local_gb_used'] = cluster_hypervisor.local_gb_used hypervisor['memory_mb'] = cluster_hypervisor.memory_mb hypervisor['memory_mb_used'] = cluster_hypervisor.memory_mb_used hypervisor['free_disk_gb'] = cluster_hypervisor.free_disk_gb hypervisor['free_ram_mb'] = cluster_hypervisor.free_ram_mb hypervisor['vcpus'] = cluster_hypervisor.vcpus hypervisor['vcpus_used'] = cluster_hypervisor.vcpus_used hypervisor['running_vms'] = cluster_hypervisor.running_vms hypervisor[ 'disk_available_least'] = cluster_hypervisor.disk_available_least stats['hypervisors'].append(hypervisor) except: # nevermind then app.logger.error( "The OpenStack cluster is refusing to provide hypervisor information." ) pass # return one or both of quota and hypervisor stats response['response'] = "success" response['result']['message'] = "OpenStack stats detail." response['result']['stats'] = stats return response