示例#1
0
    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)
示例#3
0
 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)
示例#4
0
 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
示例#5
0
    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)
示例#6
0
 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)