def create_vmi_bindings(self, vnc_vmi, vnc_vpg): pi_info = [(pi_ref["to"][2], pi_ref["to"][1]) for pi_ref in vnc_vpg.get_physical_interface_refs() or ()] profile = { "local_link_information": [{ "port_id": port_id, "switch_id": port_id, "fabric": vnc_vpg.fq_name[1], "switch_info": switch_name, } for port_id, switch_name in pi_info] } kv_pairs = vnc_api.KeyValuePairs([ vnc_api.KeyValuePair(key="vpg", value=vnc_vpg.name), vnc_api.KeyValuePair(key="vnic_type", value="baremetal"), vnc_api.KeyValuePair(key="profile", value=json.dumps(profile)), ]) existing_bindings = vnc_vmi.get_virtual_machine_interface_bindings() if existing_bindings is not None and set( existing_bindings.get_key_value_pair()) == set( kv_pairs.get_key_value_pair()): return vnc_vmi.set_virtual_machine_interface_bindings(kv_pairs) self.vnc_lib.virtual_machine_interface_update(vnc_vmi)
def _neutron_port_to_vmi(self, port_q, vmi_obj=None, update=False): if 'name' in port_q and port_q['name']: vmi_obj.display_name = port_q['name'] device_owner = port_q.get('device_owner') if (device_owner not in [constants.DEVICE_OWNER_ROUTER_INTF, constants.DEVICE_OWNER_ROUTER_GW] and 'device_id' in port_q): self._set_vm_instance_for_vmi(vmi_obj, port_q.get('device_id')) if device_owner is not None: vmi_obj.set_virtual_machine_interface_device_owner(device_owner) if ('mac_address' in port_q and port_q['mac_address']): mac_addrs_obj = vnc_api.MacAddressesType() mac_addrs_obj.set_mac_address([port_q['mac_address']]) vmi_obj.set_virtual_machine_interface_mac_addresses(mac_addrs_obj) if 'security_groups' in port_q: self._set_vmi_security_groups(vmi_obj, port_q.get('security_groups')) if 'admin_state_up' in port_q: id_perms = vmi_obj.get_id_perms() id_perms.enable = port_q['admin_state_up'] vmi_obj.set_id_perms(id_perms) if 'extra_dhcp_opts' in port_q: self._set_vmi_extra_dhcp_options(vmi_obj, port_q.get('extra_dhcp_opts')) if ('allowed_address_pairs' in port_q): self._set_vmi_allowed_addr_pairs( vmi_obj, port_q.get('allowed_address_pairs')) if 'fixed_ips' in port_q: net_id = (port_q.get('network_id') or vmi_obj.get_virtual_network_refs()[0]['uuid']) self._check_vmi_fixed_ips(vmi_obj, port_q.get('fixed_ips'), net_id) # pick binding keys from neutron repr and persist as kvp elements. # it is assumed allowing/denying oper*key is done at neutron-server. if not update: vmi_binding_kvps = dict((k.replace('binding:',''), v) for k,v in port_q.items() if k.startswith('binding:')) vmi_obj.set_virtual_machine_interface_bindings( vnc_api.KeyValuePairs([vnc_api.KeyValuePair(k,v) for k,v in vmi_binding_kvps.items()])) else: vmi_binding_kvps = dict((k.replace('binding:',''), v) for k,v in port_q.items() if k.startswith('binding:')) for k,v in vmi_binding_kvps.items(): vmi_obj.add_virtual_machine_interface_bindings( vnc_api.KeyValuePair(key=k, value=v)) return vmi_obj
def vnc_vmi(project, vnc_vm, vnc_vn_1): vmi = vnc_api.VirtualMachineInterface('vnc-vmi-uuid', parent_obj=project) vmi.set_uuid('vnc-vmi-uuid') vmi.add_virtual_machine(vnc_vm) vmi.set_virtual_network(vnc_vn_1) vmi.set_annotations( vnc_api.KeyValuePairs([ vnc_api.KeyValuePair('vrouter-uuid', 'vrouter-uuid-1'), vnc_api.KeyValuePair('key-1', 'value-1') ])) return vmi
def instance_ip(vnc_vmi, vnc_vn_1, vnc_vm): ip_name = 'ip-' + vnc_vn_1.name + '-' + vnc_vm.name ip_uuid = VirtualMachineInterfaceModel.create_uuid(ip_name) ip = vnc_api.InstanceIp( name=ip_uuid, display_name=ip_name, id_perms=ID_PERMS, ) ip.set_instance_ip_address('10.10.10.1') ip.set_uuid(ip_uuid) ip.set_virtual_network(vnc_vn_1) ip.set_virtual_machine_interface(vnc_vmi) ip.annotations = ip.annotations or vnc_api.KeyValuePairs() ip.annotations.add_key_value_pair( vnc_api.KeyValuePair('vrouter-uuid', 'vrouter-uuid-1')) ip.annotations.add_key_value_pair(vnc_api.KeyValuePair('key-1', 'value-1')) return ip
def verify_vmi_bindings(vmi, vpg): pi_info = [(pi_ref["to"][2], pi_ref["to"][1]) for pi_ref in vpg.get_physical_interface_refs()] expected_profile = { "local_link_information": [{ "port_id": port_id, "switch_id": port_id, "fabric": vpg.fq_name[1], "switch_info": switch_name, } for port_id, switch_name in pi_info] } expected_bindings = vnc_api.KeyValuePairs([ vnc_api.KeyValuePair(key="vpg", value=vpg.name), vnc_api.KeyValuePair(key="vnic_type", value="baremetal"), vnc_api.KeyValuePair(key="profile", value=json.dumps(expected_profile)), ]) assert set(expected_bindings.get_key_value_pair()).issubset( set(vmi.get_virtual_machine_interface_bindings().get_key_value_pair()))
my_vpg.set_virtual_port_group_type('access') obj_1 = vnc_api.VpgInterfaceParametersType() for my_pi in my_pis: my_vpg.add_physical_interface(my_pi, obj_1) my_vpg_id = vh.virtual_port_group_create(my_vpg) if len(tag_list)!=len(my_vn_ids): print ("ERROR: There doesn't seem to be a correct mapping between VMIs and tags") print ("Creating VMIs") for my_vn_id in my_vn_ids: my_vn = vh.virtual_network_read(id=my_vn_id) vmi_name = 'vmi_' + str(my_vn_ids.index(my_vn_id)) my_vmi=vnc_api.VirtualMachineInterface(name=vmi_name,parent_obj=my_proj) my_vmi.add_virtual_network(my_vn) kvps = vnc_api.KeyValuePairs() kvp = vnc_api.KeyValuePair() kvp.set_key("profile") lli = {"local_link_information": ''} lli['local_link_information']=[] for pi in pi_list: switch=str(pi[0]) phy_intf = str(pi[1]) info_dict = {"port_id": '', "switch_id": '', "switch_info": '', "fabric": ''} info_dict['port_id']=str(phy_intf) info_dict['switch_id']=str(phy_intf) info_dict['switch_info']=str(switch) info_dict['fabric']=str(fabric_name) lli['local_link_information'].append(info_dict) kvp.set_value(json.dumps(lli))
def handle_update(self, json_snippet, tmpl_diff, prop_diff): try: obj_0 = self.vnc_lib().service_appliance_read(id=self.resource_id) except: raise Exception(_('service-appliance %s not found.') % self.name) if prop_diff.get(self.DISPLAY_NAME) is not None: obj_0.set_display_name(prop_diff.get(self.DISPLAY_NAME)) if prop_diff.get(self.SERVICE_APPLIANCE_IP_ADDRESS) is not None: obj_0.set_service_appliance_ip_address( prop_diff.get(self.SERVICE_APPLIANCE_IP_ADDRESS)) if prop_diff.get(self.SERVICE_APPLIANCE_USER_CREDENTIALS) is not None: obj_1 = vnc_api.UserCredentials() if prop_diff.get(self.SERVICE_APPLIANCE_USER_CREDENTIALS, {}).get( self.SERVICE_APPLIANCE_USER_CREDENTIALS_USERNAME ) is not None: obj_1.set_username( prop_diff.get( self.SERVICE_APPLIANCE_USER_CREDENTIALS, {}).get( self.SERVICE_APPLIANCE_USER_CREDENTIALS_USERNAME)) if prop_diff.get(self.SERVICE_APPLIANCE_USER_CREDENTIALS, {}).get( self.SERVICE_APPLIANCE_USER_CREDENTIALS_PASSWORD ) is not None: obj_1.set_password( prop_diff.get( self.SERVICE_APPLIANCE_USER_CREDENTIALS, {}).get( self.SERVICE_APPLIANCE_USER_CREDENTIALS_PASSWORD)) obj_0.set_service_appliance_user_credentials(obj_1) if prop_diff.get(self.SERVICE_APPLIANCE_PROPERTIES) is not None: obj_1 = vnc_api.KeyValuePairs() if prop_diff.get(self.SERVICE_APPLIANCE_PROPERTIES, {}).get( self.SERVICE_APPLIANCE_PROPERTIES_KEY_VALUE_PAIR ) is not None: for index_1 in range( len( prop_diff.get(self.SERVICE_APPLIANCE_PROPERTIES, {}). get(self. SERVICE_APPLIANCE_PROPERTIES_KEY_VALUE_PAIR))): obj_2 = vnc_api.KeyValuePair() if prop_diff.get( self.SERVICE_APPLIANCE_PROPERTIES, {}).get( self.SERVICE_APPLIANCE_PROPERTIES_KEY_VALUE_PAIR, {})[index_1].get( self. SERVICE_APPLIANCE_PROPERTIES_KEY_VALUE_PAIR_KEY ) is not None: obj_2.set_key( prop_diff. get(self.SERVICE_APPLIANCE_PROPERTIES, {}).get( self. SERVICE_APPLIANCE_PROPERTIES_KEY_VALUE_PAIR, {}) [index_1].get( self. SERVICE_APPLIANCE_PROPERTIES_KEY_VALUE_PAIR_KEY )) if prop_diff.get( self.SERVICE_APPLIANCE_PROPERTIES, {} ).get(self.SERVICE_APPLIANCE_PROPERTIES_KEY_VALUE_PAIR, {})[index_1].get( self. SERVICE_APPLIANCE_PROPERTIES_KEY_VALUE_PAIR_VALUE ) is not None: obj_2.set_value( prop_diff. get(self.SERVICE_APPLIANCE_PROPERTIES, {}).get( self. SERVICE_APPLIANCE_PROPERTIES_KEY_VALUE_PAIR, {}) [index_1].get( self. SERVICE_APPLIANCE_PROPERTIES_KEY_VALUE_PAIR_VALUE )) obj_1.add_key_value_pair(obj_2) obj_0.set_service_appliance_properties(obj_1) # reference to physical_interface ref_obj_list = [] ref_data_list = [] if prop_diff.get(self.PHYSICAL_INTERFACE_REFS_DATA) is not None: for index_0 in range( len(prop_diff.get(self.PHYSICAL_INTERFACE_REFS_DATA))): obj_1 = vnc_api.ServiceApplianceInterfaceType() if prop_diff.get( self.PHYSICAL_INTERFACE_REFS_DATA, {})[index_0].get( self.PHYSICAL_INTERFACE_REFS_DATA_INTERFACE_TYPE ) is not None: obj_1.set_interface_type( prop_diff.get(self.PHYSICAL_INTERFACE_REFS_DATA, {}) [index_0].get( self.PHYSICAL_INTERFACE_REFS_DATA_INTERFACE_TYPE)) ref_data_list.append(obj_1) if self.PHYSICAL_INTERFACE_REFS in prop_diff: for index_0 in range( len( prop_diff.get(self.PHYSICAL_INTERFACE_REFS_DATA) or [])): try: ref_obj = self.vnc_lib().physical_interface_read( id=prop_diff.get( self.PHYSICAL_INTERFACE_REFS)[index_0]) except: ref_obj = self.vnc_lib().physical_interface_read( fq_name_str=prop_diff.get( self.PHYSICAL_INTERFACE_REFS)[index_0]) ref_obj_list.append(ref_obj.fq_name) obj_0.set_physical_interface_list(ref_obj_list, ref_data_list) # End: reference to physical_interface_refs try: self.vnc_lib().service_appliance_update(obj_0) except: raise Exception( _('service-appliance %s could not be updated.') % self.name)
def handle_create(self): parent_obj = None if parent_obj is None and self.properties.get( self.SERVICE_APPLIANCE_SET): try: parent_obj = self.vnc_lib().service_appliance_set_read( id=self.properties.get(self.SERVICE_APPLIANCE_SET)) except vnc_api.NoIdError: parent_obj = self.vnc_lib().service_appliance_set_read( fq_name_str=self.properties.get( self.SERVICE_APPLIANCE_SET)) except: parent_obj = None if parent_obj is None: raise Exception('Error: parent is not specified in template!') obj_0 = vnc_api.ServiceAppliance(name=self.properties[self.NAME], parent_obj=parent_obj) if self.properties.get(self.DISPLAY_NAME) is not None: obj_0.set_display_name(self.properties.get(self.DISPLAY_NAME)) if self.properties.get(self.SERVICE_APPLIANCE_IP_ADDRESS) is not None: obj_0.set_service_appliance_ip_address( self.properties.get(self.SERVICE_APPLIANCE_IP_ADDRESS)) if self.properties.get( self.SERVICE_APPLIANCE_USER_CREDENTIALS) is not None: obj_1 = vnc_api.UserCredentials() if self.properties.get( self.SERVICE_APPLIANCE_USER_CREDENTIALS, {}).get(self.SERVICE_APPLIANCE_USER_CREDENTIALS_USERNAME ) is not None: obj_1.set_username( self.properties.get( self.SERVICE_APPLIANCE_USER_CREDENTIALS, {}).get( self.SERVICE_APPLIANCE_USER_CREDENTIALS_USERNAME)) if self.properties.get( self.SERVICE_APPLIANCE_USER_CREDENTIALS, {}).get(self.SERVICE_APPLIANCE_USER_CREDENTIALS_PASSWORD ) is not None: obj_1.set_password( self.properties.get( self.SERVICE_APPLIANCE_USER_CREDENTIALS, {}).get( self.SERVICE_APPLIANCE_USER_CREDENTIALS_PASSWORD)) obj_0.set_service_appliance_user_credentials(obj_1) if self.properties.get(self.SERVICE_APPLIANCE_PROPERTIES) is not None: obj_1 = vnc_api.KeyValuePairs() if self.properties.get(self.SERVICE_APPLIANCE_PROPERTIES, {}).get( self.SERVICE_APPLIANCE_PROPERTIES_KEY_VALUE_PAIR ) is not None: for index_1 in range( len( self.properties.get( self.SERVICE_APPLIANCE_PROPERTIES, {}). get(self. SERVICE_APPLIANCE_PROPERTIES_KEY_VALUE_PAIR))): obj_2 = vnc_api.KeyValuePair() if self.properties.get( self.SERVICE_APPLIANCE_PROPERTIES, {}).get( self.SERVICE_APPLIANCE_PROPERTIES_KEY_VALUE_PAIR, {})[index_1].get( self. SERVICE_APPLIANCE_PROPERTIES_KEY_VALUE_PAIR_KEY ) is not None: obj_2.set_key( self.properties. get(self.SERVICE_APPLIANCE_PROPERTIES, {}).get( self. SERVICE_APPLIANCE_PROPERTIES_KEY_VALUE_PAIR, {}) [index_1].get( self. SERVICE_APPLIANCE_PROPERTIES_KEY_VALUE_PAIR_KEY )) if self.properties.get( self.SERVICE_APPLIANCE_PROPERTIES, {} ).get(self.SERVICE_APPLIANCE_PROPERTIES_KEY_VALUE_PAIR, {})[index_1].get( self. SERVICE_APPLIANCE_PROPERTIES_KEY_VALUE_PAIR_VALUE ) is not None: obj_2.set_value( self.properties. get(self.SERVICE_APPLIANCE_PROPERTIES, {}).get( self. SERVICE_APPLIANCE_PROPERTIES_KEY_VALUE_PAIR, {}) [index_1].get( self. SERVICE_APPLIANCE_PROPERTIES_KEY_VALUE_PAIR_VALUE )) obj_1.add_key_value_pair(obj_2) obj_0.set_service_appliance_properties(obj_1) # reference to physical_interface_refs obj_1 = None if self.properties.get(self.PHYSICAL_INTERFACE_REFS_DATA) is not None: for index_0 in range( len(self.properties.get( self.PHYSICAL_INTERFACE_REFS_DATA))): obj_1 = vnc_api.ServiceApplianceInterfaceType() if self.properties.get( self.PHYSICAL_INTERFACE_REFS_DATA, {})[index_0].get( self.PHYSICAL_INTERFACE_REFS_DATA_INTERFACE_TYPE ) is not None: obj_1.set_interface_type( self.properties.get(self.PHYSICAL_INTERFACE_REFS_DATA, {}) [index_0].get( self.PHYSICAL_INTERFACE_REFS_DATA_INTERFACE_TYPE)) if self.properties.get(self.PHYSICAL_INTERFACE_REFS): try: ref_obj = self.vnc_lib().physical_interface_read( id=self.properties.get( self.PHYSICAL_INTERFACE_REFS)[index_0]) except vnc_api.NoIdError: ref_obj = self.vnc_lib().physical_interface_read( fq_name_str=self.properties.get( self.PHYSICAL_INTERFACE_REFS)[index_0]) obj_0.add_physical_interface(ref_obj, obj_1) try: obj_uuid = super(ContrailServiceAppliance, self).resource_create(obj_0) except: raise Exception( _('service-appliance %s could not be updated.') % self.name) self.resource_id_set(obj_uuid)
def make_key_value_pairs(pairs): kv_list = [vnc_api.KeyValuePair(key=k, value=v) for k, v in pairs] return vnc_api.KeyValuePairs(kv_list)
def handle_update(self, json_snippet, tmpl_diff, prop_diff): try: obj_0 = self.vnc_lib().service_appliance_set_read( id=self.resource_id) except: raise Exception( _('service-appliance-set %s not found.') % self.name) if prop_diff.get(self.DISPLAY_NAME) is not None: obj_0.set_display_name(prop_diff.get(self.DISPLAY_NAME)) if prop_diff.get(self.SERVICE_APPLIANCE_DRIVER) is not None: obj_0.set_service_appliance_driver( prop_diff.get(self.SERVICE_APPLIANCE_DRIVER)) if prop_diff.get(self.SERVICE_APPLIANCE_SET_PROPERTIES) is not None: obj_1 = vnc_api.KeyValuePairs() if prop_diff.get(self.SERVICE_APPLIANCE_SET_PROPERTIES, {}).get( self.SERVICE_APPLIANCE_SET_PROPERTIES_KEY_VALUE_PAIR ) is not None: for index_1 in range( len( prop_diff.get( self.SERVICE_APPLIANCE_SET_PROPERTIES, {}). get(self. SERVICE_APPLIANCE_SET_PROPERTIES_KEY_VALUE_PAIR ))): obj_2 = vnc_api.KeyValuePair() if prop_diff.get( self.SERVICE_APPLIANCE_SET_PROPERTIES, {}).get( self. SERVICE_APPLIANCE_SET_PROPERTIES_KEY_VALUE_PAIR, {} )[index_1].get( self. SERVICE_APPLIANCE_SET_PROPERTIES_KEY_VALUE_PAIR_KEY ) is not None: obj_2.set_key( prop_diff. get(self.SERVICE_APPLIANCE_SET_PROPERTIES, {}).get( self. SERVICE_APPLIANCE_SET_PROPERTIES_KEY_VALUE_PAIR, {}) [index_1].get( self. SERVICE_APPLIANCE_SET_PROPERTIES_KEY_VALUE_PAIR_KEY )) if prop_diff.get( self.SERVICE_APPLIANCE_SET_PROPERTIES, {}).get( self. SERVICE_APPLIANCE_SET_PROPERTIES_KEY_VALUE_PAIR, {} )[index_1].get( self. SERVICE_APPLIANCE_SET_PROPERTIES_KEY_VALUE_PAIR_VALUE ) is not None: obj_2.set_value( prop_diff. get(self.SERVICE_APPLIANCE_SET_PROPERTIES, {}).get( self. SERVICE_APPLIANCE_SET_PROPERTIES_KEY_VALUE_PAIR, {}) [index_1].get( self. SERVICE_APPLIANCE_SET_PROPERTIES_KEY_VALUE_PAIR_VALUE )) obj_1.add_key_value_pair(obj_2) obj_0.set_service_appliance_set_properties(obj_1) if prop_diff.get(self.SERVICE_APPLIANCE_HA_MODE) is not None: obj_0.set_service_appliance_ha_mode( prop_diff.get(self.SERVICE_APPLIANCE_HA_MODE)) try: self.vnc_lib().service_appliance_set_update(obj_0) except: raise Exception( _('service-appliance-set %s could not be updated.') % self.name)
def handle_create(self): parent_obj = None if parent_obj is None and self.properties.get( self.GLOBAL_SYSTEM_CONFIG): try: parent_obj = self.vnc_lib().global_system_config_read( id=self.properties.get(self.GLOBAL_SYSTEM_CONFIG)) except vnc_api.NoIdError: parent_obj = self.vnc_lib().global_system_config_read( fq_name_str=self.properties.get(self.GLOBAL_SYSTEM_CONFIG)) except: parent_obj = None if parent_obj is None: raise Exception('Error: parent is not specified in template!') obj_0 = vnc_api.ServiceApplianceSet(name=self.properties[self.NAME], parent_obj=parent_obj) if self.properties.get(self.DISPLAY_NAME) is not None: obj_0.set_display_name(self.properties.get(self.DISPLAY_NAME)) if self.properties.get(self.SERVICE_APPLIANCE_DRIVER) is not None: obj_0.set_service_appliance_driver( self.properties.get(self.SERVICE_APPLIANCE_DRIVER)) if self.properties.get( self.SERVICE_APPLIANCE_SET_PROPERTIES) is not None: obj_1 = vnc_api.KeyValuePairs() if self.properties.get( self.SERVICE_APPLIANCE_SET_PROPERTIES, {}).get(self.SERVICE_APPLIANCE_SET_PROPERTIES_KEY_VALUE_PAIR ) is not None: for index_1 in range( len( self.properties.get( self.SERVICE_APPLIANCE_SET_PROPERTIES, {}). get(self. SERVICE_APPLIANCE_SET_PROPERTIES_KEY_VALUE_PAIR ))): obj_2 = vnc_api.KeyValuePair() if self.properties.get( self.SERVICE_APPLIANCE_SET_PROPERTIES, {}).get( self. SERVICE_APPLIANCE_SET_PROPERTIES_KEY_VALUE_PAIR, {} )[index_1].get( self. SERVICE_APPLIANCE_SET_PROPERTIES_KEY_VALUE_PAIR_KEY ) is not None: obj_2.set_key( self.properties. get(self.SERVICE_APPLIANCE_SET_PROPERTIES, {}).get( self. SERVICE_APPLIANCE_SET_PROPERTIES_KEY_VALUE_PAIR, {}) [index_1].get( self. SERVICE_APPLIANCE_SET_PROPERTIES_KEY_VALUE_PAIR_KEY )) if self.properties.get( self.SERVICE_APPLIANCE_SET_PROPERTIES, {}).get( self. SERVICE_APPLIANCE_SET_PROPERTIES_KEY_VALUE_PAIR, {} )[index_1].get( self. SERVICE_APPLIANCE_SET_PROPERTIES_KEY_VALUE_PAIR_VALUE ) is not None: obj_2.set_value( self.properties. get(self.SERVICE_APPLIANCE_SET_PROPERTIES, {}).get( self. SERVICE_APPLIANCE_SET_PROPERTIES_KEY_VALUE_PAIR, {}) [index_1].get( self. SERVICE_APPLIANCE_SET_PROPERTIES_KEY_VALUE_PAIR_VALUE )) obj_1.add_key_value_pair(obj_2) obj_0.set_service_appliance_set_properties(obj_1) if self.properties.get(self.SERVICE_APPLIANCE_HA_MODE) is not None: obj_0.set_service_appliance_ha_mode( self.properties.get(self.SERVICE_APPLIANCE_HA_MODE)) try: obj_uuid = super(ContrailServiceApplianceSet, self).resource_create(obj_0) except: raise Exception( _('service-appliance-set %s could not be updated.') % self.name) self.resource_id_set(obj_uuid)
def handle_update(self, json_snippet, tmpl_diff, prop_diff): try: obj_0 = self.vnc_lib().loadbalancer_pool_read(id=self.resource_id) except: raise Exception(_('loadbalancer-pool %s not found.') % self.name) if prop_diff.get(self.DISPLAY_NAME) is not None: obj_0.set_display_name(prop_diff.get(self.DISPLAY_NAME)) if prop_diff.get(self.LOADBALANCER_POOL_PROVIDER) is not None: obj_0.set_loadbalancer_pool_provider( prop_diff.get(self.LOADBALANCER_POOL_PROVIDER)) if prop_diff.get(self.LOADBALANCER_POOL_PROPERTIES) is not None: obj_1 = vnc_api.LoadbalancerPoolType() if prop_diff.get(self.LOADBALANCER_POOL_PROPERTIES, {}).get( self.LOADBALANCER_POOL_PROPERTIES_STATUS) is not None: obj_1.set_status( prop_diff.get(self.LOADBALANCER_POOL_PROPERTIES, {}).get( self.LOADBALANCER_POOL_PROPERTIES_STATUS)) if prop_diff.get(self.LOADBALANCER_POOL_PROPERTIES, {}).get( self.LOADBALANCER_POOL_PROPERTIES_STATUS_DESCRIPTION ) is not None: obj_1.set_status_description( prop_diff.get(self.LOADBALANCER_POOL_PROPERTIES, {}).get( self.LOADBALANCER_POOL_PROPERTIES_STATUS_DESCRIPTION)) if prop_diff.get(self.LOADBALANCER_POOL_PROPERTIES, {}).get( self.LOADBALANCER_POOL_PROPERTIES_ADMIN_STATE) is not None: obj_1.set_admin_state( prop_diff.get(self.LOADBALANCER_POOL_PROPERTIES, {}).get( self.LOADBALANCER_POOL_PROPERTIES_ADMIN_STATE)) if prop_diff.get(self.LOADBALANCER_POOL_PROPERTIES, {}).get( self.LOADBALANCER_POOL_PROPERTIES_PROTOCOL) is not None: obj_1.set_protocol( prop_diff.get(self.LOADBALANCER_POOL_PROPERTIES, {}).get( self.LOADBALANCER_POOL_PROPERTIES_PROTOCOL)) if prop_diff.get(self.LOADBALANCER_POOL_PROPERTIES, {}).get( self.LOADBALANCER_POOL_PROPERTIES_LOADBALANCER_METHOD ) is not None: obj_1.set_loadbalancer_method( prop_diff.get(self.LOADBALANCER_POOL_PROPERTIES, {}).get( self.LOADBALANCER_POOL_PROPERTIES_LOADBALANCER_METHOD)) if prop_diff.get(self.LOADBALANCER_POOL_PROPERTIES, {}).get( self.LOADBALANCER_POOL_PROPERTIES_SUBNET_ID) is not None: obj_1.set_subnet_id( prop_diff.get(self.LOADBALANCER_POOL_PROPERTIES, {}).get( self.LOADBALANCER_POOL_PROPERTIES_SUBNET_ID)) if prop_diff.get(self.LOADBALANCER_POOL_PROPERTIES, {}).get( self.LOADBALANCER_POOL_PROPERTIES_SESSION_PERSISTENCE ) is not None: obj_1.set_session_persistence( prop_diff.get(self.LOADBALANCER_POOL_PROPERTIES, {}).get( self.LOADBALANCER_POOL_PROPERTIES_SESSION_PERSISTENCE)) if prop_diff.get(self.LOADBALANCER_POOL_PROPERTIES, {}).get( self.LOADBALANCER_POOL_PROPERTIES_PERSISTENCE_COOKIE_NAME ) is not None: obj_1.set_persistence_cookie_name( prop_diff.get(self.LOADBALANCER_POOL_PROPERTIES, {}).get( self. LOADBALANCER_POOL_PROPERTIES_PERSISTENCE_COOKIE_NAME)) obj_0.set_loadbalancer_pool_properties(obj_1) if prop_diff.get(self.LOADBALANCER_POOL_CUSTOM_ATTRIBUTES) is not None: obj_1 = vnc_api.KeyValuePairs() if prop_diff.get(self.LOADBALANCER_POOL_CUSTOM_ATTRIBUTES, {}).get( self.LOADBALANCER_POOL_CUSTOM_ATTRIBUTES_KEY_VALUE_PAIR ) is not None: for index_1 in range( len( prop_diff.get( self.LOADBALANCER_POOL_CUSTOM_ATTRIBUTES, {}). get(self. LOADBALANCER_POOL_CUSTOM_ATTRIBUTES_KEY_VALUE_PAIR ))): obj_2 = vnc_api.KeyValuePair() if prop_diff.get( self.LOADBALANCER_POOL_CUSTOM_ATTRIBUTES, {} ).get( self. LOADBALANCER_POOL_CUSTOM_ATTRIBUTES_KEY_VALUE_PAIR, {})[index_1].get( self. LOADBALANCER_POOL_CUSTOM_ATTRIBUTES_KEY_VALUE_PAIR_KEY ) is not None: obj_2.set_key( prop_diff.get( self.LOADBALANCER_POOL_CUSTOM_ATTRIBUTES, {} ).get( self. LOADBALANCER_POOL_CUSTOM_ATTRIBUTES_KEY_VALUE_PAIR, {}) [index_1].get( self. LOADBALANCER_POOL_CUSTOM_ATTRIBUTES_KEY_VALUE_PAIR_KEY )) if prop_diff.get( self.LOADBALANCER_POOL_CUSTOM_ATTRIBUTES, {} ).get( self. LOADBALANCER_POOL_CUSTOM_ATTRIBUTES_KEY_VALUE_PAIR, {})[index_1].get( self. LOADBALANCER_POOL_CUSTOM_ATTRIBUTES_KEY_VALUE_PAIR_VALUE ) is not None: obj_2.set_value( prop_diff.get( self.LOADBALANCER_POOL_CUSTOM_ATTRIBUTES, {} ).get( self. LOADBALANCER_POOL_CUSTOM_ATTRIBUTES_KEY_VALUE_PAIR, {}) [index_1].get( self. LOADBALANCER_POOL_CUSTOM_ATTRIBUTES_KEY_VALUE_PAIR_VALUE )) obj_1.add_key_value_pair(obj_2) obj_0.set_loadbalancer_pool_custom_attributes(obj_1) # reference to loadbalancer_listener_refs ref_obj_list = [] ref_data_list = [] if self.LOADBALANCER_LISTENER_REFS in prop_diff: for index_0 in range( len(prop_diff.get(self.LOADBALANCER_LISTENER_REFS) or [])): try: ref_obj = self.vnc_lib().loadbalancer_listener_read( id=prop_diff.get( self.LOADBALANCER_LISTENER_REFS)[index_0]) except: ref_obj = self.vnc_lib().loadbalancer_listener_read( fq_name_str=prop_diff.get( self.LOADBALANCER_LISTENER_REFS)[index_0]) ref_obj_list.append(ref_obj.fq_name) obj_0.set_loadbalancer_listener_list(ref_obj_list) # End: reference to loadbalancer_listener_refs # reference to loadbalancer_healthmonitor_refs ref_obj_list = [] ref_data_list = [] if self.LOADBALANCER_HEALTHMONITOR_REFS in prop_diff: for index_0 in range( len( prop_diff.get(self.LOADBALANCER_HEALTHMONITOR_REFS) or [])): try: ref_obj = self.vnc_lib().loadbalancer_healthmonitor_read( id=prop_diff.get( self.LOADBALANCER_HEALTHMONITOR_REFS)[index_0]) except: ref_obj = self.vnc_lib().loadbalancer_healthmonitor_read( fq_name_str=prop_diff.get( self.LOADBALANCER_HEALTHMONITOR_REFS)[index_0]) ref_obj_list.append(ref_obj.fq_name) obj_0.set_loadbalancer_healthmonitor_list(ref_obj_list) # End: reference to loadbalancer_healthmonitor_refs # reference to service_instance_refs ref_obj_list = [] ref_data_list = [] if self.SERVICE_INSTANCE_REFS in prop_diff: for index_0 in range( len(prop_diff.get(self.SERVICE_INSTANCE_REFS) or [])): try: ref_obj = self.vnc_lib().service_instance_read( id=prop_diff.get(self.SERVICE_INSTANCE_REFS)[index_0]) except: ref_obj = self.vnc_lib().service_instance_read( fq_name_str=prop_diff.get( self.SERVICE_INSTANCE_REFS)[index_0]) ref_obj_list.append(ref_obj.fq_name) obj_0.set_service_instance_list(ref_obj_list) # End: reference to service_instance_refs # reference to virtual_machine_interface_refs ref_obj_list = [] ref_data_list = [] if self.VIRTUAL_MACHINE_INTERFACE_REFS in prop_diff: for index_0 in range( len( prop_diff.get(self.VIRTUAL_MACHINE_INTERFACE_REFS) or [])): try: ref_obj = self.vnc_lib().virtual_machine_interface_read( id=prop_diff.get( self.VIRTUAL_MACHINE_INTERFACE_REFS)[index_0]) except: ref_obj = self.vnc_lib().virtual_machine_interface_read( fq_name_str=prop_diff.get( self.VIRTUAL_MACHINE_INTERFACE_REFS)[index_0]) ref_obj_list.append(ref_obj.fq_name) obj_0.set_virtual_machine_interface_list(ref_obj_list) # End: reference to virtual_machine_interface_refs # reference to service_appliance_set_refs ref_obj_list = [] ref_data_list = [] if self.SERVICE_APPLIANCE_SET_REFS in prop_diff: for index_0 in range( len(prop_diff.get(self.SERVICE_APPLIANCE_SET_REFS) or [])): try: ref_obj = self.vnc_lib().service_appliance_set_read( id=prop_diff.get( self.SERVICE_APPLIANCE_SET_REFS)[index_0]) except: ref_obj = self.vnc_lib().service_appliance_set_read( fq_name_str=prop_diff.get( self.SERVICE_APPLIANCE_SET_REFS)[index_0]) ref_obj_list.append(ref_obj.fq_name) obj_0.set_service_appliance_set_list(ref_obj_list) # End: reference to service_appliance_set_refs try: self.vnc_lib().loadbalancer_pool_update(obj_0) except: raise Exception( _('loadbalancer-pool %s could not be updated.') % self.name)
def handle_create(self): parent_obj = None if parent_obj is None and self.properties.get(self.PROJECT): try: parent_obj = self.vnc_lib().project_read( id=self.properties.get(self.PROJECT)) except vnc_api.NoIdError: parent_obj = self.vnc_lib().project_read( fq_name_str=self.properties.get(self.PROJECT)) except: parent_obj = None if parent_obj is None: tenant_id = self.stack.context.tenant_id parent_obj = self.vnc_lib().project_read( id=str(uuid.UUID(tenant_id))) if parent_obj is None: raise Exception('Error: parent is not specified in template!') obj_0 = vnc_api.LoadbalancerPool(name=self.properties[self.NAME], parent_obj=parent_obj) if self.properties.get(self.DISPLAY_NAME) is not None: obj_0.set_display_name(self.properties.get(self.DISPLAY_NAME)) if self.properties.get(self.LOADBALANCER_POOL_PROVIDER) is not None: obj_0.set_loadbalancer_pool_provider( self.properties.get(self.LOADBALANCER_POOL_PROVIDER)) if self.properties.get(self.LOADBALANCER_POOL_PROPERTIES) is not None: obj_1 = vnc_api.LoadbalancerPoolType() if self.properties.get(self.LOADBALANCER_POOL_PROPERTIES, {}).get( self.LOADBALANCER_POOL_PROPERTIES_STATUS) is not None: obj_1.set_status( self.properties.get( self.LOADBALANCER_POOL_PROPERTIES, {}).get(self.LOADBALANCER_POOL_PROPERTIES_STATUS)) if self.properties.get(self.LOADBALANCER_POOL_PROPERTIES, {}).get( self.LOADBALANCER_POOL_PROPERTIES_STATUS_DESCRIPTION ) is not None: obj_1.set_status_description( self.properties.get(self.LOADBALANCER_POOL_PROPERTIES, {}). get(self.LOADBALANCER_POOL_PROPERTIES_STATUS_DESCRIPTION)) if self.properties.get(self.LOADBALANCER_POOL_PROPERTIES, {}).get( self.LOADBALANCER_POOL_PROPERTIES_ADMIN_STATE) is not None: obj_1.set_admin_state( self.properties.get( self.LOADBALANCER_POOL_PROPERTIES, {}).get(self.LOADBALANCER_POOL_PROPERTIES_ADMIN_STATE)) if self.properties.get(self.LOADBALANCER_POOL_PROPERTIES, {}).get( self.LOADBALANCER_POOL_PROPERTIES_PROTOCOL) is not None: obj_1.set_protocol( self.properties.get( self.LOADBALANCER_POOL_PROPERTIES, {}).get(self.LOADBALANCER_POOL_PROPERTIES_PROTOCOL)) if self.properties.get(self.LOADBALANCER_POOL_PROPERTIES, {}).get( self.LOADBALANCER_POOL_PROPERTIES_LOADBALANCER_METHOD ) is not None: obj_1.set_loadbalancer_method( self.properties.get(self.LOADBALANCER_POOL_PROPERTIES, {}). get(self.LOADBALANCER_POOL_PROPERTIES_LOADBALANCER_METHOD)) if self.properties.get(self.LOADBALANCER_POOL_PROPERTIES, {}).get( self.LOADBALANCER_POOL_PROPERTIES_SUBNET_ID) is not None: obj_1.set_subnet_id( self.properties.get( self.LOADBALANCER_POOL_PROPERTIES, {}).get(self.LOADBALANCER_POOL_PROPERTIES_SUBNET_ID)) if self.properties.get(self.LOADBALANCER_POOL_PROPERTIES, {}).get( self.LOADBALANCER_POOL_PROPERTIES_SESSION_PERSISTENCE ) is not None: obj_1.set_session_persistence( self.properties.get(self.LOADBALANCER_POOL_PROPERTIES, {}). get(self.LOADBALANCER_POOL_PROPERTIES_SESSION_PERSISTENCE)) if self.properties.get(self.LOADBALANCER_POOL_PROPERTIES, {}).get( self.LOADBALANCER_POOL_PROPERTIES_PERSISTENCE_COOKIE_NAME ) is not None: obj_1.set_persistence_cookie_name( self.properties.get(self.LOADBALANCER_POOL_PROPERTIES, {}). get(self. LOADBALANCER_POOL_PROPERTIES_PERSISTENCE_COOKIE_NAME)) obj_0.set_loadbalancer_pool_properties(obj_1) if self.properties.get( self.LOADBALANCER_POOL_CUSTOM_ATTRIBUTES) is not None: obj_1 = vnc_api.KeyValuePairs() if self.properties.get( self.LOADBALANCER_POOL_CUSTOM_ATTRIBUTES, {}).get(self.LOADBALANCER_POOL_CUSTOM_ATTRIBUTES_KEY_VALUE_PAIR ) is not None: for index_1 in range( len( self.properties.get( self.LOADBALANCER_POOL_CUSTOM_ATTRIBUTES, {}). get(self. LOADBALANCER_POOL_CUSTOM_ATTRIBUTES_KEY_VALUE_PAIR ))): obj_2 = vnc_api.KeyValuePair() if self.properties.get( self.LOADBALANCER_POOL_CUSTOM_ATTRIBUTES, {} ).get( self. LOADBALANCER_POOL_CUSTOM_ATTRIBUTES_KEY_VALUE_PAIR, {})[index_1].get( self. LOADBALANCER_POOL_CUSTOM_ATTRIBUTES_KEY_VALUE_PAIR_KEY ) is not None: obj_2.set_key( self.properties.get( self.LOADBALANCER_POOL_CUSTOM_ATTRIBUTES, {} ).get( self. LOADBALANCER_POOL_CUSTOM_ATTRIBUTES_KEY_VALUE_PAIR, {}) [index_1].get( self. LOADBALANCER_POOL_CUSTOM_ATTRIBUTES_KEY_VALUE_PAIR_KEY )) if self.properties.get( self.LOADBALANCER_POOL_CUSTOM_ATTRIBUTES, {} ).get( self. LOADBALANCER_POOL_CUSTOM_ATTRIBUTES_KEY_VALUE_PAIR, {})[index_1].get( self. LOADBALANCER_POOL_CUSTOM_ATTRIBUTES_KEY_VALUE_PAIR_VALUE ) is not None: obj_2.set_value( self.properties.get( self.LOADBALANCER_POOL_CUSTOM_ATTRIBUTES, {} ).get( self. LOADBALANCER_POOL_CUSTOM_ATTRIBUTES_KEY_VALUE_PAIR, {}) [index_1].get( self. LOADBALANCER_POOL_CUSTOM_ATTRIBUTES_KEY_VALUE_PAIR_VALUE )) obj_1.add_key_value_pair(obj_2) obj_0.set_loadbalancer_pool_custom_attributes(obj_1) # reference to loadbalancer_listener_refs if self.properties.get(self.LOADBALANCER_LISTENER_REFS): for index_0 in range( len(self.properties.get(self.LOADBALANCER_LISTENER_REFS))): try: ref_obj = self.vnc_lib().loadbalancer_listener_read( id=self.properties.get( self.LOADBALANCER_LISTENER_REFS)[index_0]) except vnc_api.NoIdError: ref_obj = self.vnc_lib().loadbalancer_listener_read( fq_name_str=self.properties.get( self.LOADBALANCER_LISTENER_REFS)[index_0]) obj_0.add_loadbalancer_listener(ref_obj) # reference to loadbalancer_healthmonitor_refs if self.properties.get(self.LOADBALANCER_HEALTHMONITOR_REFS): for index_0 in range( len( self.properties.get( self.LOADBALANCER_HEALTHMONITOR_REFS))): try: ref_obj = self.vnc_lib().loadbalancer_healthmonitor_read( id=self.properties.get( self.LOADBALANCER_HEALTHMONITOR_REFS)[index_0]) except vnc_api.NoIdError: ref_obj = self.vnc_lib().loadbalancer_healthmonitor_read( fq_name_str=self.properties.get( self.LOADBALANCER_HEALTHMONITOR_REFS)[index_0]) obj_0.add_loadbalancer_healthmonitor(ref_obj) # reference to service_instance_refs if self.properties.get(self.SERVICE_INSTANCE_REFS): for index_0 in range( len(self.properties.get(self.SERVICE_INSTANCE_REFS))): try: ref_obj = self.vnc_lib().service_instance_read( id=self.properties.get( self.SERVICE_INSTANCE_REFS)[index_0]) except vnc_api.NoIdError: ref_obj = self.vnc_lib().service_instance_read( fq_name_str=self.properties.get( self.SERVICE_INSTANCE_REFS)[index_0]) obj_0.add_service_instance(ref_obj) # reference to virtual_machine_interface_refs if self.properties.get(self.VIRTUAL_MACHINE_INTERFACE_REFS): for index_0 in range( len( self.properties.get( self.VIRTUAL_MACHINE_INTERFACE_REFS))): try: ref_obj = self.vnc_lib().virtual_machine_interface_read( id=self.properties.get( self.VIRTUAL_MACHINE_INTERFACE_REFS)[index_0]) except vnc_api.NoIdError: ref_obj = self.vnc_lib().virtual_machine_interface_read( fq_name_str=self.properties.get( self.VIRTUAL_MACHINE_INTERFACE_REFS)[index_0]) obj_0.add_virtual_machine_interface(ref_obj) # reference to service_appliance_set_refs if self.properties.get(self.SERVICE_APPLIANCE_SET_REFS): for index_0 in range( len(self.properties.get(self.SERVICE_APPLIANCE_SET_REFS))): try: ref_obj = self.vnc_lib().service_appliance_set_read( id=self.properties.get( self.SERVICE_APPLIANCE_SET_REFS)[index_0]) except vnc_api.NoIdError: ref_obj = self.vnc_lib().service_appliance_set_read( fq_name_str=self.properties.get( self.SERVICE_APPLIANCE_SET_REFS)[index_0]) obj_0.add_service_appliance_set(ref_obj) try: obj_uuid = super(ContrailLoadbalancerPool, self).resource_create(obj_0) except: raise Exception( _('loadbalancer-pool %s could not be updated.') % self.name) self.resource_id_set(obj_uuid)