Fix providing multiple ES for External Policy

There was a bug in processing the list of External Segments
specified by the user which was causing the name of the External
Segment to be sent to the backend. List comprehension in now being
used to build the list of UUIDs for the specified External Segments.

Change-Id: I7b79fccaffdc22e5f3a5f10b485803a0ba7634ff
Closes-bug: 1505402
This commit is contained in:
Sumit Naiksatam 2015-10-12 15:27:52 -07:00
parent df9540094a
commit a12a46bb8e
2 changed files with 17 additions and 12 deletions

View File

@ -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

View File

@ -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)