Merge "Implement "address scope list" command"
This commit is contained in:
commit
0acb743611
@ -62,3 +62,13 @@ Delete an address scope
|
|||||||
.. describe:: <address-scope>
|
.. describe:: <address-scope>
|
||||||
|
|
||||||
Address scope to delete (name or ID)
|
Address scope to delete (name or ID)
|
||||||
|
|
||||||
|
address scope list
|
||||||
|
------------------
|
||||||
|
|
||||||
|
List address scopes
|
||||||
|
|
||||||
|
.. program:: address scope list
|
||||||
|
.. code:: bash
|
||||||
|
|
||||||
|
os address scope list
|
||||||
|
@ -113,3 +113,30 @@ class DeleteAddressScope(command.Command):
|
|||||||
client = self.app.client_manager.network
|
client = self.app.client_manager.network
|
||||||
obj = client.find_address_scope(parsed_args.address_scope)
|
obj = client.find_address_scope(parsed_args.address_scope)
|
||||||
client.delete_address_scope(obj)
|
client.delete_address_scope(obj)
|
||||||
|
|
||||||
|
|
||||||
|
class ListAddressScope(command.Lister):
|
||||||
|
"""List address scopes"""
|
||||||
|
|
||||||
|
def take_action(self, parsed_args):
|
||||||
|
client = self.app.client_manager.network
|
||||||
|
columns = (
|
||||||
|
'id',
|
||||||
|
'name',
|
||||||
|
'ip_version',
|
||||||
|
'shared',
|
||||||
|
'tenant_id',
|
||||||
|
)
|
||||||
|
column_headers = (
|
||||||
|
'ID',
|
||||||
|
'Name',
|
||||||
|
'IP Version',
|
||||||
|
'Shared',
|
||||||
|
'Project',
|
||||||
|
)
|
||||||
|
data = client.address_scopes()
|
||||||
|
|
||||||
|
return (column_headers,
|
||||||
|
(utils.get_item_properties(
|
||||||
|
s, columns, formatters={},
|
||||||
|
) for s in data))
|
||||||
|
@ -106,6 +106,24 @@ class FakeAddressScope(object):
|
|||||||
|
|
||||||
return address_scope
|
return address_scope
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def create_address_scopes(attrs=None, count=2):
|
||||||
|
"""Create multiple fake address scopes.
|
||||||
|
|
||||||
|
:param Dictionary attrs:
|
||||||
|
A dictionary with all attributes
|
||||||
|
:param int count:
|
||||||
|
The number of address scopes to fake
|
||||||
|
:return:
|
||||||
|
A list of FakeResource objects faking the address scopes
|
||||||
|
"""
|
||||||
|
address_scopes = []
|
||||||
|
for i in range(0, count):
|
||||||
|
address_scopes.append(
|
||||||
|
FakeAddressScope.create_one_address_scope(attrs))
|
||||||
|
|
||||||
|
return address_scopes
|
||||||
|
|
||||||
|
|
||||||
class FakeAvailabilityZone(object):
|
class FakeAvailabilityZone(object):
|
||||||
"""Fake one or more network availability zones (AZs)."""
|
"""Fake one or more network availability zones (AZs)."""
|
||||||
|
@ -193,3 +193,45 @@ class TestDeleteAddressScope(TestAddressScope):
|
|||||||
self.network.delete_address_scope.assert_called_once_with(
|
self.network.delete_address_scope.assert_called_once_with(
|
||||||
self._address_scope)
|
self._address_scope)
|
||||||
self.assertIsNone(result)
|
self.assertIsNone(result)
|
||||||
|
|
||||||
|
|
||||||
|
class TestListAddressScope(TestAddressScope):
|
||||||
|
|
||||||
|
# The address scopes to list up.
|
||||||
|
address_scopes = (
|
||||||
|
network_fakes.FakeAddressScope.create_address_scopes(count=3))
|
||||||
|
columns = (
|
||||||
|
'ID',
|
||||||
|
'Name',
|
||||||
|
'IP Version',
|
||||||
|
'Shared',
|
||||||
|
'Project',
|
||||||
|
)
|
||||||
|
data = []
|
||||||
|
for scope in address_scopes:
|
||||||
|
data.append((
|
||||||
|
scope.id,
|
||||||
|
scope.name,
|
||||||
|
scope.ip_version,
|
||||||
|
scope.shared,
|
||||||
|
scope.project_id,
|
||||||
|
))
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
super(TestListAddressScope, self).setUp()
|
||||||
|
self.network.address_scopes = mock.Mock(
|
||||||
|
return_value=self.address_scopes)
|
||||||
|
|
||||||
|
# Get the command object to test
|
||||||
|
self.cmd = address_scope.ListAddressScope(self.app, self.namespace)
|
||||||
|
|
||||||
|
def test_address_scope_list(self):
|
||||||
|
arglist = []
|
||||||
|
verifylist = []
|
||||||
|
|
||||||
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||||
|
columns, data = self.cmd.take_action(parsed_args)
|
||||||
|
|
||||||
|
self.network.address_scopes.assert_called_once_with(**{})
|
||||||
|
self.assertEqual(self.columns, columns)
|
||||||
|
self.assertEqual(self.data, list(data))
|
||||||
|
@ -326,6 +326,7 @@ openstack.image.v2 =
|
|||||||
openstack.network.v2 =
|
openstack.network.v2 =
|
||||||
address_scope_create = openstackclient.network.v2.address_scope:CreateAddressScope
|
address_scope_create = openstackclient.network.v2.address_scope:CreateAddressScope
|
||||||
address_scope_delete = openstackclient.network.v2.address_scope:DeleteAddressScope
|
address_scope_delete = openstackclient.network.v2.address_scope:DeleteAddressScope
|
||||||
|
address_scope_list = openstackclient.network.v2.address_scope:ListAddressScope
|
||||||
|
|
||||||
ip_floating_create = openstackclient.network.v2.floating_ip:CreateFloatingIP
|
ip_floating_create = openstackclient.network.v2.floating_ip:CreateFloatingIP
|
||||||
ip_floating_delete = openstackclient.network.v2.floating_ip:DeleteFloatingIP
|
ip_floating_delete = openstackclient.network.v2.floating_ip:DeleteFloatingIP
|
||||||
|
Loading…
x
Reference in New Issue
Block a user