diff options
-rw-r--r-- | heatbridge/heatbridge/AAIManager.py | 62 | ||||
-rw-r--r-- | heatbridge/heatbridge/OpenstackManager.py | 32 |
2 files changed, 54 insertions, 40 deletions
diff --git a/heatbridge/heatbridge/AAIManager.py b/heatbridge/heatbridge/AAIManager.py index 70f974b..06d1553 100644 --- a/heatbridge/heatbridge/AAIManager.py +++ b/heatbridge/heatbridge/AAIManager.py @@ -2,10 +2,10 @@ from collections import defaultdict class AAIManager: """AAIManager manages the connection state and interaction between an aai instance and the heatbridge.""" - + def __init__(self, context): self.openstack_context = context; - + def get_link(self, links, link_type): for link in links: if link['rel'] == link_type: @@ -15,19 +15,19 @@ class AAIManager: transactions = defaultdict(list); for arg in args: transactions['transactions'].extend(arg); - return transactions; - + return transactions; + def create_put(self, *args): put = defaultdict(list); put['put'].extend(args); return put; - + def create_vserver_put(self, server_info_dict, volumes_dict): #setup put = dict(); body = dict(); put['body'] = body; - + #required fields put['uri'] = "/cloud-infrastructure/cloud-regions/cloud-region/" + self.openstack_context.owner \ + "/" + self.openstack_context.region + "/tenants/tenant/" + self.openstack_context.tenant \ @@ -40,14 +40,14 @@ class AAIManager: #body['in-maint']; #body['is-closed-loop-disabled']; #body['resource-version']; - + #optional fields volumes = [] body['volumes'] = volumes for volume in volumes_dict: volumes['volume'] = self.create_volume(volume); - - relations = []; + + relations = []; if self.__exists(server_info_dict['metadata'], 'vnf_id'): data = self.__create_relationship_data("generic-vnf", "vnf-id", server_info_dict['metadata']['vnf_id']); list = self.__create_relationship_data_list(data); @@ -90,22 +90,22 @@ class AAIManager: relationship_data['relationship-key'] = parent + "." + key; relationship_data['relationship-value'] = value; return relationship_data; - + def create_volume(self, volume_dict): #setup volume = dict() volume['volume-id'] = volume_dict['volume']['id'] #volume['volume-selflink'] #volume['resource-version'] - #volume['relationship-list'] + #volume['relationship-list'] return volume; - + def create_flavor_put(self, flavor_dict): #setup put = dict(); body = dict() put['body'] = body - + #required fields put['uri'] = "/cloud-infrastructure/cloud-regions/cloud-region/" + self.openstack_context.owner \ + "/" + self.openstack_context.region + "/flavors/flavor/" + flavor_dict['id'] @@ -123,7 +123,7 @@ class AAIManager: #body['flavor-disabled'] #body['relationship-list'] return put - + def create_image_put(self, image_dict, server_info): #setup put = dict(); @@ -136,28 +136,42 @@ class AAIManager: body['image-selflink'] = self.get_link(server_info['image']['links'], "bookmark"); if self.__exists(image_dict, 'org.openstack__1__architecture'): body['image-architecture'] = image_dict['org.openstack__1__architecture'] + else: + body['image-architecture'] = 'unknown' if self.__exists(image_dict, 'org.openstack__1__os_distro'): body['image-name'] = image_dict['org.openstack__1__os_distro'] + else: + body['image-name'] = 'unknown' if self.__exists(image_dict, 'org.openstack__1__os_version'): body['image-os-version'] = image_dict['org.openstack__1__os_version'] + else: + body['image-os-version'] = 'unknown' if self.__exists(image_dict, 'org.openstack__1__application_version'): body['application-version'] = image_dict['org.openstack__1__application_version'] + else: + body['application-version'] = 'unknown' if self.__exists(image_dict, 'org.openstack__1__application_vendor'): body['application-vendor'] = image_dict['org.openstack__1__application_vendor'] + else: + body['application-vendor'] = 'unknown' if self.__exists(image_dict, 'org.openstack__1__application'): body['application'] = image_dict['org.openstack__1__application'] + else: + body['application'] = 'unknown' if self.__exists(image_dict, 'os_distro'): body['image-os-distro'] = image_dict['os_distro'] + else: + body['image-os-distro'] = 'unknown' #body['metadata'] #body['relationship-list']; return put - + def __exists(self, the_dict, key): if key in the_dict and the_dict[key] != "": return True; else: return False; - + def create_l_interface_put(self, port_dict, server_info_dict): #setup port = port_dict['port'] @@ -178,17 +192,17 @@ class AAIManager: for ips in port['fixed_ips']: if '.' in ips['ip_address']: v4list.append(self.create_l3_interface_ipv4_address(port, ips)); - if ':' in ips['ip_address']: + if ':' in ips['ip_address']: v6list.append(self.create_l3_interface_ipv6_address(port, ips)); body['network-name'] = port['network_id'] #body['selflink'] #body['interface-role'] #body['v6-wan-link-ip'] #body['management-option'] - + #optional fields return put - + def create_l3_interface_ipv4_address(self, port_dict, fixed_ip): #setup address = dict() @@ -199,9 +213,9 @@ class AAIManager: #address['vlan-id-inner'] #address['vlan-id-outer'] #address['is-floating'] - #address['relationship-list'] + #address['relationship-list'] return address; - + def create_l3_interface_ipv6_address(self, port_dict, fixed_ip): #setup address = dict() @@ -212,8 +226,8 @@ class AAIManager: #address['vlan-id-inner'] #address['vlan-id-outer'] #address['is-floating'] - #address['relationship-list'] + #address['relationship-list'] return address; - + def load_aai_data(self, request): - return True;
\ No newline at end of file + return True; diff --git a/heatbridge/heatbridge/OpenstackManager.py b/heatbridge/heatbridge/OpenstackManager.py index ed4cd6f..07eddc7 100644 --- a/heatbridge/heatbridge/OpenstackManager.py +++ b/heatbridge/heatbridge/OpenstackManager.py @@ -8,7 +8,7 @@ import logging class OpenstackManager: """OpenstackManager manages the connection state and interaction between an openstack cloud and the heatbridge.""" - + #this holds the session of the openstack clients __heat_client = None; __nova_client = None; @@ -20,8 +20,8 @@ class OpenstackManager: def __init__(self, identity_url, context): """ OpenstackManager - `identity_url` Base identity_url of the identity server - 'context' Instance of OpenstackContext + `identity_url` Base identity_url of the identity server + 'context' Instance of OpenstackContext """ self.openstack_context = context; self.identity_url = identity_url; @@ -32,54 +32,54 @@ class OpenstackManager: """ Authenticate to openstack env `username` username to authenticate to openstack - + `password` password to send - + `tenant` tenant to authenticate under - + `region` region to authenticate under """ self.__heat_client = os_client_config.make_client('orchestration', auth_url=self.identity_url, username=username, password=password, - project_name=tenant, + project_id=tenant, region_name=region); self.__nova_client = os_client_config.make_client('compute', auth_url=self.identity_url, username=username, password=password, - project_name=tenant, + project_id=tenant, region_name=region); self.__cinder_client = os_client_config.make_client('volume', auth_url=self.identity_url, username=username, password=password, - project_name=tenant, + project_id=tenant, region_name=region); self.__glance_client = os_client_config.make_client('image', auth_url=self.identity_url, username=username, password=password, - project_name=tenant, + project_id=tenant, region_name=region); self.__neutron_client = os_client_config.make_client('network', auth_url=self.identity_url, username=username, password=password, - project_name=tenant, + project_id=tenant, region_name=region); #this next line is needed because for v2 apis that are after a certain release stopped providing version info in keytone url but rackspace did not self.__neutron_client.action_prefix = ""; self.__auth_resp = True; - + def get_stack(self, stack_id): self.__check_authenticated() #: :type client: HeatClient client = self.__heat_client stack = client.stacks.get(stack_id) return stack.to_dict(); - + def get_stack_resources(self, stack_id): self.__check_authenticated() #: :type client: HeatClient @@ -87,7 +87,7 @@ class OpenstackManager: stack_resources = client.resources.list(stack_id); stack_resources_dict = map(lambda x:x.to_dict(),stack_resources) return stack_resources_dict; - + def get_server_volumes(self, server_id): self.__check_authenticated() #: :type client: NovaClient @@ -95,7 +95,7 @@ class OpenstackManager: server_volumes = client.volumes.get_server_volumes(server_id); server_volumes_dict = map(lambda x:x.to_dict(),server_volumes) return server_volumes_dict; - + def get_server_interfaces(self, server_id): self.__check_authenticated() #: :type client: NovaClient @@ -138,7 +138,7 @@ class OpenstackManager: client = self.__neutron_client; port_info = client.show_port(port_id); return port_info; - + def __check_authenticated(self): if self.__auth_resp == None: raise AssertionError('__auth_resp should exist before calling operation')
\ No newline at end of file |