summaryrefslogtreecommitdiff
path: root/openstackclient
diff options
context:
space:
mode:
Diffstat (limited to 'openstackclient')
-rw-r--r--openstackclient/network/v2/floating_ip.py64
-rw-r--r--openstackclient/tests/unit/network/v2/test_floating_ip_network.py108
2 files changed, 29 insertions, 143 deletions
diff --git a/openstackclient/network/v2/floating_ip.py b/openstackclient/network/v2/floating_ip.py
index 181f88c0..a6f03404 100644
--- a/openstackclient/network/v2/floating_ip.py
+++ b/openstackclient/network/v2/floating_ip.py
@@ -15,8 +15,6 @@
import logging
-from openstack import exceptions as sdk_exceptions
-from openstack.network.v2 import floating_ip as _floating_ip
from osc_lib.command import command
from osc_lib import utils
@@ -86,54 +84,6 @@ def _get_attrs(client_manager, parsed_args):
return attrs
-def _find_floating_ip(
- session,
- name_or_id,
- ignore_missing=True,
- **params
-):
- """Find a floating IP by IP or ID
-
- The SDK's find_ip() can only locate a floating IP by ID so we have
- to do this ourselves.
- """
- def _get_one_match(name_or_id):
- """Given a list of results, return the match"""
- the_result = None
- ip_list = list(_floating_ip.FloatingIP.list(session, **params))
- for maybe_result in ip_list:
- id_value = maybe_result.id
- ip_value = maybe_result.floating_ip_address
-
- if (id_value == name_or_id) or (ip_value == name_or_id):
- # Only allow one resource to be found. If we already
- # found a match, raise an exception to show it.
- if the_result is None:
- the_result = maybe_result
- else:
- msg = "More than one %s exists with the name '%s'."
- msg = (msg % (_floating_ip.FloatingIP, name_or_id))
- raise sdk_exceptions.DuplicateResource(msg)
-
- return the_result
-
- # Try to short-circuit by looking directly for a matching ID.
- try:
- match = _floating_ip.FloatingIP.existing(id=name_or_id, **params)
- return match.get(session)
- except sdk_exceptions.NotFoundException:
- pass
-
- result = _get_one_match(name_or_id)
- if result is not None:
- return result
-
- if ignore_missing:
- return None
- raise sdk_exceptions.ResourceNotFound(
- "No %s found for %s" % (_floating_ip.FloatingIP.__name__, name_or_id))
-
-
class CreateFloatingIP(common.NetworkAndComputeShowOne):
_description = _("Create floating IP")
@@ -246,8 +196,7 @@ class DeleteFloatingIP(common.NetworkAndComputeDelete):
return parser
def take_action_network(self, client, parsed_args):
- obj = _find_floating_ip(
- self.app.client_manager.sdk_connection.session,
+ obj = client.find_ip(
self.r,
ignore_missing=False,
)
@@ -487,9 +436,7 @@ class SetFloatingIP(command.Command):
def take_action(self, parsed_args):
client = self.app.client_manager.network
attrs = {}
- # TODO(sindhu) Use client.find_ip() once SDK 0.9.15 is released
- obj = _find_floating_ip(
- self.app.client_manager.sdk_connection.session,
+ obj = client.find_ip(
parsed_args.floating_ip,
ignore_missing=False,
)
@@ -521,8 +468,7 @@ class ShowFloatingIP(common.NetworkAndComputeShowOne):
return parser
def take_action_network(self, client, parsed_args):
- obj = _find_floating_ip(
- self.app.client_manager.sdk_connection.session,
+ obj = client.find_ip(
parsed_args.floating_ip,
ignore_missing=False,
)
@@ -586,9 +532,7 @@ class UnsetFloatingIP(command.Command):
def take_action(self, parsed_args):
client = self.app.client_manager.network
- # TODO(sindhu) Use client.find_ip() once SDK 0.9.15 is released
- obj = _find_floating_ip(
- self.app.client_manager.sdk_connection.session,
+ obj = client.find_ip(
parsed_args.floating_ip,
ignore_missing=False,
)
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..f19849c4 100644
--- a/openstackclient/tests/unit/network/v2/test_floating_ip_network.py
+++ b/openstackclient/tests/unit/network/v2/test_floating_ip_network.py
@@ -230,14 +230,14 @@ class TestDeleteFloatingIPNetwork(TestFloatingIPNetwork):
def setUp(self):
super(TestDeleteFloatingIPNetwork, self).setUp()
+ self.network.find_ip = mock.Mock()
self.network.delete_ip = mock.Mock(return_value=None)
# Get the command object to test
self.cmd = fip.DeleteFloatingIP(self.app, self.namespace)
- @mock.patch.object(fip, '_find_floating_ip')
- def test_floating_ip_delete(self, find_floating_ip_mock):
- find_floating_ip_mock.side_effect = [
+ def test_floating_ip_delete(self):
+ self.network.find_ip.side_effect = [
self.floating_ips[0],
self.floating_ips[1],
]
@@ -251,17 +251,15 @@ class TestDeleteFloatingIPNetwork(TestFloatingIPNetwork):
result = self.cmd.take_action(parsed_args)
- find_floating_ip_mock.assert_called_once_with(
- mock.ANY,
+ self.network.find_ip.assert_called_once_with(
self.floating_ips[0].id,
ignore_missing=False,
)
self.network.delete_ip.assert_called_once_with(self.floating_ips[0])
self.assertIsNone(result)
- @mock.patch.object(fip, '_find_floating_ip')
- def test_floating_ip_delete_multi(self, find_floating_ip_mock):
- find_floating_ip_mock.side_effect = [
+ def test_floating_ip_delete_multi(self):
+ self.network.find_ip.side_effect = [
self.floating_ips[0],
self.floating_ips[1],
]
@@ -279,17 +277,15 @@ class TestDeleteFloatingIPNetwork(TestFloatingIPNetwork):
calls = [
call(
- mock.ANY,
self.floating_ips[0].id,
ignore_missing=False,
),
call(
- mock.ANY,
self.floating_ips[1].id,
ignore_missing=False,
),
]
- find_floating_ip_mock.assert_has_calls(calls)
+ self.network.find_ip.assert_has_calls(calls)
calls = []
for f in self.floating_ips:
@@ -297,9 +293,8 @@ class TestDeleteFloatingIPNetwork(TestFloatingIPNetwork):
self.network.delete_ip.assert_has_calls(calls)
self.assertIsNone(result)
- @mock.patch.object(fip, '_find_floating_ip')
- def test_floating_ip_delete_multi_exception(self, find_floating_ip_mock):
- find_floating_ip_mock.side_effect = [
+ def test_floating_ip_delete_multi_exception(self):
+ self.network.find_ip.side_effect = [
self.floating_ips[0],
exceptions.CommandError,
]
@@ -319,13 +314,11 @@ class TestDeleteFloatingIPNetwork(TestFloatingIPNetwork):
except exceptions.CommandError as e:
self.assertEqual('1 of 2 floating_ips failed to delete.', str(e))
- find_floating_ip_mock.assert_any_call(
- mock.ANY,
+ self.network.find_ip.assert_any_call(
self.floating_ips[0].id,
ignore_missing=False,
)
- find_floating_ip_mock.assert_any_call(
- mock.ANY,
+ self.network.find_ip.assert_any_call(
'unexist_floating_ip',
ignore_missing=False,
)
@@ -590,9 +583,7 @@ class TestShowFloatingIPNetwork(TestFloatingIPNetwork):
# Get the command object to test
self.cmd = fip.ShowFloatingIP(self.app, self.namespace)
- @mock.patch.object(fip, '_find_floating_ip')
- def test_floating_ip_show(self, find_floating_ip_mock):
- find_floating_ip_mock.return_value = self.floating_ip
+ def test_floating_ip_show(self):
arglist = [
self.floating_ip.id,
]
@@ -603,8 +594,7 @@ class TestShowFloatingIPNetwork(TestFloatingIPNetwork):
columns, data = self.cmd.take_action(parsed_args)
- find_floating_ip_mock.assert_called_once_with(
- mock.ANY,
+ self.network.find_ip.assert_called_once_with(
self.floating_ip.id,
ignore_missing=False,
)
@@ -636,14 +626,7 @@ class TestSetFloatingIP(TestFloatingIPNetwork):
# Get the command object to test
self.cmd = fip.SetFloatingIP(self.app, self.namespace)
- @mock.patch(
- "openstackclient.tests.unit.network.v2.test_floating_ip_network." +
- "fip._find_floating_ip"
- )
- def test_port_option(self, find_floating_ip_mock):
- find_floating_ip_mock.side_effect = [
- self.floating_ip,
- ]
+ def test_port_option(self):
arglist = [
self.floating_ip.id,
'--port', self.floating_ip.port_id,
@@ -660,8 +643,7 @@ class TestSetFloatingIP(TestFloatingIPNetwork):
'port_id': self.floating_ip.port_id,
}
- find_floating_ip_mock.assert_called_once_with(
- mock.ANY,
+ self.network.find_ip.assert_called_once_with(
self.floating_ip.id,
ignore_missing=False,
)
@@ -669,14 +651,7 @@ class TestSetFloatingIP(TestFloatingIPNetwork):
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_fixed_ip_option(self, find_floating_ip_mock):
- find_floating_ip_mock.side_effect = [
- self.floating_ip,
- ]
+ def test_fixed_ip_option(self):
arglist = [
self.floating_ip.id,
'--port', self.floating_ip.port_id,
@@ -695,24 +670,16 @@ class TestSetFloatingIP(TestFloatingIPNetwork):
'port_id': self.floating_ip.port_id,
'fixed_ip_address': self.floating_ip.fixed_ip_address,
}
- find_floating_ip_mock.assert_called_once_with(
- mock.ANY,
+ self.network.find_ip.assert_called_once_with(
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):
+ def test_port_and_qos_policy_option(self):
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,
'--port', self.floating_ip.port_id,
@@ -731,22 +698,14 @@ class TestSetFloatingIP(TestFloatingIPNetwork):
'qos_policy_id': qos_policy.id,
'port_id': self.floating_ip.port_id,
}
- find_floating_ip_mock.assert_called_once_with(
- mock.ANY,
+ self.network.find_ip.assert_called_once_with(
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,
- ]
+ def test_port_and_no_qos_policy_option(self):
arglist = [
"--no-qos-policy",
'--port', self.floating_ip.port_id,
@@ -765,8 +724,7 @@ class TestSetFloatingIP(TestFloatingIPNetwork):
'qos_policy_id': None,
'port_id': self.floating_ip.port_id,
}
- find_floating_ip_mock.assert_called_once_with(
- mock.ANY,
+ self.network.find_ip.assert_called_once_with(
self.floating_ip.id,
ignore_missing=False,
)
@@ -796,14 +754,7 @@ class TestUnsetFloatingIP(TestFloatingIPNetwork):
# Get the command object to test
self.cmd = fip.UnsetFloatingIP(self.app, self.namespace)
- @mock.patch(
- "openstackclient.tests.unit.network.v2.test_floating_ip_network." +
- "fip._find_floating_ip"
- )
- def test_floating_ip_unset_port(self, find_floating_ip_mock):
- find_floating_ip_mock.side_effect = [
- self.floating_ip,
- ]
+ def test_floating_ip_unset_port(self):
arglist = [
self.floating_ip.id,
"--port",
@@ -819,8 +770,7 @@ class TestUnsetFloatingIP(TestFloatingIPNetwork):
attrs = {
'port_id': None,
}
- find_floating_ip_mock.assert_called_once_with(
- mock.ANY,
+ self.network.find_ip.assert_called_once_with(
self.floating_ip.id,
ignore_missing=False,
)
@@ -829,14 +779,7 @@ class TestUnsetFloatingIP(TestFloatingIPNetwork):
self.assertIsNone(result)
- @mock.patch(
- "openstackclient.tests.unit.network.v2.test_floating_ip_network." +
- "fip._find_floating_ip"
- )
- def test_floating_ip_unset_qos_policy(self, find_floating_ip_mock):
- find_floating_ip_mock.side_effect = [
- self.floating_ip,
- ]
+ def test_floating_ip_unset_qos_policy(self):
arglist = [
self.floating_ip.id,
"--qos-policy",
@@ -852,8 +795,7 @@ class TestUnsetFloatingIP(TestFloatingIPNetwork):
attrs = {
'qos_policy_id': None,
}
- find_floating_ip_mock.assert_called_once_with(
- mock.ANY,
+ self.network.find_ip.assert_called_once_with(
self.floating_ip.id,
ignore_missing=False,
)