summaryrefslogtreecommitdiff
path: root/openstackclient/tests/unit/network
diff options
context:
space:
mode:
authorSindhu Devale <sindhu.devale@intel.com>2016-10-06 10:01:59 -0500
committerDean Troyer <dtroyer@gmail.com>2017-04-05 16:12:40 +0000
commit763c8c5670f238920398165e670592e006213f32 (patch)
treec8b6c7f1dce72d35dc77389a488f5312d88d6cfa /openstackclient/tests/unit/network
parent0e42ea3ae325cf5b168bb966e62cd6b8e9ee0159 (diff)
downloadpython-openstackclient-763c8c5670f238920398165e670592e006213f32.tar.gz
"floating ip set/unset port" for OSC
Implements Neutron feature of floating ip associate/disassociate into OpenStack Client. Previously, network.find_ip() function only supported to search floating ip by UUID. Hence, _find_floating_ip() function is used in floating_ip.py, to search fip both by UUID and ip_address. [1] adds the ability to find fip object using both UUID and ip_address. This functionality however, won't be available until the SDK is released. Hence, we continue to use _find_floating_ip() method, which was cleaned up by [2] to remove the use of ip_cache. Once, the SDK is released, we will remove all the usage of _find_floating_ip() method and instead only use network.find_ip(). [1] https://review.openstack.org/#/c/449879/2 [2] https://review.openstack.org/#/c/447938/ Change-Id: I6c5222287c46ca42365917d2deae70bdb626347 Co-Authored-By: Reedip<reedip.banerjee@nectechnologies.in> Co-Authored-By: RuiChen<chenrui.momo@gmail.com> Closes-Bug: #1560297
Diffstat (limited to 'openstackclient/tests/unit/network')
-rw-r--r--openstackclient/tests/unit/network/v2/test_floating_ip.py186
1 files changed, 161 insertions, 25 deletions
diff --git a/openstackclient/tests/unit/network/v2/test_floating_ip.py b/openstackclient/tests/unit/network/v2/test_floating_ip.py
index 0b3fd888..69fb1419 100644
--- a/openstackclient/tests/unit/network/v2/test_floating_ip.py
+++ b/openstackclient/tests/unit/network/v2/test_floating_ip.py
@@ -16,7 +16,7 @@ from mock import call
from osc_lib import exceptions
-from openstackclient.network.v2 import floating_ip
+from openstackclient.network.v2 import floating_ip as fip
from openstackclient.tests.unit.compute.v2 import fakes as compute_fakes
from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes_v3
from openstackclient.tests.unit.network.v2 import fakes as network_fakes
@@ -92,7 +92,7 @@ class TestCreateFloatingIPNetwork(TestFloatingIPNetwork):
self.network.find_port = mock.Mock(return_value=self.port)
# Get the command object to test
- self.cmd = floating_ip.CreateFloatingIP(self.app, self.namespace)
+ self.cmd = fip.CreateFloatingIP(self.app, self.namespace)
def test_create_no_options(self):
arglist = []
@@ -210,12 +210,9 @@ class TestDeleteFloatingIPNetwork(TestFloatingIPNetwork):
self.network.delete_ip = mock.Mock(return_value=None)
# Get the command object to test
- self.cmd = floating_ip.DeleteFloatingIP(self.app, self.namespace)
+ self.cmd = fip.DeleteFloatingIP(self.app, self.namespace)
- @mock.patch(
- "openstackclient.tests.unit.network.v2.test_floating_ip." +
- "floating_ip._find_floating_ip"
- )
+ @mock.patch.object(fip, '_find_floating_ip')
def test_floating_ip_delete(self, find_floating_ip_mock):
find_floating_ip_mock.side_effect = [
self.floating_ips[0],
@@ -239,10 +236,7 @@ class TestDeleteFloatingIPNetwork(TestFloatingIPNetwork):
self.network.delete_ip.assert_called_once_with(self.floating_ips[0])
self.assertIsNone(result)
- @mock.patch(
- "openstackclient.tests.unit.network.v2.test_floating_ip." +
- "floating_ip._find_floating_ip"
- )
+ @mock.patch.object(fip, '_find_floating_ip')
def test_floating_ip_delete_multi(self, find_floating_ip_mock):
find_floating_ip_mock.side_effect = [
self.floating_ips[0],
@@ -280,10 +274,7 @@ class TestDeleteFloatingIPNetwork(TestFloatingIPNetwork):
self.network.delete_ip.assert_has_calls(calls)
self.assertIsNone(result)
- @mock.patch(
- "openstackclient.tests.unit.network.v2.test_floating_ip." +
- "floating_ip._find_floating_ip"
- )
+ @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 = [
self.floating_ips[0],
@@ -380,7 +371,7 @@ class TestListFloatingIPNetwork(TestFloatingIPNetwork):
self.network.find_router = mock.Mock(return_value=self.fake_router)
# Get the command object to test
- self.cmd = floating_ip.ListFloatingIP(self.app, self.namespace)
+ self.cmd = fip.ListFloatingIP(self.app, self.namespace)
def test_floating_ip_list(self):
arglist = []
@@ -572,12 +563,9 @@ class TestShowFloatingIPNetwork(TestFloatingIPNetwork):
self.network.find_ip = mock.Mock(return_value=self.floating_ip)
# Get the command object to test
- self.cmd = floating_ip.ShowFloatingIP(self.app, self.namespace)
+ self.cmd = fip.ShowFloatingIP(self.app, self.namespace)
- @mock.patch(
- "openstackclient.tests.unit.network.v2.test_floating_ip." +
- "floating_ip._find_floating_ip"
- )
+ @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
arglist = [
@@ -599,6 +587,154 @@ class TestShowFloatingIPNetwork(TestFloatingIPNetwork):
self.assertEqual(self.data, data)
+class TestSetFloatingIP(TestFloatingIPNetwork):
+
+ # Fake data for option tests.
+ floating_network = network_fakes.FakeNetwork.create_one_network()
+ subnet = network_fakes.FakeSubnet.create_one_subnet()
+ port = network_fakes.FakePort.create_one_port()
+
+ # The floating ip to be deleted.
+ floating_ip = network_fakes.FakeFloatingIP.create_one_floating_ip(
+ attrs={
+ 'floating_network_id': floating_network.id,
+ 'port_id': port.id,
+ }
+ )
+
+ def setUp(self):
+ super(TestSetFloatingIP, self).setUp()
+ self.network.find_ip = mock.Mock(return_value=self.floating_ip)
+ self.network.find_port = mock.Mock(return_value=self.port)
+ self.network.update_ip = mock.Mock(return_value=None)
+
+ # Get the command object to test
+ self.cmd = fip.SetFloatingIP(self.app, self.namespace)
+
+ @mock.patch(
+ "openstackclient.tests.unit.network.v2.test_floating_ip." +
+ "fip._find_floating_ip"
+ )
+ def test_port_option(self, find_floating_ip_mock):
+ find_floating_ip_mock.side_effect = [
+ self.floating_ip,
+ ]
+ arglist = [
+ self.floating_ip.id,
+ '--port', self.floating_ip.port_id,
+ ]
+ verifylist = [
+ ('floating_ip', self.floating_ip.id),
+ ('port', self.floating_ip.port_id),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ self.cmd.take_action(parsed_args)
+
+ attrs = {
+ 'port_id': self.floating_ip.port_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." +
+ "fip._find_floating_ip"
+ )
+ def test_fixed_ip_option(self, find_floating_ip_mock):
+ find_floating_ip_mock.side_effect = [
+ self.floating_ip,
+ ]
+ arglist = [
+ self.floating_ip.id,
+ '--port', self.floating_ip.port_id,
+ "--fixed-ip-address", self.floating_ip.fixed_ip_address,
+ ]
+ verifylist = [
+ ('floating_ip', self.floating_ip.id),
+ ('port', self.floating_ip.port_id),
+ ('fixed_ip_address', self.floating_ip.fixed_ip_address),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ self.cmd.take_action(parsed_args)
+
+ attrs = {
+ '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.floating_ip.id,
+ ignore_missing=False,
+ )
+ self.network.update_ip.assert_called_once_with(
+ self.floating_ip, **attrs)
+
+
+class TestUnsetFloatingIP(TestFloatingIPNetwork):
+
+ floating_network = network_fakes.FakeNetwork.create_one_network()
+ subnet = network_fakes.FakeSubnet.create_one_subnet()
+ port = network_fakes.FakePort.create_one_port()
+
+ # The floating ip to be deleted.
+ floating_ip = network_fakes.FakeFloatingIP.create_one_floating_ip(
+ attrs={
+ 'floating_network_id': floating_network.id,
+ 'port_id': port.id,
+ }
+ )
+
+ def setUp(self):
+ super(TestUnsetFloatingIP, self).setUp()
+ self.network.find_ip = mock.Mock(return_value=self.floating_ip)
+ self.network.update_ip = mock.Mock(return_value=None)
+
+ # Get the command object to test
+ self.cmd = fip.UnsetFloatingIP(self.app, self.namespace)
+
+ @mock.patch(
+ "openstackclient.tests.unit.network.v2.test_floating_ip." +
+ "fip._find_floating_ip"
+ )
+ def test_floating_ip_unset_port(self, find_floating_ip_mock):
+ find_floating_ip_mock.side_effect = [
+ self.floating_ip,
+ ]
+ arglist = [
+ self.floating_ip.id,
+ "--port",
+ ]
+ verifylist = [
+ ('floating_ip', self.floating_ip.id),
+ ('port', True),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ result = self.cmd.take_action(parsed_args)
+
+ attrs = {
+ 'port_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)
+
+ self.assertIsNone(result)
+
+
# Tests for Nova network
#
class TestFloatingIPCompute(compute_fakes.TestComputev2):
@@ -639,7 +775,7 @@ class TestCreateFloatingIPCompute(TestFloatingIPCompute):
self.compute.floating_ips.create.return_value = self.floating_ip
# Get the command object to test
- self.cmd = floating_ip.CreateFloatingIP(self.app, None)
+ self.cmd = fip.CreateFloatingIP(self.app, None)
def test_create_no_options(self):
arglist = []
@@ -682,7 +818,7 @@ class TestDeleteFloatingIPCompute(TestFloatingIPCompute):
compute_fakes.FakeFloatingIP.get_floating_ips(self.floating_ips))
# Get the command object to test
- self.cmd = floating_ip.DeleteFloatingIP(self.app, None)
+ self.cmd = fip.DeleteFloatingIP(self.app, None)
def test_floating_ip_delete(self):
arglist = [
@@ -782,7 +918,7 @@ class TestListFloatingIPCompute(TestFloatingIPCompute):
self.compute.floating_ips.list.return_value = self.floating_ips
# Get the command object to test
- self.cmd = floating_ip.ListFloatingIP(self.app, None)
+ self.cmd = fip.ListFloatingIP(self.app, None)
def test_floating_ip_list(self):
arglist = []
@@ -826,7 +962,7 @@ class TestShowFloatingIPCompute(TestFloatingIPCompute):
self.compute.floating_ips.get.return_value = self.floating_ip
# Get the command object to test
- self.cmd = floating_ip.ShowFloatingIP(self.app, None)
+ self.cmd = fip.ShowFloatingIP(self.app, None)
def test_floating_ip_show(self):
arglist = [