summaryrefslogtreecommitdiff
path: root/openstackclient
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2016-02-19 15:55:29 +0000
committerGerrit Code Review <review@openstack.org>2016-02-19 15:55:29 +0000
commit61d9604f8a6d35d3e10e697a4160b1a7f0eb4745 (patch)
tree997546530ac31ddae59c07dafc30f2220aa34111 /openstackclient
parentca34aa1587212ce5ac456a988fd6b442e646ed16 (diff)
parenta04012c3d50c3623c699f57d0dd320783b92e1cb (diff)
downloadpython-openstackclient-61d9604f8a6d35d3e10e697a4160b1a7f0eb4745.tar.gz
Merge "Subnet Pool: Add "subnet pool list" command"
Diffstat (limited to 'openstackclient')
-rw-r--r--openstackclient/network/v2/subnet_pool.py51
-rw-r--r--openstackclient/tests/network/v2/fakes.py6
-rw-r--r--openstackclient/tests/network/v2/test_subnet_pool.py69
3 files changed, 125 insertions, 1 deletions
diff --git a/openstackclient/network/v2/subnet_pool.py b/openstackclient/network/v2/subnet_pool.py
index 133e3e71..e82b2050 100644
--- a/openstackclient/network/v2/subnet_pool.py
+++ b/openstackclient/network/v2/subnet_pool.py
@@ -14,6 +14,7 @@
"""Subnet pool action implementations"""
from openstackclient.common import command
+from openstackclient.common import utils
class DeleteSubnetPool(command.Command):
@@ -32,3 +33,53 @@ class DeleteSubnetPool(command.Command):
client = self.app.client_manager.network
obj = client.find_subnet_pool(parsed_args.subnet_pool)
client.delete_subnet_pool(obj)
+
+
+class ListSubnetPool(command.Lister):
+ """List subnet pools"""
+
+ def get_parser(self, prog_name):
+ parser = super(ListSubnetPool, self).get_parser(prog_name)
+ parser.add_argument(
+ '--long',
+ action='store_true',
+ default=False,
+ help='List additional fields in output',
+ )
+ return parser
+
+ def take_action(self, parsed_args):
+ data = self.app.client_manager.network.subnet_pools()
+
+ if parsed_args.long:
+ headers = (
+ 'ID',
+ 'Name',
+ 'Prefixes',
+ 'Default Prefix Length',
+ 'Address Scope',
+ )
+ columns = (
+ 'id',
+ 'name',
+ 'prefixes',
+ 'default_prefixlen',
+ 'address_scope_id',
+ )
+ else:
+ headers = (
+ 'ID',
+ 'Name',
+ 'Prefixes',
+ )
+ columns = (
+ 'id',
+ 'name',
+ 'prefixes',
+ )
+
+ return (headers,
+ (utils.get_item_properties(
+ s, columns,
+ formatters={},
+ ) for s in data))
diff --git a/openstackclient/tests/network/v2/fakes.py b/openstackclient/tests/network/v2/fakes.py
index ae205a2d..fe31aab9 100644
--- a/openstackclient/tests/network/v2/fakes.py
+++ b/openstackclient/tests/network/v2/fakes.py
@@ -698,6 +698,9 @@ class FakeSubnetPool(object):
subnet_pool_attrs = {
'id': 'subnet-pool-id-' + uuid.uuid4().hex,
'name': 'subnet-pool-name-' + uuid.uuid4().hex,
+ 'prefixes': ['10.0.0.0/24', '10.1.0.0/24'],
+ 'default_prefixlen': 8,
+ 'address_scope_id': 'address-scope-id-' + uuid.uuid4().hex,
}
# Overwrite default attributes.
@@ -705,7 +708,8 @@ class FakeSubnetPool(object):
# Set default methods.
subnet_pool_methods = {
- 'keys': ['id', 'name']
+ 'keys': ['id', 'name', 'prefixes', 'default_prefixlen',
+ 'address_scope_id']
}
# Overwrite default methods.
diff --git a/openstackclient/tests/network/v2/test_subnet_pool.py b/openstackclient/tests/network/v2/test_subnet_pool.py
index 0cbfa1ee..28be5937 100644
--- a/openstackclient/tests/network/v2/test_subnet_pool.py
+++ b/openstackclient/tests/network/v2/test_subnet_pool.py
@@ -55,3 +55,72 @@ class TestDeleteSubnetPool(TestSubnetPool):
self.network.delete_subnet_pool.assert_called_with(self._subnet_pool)
self.assertIsNone(result)
+
+
+class TestListSubnetPool(TestSubnetPool):
+ # The subnet pools going to be listed up.
+ _subnet_pools = network_fakes.FakeSubnetPool.create_subnet_pools(count=3)
+
+ columns = (
+ 'ID',
+ 'Name',
+ 'Prefixes',
+ )
+ columns_long = columns + (
+ 'Default Prefix Length',
+ 'Address Scope',
+ )
+
+ data = []
+ for pool in _subnet_pools:
+ data.append((
+ pool.id,
+ pool.name,
+ pool.prefixes,
+ ))
+
+ data_long = []
+ for pool in _subnet_pools:
+ data_long.append((
+ pool.id,
+ pool.name,
+ pool.prefixes,
+ pool.default_prefixlen,
+ pool.address_scope_id,
+ ))
+
+ def setUp(self):
+ super(TestListSubnetPool, self).setUp()
+
+ # Get the command object to test
+ self.cmd = subnet_pool.ListSubnetPool(self.app, self.namespace)
+
+ self.network.subnet_pools = mock.Mock(return_value=self._subnet_pools)
+
+ def test_subnet_pool_list_no_option(self):
+ arglist = []
+ verifylist = [
+ ('long', False),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ columns, data = self.cmd.take_action(parsed_args)
+
+ self.network.subnet_pools.assert_called_with()
+ self.assertEqual(self.columns, columns)
+ self.assertEqual(self.data, list(data))
+
+ def test_subnet_pool_list_long(self):
+ arglist = [
+ '--long',
+ ]
+ verifylist = [
+ ('long', True),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ columns, data = self.cmd.take_action(parsed_args)
+
+ self.network.subnet_pools.assert_called_with()
+ self.assertEqual(self.columns_long, columns)
+ self.assertEqual(self.data_long, list(data))