def get_inventory(self, resource_provider_uuid, resource_class): """Get resource provider inventory. :param resource_provider_uuid: UUID of the resource provider :type resource_provider_uuid: str :param resource_class: Resource class name of the inventory to be returned :type resource_class: str :raises c_exc.PlacementInventoryNotFound: For failure to find inventory for a resource provider """ url = '/resource_providers/%s/inventories/%s' % ( resource_provider_uuid, resource_class) try: return self._get(url).json() except k_exc.NotFound as e: if "No resource provider with uuid" in e.details: raise c_exc.PlacementResourceProviderNotFound( resource_provider=resource_provider_uuid) elif _("No inventory of class") in e.details: raise c_exc.PlacementInventoryNotFound( resource_provider=resource_provider_uuid, resource_class=resource_class) else: raise
def test_update_usage_failed_parent_provider(self, mock_log): with mock.patch.object(self.rt.conductor_api, 'report_data') as m: m.side_effect = exception.PlacementResourceProviderNotFound( resource_provider='foo') self.rt.update_usage(None) m.assert_called_once_with(None, 'fake-mini', []) mock_log.error.assert_called_once_with('Unable to report usage: %s', m.side_effect)
def _get_root_provider(self, context, hostname): try: provider = self.placement_client.get("resource_providers?name=" + hostname).json() pr_uuid = provider["resource_providers"][0]["uuid"] return pr_uuid except IndexError: raise exception.PlacementResourceProviderNotFound( resource_provider=hostname)
def _get_root_provider(self, context, hostname): try: provider = self.placement_client.get( "resource_providers?name=" + hostname).json() pr_uuid = provider["resource_providers"][0]["uuid"] return pr_uuid except IndexError: raise exception.PlacementResourceProviderNotFound( resource_provider=hostname) except Exception as e: LOG.error("Error, could not access placement. Details: %(info)s", {"info": e}) return
def get_resource_provider(self, resource_provider_uuid): """Get resource provider by UUID. :param resource_provider_uuid: UUID of the resource provider. :raises PlacementResourceProviderNotFound: For failure to find resource :returns: The Resource Provider matching the UUID. """ url = '/resource_providers/%s' % resource_provider_uuid try: return self.get(url).json() except ks_exc.NotFound: raise exception.PlacementResourceProviderNotFound( resource_provider=resource_provider_uuid)
def update_inventory( self, resource_provider_uuid, inventories, resource_provider_generation=None): if resource_provider_generation is None: resource_provider_generation = self.get_resource_provider( resource_provider_uuid=resource_provider_uuid)['generation'] url = '/resource_providers/%s/inventories' % resource_provider_uuid body = { 'resource_provider_generation': resource_provider_generation, 'inventories': inventories } try: return self.put(url, body).json() except ks_exc.NotFound: raise exception.PlacementResourceProviderNotFound( resource_provider=resource_provider_uuid)