summaryrefslogtreecommitdiff
path: root/openstackclient/tests/unit/network
diff options
context:
space:
mode:
Diffstat (limited to 'openstackclient/tests/unit/network')
-rw-r--r--openstackclient/tests/unit/network/v2/fakes.py12
-rw-r--r--openstackclient/tests/unit/network/v2/test_network.py12
-rw-r--r--openstackclient/tests/unit/network/v2/test_network_segment.py317
-rw-r--r--openstackclient/tests/unit/network/v2/test_port.py11
-rw-r--r--openstackclient/tests/unit/network/v2/test_router.py19
-rw-r--r--openstackclient/tests/unit/network/v2/test_subnet.py64
-rw-r--r--openstackclient/tests/unit/network/v2/test_subnet_pool.py47
7 files changed, 467 insertions, 15 deletions
diff --git a/openstackclient/tests/unit/network/v2/fakes.py b/openstackclient/tests/unit/network/v2/fakes.py
index 4cc3512e..91aebf9f 100644
--- a/openstackclient/tests/unit/network/v2/fakes.py
+++ b/openstackclient/tests/unit/network/v2/fakes.py
@@ -285,6 +285,7 @@ class FakeNetwork(object):
'id': 'network-id-' + uuid.uuid4().hex,
'name': 'network-name-' + uuid.uuid4().hex,
'status': 'ACTIVE',
+ 'description': 'network-description-' + uuid.uuid4().hex,
'tenant_id': 'project-id-' + uuid.uuid4().hex,
'admin_state_up': True,
'shared': False,
@@ -363,11 +364,14 @@ class FakeNetworkSegment(object):
attrs = attrs or {}
# Set default attributes.
+ fake_uuid = uuid.uuid4().hex
network_segment_attrs = {
- 'id': 'network-segment-id-' + uuid.uuid4().hex,
- 'network_id': 'network-id-' + uuid.uuid4().hex,
+ 'description': 'network-segment-description-' + fake_uuid,
+ 'id': 'network-segment-id-' + fake_uuid,
+ 'name': 'network-segment-name-' + fake_uuid,
+ 'network_id': 'network-id-' + fake_uuid,
'network_type': 'vlan',
- 'physical_network': 'physical-network-name-' + uuid.uuid4().hex,
+ 'physical_network': 'physical-network-name-' + fake_uuid,
'segmentation_id': 1024,
}
@@ -892,6 +896,7 @@ class FakeSubnet(object):
'segment_id': None,
'service_types': [],
'subnetpool_id': None,
+ 'description': 'subnet-description-' + uuid.uuid4().hex,
}
# Overwrite default attributes.
@@ -1047,6 +1052,7 @@ class FakeSubnetPool(object):
'min_prefixlen': '8',
'default_quota': None,
'ip_version': '4',
+ 'description': 'subnet-pool-description-' + uuid.uuid4().hex,
}
# Overwrite default attributes.
diff --git a/openstackclient/tests/unit/network/v2/test_network.py b/openstackclient/tests/unit/network/v2/test_network.py
index 9a375645..50a60c2d 100644
--- a/openstackclient/tests/unit/network/v2/test_network.py
+++ b/openstackclient/tests/unit/network/v2/test_network.py
@@ -58,6 +58,7 @@ class TestCreateNetworkIdentityV3(TestNetwork):
'admin_state_up',
'availability_zone_hints',
'availability_zones',
+ 'description',
'id',
'is_default',
'name',
@@ -74,6 +75,7 @@ class TestCreateNetworkIdentityV3(TestNetwork):
network._format_admin_state(_network.admin_state_up),
utils.format_list(_network.availability_zone_hints),
utils.format_list(_network.availability_zones),
+ _network.description,
_network.id,
_network.is_default,
_network.name,
@@ -130,6 +132,7 @@ class TestCreateNetworkIdentityV3(TestNetwork):
arglist = [
"--disable",
"--share",
+ "--description", self._network.description,
"--project", self.project.name,
"--project-domain", self.domain.name,
"--availability-zone-hint", "nova",
@@ -144,6 +147,7 @@ class TestCreateNetworkIdentityV3(TestNetwork):
verifylist = [
('disable', True),
('share', True),
+ ('description', self._network.description),
('project', self.project.name),
('project_domain', self.domain.name),
('availability_zone_hints', ["nova"]),
@@ -165,6 +169,7 @@ class TestCreateNetworkIdentityV3(TestNetwork):
'availability_zone_hints': ["nova"],
'name': self._network.name,
'shared': True,
+ 'description': self._network.description,
'tenant_id': self.project.id,
'is_default': True,
'router:external': True,
@@ -217,6 +222,7 @@ class TestCreateNetworkIdentityV2(TestNetwork):
'admin_state_up',
'availability_zone_hints',
'availability_zones',
+ 'description',
'id',
'is_default',
'name',
@@ -233,6 +239,7 @@ class TestCreateNetworkIdentityV2(TestNetwork):
network._format_admin_state(_network.admin_state_up),
utils.format_list(_network.availability_zone_hints),
utils.format_list(_network.availability_zones),
+ _network.description,
_network.id,
_network.is_default,
_network.name,
@@ -694,6 +701,7 @@ class TestSetNetwork(TestNetwork):
'--enable',
'--name', 'noob',
'--share',
+ '--description', self._network.description,
'--external',
'--default',
'--provider-network-type', 'vlan',
@@ -705,6 +713,7 @@ class TestSetNetwork(TestNetwork):
verifylist = [
('network', self._network.name),
('enable', True),
+ ('description', self._network.description),
('name', 'noob'),
('share', True),
('external', True),
@@ -722,6 +731,7 @@ class TestSetNetwork(TestNetwork):
attrs = {
'name': 'noob',
'admin_state_up': True,
+ 'description': self._network.description,
'shared': True,
'router:external': True,
'is_default': True,
@@ -786,6 +796,7 @@ class TestShowNetwork(TestNetwork):
'admin_state_up',
'availability_zone_hints',
'availability_zones',
+ 'description',
'id',
'is_default',
'name',
@@ -802,6 +813,7 @@ class TestShowNetwork(TestNetwork):
network._format_admin_state(_network.admin_state_up),
utils.format_list(_network.availability_zone_hints),
utils.format_list(_network.availability_zones),
+ _network.description,
_network.id,
_network.is_default,
_network.name,
diff --git a/openstackclient/tests/unit/network/v2/test_network_segment.py b/openstackclient/tests/unit/network/v2/test_network_segment.py
index b9fce078..3e755e07 100644
--- a/openstackclient/tests/unit/network/v2/test_network_segment.py
+++ b/openstackclient/tests/unit/network/v2/test_network_segment.py
@@ -12,6 +12,7 @@
#
import mock
+from mock import call
from osc_lib import exceptions
@@ -32,6 +33,243 @@ class TestNetworkSegment(network_fakes.TestNetworkV2):
self.network = self.app.client_manager.network
+class TestCreateNetworkSegment(TestNetworkSegment):
+
+ # The network segment to create along with associated network.
+ _network_segment = \
+ network_fakes.FakeNetworkSegment.create_one_network_segment()
+ _network = network_fakes.FakeNetwork.create_one_network({
+ 'id': _network_segment.network_id,
+ })
+
+ columns = (
+ 'description',
+ 'id',
+ 'name',
+ 'network_id',
+ 'network_type',
+ 'physical_network',
+ 'segmentation_id',
+ )
+
+ data = (
+ _network_segment.description,
+ _network_segment.id,
+ _network_segment.name,
+ _network_segment.network_id,
+ _network_segment.network_type,
+ _network_segment.physical_network,
+ _network_segment.segmentation_id,
+ )
+
+ def setUp(self):
+ super(TestCreateNetworkSegment, self).setUp()
+
+ self.network.create_segment = mock.Mock(
+ return_value=self._network_segment
+ )
+ self.network.find_network = mock.Mock(return_value=self._network)
+
+ # Get the command object to test
+ self.cmd = network_segment.CreateNetworkSegment(
+ self.app,
+ self.namespace
+ )
+
+ def test_create_no_options(self):
+ # Missing required args should bail here
+ self.assertRaises(tests_utils.ParserException, self.check_parser,
+ self.cmd, [], [])
+
+ def test_create_no_beta_commands(self):
+ arglist = [
+ '--network', self._network_segment.network_id,
+ '--network-type', self._network_segment.network_type,
+ self._network_segment.name,
+ ]
+ verifylist = [
+ ('network', self._network_segment.network_id),
+ ('network_type', self._network_segment.network_type),
+ ('name', self._network_segment.name),
+ ]
+ self.app.options.os_beta_command = False
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+ self.assertRaises(exceptions.CommandError, self.cmd.take_action,
+ parsed_args)
+
+ def test_create_invalid_network_type(self):
+ arglist = [
+ '--network', self._network_segment.network_id,
+ '--network-type', 'foo',
+ self._network_segment.name,
+ ]
+ self.assertRaises(tests_utils.ParserException, self.check_parser,
+ self.cmd, arglist, [])
+
+ def test_create_minimum_options(self):
+ arglist = [
+ '--network', self._network_segment.network_id,
+ '--network-type', self._network_segment.network_type,
+ self._network_segment.name,
+ ]
+ verifylist = [
+ ('network', self._network_segment.network_id),
+ ('network_type', self._network_segment.network_type),
+ ('name', self._network_segment.name),
+ ]
+
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+ columns, data = self.cmd.take_action(parsed_args)
+
+ self.network.find_network.assert_called_once_with(
+ self._network_segment.network_id,
+ ignore_missing=False
+ )
+ self.network.create_segment.assert_called_once_with(**{
+ 'network_id': self._network_segment.network_id,
+ 'network_type': self._network_segment.network_type,
+ 'name': self._network_segment.name,
+ })
+
+ self.assertEqual(self.columns, columns)
+ self.assertEqual(self.data, data)
+
+ def test_create_all_options(self):
+ arglist = [
+ '--description', self._network_segment.description,
+ '--network', self._network_segment.network_id,
+ '--network-type', self._network_segment.network_type,
+ '--physical-network', self._network_segment.physical_network,
+ '--segment', str(self._network_segment.segmentation_id),
+ self._network_segment.name,
+ ]
+ verifylist = [
+ ('description', self._network_segment.description),
+ ('network', self._network_segment.network_id),
+ ('network_type', self._network_segment.network_type),
+ ('physical_network', self._network_segment.physical_network),
+ ('segment', self._network_segment.segmentation_id),
+ ('name', self._network_segment.name),
+ ]
+
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+ columns, data = self.cmd.take_action(parsed_args)
+
+ self.network.find_network.assert_called_once_with(
+ self._network_segment.network_id,
+ ignore_missing=False
+ )
+ self.network.create_segment.assert_called_once_with(**{
+ 'description': self._network_segment.description,
+ 'network_id': self._network_segment.network_id,
+ 'network_type': self._network_segment.network_type,
+ 'physical_network': self._network_segment.physical_network,
+ 'segmentation_id': self._network_segment.segmentation_id,
+ 'name': self._network_segment.name,
+ })
+
+ self.assertEqual(self.columns, columns)
+ self.assertEqual(self.data, data)
+
+
+class TestDeleteNetworkSegment(TestNetworkSegment):
+
+ # The network segments to delete.
+ _network_segments = \
+ network_fakes.FakeNetworkSegment.create_network_segments()
+
+ def setUp(self):
+ super(TestDeleteNetworkSegment, self).setUp()
+
+ self.network.delete_segment = mock.Mock(return_value=None)
+ self.network.find_segment = mock.MagicMock(
+ side_effect=self._network_segments
+ )
+
+ # Get the command object to test
+ self.cmd = network_segment.DeleteNetworkSegment(
+ self.app,
+ self.namespace
+ )
+
+ def test_delete_no_beta_commands(self):
+ arglist = [
+ self._network_segments[0].id,
+ ]
+ verifylist = [
+ ('network_segment', [self._network_segments[0].id]),
+ ]
+ self.app.options.os_beta_command = False
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+ self.assertRaises(exceptions.CommandError, self.cmd.take_action,
+ parsed_args)
+
+ def test_delete(self):
+ arglist = [
+ self._network_segments[0].id,
+ ]
+ verifylist = [
+ ('network_segment', [self._network_segments[0].id]),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ result = self.cmd.take_action(parsed_args)
+
+ self.network.delete_segment.assert_called_once_with(
+ self._network_segments[0]
+ )
+ self.assertIsNone(result)
+
+ def test_delete_multiple(self):
+ arglist = []
+ for _network_segment in self._network_segments:
+ arglist.append(_network_segment.id)
+ verifylist = [
+ ('network_segment', arglist),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ result = self.cmd.take_action(parsed_args)
+
+ calls = []
+ for _network_segment in self._network_segments:
+ calls.append(call(_network_segment))
+ self.network.delete_segment.assert_has_calls(calls)
+ self.assertIsNone(result)
+
+ def test_delete_multiple_with_exception(self):
+ arglist = [
+ self._network_segments[0].id,
+ 'doesnotexist'
+ ]
+ verifylist = [
+ ('network_segment', [self._network_segments[0].id,
+ 'doesnotexist']),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ find_mock_result = [self._network_segments[0],
+ exceptions.CommandError]
+ self.network.find_segment = (
+ mock.MagicMock(side_effect=find_mock_result)
+ )
+
+ try:
+ self.cmd.take_action(parsed_args)
+ self.fail('CommandError should be raised.')
+ except exceptions.CommandError as e:
+ self.assertEqual('1 of 2 network segments failed to delete.',
+ str(e))
+
+ self.network.find_segment.assert_any_call(
+ self._network_segments[0].id, ignore_missing=False)
+ self.network.find_segment.assert_any_call(
+ 'doesnotexist', ignore_missing=False)
+ self.network.delete_segment.assert_called_once_with(
+ self._network_segments[0]
+ )
+
+
class TestListNetworkSegment(TestNetworkSegment):
_network = network_fakes.FakeNetwork.create_one_network()
_network_segments = \
@@ -39,6 +277,7 @@ class TestListNetworkSegment(TestNetworkSegment):
columns = (
'ID',
+ 'Name',
'Network',
'Network Type',
'Segment',
@@ -51,6 +290,7 @@ class TestListNetworkSegment(TestNetworkSegment):
for _network_segment in _network_segments:
data.append((
_network_segment.id,
+ _network_segment.name,
_network_segment.network_id,
_network_segment.network_type,
_network_segment.segmentation_id,
@@ -60,6 +300,7 @@ class TestListNetworkSegment(TestNetworkSegment):
for _network_segment in _network_segments:
data_long.append((
_network_segment.id,
+ _network_segment.name,
_network_segment.network_id,
_network_segment.network_type,
_network_segment.segmentation_id,
@@ -131,6 +372,78 @@ class TestListNetworkSegment(TestNetworkSegment):
self.assertEqual(self.data, list(data))
+class TestSetNetworkSegment(TestNetworkSegment):
+
+ # The network segment to show.
+ _network_segment = \
+ network_fakes.FakeNetworkSegment.create_one_network_segment()
+
+ def setUp(self):
+ super(TestSetNetworkSegment, self).setUp()
+
+ self.network.find_segment = mock.Mock(
+ return_value=self._network_segment
+ )
+ self.network.update_segment = mock.Mock(
+ return_value=self._network_segment
+ )
+
+ # Get the command object to test
+ self.cmd = network_segment.SetNetworkSegment(self.app, self.namespace)
+
+ def test_set_no_beta_commands(self):
+ arglist = [
+ self._network_segment.id,
+ ]
+ verifylist = [
+ ('network_segment', self._network_segment.id),
+ ]
+ self.app.options.os_beta_command = False
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+ self.assertRaises(exceptions.CommandError, self.cmd.take_action,
+ parsed_args)
+
+ def test_set_no_options(self):
+ arglist = [
+ self._network_segment.id,
+ ]
+ verifylist = [
+ ('network_segment', self._network_segment.id),
+ ]
+
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+ result = self.cmd.take_action(parsed_args)
+
+ self.network.update_segment.assert_called_once_with(
+ self._network_segment, **{}
+ )
+ self.assertIsNone(result)
+
+ def test_set_all_options(self):
+ arglist = [
+ '--description', 'new description',
+ '--name', 'new name',
+ self._network_segment.id,
+ ]
+ verifylist = [
+ ('description', 'new description'),
+ ('name', 'new name'),
+ ('network_segment', self._network_segment.id),
+ ]
+
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+ result = self.cmd.take_action(parsed_args)
+
+ attrs = {
+ 'description': 'new description',
+ 'name': 'new name',
+ }
+ self.network.update_segment.assert_called_once_with(
+ self._network_segment, **attrs
+ )
+ self.assertIsNone(result)
+
+
class TestShowNetworkSegment(TestNetworkSegment):
# The network segment to show.
@@ -138,7 +451,9 @@ class TestShowNetworkSegment(TestNetworkSegment):
network_fakes.FakeNetworkSegment.create_one_network_segment()
columns = (
+ 'description',
'id',
+ 'name',
'network_id',
'network_type',
'physical_network',
@@ -146,7 +461,9 @@ class TestShowNetworkSegment(TestNetworkSegment):
)
data = (
+ _network_segment.description,
_network_segment.id,
+ _network_segment.name,
_network_segment.network_id,
_network_segment.network_type,
_network_segment.physical_network,
diff --git a/openstackclient/tests/unit/network/v2/test_port.py b/openstackclient/tests/unit/network/v2/test_port.py
index afa67bba..271e8160 100644
--- a/openstackclient/tests/unit/network/v2/test_port.py
+++ b/openstackclient/tests/unit/network/v2/test_port.py
@@ -337,7 +337,11 @@ class TestListPort(TestPort):
fake_router = network_fakes.FakeRouter.create_one_router({
'id': 'fake-router-id',
})
+ fake_network = network_fakes.FakeNetwork.create_one_network({
+ 'id': 'fake-network-id',
+ })
self.network.find_router = mock.Mock(return_value=fake_router)
+ self.network.find_network = mock.Mock(return_value=fake_network)
self.app.client_manager.compute = mock.Mock()
def test_port_list_no_options(self):
@@ -414,11 +418,13 @@ class TestListPort(TestPort):
arglist = [
'--device-owner', self._ports[0].device_owner,
'--router', 'fake-router-name',
+ '--network', 'fake-network-name',
]
verifylist = [
('device_owner', self._ports[0].device_owner),
- ('router', 'fake-router-name')
+ ('router', 'fake-router-name'),
+ ('network', 'fake-network-name')
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -427,7 +433,8 @@ class TestListPort(TestPort):
self.network.ports.assert_called_once_with(**{
'device_owner': self._ports[0].device_owner,
- 'device_id': 'fake-router-id'
+ 'device_id': 'fake-router-id',
+ 'network_id': 'fake-network-id'
})
self.assertEqual(self.columns, columns)
self.assertEqual(self.data, list(data))
diff --git a/openstackclient/tests/unit/network/v2/test_router.py b/openstackclient/tests/unit/network/v2/test_router.py
index 6898a046..5ed969b4 100644
--- a/openstackclient/tests/unit/network/v2/test_router.py
+++ b/openstackclient/tests/unit/network/v2/test_router.py
@@ -40,7 +40,7 @@ class TestAddPortToRouter(TestRouter):
def setUp(self):
super(TestAddPortToRouter, self).setUp()
- self.network.router_add_interface = mock.Mock()
+ self.network.add_interface_to_router = mock.Mock()
self.cmd = router.AddPortToRouter(self.app, self.namespace)
self.network.find_router = mock.Mock(return_value=self._router)
self.network.find_port = mock.Mock(return_value=self._port)
@@ -65,9 +65,8 @@ class TestAddPortToRouter(TestRouter):
result = self.cmd.take_action(parsed_args)
- self.network.router_add_interface.assert_called_with(self._router, **{
- 'port_id': self._router.port,
- })
+ self.network.add_interface_to_router.assert_called_with(
+ self._router, **{'port_id': self._router.port, })
self.assertIsNone(result)
@@ -80,7 +79,7 @@ class TestAddSubnetToRouter(TestRouter):
def setUp(self):
super(TestAddSubnetToRouter, self).setUp()
- self.network.router_add_interface = mock.Mock()
+ self.network.add_interface_to_router = mock.Mock()
self.cmd = router.AddSubnetToRouter(self.app, self.namespace)
self.network.find_router = mock.Mock(return_value=self._router)
self.network.find_subnet = mock.Mock(return_value=self._subnet)
@@ -104,7 +103,7 @@ class TestAddSubnetToRouter(TestRouter):
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
result = self.cmd.take_action(parsed_args)
- self.network.router_add_interface.assert_called_with(
+ self.network.add_interface_to_router.assert_called_with(
self._router, **{'subnet_id': self._router.subnet})
self.assertIsNone(result)
@@ -411,7 +410,7 @@ class TestRemovePortFromRouter(TestRouter):
def setUp(self):
super(TestRemovePortFromRouter, self).setUp()
- self.network.router_remove_interface = mock.Mock()
+ self.network.remove_interface_from_router = mock.Mock()
self.cmd = router.RemovePortFromRouter(self.app, self.namespace)
self.network.find_router = mock.Mock(return_value=self._router)
self.network.find_port = mock.Mock(return_value=self._port)
@@ -436,7 +435,7 @@ class TestRemovePortFromRouter(TestRouter):
result = self.cmd.take_action(parsed_args)
- self.network.router_remove_interface.assert_called_with(
+ self.network.remove_interface_from_router.assert_called_with(
self._router, **{'port_id': self._router.port})
self.assertIsNone(result)
@@ -450,7 +449,7 @@ class TestRemoveSubnetFromRouter(TestRouter):
def setUp(self):
super(TestRemoveSubnetFromRouter, self).setUp()
- self.network.router_remove_interface = mock.Mock()
+ self.network.remove_interface_from_router = mock.Mock()
self.cmd = router.RemoveSubnetFromRouter(self.app, self.namespace)
self.network.find_router = mock.Mock(return_value=self._router)
self.network.find_subnet = mock.Mock(return_value=self._subnet)
@@ -474,7 +473,7 @@ class TestRemoveSubnetFromRouter(TestRouter):
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
result = self.cmd.take_action(parsed_args)
- self.network.router_remove_interface.assert_called_with(
+ self.network.remove_interface_from_router.assert_called_with(
self._router, **{'subnet_id': self._router.subnet})
self.assertIsNone(result)
diff --git a/openstackclient/tests/unit/network/v2/test_subnet.py b/openstackclient/tests/unit/network/v2/test_subnet.py
index f09fe4fa..58506391 100644
--- a/openstackclient/tests/unit/network/v2/test_subnet.py
+++ b/openstackclient/tests/unit/network/v2/test_subnet.py
@@ -110,6 +110,7 @@ class TestCreateSubnet(TestSubnet):
columns = (
'allocation_pools',
'cidr',
+ 'description',
'dns_nameservers',
'enable_dhcp',
'gateway_ip',
@@ -129,6 +130,7 @@ class TestCreateSubnet(TestSubnet):
data = (
subnet_v2._format_allocation_pools(_subnet.allocation_pools),
_subnet.cidr,
+ _subnet.description,
utils.format_list(_subnet.dns_nameservers),
_subnet.enable_dhcp,
_subnet.gateway_ip,
@@ -148,6 +150,7 @@ class TestCreateSubnet(TestSubnet):
data_subnet_pool = (
subnet_v2._format_allocation_pools(_subnet_from_pool.allocation_pools),
_subnet_from_pool.cidr,
+ _subnet_from_pool.description,
utils.format_list(_subnet_from_pool.dns_nameservers),
_subnet_from_pool.enable_dhcp,
_subnet_from_pool.gateway_ip,
@@ -167,6 +170,7 @@ class TestCreateSubnet(TestSubnet):
data_ipv6 = (
subnet_v2._format_allocation_pools(_subnet_ipv6.allocation_pools),
_subnet_ipv6.cidr,
+ _subnet_ipv6.description,
utils.format_list(_subnet_ipv6.dns_nameservers),
_subnet_ipv6.enable_dhcp,
_subnet_ipv6.gateway_ip,
@@ -427,6 +431,40 @@ class TestCreateSubnet(TestSubnet):
self.assertEqual(self.columns, columns)
self.assertEqual(self.data, data)
+ def test_create_with_description(self):
+ # Mock SDK calls for this test.
+ self.network.create_subnet = mock.Mock(return_value=self._subnet)
+ self._network.id = self._subnet.network_id
+
+ arglist = [
+ "--subnet-range", self._subnet.cidr,
+ "--network", self._subnet.network_id,
+ "--description", self._subnet.description,
+ self._subnet.name,
+ ]
+ verifylist = [
+ ('name', self._subnet.name),
+ ('description', self._subnet.description),
+ ('subnet_range', self._subnet.cidr),
+ ('network', self._subnet.network_id),
+ ('ip_version', self._subnet.ip_version),
+ ('gateway', 'auto'),
+
+ ]
+
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+ columns, data = self.cmd.take_action(parsed_args)
+
+ self.network.create_subnet.assert_called_once_with(**{
+ 'cidr': self._subnet.cidr,
+ 'ip_version': self._subnet.ip_version,
+ 'name': self._subnet.name,
+ 'network_id': self._subnet.network_id,
+ 'description': self._subnet.description,
+ })
+ self.assertEqual(self.columns, columns)
+ self.assertEqual(self.data, data)
+
class TestDeleteSubnet(TestSubnet):
@@ -876,6 +914,30 @@ class TestSetSubnet(TestSubnet):
_testsubnet, **attrs)
self.assertIsNone(result)
+ def test_set_non_append_options(self):
+ arglist = [
+ "--description", "new_description",
+ "--dhcp",
+ "--gateway", self._subnet.gateway_ip,
+ self._subnet.name,
+ ]
+ verifylist = [
+ ('description', "new_description"),
+ ('dhcp', True),
+ ('gateway', self._subnet.gateway_ip),
+ ('subnet', self._subnet.name),
+ ]
+
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+ result = self.cmd.take_action(parsed_args)
+ attrs = {
+ 'enable_dhcp': True,
+ 'gateway_ip': self._subnet.gateway_ip,
+ 'description': "new_description",
+ }
+ self.network.update_subnet.assert_called_with(self._subnet, **attrs)
+ self.assertIsNone(result)
+
class TestShowSubnet(TestSubnet):
# The subnets to be shown
@@ -884,6 +946,7 @@ class TestShowSubnet(TestSubnet):
columns = (
'allocation_pools',
'cidr',
+ 'description',
'dns_nameservers',
'enable_dhcp',
'gateway_ip',
@@ -903,6 +966,7 @@ class TestShowSubnet(TestSubnet):
data = (
subnet_v2._format_allocation_pools(_subnet.allocation_pools),
_subnet.cidr,
+ _subnet.description,
utils.format_list(_subnet.dns_nameservers),
_subnet.enable_dhcp,
_subnet.gateway_ip,
diff --git a/openstackclient/tests/unit/network/v2/test_subnet_pool.py b/openstackclient/tests/unit/network/v2/test_subnet_pool.py
index 251323d9..fa6ffff3 100644
--- a/openstackclient/tests/unit/network/v2/test_subnet_pool.py
+++ b/openstackclient/tests/unit/network/v2/test_subnet_pool.py
@@ -50,6 +50,7 @@ class TestCreateSubnetPool(TestSubnetPool):
'address_scope_id',
'default_prefixlen',
'default_quota',
+ 'description',
'id',
'ip_version',
'is_default',
@@ -64,6 +65,7 @@ class TestCreateSubnetPool(TestSubnetPool):
_subnet_pool.address_scope_id,
_subnet_pool.default_prefixlen,
_subnet_pool.default_quota,
+ _subnet_pool.description,
_subnet_pool.id,
_subnet_pool.ip_version,
_subnet_pool.is_default,
@@ -245,6 +247,29 @@ class TestCreateSubnetPool(TestSubnetPool):
self.assertEqual(self.columns, columns)
self.assertEqual(self.data, data)
+ def test_create_with_description(self):
+ arglist = [
+ '--pool-prefix', '10.0.10.0/24',
+ '--description', self._subnet_pool.description,
+ self._subnet_pool.name,
+ ]
+ verifylist = [
+ ('prefixes', ['10.0.10.0/24']),
+ ('description', self._subnet_pool.description),
+ ('name', self._subnet_pool.name),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ columns, data = (self.cmd.take_action(parsed_args))
+
+ self.network.create_subnet_pool.assert_called_once_with(**{
+ 'name': self._subnet_pool.name,
+ 'prefixes': ['10.0.10.0/24'],
+ 'description': self._subnet_pool.description,
+ })
+ self.assertEqual(self.columns, columns)
+ self.assertEqual(self.data, data)
+
class TestDeleteSubnetPool(TestSubnetPool):
@@ -749,6 +774,26 @@ class TestSetSubnetPool(TestSubnetPool):
self.assertRaises(tests_utils.ParserException, self.check_parser,
self.cmd, arglist, verifylist)
+ def test_set_description(self):
+ arglist = [
+ '--description', 'new_description',
+ self._subnet_pool.name,
+ ]
+ verifylist = [
+ ('description', "new_description"),
+ ('subnet_pool', self._subnet_pool.name),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ result = self.cmd.take_action(parsed_args)
+
+ attrs = {
+ 'description': "new_description",
+ }
+ self.network.update_subnet_pool.assert_called_once_with(
+ self._subnet_pool, **attrs)
+ self.assertIsNone(result)
+
class TestShowSubnetPool(TestSubnetPool):
@@ -759,6 +804,7 @@ class TestShowSubnetPool(TestSubnetPool):
'address_scope_id',
'default_prefixlen',
'default_quota',
+ 'description',
'id',
'ip_version',
'is_default',
@@ -774,6 +820,7 @@ class TestShowSubnetPool(TestSubnetPool):
_subnet_pool.address_scope_id,
_subnet_pool.default_prefixlen,
_subnet_pool.default_quota,
+ _subnet_pool.description,
_subnet_pool.id,
_subnet_pool.ip_version,
_subnet_pool.is_default,