################################################################# # # Copyright 2015 Ericsson AB # All Rights Reserved # # Author: Manuel Buil # Version: 0.1 # ################################################################# from novaclient.v2 import client as nova from keystoneclient.v2_0 import client as keystone from glanceclient import client as glance class OpenStack_API: def __init__(self, authurl, tenantName, tenantUser, tenantPass): self.authurl = authurl self.tenantName = tenantName self.tenantUser = tenantUser self.tenantPass = tenantPass def get_token(self): # Establish connection to Openstack controller osconn = keystone.Client(username=self.tenantUser, password=self.tenantPass, tenant_name=self.tenantName, auth_url=self.authurl) token = osconn.auth_token return token def get_endpoint(self, service_type, endpoint_type): # Establish connection to Openstack controller osconn = keystone.Client(username=self.tenantUser, password=self.tenantPass, tenant_name=self.tenantName, auth_url=self.authurl) endpoint = osconn.service_catalog.url_for( service_type=service_type, endpoint_type=endpoint_type) return endpoint def find_image(self, SF_type): # Find in glance the image that matches the SF we want to deploy token = self.get_token() endpoint = self.get_endpoint('image', 'publicURL') osconn = glance.Client('1', endpoint=endpoint, token=token) image_list = osconn.images.list() for item in image_list: try: image_type = item.properties.get('image_type', None) image_id = None if (image_type == SF_type): image_id = item.id break except: print("Errrorr") # Search image which matches the SF type return image_id def create_vm(self, name, image, flavor, nics=None): # Establish connection to Openstack controller osconn = nova.Client(self.tenantUser, self.tenantPass, self.tenantName, self.authurl, service_type="compute") try: if nics is None: vm = osconn.servers.create(name, image, flavor) else: vm = osconn.servers.create(name, image, flavor, nics) except: print("Something wrong happened while creating the VM") vm = None return vm