def index(self, req): filter_whitelist = { "name": "mixed", "target": "mixed", "action": "mixed", "created_time": "single", "updated_time": "single", "deleted_time": "single", } param_whitelist = { "limit": "single", "marker": "single", "sort_dir": "single", "sort_keys": "multi", "show_deleted": "single", } params = util.get_allowed_params(req.params, param_whitelist) filters = util.get_allowed_params(req.params, filter_whitelist) key = consts.PARAM_LIMIT if key in params: params[key] = utils.parse_int_param(key, params[key]) key = consts.PARAM_SHOW_DELETED if key in params: params[key] = utils.parse_bool_param(key, params[key]) if not filters: filters = None actions = self.rpc_client.action_list(req.context, filters=filters, **params) return {"actions": actions}
def index(self, req): filter_whitelist = { 'name': 'mixed', 'target': 'mixed', 'action': 'mixed', 'created_time': 'single', 'updated_time': 'single', 'deleted_time': 'single', } param_whitelist = { 'limit': 'single', 'marker': 'single', 'sort_dir': 'single', 'sort_keys': 'multi', 'show_deleted': 'single', } params = util.get_allowed_params(req.params, param_whitelist) filters = util.get_allowed_params(req.params, filter_whitelist) key = consts.PARAM_LIMIT if key in params: params[key] = utils.parse_int_param(key, params[key]) key = consts.PARAM_SHOW_DELETED if key in params: params[key] = utils.parse_bool_param(key, params[key]) if not filters: filters = None actions = self.rpc_client.action_list(req.context, filters=filters, **params) return {'actions': actions}
def index(self, req): filter_whitelist = { 'name': 'mixed', 'target': 'mixed', 'action': 'mixed', 'created_time': 'single', 'updated_time': 'single', 'deleted_time': 'single', } param_whitelist = { 'limit': 'single', 'marker': 'single', 'sort_dir': 'single', 'sort_keys': 'multi', 'show_deleted': 'single', } params = util.get_allowed_params(req.params, param_whitelist) filters = util.get_allowed_params(req.params, filter_whitelist) key = consts.PARAM_LIMIT if key in params: params[key] = utils.parse_int_param(key, params[key]) key = consts.PARAM_SHOW_DELETED if key in params: params[key] = utils.parse_bool_param(key, params[key]) if not filters: filters = None actions = self.rpc_client.action_list(req.context, filters=filters, **params) return {'actions': actions}
def index(self, req): filter_whitelist = { 'status': 'mixed', 'name': 'mixed', 'project': 'mixed', 'parent': 'mixed', 'user': '******', } param_whitelist = { 'limit': 'single', 'marker': 'single', 'sort_dir': 'single', 'sort_keys': 'multi', 'show_deleted': 'single', 'show_nested': 'single', } params = util.get_allowed_params(req.params, param_whitelist) filters = util.get_allowed_params(req.params, filter_whitelist) key = consts.PARAM_SHOW_DELETED if key in params: params[key] = utils.parse_bool_param(key, params[key]) key = consts.PARAM_SHOW_NESTED if key in params: params[key] = utils.parse_bool_param(key, params[key]) if not filters: filters = None clusters = self.rpc_client.cluster_list(req.context, filters=filters, project_safe=True, **params) return {'clusters': clusters}
def index(self, req): filter_whitelist = { consts.TRIGGER_NAME: 'mixed', consts.TRIGGER_TYPE: 'mixed', consts.TRIGGER_STATE: 'mixed', consts.TRIGGER_ENABLED: 'mixed', consts.TRIGGER_SEVERITY: 'mixed', } param_whitelist = { consts.PARAM_LIMIT: 'single', consts.PARAM_MARKER: 'single', consts.PARAM_SORT_DIR: 'single', consts.PARAM_SORT_KEYS: 'multi', consts.PARAM_SHOW_DELETED: 'single', consts.PARAM_GLOBAL_PROJECT: 'single', } params = util.get_allowed_params(req.params, param_whitelist) filters = util.get_allowed_params(req.params, filter_whitelist) key = consts.PARAM_SHOW_DELETED if key in params: params[key] = utils.parse_bool_param(key, params[key]) key = consts.PARAM_LIMIT if key in params: params[key] = utils.parse_int_param(key, params[key]) key = consts.PARAM_SORT_DIR if key in params: sort_dir = params[key].lower() if sort_dir not in ('asc', 'desc'): raise exc.HTTPBadRequest( _("Sorting direction (sort_dir) must " "be either 'asc' or 'desc'.")) key = consts.PARAM_GLOBAL_PROJECT if key in params: project_safe = not utils.parse_bool_param(key, params[key]) del params[key] params['project_safe'] = project_safe if not filters: filters = None triggers = self.rpc_client.trigger_list(req.context, filters=filters, **params) return {'triggers': triggers}
def index(self, req): filter_whitelist = { consts.TRIGGER_NAME: 'mixed', consts.TRIGGER_TYPE: 'mixed', consts.TRIGGER_STATE: 'mixed', consts.TRIGGER_ENABLED: 'mixed', consts.TRIGGER_SEVERITY: 'mixed', } param_whitelist = { consts.PARAM_LIMIT: 'single', consts.PARAM_MARKER: 'single', consts.PARAM_SORT_DIR: 'single', consts.PARAM_SORT_KEYS: 'multi', consts.PARAM_SHOW_DELETED: 'single', consts.PARAM_GLOBAL_PROJECT: 'single', } params = util.get_allowed_params(req.params, param_whitelist) filters = util.get_allowed_params(req.params, filter_whitelist) key = consts.PARAM_SHOW_DELETED if key in params: params[key] = utils.parse_bool_param(key, params[key]) key = consts.PARAM_LIMIT if key in params: params[key] = utils.parse_int_param(key, params[key]) key = consts.PARAM_SORT_DIR if key in params: sort_dir = params[key].lower() if sort_dir not in ('asc', 'desc'): raise exc.HTTPBadRequest(_("Sorting direction (sort_dir) must " "be either 'asc' or 'desc'.")) key = consts.PARAM_GLOBAL_PROJECT if key in params: project_safe = not utils.parse_bool_param(key, params[key]) del params[key] params['project_safe'] = project_safe if not filters: filters = None triggers = self.rpc_client.trigger_list(req.context, filters=filters, **params) return {'triggers': triggers}
def test_handles_mixed_value_param_with_multiple_entries(self): self.whitelist = {'foo': 'mixed'} self.params.add('foo', 'foo value 2') result = util.get_allowed_params(self.params, self.whitelist) self.assertEqual(2, len(result['foo'])) self.assertIn('foo value', result['foo']) self.assertIn('foo value 2', result['foo'])
def test_handles_mixed_value_param_with_multiple_entries(self): self.whitelist = {'foo': 'mixed'} self.params.add('foo', 'foo value 2') result = util.get_allowed_params(self.params, self.whitelist) self.assertEqual(2, len(result['foo'])) self.assertIn('foo value', result['foo']) self.assertIn('foo value 2', result['foo'])
def index(self, req): filter_whitelist = { 'obj_name': 'mixed', 'obj_type': 'mixed', 'obj_id': 'mixed', 'cluster_id': 'mixed', 'action': 'mixed', } param_whitelist = { 'limit': 'single', 'marker': 'single', 'sort_dir': 'single', 'sort_keys': 'multi', 'global_tenant': 'single', 'show_deleted': 'single', } params = util.get_allowed_params(req.params, param_whitelist) filters = util.get_allowed_params(req.params, filter_whitelist) key = consts.PARAM_SHOW_DELETED if key in params: params[key] = utils.parse_bool_param(key, params[key]) key = consts.PARAM_GLOBAL_TENANT if key in params: global_tenant = utils.parse_bool_param(key, params[key]) params.pop(key) params['tenant_safe'] = not global_tenant key = consts.PARAM_LIMIT if key in params: params[key] = utils.parse_int_param(key, params[key]) if not filters: filters = None events = self.rpc_client.event_list(req.context, filters=filters, **params) return {'events': events}
def index(self, req): filter_whitelist = { 'name': 'mixed', 'user': '******', 'obj_id': 'mixed', 'obj_type': 'mixed', 'action': 'mixed', } param_whitelist = { 'limit': 'single', 'marker': 'single', 'sort_keys': 'multi', 'sort_dir': 'single', 'show_deleted': 'single', 'global_project': 'single', } params = util.get_allowed_params(req.params, param_whitelist) filters = util.get_allowed_params(req.params, filter_whitelist) key = consts.PARAM_LIMIT if key in params: params[key] = utils.parse_int_param(key, params[key]) key = consts.PARAM_SHOW_DELETED if key in params: params[key] = utils.parse_bool_param(key, params[key]) key = consts.PARAM_GLOBAL_PROJECT if key in params: project_safe = not utils.parse_bool_param(key, params[key]) del params[key] params['project_safe'] = project_safe if not filters: filters = None webhooks = self.rpc_client.webhook_list(req.context, filters=filters, **params) return {'webhooks': webhooks}
def index(self, req): filter_whitelist = { 'obj_name': 'mixed', 'obj_type': 'mixed', 'obj_id': 'mixed', 'cluster_id': 'mixed', 'action': 'mixed', } param_whitelist = { 'limit': 'single', 'marker': 'single', 'sort_dir': 'single', 'sort_keys': 'multi', 'global_project': 'single', 'show_deleted': 'single', } params = util.get_allowed_params(req.params, param_whitelist) filters = util.get_allowed_params(req.params, filter_whitelist) key = consts.PARAM_SHOW_DELETED if key in params: params[key] = utils.parse_bool_param(key, params[key]) key = consts.PARAM_GLOBAL_PROJECT if key in params: global_project = utils.parse_bool_param(key, params[key]) params.pop(key) params['project_safe'] = not global_project key = consts.PARAM_LIMIT if key in params: params[key] = utils.parse_int_param(key, params[key]) if not filters: filters = None events = self.rpc_client.event_list(req.context, filters=filters, **params) return {'events': events}
def index(self, req): filter_whitelist = { 'name': 'mixed', 'user': '******', 'obj_id': 'mixed', 'obj_type': 'mixed', 'action': 'mixed', } param_whitelist = { 'limit': 'single', 'marker': 'single', 'sort_keys': 'multi', 'sort_dir': 'single', 'show_deleted': 'single', 'global_project': 'single', } params = util.get_allowed_params(req.params, param_whitelist) filters = util.get_allowed_params(req.params, filter_whitelist) key = consts.PARAM_LIMIT if key in params: params[key] = utils.parse_int_param(key, params[key]) key = consts.PARAM_SHOW_DELETED if key in params: params[key] = utils.parse_bool_param(key, params[key]) key = consts.PARAM_GLOBAL_PROJECT if key in params: project_safe = not utils.parse_bool_param(key, params[key]) del params[key] params['project_safe'] = project_safe if not filters: filters = None webhooks = self.rpc_client.webhook_list(req.context, filters=filters, **params) return {'webhooks': webhooks}
def index(self, req): filter_whitelist = { 'status': 'mixed', 'name': 'mixed', } param_whitelist = { 'cluster_id': 'single', 'show_deleted': 'single', 'limit': 'single', 'marker': 'single', 'sort_keys': 'multi', 'sort_dir': 'single', 'global_tenant': 'single', } params = util.get_allowed_params(req.params, param_whitelist) filters = util.get_allowed_params(req.params, filter_whitelist) key = consts.PARAM_LIMIT if key in params: params[key] = utils.parse_int_param(key, params[key]) key = consts.PARAM_SHOW_DELETED if key in params: params[key] = utils.parse_bool_param(key, params[key]) key = consts.PARAM_GLOBAL_TENANT if key in params: tenant_safe = not utils.parse_bool_param(key, params[key]) del params[key] params['tenant_safe'] = tenant_safe if not filters: filters = None nodes = self.rpc_client.node_list(req.context, filters=filters, **params) return {'nodes': nodes}
def index(self, req, cluster_id): filter_whitelist = { 'priority': 'single', 'level': 'single', 'cooldown': 'single', 'enabled': 'single', } param_whitelist = { 'sort_dir': 'single', 'sort_keys': 'multi', } params = util.get_allowed_params(req.params, param_whitelist) filters = util.get_allowed_params(req.params, filter_whitelist) if not filters: filters = None policies = self.rpc_client.cluster_policy_list(req.context, cluster_id=cluster_id, filters=filters, **params) return {'cluster_policies': policies}
def index(self, req, cluster_id): filter_whitelist = { 'priority': 'single', 'level': 'single', 'cooldown': 'single', 'enabled': 'single', } param_whitelist = { 'sort_dir': 'single', 'sort_keys': 'multi', } params = util.get_allowed_params(req.params, param_whitelist) filters = util.get_allowed_params(req.params, filter_whitelist) if not filters: filters = None policies = self.rpc_client.cluster_policy_list(req.context, cluster_id=cluster_id, filters=filters, **params) return {'cluster_policies': policies}
def test_returns_empty_dict(self): self.whitelist = {} result = util.get_allowed_params(self.params, self.whitelist) self.assertEqual({}, result)
def test_handles_mixed_value_param_with_single_entry(self): self.whitelist = {'foo': 'mixed'} result = util.get_allowed_params(self.params, self.whitelist) self.assertEqual('foo value', result['foo'])
def test_ignores_bogus_whitelist_items(self): self.whitelist = {'foo': 'blah'} result = util.get_allowed_params(self.params, self.whitelist) self.assertNotIn('foo', result)
def test_handles_single_value_params(self): result = util.get_allowed_params(self.params, self.whitelist) self.assertEqual('foo value', result['foo'])
def test_returns_only_whitelisted_params(self): self.params.add('bar', 'bar value') result = util.get_allowed_params(self.params, self.whitelist) self.assertIn('foo', result) self.assertNotIn('bar', result)
def test_only_adds_whitelisted_params_if_param_exists(self): self.whitelist = {'foo': 'single'} self.params.clear() result = util.get_allowed_params(self.params, self.whitelist) self.assertNotIn('foo', result)
def test_returns_only_whitelisted_params(self): self.params.add('bar', 'bar value') result = util.get_allowed_params(self.params, self.whitelist) self.assertIn('foo', result) self.assertNotIn('bar', result)
def test_returns_empty_dict(self): self.whitelist = {} result = util.get_allowed_params(self.params, self.whitelist) self.assertEqual({}, result)
def test_handles_single_value_params(self): result = util.get_allowed_params(self.params, self.whitelist) self.assertEqual('foo value', result['foo'])
def test_handles_mixed_value_param_with_single_entry(self): self.whitelist = {'foo': 'mixed'} result = util.get_allowed_params(self.params, self.whitelist) self.assertEqual('foo value', result['foo'])
def test_only_adds_whitelisted_params_if_param_exists(self): self.whitelist = {'foo': 'single'} self.params.clear() result = util.get_allowed_params(self.params, self.whitelist) self.assertNotIn('foo', result)
def test_ignores_bogus_whitelist_items(self): self.whitelist = {'foo': 'blah'} result = util.get_allowed_params(self.params, self.whitelist) self.assertNotIn('foo', result)