diff --git a/gbpclient/gbp/v2_0/groupbasedpolicy.py b/gbpclient/gbp/v2_0/groupbasedpolicy.py index b21058a..62df439 100644 --- a/gbpclient/gbp/v2_0/groupbasedpolicy.py +++ b/gbpclient/gbp/v2_0/groupbasedpolicy.py @@ -1129,16 +1129,15 @@ class CreateExternalPolicy(neutronV20.CreateCommand): parsed_args.consumed_policy_rule_sets.pop(key)) if parsed_args.external_segments: - for external_segment in parsed_args.external_segments: - external_segment_id = neutronV20.find_resourceid_by_name_or_id( - self.get_client(), 'external_segment', external_segment) - parsed_args.external_segments.remove(external_segment) - parsed_args.external_segments.append(external_segment_id) + body[self.resource]['external_segments'] = [ + neutronV20.find_resourceid_by_name_or_id( + self.get_client(), + 'external_segment', + elem) for elem in parsed_args.external_segments] neutronV20.update_dict(parsed_args, body[self.resource], ['name', 'tenant_id', 'description', 'provided_policy_rule_sets', - 'external_segments', 'consumed_policy_rule_sets', 'shared']) return body @@ -1197,16 +1196,15 @@ class UpdateExternalPolicy(neutronV20.UpdateCommand): parsed_args.consumed_policy_rule_sets.pop(key)) if parsed_args.external_segments: - for external_segment in parsed_args.external_segments: - external_segment_id = neutronV20.find_resourceid_by_name_or_id( - self.get_client(), 'external_segment', external_segment) - parsed_args.external_segments.remove(external_segment) - parsed_args.external_segments.append(external_segment_id) + body[self.resource]['external_segments'] = [ + neutronV20.find_resourceid_by_name_or_id( + self.get_client(), + 'external_segment', + elem) for elem in parsed_args.external_segments] neutronV20.update_dict(parsed_args, body[self.resource], ['name', 'tenant_id', 'description', 'provided_policy_rule_sets', - 'external_segments', 'consumed_policy_rule_sets', 'shared']) return body diff --git a/gbpclient/tests/unit/test_cli20_externalpolicy.py b/gbpclient/tests/unit/test_cli20_externalpolicy.py index e9a6e21..d42c421 100644 --- a/gbpclient/tests/unit/test_cli20_externalpolicy.py +++ b/gbpclient/tests/unit/test_cli20_externalpolicy.py @@ -50,11 +50,13 @@ class CLITestV20ExternalPolicyJSON(test_cli20.CLITestV20Base): my_id = 'someid' provided_policy_rule_sets = "prs1=true,prs2=true" consumed_policy_rule_sets = "prs3=true,prs4=true" + external_segments = "ES1 ES2" shared = 'True' args = ['--tenant-id', tenant_id, '--description', description, '--provided-policy-rule-sets', provided_policy_rule_sets, '--consumed-policy-rule-sets', consumed_policy_rule_sets, + '--external-segments', external_segments, '--shared', shared, name] position_names = ['name', ] @@ -67,6 +69,8 @@ class CLITestV20ExternalPolicyJSON(test_cli20.CLITestV20Base): {'prs1': 'true', 'prs2': 'true'}, consumed_policy_rule_sets= {'prs3': 'true', 'prs4': 'true'}, + external_segments= + ['ES1', 'ES2'], shared=True) def test_list_external_policies(self): @@ -99,11 +103,13 @@ class CLITestV20ExternalPolicyJSON(test_cli20.CLITestV20Base): my_id = 'someid' provided_policy_rule_sets = "prs1=true,prs2=true" consumed_policy_rule_sets = "prs3=true,prs4=true" + external_segments = "ES1 ES2" shared = 'True' args = ['--name', name, '--description', description, '--provided-policy-rule-sets', provided_policy_rule_sets, '--consumed-policy-rule-sets', consumed_policy_rule_sets, + '--external-segments', external_segments, '--shared', shared, my_id] params = { @@ -111,6 +117,7 @@ class CLITestV20ExternalPolicyJSON(test_cli20.CLITestV20Base): 'description': description, 'provided_policy_rule_sets': {'prs1': 'true', 'prs2': 'true'}, 'consumed_policy_rule_sets': {'prs3': 'true', 'prs4': 'true'}, + 'external_segments': ['ES1', 'ES2'], 'shared': True } self._test_update_resource(resource, cmd, my_id, args, params)