Exemple #1
0
    def update_resource_provider_inventory(
            self, resource_provider_uuid, inventory, resource_class,
            resource_provider_generation=None):
        """Update resource provider inventory.

        :param resource_provider_uuid: UUID of the resource provider.
        :param inventory: The inventory to be updated for the resource class.
        :param resource_class: The name of the resource class.
        :param resource_provider_generation: The generation of the resource
                                             provider. Optional.
        :raises PlacementResourceNotFound: If the resource provider or the
                                           resource class is not found.
        :raises PlacementInventoryUpdateConflict: If the resource provider
                                                  generation does not match
                                                  with the server side.
        """
        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/%s' % (
            resource_provider_uuid, resource_class)
        inventory['resource_provider_generation'] = \
            resource_provider_generation
        try:
            return self._put(url, inventory).json()
        except ks_exc.NotFound as e:
            raise n_exc.PlacementResourceNotFound(url=e.url)
        except ks_exc.Conflict:
            raise n_exc.PlacementInventoryUpdateConflict(
                resource_provider=resource_provider_uuid,
                resource_class=resource_class)
Exemple #2
0
    def update_resource_provider_inventory(self,
                                           resource_provider_uuid,
                                           inventory,
                                           resource_class,
                                           resource_provider_generation=None):
        """Update resource provider inventory.

        :param resource_provider_uuid: UUID of the resource provider.
        :param inventory: The inventory to be updated for the resource class.
        :param resource_class: The name of the resource class.
        :param resource_provider_generation: The generation of the resource
                                             provider. Optional.
        :raises PlacementResourceNotFound: If the resource provider or the
                                           resource class is not found.
        :raises PlacementResourceProviderGenerationConflict: If the resource
                                                             provider
                                                             generation does
                                                             not match with the
                                                             server side.
        :returns: The updated inventory of the resource class as a dict.
        """
        url = '/resource_providers/%s/inventories/%s' % (
            resource_provider_uuid, resource_class)
        body = inventory

        try:
            return self._put_with_retry_for_generation_conflict(
                url, body, resource_provider_uuid,
                resource_provider_generation)
        except ks_exc.NotFound as e:
            raise n_exc.PlacementResourceNotFound(url=e.url)