diff options
Diffstat (limited to 'heatbridge/heatbridge/AAIManager.py')
-rw-r--r-- | heatbridge/heatbridge/AAIManager.py | 207 |
1 files changed, 104 insertions, 103 deletions
diff --git a/heatbridge/heatbridge/AAIManager.py b/heatbridge/heatbridge/AAIManager.py index 057a155..3ef8023 100644 --- a/heatbridge/heatbridge/AAIManager.py +++ b/heatbridge/heatbridge/AAIManager.py @@ -1,122 +1,123 @@ 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; + self.openstack_context = context def get_link(self, links, link_type): for link in links: if link['rel'] == link_type: - return link['href']; + return link['href'] def create_transactions(self, *args): - transactions = defaultdict(list); + transactions = defaultdict(list) for arg in args: - transactions['transactions'].extend(arg); - return transactions; + transactions['transactions'].extend(arg) + return transactions def create_put(self, *args): - put = defaultdict(list); - put['put'].extend(args); - return put; + 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; + # setup + put = dict() + body = dict() + put['body'] = body - #required fields + # required fields put['uri'] = "/cloud-infrastructure/cloud-regions/cloud-region/" + self.openstack_context.owner \ + "/" + self.openstack_context.region + "/tenants/tenant/" + self.openstack_context.tenant \ - + "/vservers/vserver/" + server_info_dict['id']; - body['vserver-id'] = server_info_dict['id']; - body['vserver-name'] = server_info_dict['name']; - body['vserver-name2'] = server_info_dict['name']; - body['prov-status'] = server_info_dict['status']; - body['vserver-selflink'] = self.get_link(server_info_dict['links'], "self"); - #body['in-maint']; - #body['is-closed-loop-disabled']; - #body['resource-version']; - - #optional fields + + "/vservers/vserver/" + server_info_dict['id'] + body['vserver-id'] = server_info_dict['id'] + body['vserver-name'] = server_info_dict['name'] + body['vserver-name2'] = server_info_dict['name'] + body['prov-status'] = server_info_dict['status'] + body['vserver-selflink'] = self.get_link(server_info_dict['links'], "self") + # body['in-maint']; + # body['is-closed-loop-disabled']; + # body['resource-version']; + + # optional fields volumes = [] body['volumes'] = volumes for volume in volumes_dict: - volumes.append(self.create_volume(volume)); + volumes.append(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); - relations.append(self.__create_relationship("generic-vnf", list)); + data = self.__create_relationship_data("generic-vnf", "vnf-id", server_info_dict['metadata']['vnf_id']) + list = self.__create_relationship_data_list(data) + relations.append(self.__create_relationship("generic-vnf", list)) if self.__exists(server_info_dict['metadata'], 'vf_module_id'): - data = self.__create_relationship_data("vf-module", "vf-module-id", server_info_dict['metadata']['vf_module_id']); - data2 = self.__create_relationship_data("generic-vnf", "vnf-id", server_info_dict['metadata']['vnf_id']); - list = self.__create_relationship_data_list(data, data2); - relations.append(self.__create_relationship("vf-module", list)); + data = self.__create_relationship_data("vf-module", "vf-module-id", server_info_dict['metadata']['vf_module_id']) + data2 = self.__create_relationship_data("generic-vnf", "vnf-id", server_info_dict['metadata']['vnf_id']) + list = self.__create_relationship_data_list(data, data2) + relations.append(self.__create_relationship("vf-module", list)) if self.__exists(server_info_dict['flavor'], 'id'): - data = self.__create_relationship_data("flavor", "flavor-id", server_info_dict['flavor']['id']); - data2 = self.__create_relationship_data("cloud-region", "cloud-owner", self.openstack_context.owner); - data3 = self.__create_relationship_data("cloud-region", "cloud-region-id", self.openstack_context.region); - list = self.__create_relationship_data_list(data, data2, data3); - relations.append(self.__create_relationship("flavor", list)); + data = self.__create_relationship_data("flavor", "flavor-id", server_info_dict['flavor']['id']) + data2 = self.__create_relationship_data("cloud-region", "cloud-owner", self.openstack_context.owner) + data3 = self.__create_relationship_data("cloud-region", "cloud-region-id", self.openstack_context.region) + list = self.__create_relationship_data_list(data, data2, data3) + relations.append(self.__create_relationship("flavor", list)) if self.__exists(server_info_dict['image'], 'id'): - data = self.__create_relationship_data("image", "image-id", server_info_dict['image']['id']); - data2 = self.__create_relationship_data("cloud-region", "cloud-owner", self.openstack_context.owner); - data3 = self.__create_relationship_data("cloud-region", "cloud-region-id", self.openstack_context.region); - list = self.__create_relationship_data_list(data, data2, data3); - relations.append(self.__create_relationship("image", list)); - #Add a relation to VNFC - data = self.__create_relationship_data("vnfc", "vnfc-name", server_info_dict['name']); - list = self.__create_relationship_data_list(data); - relations.append(self.__create_relationship("vnfc", list)); - body['relationship-list'] = self.__create_relationship_list(relations); + data = self.__create_relationship_data("image", "image-id", server_info_dict['image']['id']) + data2 = self.__create_relationship_data("cloud-region", "cloud-owner", self.openstack_context.owner) + data3 = self.__create_relationship_data("cloud-region", "cloud-region-id", self.openstack_context.region) + list = self.__create_relationship_data_list(data, data2, data3) + relations.append(self.__create_relationship("image", list)) + # Add a relation to VNFC + data = self.__create_relationship_data("vnfc", "vnfc-name", server_info_dict['name']) + list = self.__create_relationship_data_list(data) + relations.append(self.__create_relationship("vnfc", list)) + body['relationship-list'] = self.__create_relationship_list(relations) return put def __create_relationship_list(self, items): rel_list = dict() relationship = [] - rel_list['relationship'] = relationship; - relationship.extend(items); - return rel_list; + rel_list['relationship'] = relationship + relationship.extend(items) + return rel_list def __create_relationship_data_list(self, *relationship_data): - relationship_data_list = []; - relationship_data_list.extend(relationship_data); - return relationship_data_list; + relationship_data_list = [] + relationship_data_list.extend(relationship_data) + return relationship_data_list def __create_relationship(self, related_to, relationship_data_list): - relationship = dict(); - relationship['related-to'] = related_to; + relationship = dict() + relationship['related-to'] = related_to relationship['relationship-data'] = relationship_data_list - return relationship; + return relationship def __create_relationship_data(self, parent, key, value): - relationship_data = dict(); - relationship_data['relationship-key'] = parent + "." + key; - relationship_data['relationship-value'] = value; - return relationship_data; + relationship_data = dict() + relationship_data['relationship-key'] = parent + "." + key + relationship_data['relationship-value'] = value + return relationship_data def create_volume(self, volume_dict): - #setup + # setup volume = dict() if 'volume' in volume_dict: volume['volume-id'] = volume_dict['volume']['id'] - #volume['volume-selflink'] - #volume['resource-version'] - #volume['relationship-list'] - return volume; + # volume['volume-selflink'] + # volume['resource-version'] + # volume['relationship-list'] + return volume def create_flavor_put(self, flavor_dict): - #setup - put = dict(); + # setup + put = dict() body = dict() put['body'] = body - #required fields + # required fields put['uri'] = "/cloud-infrastructure/cloud-regions/cloud-region/" + self.openstack_context.owner \ + "/" + self.openstack_context.region + "/flavors/flavor/" + flavor_dict['id'] body['flavor-id'] = flavor_dict['id'] @@ -128,22 +129,22 @@ class AAIManager: body['flavor-ephemeral'] = flavor_dict['OS-FLV-EXT-DATA:ephemeral'] if flavor_dict['swap'] != "": body['flavor-swap'] = flavor_dict['swap'] - body['flavor-selflink'] = self.get_link(flavor_dict['links'], "self"); - #body['flavor-is-public''] - #body['flavor-disabled'] - #body['relationship-list'] + body['flavor-selflink'] = self.get_link(flavor_dict['links'], "self") + # body['flavor-is-public''] + # body['flavor-disabled'] + # body['relationship-list'] return put def create_image_put(self, image_dict, server_info): - #setup - put = dict(); + # setup + put = dict() body = dict() put['body'] = body put['uri'] = "/cloud-infrastructure/cloud-regions/cloud-region/" + self.openstack_context.owner \ + "/" + self.openstack_context.region + "/images/image/" + image_dict['id'] body['image-id'] = image_dict['id'] body['image-name'] = image_dict['name'] - body['image-selflink'] = self.get_link(server_info['image']['links'], "bookmark"); + 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: @@ -172,20 +173,20 @@ class AAIManager: body['image-os-distro'] = image_dict['os_distro'] else: body['image-os-distro'] = 'unknown' - #body['metadata'] - #body['relationship-list']; + # body['metadata'] + # body['relationship-list']; return put def __exists(self, the_dict, key): if key in the_dict and the_dict[key] != "": - return True; + return True else: - return False; + return False def create_l_interface_put(self, port_dict, server_info_dict): - #setup + # setup port = port_dict['port'] - put = dict(); + put = dict() body = dict() put['body'] = body put['uri'] = "/cloud-infrastructure/cloud-regions/cloud-region/" + self.openstack_context.owner \ @@ -194,50 +195,50 @@ class AAIManager: body['interface-id'] = port['id'] body['interface-name'] = port['name'] body['macaddr'] = port['mac_address'] - #optional fields + # optional fields v4list = [] v6list = [] body['l3-interface-ipv4-address-list'] = v4list body['l3-interface-ipv6-address-list'] = v6list for ips in port['fixed_ips']: if '.' in ips['ip_address']: - v4list.append(self.create_l3_interface_ipv4_address(port, ips)); + v4list.append(self.create_l3_interface_ipv4_address(port, ips)) if ':' in ips['ip_address']: - v6list.append(self.create_l3_interface_ipv6_address(port, ips)); + 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'] + # body['selflink'] + # body['interface-role'] + # body['v6-wan-link-ip'] + # body['management-option'] - #optional fields + # optional fields return put def create_l3_interface_ipv4_address(self, port_dict, fixed_ip): - #setup + # setup address = dict() address['l3-interface-ipv4-address'] = fixed_ip['ip_address'] address['l3-interface-ipv4-prefix-length'] = '32' address['neutron-network-id'] = port_dict['network_id'] address['neutron-subnet-id'] = fixed_ip['subnet_id'] - #address['vlan-id-inner'] - #address['vlan-id-outer'] - #address['is-floating'] - #address['relationship-list'] - return address; + # address['vlan-id-inner'] + # address['vlan-id-outer'] + # address['is-floating'] + # address['relationship-list'] + return address def create_l3_interface_ipv6_address(self, port_dict, fixed_ip): - #setup + # setup address = dict() address['l3-interface-ipv6-address'] = fixed_ip['ip_address'] address['l3-interface-ipv6-prefix-length'] = '128' address['neutron-network-id'] = port_dict['network_id'] address['neutron-subnet-id'] = fixed_ip['subnet_id'] - #address['vlan-id-inner'] - #address['vlan-id-outer'] - #address['is-floating'] - #address['relationship-list'] - return address; + # address['vlan-id-inner'] + # address['vlan-id-outer'] + # address['is-floating'] + # address['relationship-list'] + return address def load_aai_data(self, request): - return True; + return True |