summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZuul <zuul@review.openstack.org>2018-09-17 10:57:54 +0000
committerGerrit Code Review <review@openstack.org>2018-09-17 10:57:54 +0000
commit8bd810d8f80c5cf76917b0549244ad15f5866144 (patch)
tree6c3fa19141be40fde4a2e39a599ee2e2fcfe3f69
parent39d41f356c7d1c27fcac16c92a68af5b178b71b1 (diff)
parent3012ab4bb8db0a6ea7a0cace6f1d2e2e3685b903 (diff)
downloadpython-openstackclient-8bd810d8f80c5cf76917b0549244ad15f5866144.tar.gz
Merge "Do not require port argument when updating floating IP" into stable/queens
-rw-r--r--doc/source/cli/command-objects/floating-ip.rst8
-rw-r--r--openstackclient/network/v2/floating_ip.py13
-rw-r--r--openstackclient/tests/unit/network/v2/test_floating_ip_network.py64
3 files changed, 75 insertions, 10 deletions
diff --git a/doc/source/cli/command-objects/floating-ip.rst b/doc/source/cli/command-objects/floating-ip.rst
index d9ed2307..f67287ba 100644
--- a/doc/source/cli/command-objects/floating-ip.rst
+++ b/doc/source/cli/command-objects/floating-ip.rst
@@ -159,14 +159,14 @@ Set floating IP properties
.. code:: bash
openstack floating ip set
- --port <port>
+ [--port <port>]
[--fixed-ip-address <ip-address>]
[--qos-policy <qos-policy> | --no-qos-policy]
<floating-ip>
.. option:: --port <port>
- Assocaite the floating IP with port (name or ID)
+ Associate the floating IP with port (name or ID)
.. option:: --fixed-ip-address <ip-address>
@@ -208,8 +208,8 @@ Unset floating IP Properties
.. code:: bash
openstack floating ip unset
- --port
- --qos-policy
+ [--port]
+ [--qos-policy]
<floating-ip>
.. option:: --port
diff --git a/openstackclient/network/v2/floating_ip.py b/openstackclient/network/v2/floating_ip.py
index 181f88c0..b2b86192 100644
--- a/openstackclient/network/v2/floating_ip.py
+++ b/openstackclient/network/v2/floating_ip.py
@@ -458,12 +458,11 @@ class SetFloatingIP(command.Command):
parser.add_argument(
'floating_ip',
metavar='<floating-ip>',
- help=_("Floating IP to associate (IP address or ID)"))
+ help=_("Floating IP to modify (IP address or ID)"))
parser.add_argument(
'--port',
metavar='<port>',
- required=True,
- help=_("Assocaite the floating IP with port (name or ID)")),
+ help=_("Associate the floating IP with port (name or ID)")),
parser.add_argument(
'--fixed-ip-address',
metavar='<ip-address>',
@@ -493,9 +492,11 @@ class SetFloatingIP(command.Command):
parsed_args.floating_ip,
ignore_missing=False,
)
- port = client.find_port(parsed_args.port,
- ignore_missing=False)
- attrs['port_id'] = port.id
+ if parsed_args.port:
+ port = client.find_port(parsed_args.port,
+ ignore_missing=False)
+ attrs['port_id'] = port.id
+
if parsed_args.fixed_ip_address:
attrs['fixed_ip_address'] = parsed_args.fixed_ip_address
diff --git a/openstackclient/tests/unit/network/v2/test_floating_ip_network.py b/openstackclient/tests/unit/network/v2/test_floating_ip_network.py
index 86f64ccd..61c463af 100644
--- a/openstackclient/tests/unit/network/v2/test_floating_ip_network.py
+++ b/openstackclient/tests/unit/network/v2/test_floating_ip_network.py
@@ -707,6 +707,39 @@ class TestSetFloatingIP(TestFloatingIPNetwork):
"openstackclient.tests.unit.network.v2.test_floating_ip_network." +
"fip._find_floating_ip"
)
+ def test_qos_policy_option(self, find_floating_ip_mock):
+ qos_policy = network_fakes.FakeNetworkQosPolicy.create_one_qos_policy()
+ self.network.find_qos_policy = mock.Mock(return_value=qos_policy)
+ find_floating_ip_mock.side_effect = [
+ self.floating_ip,
+ ]
+ arglist = [
+ "--qos-policy", qos_policy.id,
+ self.floating_ip.id,
+ ]
+ verifylist = [
+ ('qos_policy', qos_policy.id),
+ ('floating_ip', self.floating_ip.id),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ self.cmd.take_action(parsed_args)
+
+ attrs = {
+ 'qos_policy_id': qos_policy.id,
+ }
+ find_floating_ip_mock.assert_called_once_with(
+ mock.ANY,
+ self.floating_ip.id,
+ ignore_missing=False,
+ )
+ self.network.update_ip.assert_called_once_with(
+ self.floating_ip, **attrs)
+
+ @mock.patch(
+ "openstackclient.tests.unit.network.v2.test_floating_ip_network." +
+ "fip._find_floating_ip"
+ )
def test_port_and_qos_policy_option(self, find_floating_ip_mock):
qos_policy = network_fakes.FakeNetworkQosPolicy.create_one_qos_policy()
self.network.find_qos_policy = mock.Mock(return_value=qos_policy)
@@ -743,6 +776,37 @@ class TestSetFloatingIP(TestFloatingIPNetwork):
"openstackclient.tests.unit.network.v2.test_floating_ip_network." +
"fip._find_floating_ip"
)
+ def test_no_qos_policy_option(self, find_floating_ip_mock):
+ find_floating_ip_mock.side_effect = [
+ self.floating_ip,
+ ]
+ arglist = [
+ "--no-qos-policy",
+ self.floating_ip.id,
+ ]
+ verifylist = [
+ ('no_qos_policy', True),
+ ('floating_ip', self.floating_ip.id),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ self.cmd.take_action(parsed_args)
+
+ attrs = {
+ 'qos_policy_id': None,
+ }
+ find_floating_ip_mock.assert_called_once_with(
+ mock.ANY,
+ self.floating_ip.id,
+ ignore_missing=False,
+ )
+ self.network.update_ip.assert_called_once_with(
+ self.floating_ip, **attrs)
+
+ @mock.patch(
+ "openstackclient.tests.unit.network.v2.test_floating_ip_network." +
+ "fip._find_floating_ip"
+ )
def test_port_and_no_qos_policy_option(self, find_floating_ip_mock):
find_floating_ip_mock.side_effect = [
self.floating_ip,