firewall policy update for a rule is not working
If user specifies one rule to update it is not taking but more than one rule it is accepting as a list and updating the policy. Modified policy-update to behave same as policy-create command for "--firewall-rules" option Change-Id: Ia6a1c726be310d60b3b56ce677f843e818079fbe Closes-bug: 1318617
This commit is contained in:
parent
3751afdd99
commit
04a0ec8ddf
neutronclient
@ -33,6 +33,29 @@ def _format_firewall_rules(firewall_policy):
|
||||
return ''
|
||||
|
||||
|
||||
def common_add_known_arguments(parser):
|
||||
parser.add_argument(
|
||||
'--firewall-rules', type=lambda x: x.split(),
|
||||
help=_('Ordered list of whitespace-delimited firewall rule '
|
||||
'names or IDs; e.g., --firewall-rules \"rule1 rule2\"'))
|
||||
|
||||
|
||||
def common_args2body(client, parsed_args):
|
||||
if parsed_args.firewall_rules:
|
||||
_firewall_rules = []
|
||||
for f in parsed_args.firewall_rules:
|
||||
_firewall_rules.append(
|
||||
neutronv20.find_resourceid_by_name_or_id(
|
||||
client, 'firewall_rule', f))
|
||||
body = {'firewall_policy': {'firewall_rules': _firewall_rules}}
|
||||
else:
|
||||
body = {'firewall_policy': {}}
|
||||
neutronv20.update_dict(parsed_args, body['firewall_policy'],
|
||||
['name', 'description', 'shared',
|
||||
'audited', 'tenant_id'])
|
||||
return body
|
||||
|
||||
|
||||
class ListFirewallPolicy(neutronv20.ListCommand):
|
||||
"""List firewall policies that belong to a given tenant."""
|
||||
|
||||
@ -69,10 +92,7 @@ class CreateFirewallPolicy(neutronv20.CreateCommand):
|
||||
action='store_true',
|
||||
help=_('Create a shared policy.'),
|
||||
default=argparse.SUPPRESS)
|
||||
parser.add_argument(
|
||||
'--firewall-rules', type=lambda x: x.split(),
|
||||
help=_('Ordered list of whitespace-delimited firewall rule '
|
||||
'names or IDs; e.g., --firewall-rules \"rule1 rule2\"'))
|
||||
common_add_known_arguments(parser)
|
||||
parser.add_argument(
|
||||
'--audited',
|
||||
action='store_true',
|
||||
@ -80,22 +100,7 @@ class CreateFirewallPolicy(neutronv20.CreateCommand):
|
||||
default=argparse.SUPPRESS)
|
||||
|
||||
def args2body(self, parsed_args):
|
||||
if parsed_args.firewall_rules:
|
||||
_firewall_rules = []
|
||||
for f in parsed_args.firewall_rules:
|
||||
_firewall_rules.append(
|
||||
neutronv20.find_resourceid_by_name_or_id(
|
||||
self.get_client(), 'firewall_rule', f))
|
||||
body = {self.resource: {
|
||||
'firewall_rules': _firewall_rules,
|
||||
},
|
||||
}
|
||||
else:
|
||||
body = {self.resource: {}}
|
||||
neutronv20.update_dict(parsed_args, body[self.resource],
|
||||
['name', 'description', 'shared',
|
||||
'audited', 'tenant_id'])
|
||||
return body
|
||||
return common_args2body(self.get_client(), parsed_args)
|
||||
|
||||
|
||||
class UpdateFirewallPolicy(neutronv20.UpdateCommand):
|
||||
@ -103,6 +108,12 @@ class UpdateFirewallPolicy(neutronv20.UpdateCommand):
|
||||
|
||||
resource = 'firewall_policy'
|
||||
|
||||
def add_known_arguments(self, parser):
|
||||
common_add_known_arguments(parser)
|
||||
|
||||
def args2body(self, parsed_args):
|
||||
return common_args2body(self.get_client(), parsed_args)
|
||||
|
||||
|
||||
class DeleteFirewallPolicy(neutronv20.DeleteCommand):
|
||||
"""Delete a given firewall policy."""
|
||||
|
@ -133,6 +133,18 @@ class CLITestV20FirewallPolicyJSON(test_cli20.CLITestV20Base):
|
||||
['myid', '--name', 'newname'],
|
||||
{'name': 'newname', })
|
||||
|
||||
def test_update_firewall_policy_with_rules(self):
|
||||
"""firewall-policy-update myid --firewall-rules "rule1 rule2"."""
|
||||
resource = 'firewall_policy'
|
||||
cmd = firewallpolicy.UpdateFirewallPolicy(test_cli20.MyApp(sys.stdout),
|
||||
None)
|
||||
firewall_rules_arg = u'rule_id3 rule_id4'
|
||||
firewall_rules_res = ['rule_id3', 'rule_id4']
|
||||
self._test_update_resource(
|
||||
resource, cmd, 'myid',
|
||||
['myid', '--firewall-rules', firewall_rules_arg],
|
||||
{'firewall_rules': firewall_rules_res, })
|
||||
|
||||
def test_delete_firewall_policy(self):
|
||||
"""firewall-policy-delete my-id."""
|
||||
resource = 'firewall_policy'
|
||||
|
Loading…
x
Reference in New Issue
Block a user