def test_get_sort_params_params_modified(self): """Verifies that the input sort parameter are modified.""" params = {'sort': 'key1:dir1,key2:dir2,key3:dir3'} common.get_sort_params(params) self.assertEqual({}, params) params = {'sort_key': 'key1', 'sort_dir': 'dir1'} common.get_sort_params(params) self.assertEqual({}, params)
def test_get_sort_params_multiple_not_all_dirs(self): """Verifies multiple sort keys without all directions.""" params = {'sort': 'key1:dir1,key2,key3:dir3'} sort_keys, sort_dirs = common.get_sort_params(params) self.assertEqual(['key1', 'key2', 'key3'], sort_keys) # Second key is missing the direction, should be defaulted self.assertEqual(['dir1', 'desc', 'dir3'], sort_dirs)
def test_get_sort_params_single_with_default_old_params(self): """Verifies a single sort value with a default direction.""" params = {'sort_key': 'key1'} sort_keys, sort_dirs = common.get_sort_params(params) self.assertEqual(['key1'], sort_keys) # Direction should be defaulted self.assertEqual(['desc'], sort_dirs)
def test_get_sort_params_multiple_override_default_dir(self): """Verifies multiple sort keys and overriding default direction.""" params = {'sort': 'key1:dir1,key2,key3'} sort_keys, sort_dirs = common.get_sort_params(params, default_dir='foo') self.assertEqual(['key1', 'key2', 'key3'], sort_keys) self.assertEqual(['dir1', 'foo', 'foo'], sort_dirs)
def index(self, req): """Returns a list of restores, transformed through view builder.""" context = req.environ['karbor.context'] LOG.info(_LI("Show restore list"), context=context) params = req.params.copy() marker, limit, offset = common.get_pagination_params(params) sort_keys, sort_dirs = common.get_sort_params(params) filters = params utils.remove_invalid_filter_options( context, filters, self._get_restore_filter_options()) utils.check_filters(filters) restores = self._get_all(context, marker, limit, sort_keys=sort_keys, sort_dirs=sort_dirs, filters=filters, offset=offset) retval_restores = self._view_builder.detail_list(req, restores) LOG.info(_LI("Show restore list request issued successfully.")) return retval_restores
def index(self, req): """Returns a list of plans, transformed through view builder.""" context = req.environ['karbor.context'] LOG.info("Show plan list", context=context) params = req.params.copy() marker, limit, offset = common.get_pagination_params(params) sort_keys, sort_dirs = common.get_sort_params(params) filters = params utils.remove_invalid_filter_options(context, filters, self._get_plan_filter_options()) utils.check_filters(filters) plans = self._get_all(context, marker, limit, sort_keys=sort_keys, sort_dirs=sort_dirs, filters=filters, offset=offset) retval_plans = self._view_builder.detail_list(req, plans) LOG.info("Show plan list request issued successfully.") return retval_plans
def index(self, req): """Returns a list of triggers, transformed through view builder.""" context = req.environ['karbor.context'] check_policy(context, 'list') params = req.params.copy() LOG.debug('List triggers start, params=%s', params) marker, limit, offset = common.get_pagination_params(params) sort_keys, sort_dirs = common.get_sort_params(params) filters = params valid_filters = ["all_tenants", "name", "type", "properties"] utils.remove_invalid_filter_options(context, filters, valid_filters) utils.check_filters(filters) all_tenants = utils.get_bool_param("all_tenants", filters) if not (context.is_admin and all_tenants): filters["project_id"] = context.project_id try: triggers = objects.TriggerList.get_by_filters( context, filters, limit, marker, sort_keys, sort_dirs) except Exception as ex: self._raise_unknown_exception(ex) return self._view_builder.detail_list(req, triggers)
def test_get_sort_params_override_defaults(self): """Verifies that the defaults can be overridden.""" sort_keys, sort_dirs = common.get_sort_params({}, default_key='key1', default_dir='dir1') self.assertEqual(['key1'], sort_keys) self.assertEqual(['dir1'], sort_dirs)
def index(self, req): """Returns a list of triggers, transformed through view builder.""" context = req.environ['karbor.context'] context.can(trigger_policy.GET_ALL_POLICY) params = req.params.copy() LOG.debug('List triggers start, params=%s', params) marker, limit, offset = common.get_pagination_params(params) sort_keys, sort_dirs = common.get_sort_params(params) filters = params valid_filters = ["all_tenants", "name", "type", "properties"] utils.remove_invalid_filter_options(context, filters, valid_filters) utils.check_filters(filters) all_tenants = utils.get_bool_param("all_tenants", filters) if not (context.is_admin and all_tenants): filters["project_id"] = context.project_id try: triggers = objects.TriggerList.get_by_filters( context, filters, limit, marker, sort_keys, sort_dirs) except Exception as ex: self._raise_unknown_exception(ex) return self._view_builder.detail_list(req, triggers)
def checkpoints_index(self, req, provider_id): """Returns a list of checkpoints, transformed through view builder.""" context = req.environ['karbor.context'] LOG.info("Show checkpoints list. provider_id:%s", provider_id) params = req.params.copy() marker, limit, offset = common.get_pagination_params(params) sort_keys, sort_dirs = common.get_sort_params(params) filters = params utils.remove_invalid_filter_options( context, filters, self._get_checkpoint_filter_options()) utils.check_filters(filters) checkpoints = self._checkpoints_get_all(context, provider_id, marker, limit, sort_keys=sort_keys, sort_dirs=sort_dirs, filters=filters, offset=offset) retval_checkpoints = self._checkpoint_view_builder.detail_list( req, checkpoints) LOG.info("Show checkpoints list request issued successfully.") return retval_checkpoints
def index(self, req): """Returns a list of verifications.""" context = req.environ['karbor.context'] LOG.info("Show verification list", context=context) params = req.params.copy() marker, limit, offset = common.get_pagination_params(params) sort_keys, sort_dirs = common.get_sort_params(params) filters = params utils.remove_invalid_filter_options(context, filters, CONF.query_verification_filters) utils.check_filters(filters) try: verifications = self._get_all(context, marker, limit, sort_keys=sort_keys, sort_dirs=sort_dirs, filters=filters, offset=offset) except exception.VerificationNotFound as error: raise exc.HTTPNotFound(explanation=error.msg) retval_verifications = self._view_builder.detail_list( req, verifications) LOG.info("Show verification list request issued successfully.") return retval_verifications
def checkpoints_index(self, req, provider_id): """Returns a list of checkpoints, transformed through view builder.""" context = req.environ['karbor.context'] LOG.info(_LI("Show checkpoints list. " "provider_id:%s"), provider_id) params = req.params.copy() marker, limit, offset = common.get_pagination_params(params) sort_keys, sort_dirs = common.get_sort_params(params) filters = params utils.remove_invalid_filter_options( context, filters, self._get_checkpoint_filter_options()) utils.check_filters(filters) checkpoints = self._checkpoints_get_all( context, provider_id, marker, limit, sort_keys=sort_keys, sort_dirs=sort_dirs, filters=filters, offset=offset) retval_checkpoints = self._checkpoint_view_builder.detail_list( req, checkpoints) LOG.info(_LI("Show checkpoints list request issued successfully.")) return retval_checkpoints
def instances_index(self, req, protectable_type): """Return data about the given protectable_type.""" context = req.environ['karbor.context'] LOG.info(_LI("Show the instances of a given" " protectable type: %s"), protectable_type) params = req.params.copy() marker, limit, offset = common.get_pagination_params(params) sort_keys, sort_dirs = common.get_sort_params(params) filters = params utils.check_filters(filters) parameters = filters.get("parameters", None) if parameters is not None: if not isinstance(parameters, dict): msg = _("The parameters must be a dict.") raise exception.InvalidInput(reason=msg) utils.remove_invalid_filter_options( context, filters, self._get_instance_filter_options()) protectable_types = self._get_all(context) if protectable_type not in protectable_types: msg = _("Invalid protectable type provided.") raise exception.InvalidInput(reason=msg) instances = self._instances_get_all(context, protectable_type, marker, limit, sort_keys=sort_keys, sort_dirs=sort_dirs, filters=filters, offset=offset, parameters=parameters) for instance in instances: protectable_id = instance.get("id") instance["type"] = protectable_type if protectable_id is None: raise exception.InvalidProtectableInstance() dependents = self.protection_api.\ list_protectable_dependents(context, protectable_id, protectable_type) instance["dependent_resources"] = dependents retval_instances = self._view_builder.detail_list(req, instances) return retval_instances
def instances_index(self, req, protectable_type): """Return data about the given protectable_type.""" context = req.environ['karbor.context'] LOG.info(_LI("Show the instances of a given" " protectable type: %s"), protectable_type) params = req.params.copy() marker, limit, offset = common.get_pagination_params(params) sort_keys, sort_dirs = common.get_sort_params(params) filters = params utils.check_filters(filters) parameters = filters.get("parameters", None) if parameters is not None: if not isinstance(parameters, dict): msg = _("The parameters must be a dict.") raise exception.InvalidInput(reason=msg) utils.remove_invalid_filter_options( context, filters, self._get_instance_filter_options()) protectable_types = self._get_all(context) if protectable_type not in protectable_types: msg = _("Invalid protectable type provided.") raise exception.InvalidInput(reason=msg) instances = self._instances_get_all( context, protectable_type, marker, limit, sort_keys=sort_keys, sort_dirs=sort_dirs, filters=filters, offset=offset, parameters=parameters) for instance in instances: protectable_id = instance.get("id") instance["type"] = protectable_type if protectable_id is None: raise exception.InvalidProtectableInstance() dependents = self.protection_api.\ list_protectable_dependents(context, protectable_id, protectable_type) instance["dependent_resources"] = dependents retval_instances = self._view_builder.detail_list(req, instances) return retval_instances
def test_get_sort_params_single_value_sort_param(self): """Verifies a single sort key and direction.""" params = {'sort': 'key1:dir1'} sort_keys, sort_dirs = common.get_sort_params(params) self.assertEqual(['key1'], sort_keys) self.assertEqual(['dir1'], sort_dirs)
def test_get_sort_params_defaults(self): """Verifies the default sort key and direction.""" sort_keys, sort_dirs = common.get_sort_params({}) self.assertEqual(['created_at'], sort_keys) self.assertEqual(['desc'], sort_dirs)
def test_get_sort_params_random_spaces(self): """Verifies that leading and trailing spaces are removed.""" params = {'sort': ' key1 : dir1,key2: dir2 , key3 '} sort_keys, sort_dirs = common.get_sort_params(params) self.assertEqual(['key1', 'key2', 'key3'], sort_keys) self.assertEqual(['dir1', 'dir2', 'desc'], sort_dirs)
def test_get_sort_params_single_value_old_params(self): """Verifies a single sort key and direction.""" params = {'sort_key': 'key1', 'sort_dir': 'dir1'} sort_keys, sort_dirs = common.get_sort_params(params) self.assertEqual(['key1'], sort_keys) self.assertEqual(['dir1'], sort_dirs)
def test_get_sort_params_multiple_values(self): """Verifies multiple sort parameter values.""" params = {'sort': 'key1:dir1,key2:dir2,key3:dir3'} sort_keys, sort_dirs = common.get_sort_params(params) self.assertEqual(['key1', 'key2', 'key3'], sort_keys) self.assertEqual(['dir1', 'dir2', 'dir3'], sort_dirs)