From 86f9190d8429d115a695423dc532b39b113d7ba2 Mon Sep 17 00:00:00 2001 From: Magesh GV Date: Sun, 28 Jun 2015 21:50:47 +0530 Subject: [PATCH] Support GBP Neutron mapping resources in List filters Change-Id: Ica6c645a02cae848e5639dcbbeb60a8682d1083d Closes-Bug: 1469540 --- .../db/grouppolicy/group_policy_mapping_db.py | 39 +++++++++++++++++++ .../test_group_policy_mapping_db.py | 31 +++++++++++++++ 2 files changed, 70 insertions(+) diff --git a/gbpservice/neutron/db/grouppolicy/group_policy_mapping_db.py b/gbpservice/neutron/db/grouppolicy/group_policy_mapping_db.py index 874b9cd8b..877c52d8a 100644 --- a/gbpservice/neutron/db/grouppolicy/group_policy_mapping_db.py +++ b/gbpservice/neutron/db/grouppolicy/group_policy_mapping_db.py @@ -170,6 +170,19 @@ class GroupPolicyMappingDbPlugin(gpdb.GroupPolicyDbPlugin): context.session.add(pt_db) return self._make_policy_target_dict(pt_db) + @log.log + def get_policy_targets(self, context, filters=None, fields=None, + sorts=None, limit=None, marker=None, + page_reverse=False): + marker_obj = self._get_marker_obj(context, 'policy_target', limit, + marker) + return self._get_collection(context, PolicyTargetMapping, + self._make_policy_target_dict, + filters=filters, fields=fields, + sorts=sorts, limit=limit, + marker_obj=marker_obj, + page_reverse=page_reverse) + @log.log def create_policy_target_group(self, context, policy_target_group): ptg = policy_target_group['policy_target_group'] @@ -240,6 +253,19 @@ class GroupPolicyMappingDbPlugin(gpdb.GroupPolicyDbPlugin): context.session.add(l2p_db) return self._make_l2_policy_dict(l2p_db) + @log.log + def get_l2_policies(self, context, filters=None, fields=None, + sorts=None, limit=None, marker=None, + page_reverse=False): + marker_obj = self._get_marker_obj(context, 'l2_policy', limit, + marker) + return self._get_collection(context, L2PolicyMapping, + self._make_l2_policy_dict, + filters=filters, fields=fields, + sorts=sorts, limit=limit, + marker_obj=marker_obj, + page_reverse=page_reverse) + @log.log def create_l3_policy(self, context, l3_policy): l3p = l3_policy['l3_policy'] @@ -321,3 +347,16 @@ class GroupPolicyMappingDbPlugin(gpdb.GroupPolicyDbPlugin): if 'external_routes' in es: self._process_segment_ers(context, es_db, es) return self._make_external_segment_dict(es_db) + + @log.log + def get_external_segments(self, context, filters=None, fields=None, + sorts=None, limit=None, marker=None, + page_reverse=False): + marker_obj = self._get_marker_obj(context, 'external_segment', limit, + marker) + return self._get_collection(context, ExternalSegmentMapping, + self._make_external_segment_dict, + filters=filters, fields=fields, + sorts=sorts, limit=limit, + marker_obj=marker_obj, + page_reverse=page_reverse) diff --git a/gbpservice/neutron/tests/unit/db/grouppolicy/test_group_policy_mapping_db.py b/gbpservice/neutron/tests/unit/db/grouppolicy/test_group_policy_mapping_db.py index dd16de128..a0516c347 100644 --- a/gbpservice/neutron/tests/unit/db/grouppolicy/test_group_policy_mapping_db.py +++ b/gbpservice/neutron/tests/unit/db/grouppolicy/test_group_policy_mapping_db.py @@ -203,3 +203,34 @@ class TestMappedGroupResourceAttrs(GroupPolicyMappingDbTestCase): req = self.new_delete_request('external_segments', es_id) res = req.get_response(self.ext_api) self.assertEqual(res.status_int, webob.exc.HTTPNoContent.code) + + def test_list_policy_targets(self): + with self.port() as port1: + with self.port() as port2: + ports = [port1['port']['id'], port2['port']['id']] + pts = [self.create_policy_target(port_id=ports[0]), + self.create_policy_target(port_id=ports[1])] + self._test_list_resources('policy_target', [pts[0]], + query_params='port_id=' + ports[0]) + + def test_list_l2_policies(self): + with self.network() as network1: + with self.network() as network2: + networks = [network1['network']['id'], + network2['network']['id']] + l2_policies = [self.create_l2_policy(network_id=networks[0]), + self.create_l2_policy(network_id=networks[1])] + self._test_list_resources( + 'l2_policy', [l2_policies[0]], + query_params='network_id=' + networks[0]) + + def test_list_es(self): + with self.subnet(cidr='10.10.1.0/24') as subnet1: + with self.subnet(cidr='10.10.2.0/24') as subnet2: + subnets = [subnet1['subnet']['id'], subnet2['subnet']['id']] + external_segments = [ + self.create_external_segment(subnet_id=subnets[0]), + self.create_external_segment(subnet_id=subnets[1])] + self._test_list_resources( + 'external_segment', [external_segments[0]], + query_params='subnet_id=' + subnets[0])