Esempio n. 1
0
    def get_all(self, fields=None):
        context = pecan.request.context.get('octavia_context')
        self._auth_validate_action(context, context.project_id,
                                   constants.RBAC_GET_ALL)
        self.driver = driver_factory.get_driver(self.provider)
        try:
            metadata_dict = self.driver.get_supported_flavor_metadata()
        except driver_except.NotImplementedError as e:
            LOG.warning(
                'Provider %s get_supported_flavor_metadata() '
                'reported: %s', self.provider, e.operator_fault_string)
            raise exceptions.ProviderNotImplementedError(
                prov=self.provider, user_msg=e.user_fault_string)

        # Apply any valid filters provided as URL parameters
        name_filter = None
        description_filter = None
        pagination_helper = pecan.request.context.get(
            constants.PAGINATION_HELPER)
        if pagination_helper:
            name_filter = pagination_helper.params.get(constants.NAME)
            description_filter = pagination_helper.params.get(
                constants.DESCRIPTION)
        if name_filter:
            metadata_dict = {
                key: value
                for key, value in six.iteritems(metadata_dict)
                if key == name_filter
            }
        if description_filter:
            metadata_dict = {
                key: value
                for key, value in six.iteritems(metadata_dict)
                if value == description_filter
            }

        response_list = [
            provider_types.ProviderResponse(name=key, description=value)
            for key, value in six.iteritems(metadata_dict)
        ]
        if fields is not None:
            response_list = self._filter_fields(response_list, fields)
        return provider_types.FlavorCapabilitiesResponse(
            flavor_capabilities=response_list)
Esempio n. 2
0
 def get_all(self, fields=None):
     context = pecan.request.context.get('octavia_context')
     self._auth_validate_action(context, context.project_id,
                                constants.RBAC_GET_ALL)
     self.driver = driver_factory.get_driver(self.provider)
     try:
         metadata_dict = self.driver.get_supported_flavor_metadata()
     except driver_except.NotImplementedError as e:
         LOG.warning('Provider %s get_supported_flavor_metadata() '
                     'reported: %s', self.provider, e.operator_fault_string)
         raise exceptions.ProviderNotImplementedError(
             prov=self.provider, user_msg=e.user_fault_string)
     response_list = [
         provider_types.ProviderResponse(name=key, description=value) for
         key, value in six.iteritems(metadata_dict)]
     if fields is not None:
         response_list = self._filter_fields(response_list, fields)
     return provider_types.FlavorCapabilitiesResponse(
         flavor_capabilities=response_list)