summaryrefslogtreecommitdiff
path: root/openstackclient
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2016-12-16 03:01:12 +0000
committerGerrit Code Review <review@openstack.org>2016-12-16 03:01:12 +0000
commit60370b46f5bbc9d3de7454f8efef4b5eae867a35 (patch)
tree899bf37ff9f872b6ed5d73f4c02e97428e459c8e /openstackclient
parent63377f25fc7dfae151bab2f6e82002a9a1944e93 (diff)
parent22d639b0b61380f715f72142e4c61526f621a707 (diff)
downloadpython-openstackclient-60370b46f5bbc9d3de7454f8efef4b5eae867a35.tar.gz
Merge "SDK refactor: Prepare network commands"
Diffstat (limited to 'openstackclient')
-rw-r--r--openstackclient/network/v2/network.py57
-rw-r--r--openstackclient/tests/unit/network/v2/fakes.py21
-rw-r--r--openstackclient/tests/unit/network/v2/test_network.py55
3 files changed, 100 insertions, 33 deletions
diff --git a/openstackclient/network/v2/network.py b/openstackclient/network/v2/network.py
index 1c06c462..26cd02c6 100644
--- a/openstackclient/network/v2/network.py
+++ b/openstackclient/network/v2/network.py
@@ -19,6 +19,7 @@ from osc_lib import utils
from openstackclient.i18n import _
from openstackclient.identity import common as identity_common
from openstackclient.network import common
+from openstackclient.network import sdk_utils
def _format_admin_state(item):
@@ -31,13 +32,33 @@ def _format_router_external(item):
_formatters = {
'subnets': utils.format_list,
+ 'subnet_ids': utils.format_list,
'admin_state_up': _format_admin_state,
+ 'is_admin_state_up': _format_admin_state,
'router:external': _format_router_external,
+ 'is_router_external': _format_router_external,
'availability_zones': utils.format_list,
'availability_zone_hints': utils.format_list,
}
+def _get_network_columns(item):
+ column_map = {
+ 'subnet_ids': 'subnets',
+ 'is_admin_state_up': 'admin_state_up',
+ 'is_router_external': 'router:external',
+ 'is_port_security_enabled': 'port_security_enabled',
+ 'provider_network_type': 'provider:network_type',
+ 'provider_physical_network': 'provider:physical_network',
+ 'provider_segmentation_id': 'provider:segmentation_id',
+ 'is_shared': 'shared',
+ 'ipv4_address_scope_id': 'ipv4_address_scope',
+ 'ipv6_address_scope_id': 'ipv6_address_scope',
+ 'tenant_id': 'project_id',
+ }
+ return sdk_utils.get_osc_show_columns_for_sdk_resource(item, column_map)
+
+
def _get_columns(item):
columns = list(item.keys())
if 'tenant_id' in columns:
@@ -162,6 +183,8 @@ def _get_attrs_compute(client_manager, parsed_args):
return attrs
+# TODO(sindhu): Use the SDK resource mapped attribute names once the
+# OSC minimum requirements include SDK 1.0.
class CreateNetwork(common.NetworkAndComputeShowOne):
_description = _("Create new network")
@@ -275,9 +298,9 @@ class CreateNetwork(common.NetworkAndComputeShowOne):
def take_action_network(self, client, parsed_args):
attrs = _get_attrs(self.app.client_manager, parsed_args)
obj = client.create_network(**attrs)
- columns = _get_columns(obj)
+ display_columns, columns = _get_network_columns(obj)
data = utils.get_item_properties(obj, columns, formatters=_formatters)
- return (columns, data)
+ return (display_columns, data)
def take_action_compute(self, client, parsed_args):
attrs = _get_attrs_compute(self.app.client_manager, parsed_args)
@@ -313,6 +336,8 @@ class DeleteNetwork(common.NetworkAndComputeDelete):
client.networks.delete(network.id)
+# TODO(sindhu): Use the SDK resource mapped attribute names once the
+# OSC minimum requirements include SDK 1.0.
class ListNetwork(common.NetworkAndComputeLister):
_description = _("List networks")
@@ -405,12 +430,12 @@ class ListNetwork(common.NetworkAndComputeLister):
'id',
'name',
'status',
- 'tenant_id',
- 'admin_state_up',
- 'shared',
- 'subnets',
+ 'project_id',
+ 'is_admin_state_up',
+ 'is_shared',
+ 'subnet_ids',
'provider_network_type',
- 'router:external',
+ 'is_router_external',
'availability_zones',
)
column_headers = (
@@ -429,7 +454,7 @@ class ListNetwork(common.NetworkAndComputeLister):
columns = (
'id',
'name',
- 'subnets'
+ 'subnet_ids'
)
column_headers = (
'ID',
@@ -441,16 +466,20 @@ class ListNetwork(common.NetworkAndComputeLister):
if parsed_args.external:
args['router:external'] = True
+ args['is_router_external'] = True
elif parsed_args.internal:
args['router:external'] = False
+ args['is_router_external'] = False
if parsed_args.name is not None:
args['name'] = parsed_args.name
if parsed_args.enable:
args['admin_state_up'] = True
+ args['is_admin_state_up'] = True
elif parsed_args.disable:
args['admin_state_up'] = False
+ args['is_admin_state_up'] = False
if parsed_args.project:
project = identity_common.find_project(
@@ -459,21 +488,27 @@ class ListNetwork(common.NetworkAndComputeLister):
parsed_args.project_domain,
)
args['tenant_id'] = project.id
+ args['project_id'] = project.id
if parsed_args.share:
args['shared'] = True
+ args['is_shared'] = True
elif parsed_args.no_share:
args['shared'] = False
+ args['is_shared'] = False
if parsed_args.status:
args['status'] = parsed_args.status
if parsed_args.provider_network_type:
args['provider:network_type'] = parsed_args.provider_network_type
+ args['provider_network_type'] = parsed_args.provider_network_type
if parsed_args.physical_network:
args['provider:physical_network'] = parsed_args.physical_network
+ args['provider_physical_network'] = parsed_args.physical_network
if parsed_args.segmentation_id:
args['provider:segmentation_id'] = parsed_args.segmentation_id
+ args['provider_segmentation_id'] = parsed_args.segmentation_id
data = client.networks(**args)
@@ -504,6 +539,8 @@ class ListNetwork(common.NetworkAndComputeLister):
) for s in data))
+# TODO(sindhu): Use the SDK resource mapped attribute names once the
+# OSC minimum requirements include SDK 1.0.
class SetNetwork(command.Command):
_description = _("Set network properties")
@@ -619,9 +656,9 @@ class ShowNetwork(common.NetworkAndComputeShowOne):
def take_action_network(self, client, parsed_args):
obj = client.find_network(parsed_args.network, ignore_missing=False)
- columns = _get_columns(obj)
+ display_columns, columns = _get_network_columns(obj)
data = utils.get_item_properties(obj, columns, formatters=_formatters)
- return (columns, data)
+ return (display_columns, data)
def take_action_compute(self, client, parsed_args):
obj = utils.find_resource(
diff --git a/openstackclient/tests/unit/network/v2/fakes.py b/openstackclient/tests/unit/network/v2/fakes.py
index b19a33b8..84f145fb 100644
--- a/openstackclient/tests/unit/network/v2/fakes.py
+++ b/openstackclient/tests/unit/network/v2/fakes.py
@@ -297,15 +297,17 @@ class FakeNetwork(object):
'admin_state_up': True,
'shared': False,
'subnets': ['a', 'b'],
- 'provider_network_type': 'vlan',
- 'provider_physical_network': 'physnet1',
- 'provider_segmentation_id': "400",
+ 'provider:network_type': 'vlan',
+ 'provider:physical_network': 'physnet1',
+ 'provider:segmentation_id': "400",
'router:external': True,
'availability_zones': [],
'availability_zone_hints': [],
'is_default': False,
'port_security_enabled': True,
'qos_policy_id': 'qos-policy-id-' + uuid.uuid4().hex,
+ 'ipv4_address_scope': 'ipv4' + uuid.uuid4().hex,
+ 'ipv6_address_scope': 'ipv6' + uuid.uuid4().hex,
}
# Overwrite default attributes.
@@ -317,8 +319,21 @@ class FakeNetwork(object):
# Set attributes with special mapping in OpenStack SDK.
network.project_id = network_attrs['tenant_id']
network.is_router_external = network_attrs['router:external']
+ network.is_admin_state_up = network_attrs['admin_state_up']
network.is_port_security_enabled = \
network_attrs['port_security_enabled']
+ network.subnet_ids = network_attrs['subnets']
+ network.is_shared = network_attrs['shared']
+ network.provider_network_type = \
+ network_attrs['provider:network_type']
+ network.provider_physical_network = \
+ network_attrs['provider:physical_network']
+ network.provider_segmentation_id = \
+ network_attrs['provider:segmentation_id']
+ network.ipv4_address_scope_id = \
+ network_attrs['ipv4_address_scope']
+ network.ipv6_address_scope_id = \
+ network_attrs['ipv6_address_scope']
return network
diff --git a/openstackclient/tests/unit/network/v2/test_network.py b/openstackclient/tests/unit/network/v2/test_network.py
index 96b1b102..c5283443 100644
--- a/openstackclient/tests/unit/network/v2/test_network.py
+++ b/openstackclient/tests/unit/network/v2/test_network.py
@@ -62,13 +62,15 @@ class TestCreateNetworkIdentityV3(TestNetwork):
'availability_zones',
'description',
'id',
+ 'ipv4_address_scope',
+ 'ipv6_address_scope',
'is_default',
'name',
'port_security_enabled',
'project_id',
- 'provider_network_type',
- 'provider_physical_network',
- 'provider_segmentation_id',
+ 'provider:network_type',
+ 'provider:physical_network',
+ 'provider:segmentation_id',
'qos_policy_id',
'router:external',
'shared',
@@ -82,6 +84,8 @@ class TestCreateNetworkIdentityV3(TestNetwork):
utils.format_list(_network.availability_zones),
_network.description,
_network.id,
+ _network.ipv4_address_scope_id,
+ _network.ipv6_address_scope_id,
_network.is_default,
_network.name,
_network.is_port_security_enabled,
@@ -236,13 +240,15 @@ class TestCreateNetworkIdentityV2(TestNetwork):
'availability_zones',
'description',
'id',
+ 'ipv4_address_scope',
+ 'ipv6_address_scope',
'is_default',
'name',
'port_security_enabled',
'project_id',
- 'provider_network_type',
- 'provider_physical_network',
- 'provider_segmentation_id',
+ 'provider:network_type',
+ 'provider:physical_network',
+ 'provider:segmentation_id',
'qos_policy_id',
'router:external',
'shared',
@@ -256,6 +262,8 @@ class TestCreateNetworkIdentityV2(TestNetwork):
utils.format_list(_network.availability_zones),
_network.description,
_network.id,
+ _network.ipv4_address_scope_id,
+ _network.ipv6_address_scope_id,
_network.is_default,
_network.name,
_network.is_port_security_enabled,
@@ -512,7 +520,7 @@ class TestListNetwork(TestNetwork):
columns, data = self.cmd.take_action(parsed_args)
self.network.networks.assert_called_once_with(
- **{'router:external': True}
+ **{'router:external': True, 'is_router_external': True}
)
self.assertEqual(self.columns, columns)
self.assertEqual(self.data, list(data))
@@ -529,7 +537,7 @@ class TestListNetwork(TestNetwork):
columns, data = self.cmd.take_action(parsed_args)
self.network.networks.assert_called_once_with(
- **{'router:external': False}
+ **{'router:external': False, 'is_router_external': False}
)
self.assertEqual(self.columns, columns)
self.assertEqual(self.data, list(data))
@@ -585,7 +593,7 @@ class TestListNetwork(TestNetwork):
columns, data = self.cmd.take_action(parsed_args)
self.network.networks.assert_called_once_with(
- **{'admin_state_up': True}
+ **{'admin_state_up': True, 'is_admin_state_up': True}
)
self.assertEqual(self.columns, columns)
self.assertEqual(self.data, list(data))
@@ -603,7 +611,7 @@ class TestListNetwork(TestNetwork):
columns, data = self.cmd.take_action(parsed_args)
self.network.networks.assert_called_once_with(
- **{'admin_state_up': False}
+ **{'admin_state_up': False, 'is_admin_state_up': False}
)
self.assertEqual(self.columns, columns)
self.assertEqual(self.data, list(data))
@@ -621,7 +629,7 @@ class TestListNetwork(TestNetwork):
columns, data = self.cmd.take_action(parsed_args)
self.network.networks.assert_called_once_with(
- **{'tenant_id': project.id}
+ **{'tenant_id': project.id, 'project_id': project.id}
)
self.assertEqual(self.columns, columns)
@@ -640,7 +648,7 @@ class TestListNetwork(TestNetwork):
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
columns, data = self.cmd.take_action(parsed_args)
- filters = {'tenant_id': project.id}
+ filters = {'tenant_id': project.id, 'project_id': project.id}
self.network.networks.assert_called_once_with(**filters)
self.assertEqual(self.columns, columns)
@@ -658,7 +666,7 @@ class TestListNetwork(TestNetwork):
columns, data = self.cmd.take_action(parsed_args)
self.network.networks.assert_called_once_with(
- **{'shared': True}
+ **{'shared': True, 'is_shared': True}
)
self.assertEqual(self.columns, columns)
self.assertEqual(self.data, list(data))
@@ -675,7 +683,7 @@ class TestListNetwork(TestNetwork):
columns, data = self.cmd.take_action(parsed_args)
self.network.networks.assert_called_once_with(
- **{'shared': False}
+ **{'shared': False, 'is_shared': False}
)
self.assertEqual(self.columns, columns)
self.assertEqual(self.data, list(data))
@@ -711,7 +719,8 @@ class TestListNetwork(TestNetwork):
columns, data = self.cmd.take_action(parsed_args)
self.network.networks.assert_called_once_with(
- **{'provider:network_type': network_type}
+ **{'provider:network_type': network_type,
+ 'provider_network_type': network_type}
)
self.assertEqual(self.columns, columns)
self.assertEqual(self.data, list(data))
@@ -728,7 +737,8 @@ class TestListNetwork(TestNetwork):
columns, data = self.cmd.take_action(parsed_args)
self.network.networks.assert_called_once_with(
- **{'provider:physical_network': physical_network}
+ **{'provider:physical_network': physical_network,
+ 'provider_physical_network': physical_network}
)
self.assertEqual(self.columns, columns)
self.assertEqual(self.data, list(data))
@@ -745,7 +755,8 @@ class TestListNetwork(TestNetwork):
columns, data = self.cmd.take_action(parsed_args)
self.network.networks.assert_called_once_with(
- **{'provider:segmentation_id': segmentation_id}
+ **{'provider:segmentation_id': segmentation_id,
+ 'provider_segmentation_id': segmentation_id}
)
self.assertEqual(self.columns, columns)
self.assertEqual(self.data, list(data))
@@ -878,13 +889,15 @@ class TestShowNetwork(TestNetwork):
'availability_zones',
'description',
'id',
+ 'ipv4_address_scope',
+ 'ipv6_address_scope',
'is_default',
'name',
'port_security_enabled',
'project_id',
- 'provider_network_type',
- 'provider_physical_network',
- 'provider_segmentation_id',
+ 'provider:network_type',
+ 'provider:physical_network',
+ 'provider:segmentation_id',
'qos_policy_id',
'router:external',
'shared',
@@ -898,6 +911,8 @@ class TestShowNetwork(TestNetwork):
utils.format_list(_network.availability_zones),
_network.description,
_network.id,
+ _network.ipv4_address_scope_id,
+ _network.ipv6_address_scope_id,
_network.is_default,
_network.name,
_network.is_port_security_enabled,