Exemplo n.º 1
0
    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)
Exemplo n.º 2
0
    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
Exemplo n.º 3
0
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
Exemplo n.º 4
0
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
Exemplo n.º 5
0
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()))
Exemplo n.º 6
0
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))

    kvps.add_key_value_pair(kvp)
    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)
Exemplo n.º 9
0
 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)
Exemplo n.º 10
0
    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)
Exemplo n.º 11
0
    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)
Exemplo n.º 12
0
    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)
Exemplo n.º 13
0
    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)