예제 #1
0
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)
예제 #2
0
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
	)
예제 #3
0
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
예제 #4
0
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
예제 #5
0
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)
예제 #6
0
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)
예제 #7
0
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		
예제 #8
0
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