Skip to content

Commit 8c71a35

Browse files
committed
SDK Refactor: Prepare ip availability commands
Prepared the OSC "ip availability" commands for the SDK refactor. See [1] for details. [1] https://etherpad.openstack.org/p/osc-network-command-sdk-support Change-Id: Ia22e9fafec0a91ba1b0f1ce825fcaf1d8cbbbf88 Partially-Implements: blueprint network-command-sdk-support
1 parent 70cb628 commit 8c71a35

3 files changed

Lines changed: 20 additions & 11 deletions

File tree

openstackclient/network/v2/ip_availability.py

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,21 +18,22 @@
1818

1919
from openstackclient.i18n import _
2020
from openstackclient.identity import common as identity_common
21-
21+
from openstackclient.network import sdk_utils
2222

2323
_formatters = {
2424
'subnet_ip_availability': utils.format_list_of_dicts,
2525
}
2626

2727

2828
def _get_columns(item):
29-
columns = list(item.keys())
30-
if 'tenant_id' in columns:
31-
columns.remove('tenant_id')
32-
columns.append('project_id')
33-
return tuple(sorted(columns))
29+
column_map = {
30+
'tenant_id': 'project_id',
31+
}
32+
return sdk_utils.get_osc_show_columns_for_sdk_resource(item, column_map)
3433

3534

35+
# TODO(ankur-gupta-f): Use the SDK resource mapped attribute names once
36+
# the OSC minimum requirements include SDK 1.0.
3637
class ListIPAvailability(command.Lister):
3738
"""List IP availability for network"""
3839

@@ -84,6 +85,7 @@ def take_action(self, parsed_args):
8485
parsed_args.project_domain,
8586
).id
8687
filters['tenant_id'] = project_id
88+
filters['project_id'] = project_id
8789
data = client.network_ip_availabilities(**filters)
8890
return (column_headers,
8991
(utils.get_item_properties(
@@ -107,6 +109,6 @@ def take_action(self, parsed_args):
107109
client = self.app.client_manager.network
108110
obj = client.find_network_ip_availability(parsed_args.network,
109111
ignore_missing=False)
110-
columns = _get_columns(obj)
112+
display_columns, columns = _get_columns(obj)
111113
data = utils.get_item_properties(obj, columns, formatters=_formatters)
112-
return (columns, data)
114+
return (display_columns, data)

openstackclient/tests/unit/network/v2/fakes.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -194,26 +194,32 @@ class FakeIPAvailability(object):
194194
"""Fake one or more network ip availabilities."""
195195

196196
@staticmethod
197-
def create_one_ip_availability():
197+
def create_one_ip_availability(attrs=None):
198198
"""Create a fake list with ip availability stats of a network.
199199
200+
:param Dictionary attrs:
201+
A dictionary with all attributes
200202
:return:
201203
A FakeResource object with network_name, network_id, etc.
202204
"""
205+
attrs = attrs or {}
203206

204207
# Set default attributes.
205-
network_ip_availability = {
208+
network_ip_attrs = {
206209
'network_id': 'network-id-' + uuid.uuid4().hex,
207210
'network_name': 'network-name-' + uuid.uuid4().hex,
208211
'tenant_id': '',
209212
'subnet_ip_availability': [],
210213
'total_ips': 254,
211214
'used_ips': 6,
212215
}
216+
network_ip_attrs.update(attrs)
213217

214218
network_ip_availability = fakes.FakeResource(
215-
info=copy.deepcopy(network_ip_availability),
219+
info=copy.deepcopy(network_ip_attrs),
216220
loaded=True)
221+
network_ip_availability.project_id = network_ip_attrs['tenant_id']
222+
217223
return network_ip_availability
218224

219225
@staticmethod

openstackclient/tests/unit/network/v2/test_ip_availability.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ def test_list_project(self):
107107

108108
columns, data = self.cmd.take_action(parsed_args)
109109
filters = {'tenant_id': self.project.id,
110+
'project_id': self.project.id,
110111
'ip_version': 4}
111112

112113
self.network.network_ip_availabilities.assert_called_once_with(

0 commit comments

Comments
 (0)