Allow to specify policy by name in firewall-update

Currently only firewall policy ids are supported in firewall-update,
this change allows to use firewall policy names in firewall-update:

  neutron firewall-update my-firewall --policy my-new-policy

DocImpact
Change-Id: I84ad97fc7f1f2e81cad98497d4d983606fa03077
This commit is contained in:
Cedric Brandily 2014-09-08 09:58:57 +02:00
parent f22dbd2044
commit b81d650c9d
2 changed files with 23 additions and 1 deletions
neutronclient
neutron/v2_0/fw
tests/unit/fw

@ -46,7 +46,7 @@ class CreateFirewall(neutronv20.CreateCommand):
def add_known_arguments(self, parser):
parser.add_argument(
'firewall_policy_id', metavar='POLICY',
help=_('Firewall policy ID.'))
help=_('Firewall policy name or ID.'))
parser.add_argument(
'--name',
help=_('Name for the firewall.'))
@ -83,6 +83,20 @@ class UpdateFirewall(neutronv20.UpdateCommand):
resource = 'firewall'
def add_known_arguments(self, parser):
parser.add_argument(
'--policy', metavar='POLICY',
help=_('Firewall policy name or ID.'))
def args2body(self, parsed_args):
data = {}
if parsed_args.policy:
_policy_id = neutronv20.find_resourceid_by_name_or_id(
self.get_client(), 'firewall_policy',
parsed_args.policy)
data['firewall_policy_id'] = _policy_id
return {self.resource: data}
class DeleteFirewall(neutronv20.DeleteCommand):
"""Delete a given firewall."""

@ -112,6 +112,14 @@ class CLITestV20FirewallJSON(test_cli20.CLITestV20Base):
['myid', '--name', 'newname'],
{'name': 'newname', })
def test_update_firewall_using_policy_name(self):
"""firewall-update myid --policy newpolicy."""
resource = 'firewall'
cmd = firewall.UpdateFirewall(test_cli20.MyApp(sys.stdout), None)
self._test_update_resource(resource, cmd, 'myid',
['myid', '--policy', 'newpolicy'],
{'firewall_policy_id': 'newpolicy'})
def test_delete_firewall(self):
"""firewall-delete my-id."""
resource = 'firewall'