diff --git a/neutronclient/neutron/v2_0/fw/firewall.py b/neutronclient/neutron/v2_0/fw/firewall.py
index 2f0755b54..06b804037 100644
--- a/neutronclient/neutron/v2_0/fw/firewall.py
+++ b/neutronclient/neutron/v2_0/fw/firewall.py
@@ -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."""
diff --git a/neutronclient/tests/unit/fw/test_cli20_firewall.py b/neutronclient/tests/unit/fw/test_cli20_firewall.py
index 1d24a3342..3b6288b63 100644
--- a/neutronclient/tests/unit/fw/test_cli20_firewall.py
+++ b/neutronclient/tests/unit/fw/test_cli20_firewall.py
@@ -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'