def add_resource_pools_to_provider_vdc(self, pvdc_name, resource_pool_names): """Add Resource Pools to a Provider Virtual Datacenter. :param str pvdc_name: name of the Provider Virtual Datacenter. :param list resource_pool_names: list or resource pool names. :return: an object containing EntityType.TASK XML data which represents the asynchronous task that is adding Resource Pools to the PVDC. :rtype: lxml.objectify.ObjectifiedElement """ provider_vdc = self.get_res_by_name(ResourceType.PROVIDER_VDC, pvdc_name) pvdc_resource = self.client.get_resource(provider_vdc.get('href')) pvdc_ext_href = get_admin_extension_href(pvdc_resource.get('href')) pvdc_ext_resource = self.client.get_resource(pvdc_ext_href) vc_name = pvdc_ext_resource.VimServer.get('name') vc_href = pvdc_ext_resource.VimServer.get('href') rp_morefs = self.get_resource_pool_morefs(vc_name, vc_href, resource_pool_names) payload = E_VMEXT.UpdateResourcePoolSetParams() for rp_moref in rp_morefs: add_item = E_VMEXT.AddItem() add_item.append( E_VMEXT.VimServerRef(type=EntityType.VIRTUAL_CENTER.value, href=vc_href)) add_item.append(E_VMEXT.MoRef(rp_moref)) add_item.append(E_VMEXT.VimObjectType('RESOURCE_POOL')) payload.append(add_item) return self.client.post_linked_resource( resource=pvdc_ext_resource, rel=RelationType.UPDATE_RESOURCE_POOLS, media_type=EntityType.RES_POOL_SET_UPDATE_PARAMS.value, contents=payload)
def attach_resource_pools_to_provider_vdc(self, pvdc_name, resource_pool_names): """Attach Resource Pools to a Provider Virtual Datacenter. This function attaches one or more resource pools (RPs) to a Provider Virtual Datacenter (PVDC). Caveat: The current implementation of this function takes a list of RP "basenames" as input. A basename is the last element of a full pathname. For example, given a pathname /a/b/c, the basename of that pathname is "c". Since RP names are only required to have unique pathnames but not unique basenames, this function may not work correctly if there are non-unique RP basenames. Therefore, in order to use this function, all RP basenames must be unique. It is therefore up to the user of this function to be aware of this limitation and name their RPs appropriately. This limitation will be fixed in a future version of this function. :param str pvdc_name: name of the Provider Virtual Datacenter. :param list resource_pool_names: list or resource pool names. :return: an object containing EntityType.TASK XML data which represents the asynchronous task that is adding Resource Pools to the PVDC. :rtype: lxml.objectify.ObjectifiedElement """ provider_vdc = self.get_res_by_name(ResourceType.PROVIDER_VDC, pvdc_name) pvdc_resource = self.client.get_resource(provider_vdc.get('href')) pvdc_ext_href = get_admin_extension_href(pvdc_resource.get('href')) pvdc_ext_resource = self.client.get_resource(pvdc_ext_href) vc_name = pvdc_ext_resource.VimServer.get('name') vc_href = pvdc_ext_resource.VimServer.get('href') rp_morefs = self.get_resource_pool_morefs(vc_name, vc_href, resource_pool_names) payload = E_VMEXT.UpdateResourcePoolSetParams() for rp_moref in rp_morefs: add_item = E_VMEXT.AddItem() add_item.append( E_VMEXT.VimServerRef(type=EntityType.VIRTUAL_CENTER.value, href=vc_href)) add_item.append(E_VMEXT.MoRef(rp_moref)) add_item.append(E_VMEXT.VimObjectType('RESOURCE_POOL')) payload.append(add_item) return self.client.post_linked_resource( resource=pvdc_ext_resource, rel=RelationType.UPDATE_RESOURCE_POOLS, media_type=EntityType.RES_POOL_SET_UPDATE_PARAMS.value, contents=payload)