Skip to content

Commit 6bba1f0

Browse files
Jenkinsopenstack-gerrit
authored andcommitted
Merge "SDK Refactor: Prepare subnet pool commands"
2 parents c27da05 + d6cc50f commit 6bba1f0

3 files changed

Lines changed: 33 additions & 15 deletions

File tree

openstackclient/network/v2/subnet_pool.py

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -22,17 +22,21 @@
2222

2323
from openstackclient.i18n import _
2424
from openstackclient.identity import common as identity_common
25+
from openstackclient.network import sdk_utils
2526

2627

2728
LOG = logging.getLogger(__name__)
2829

2930

3031
def _get_columns(item):
31-
columns = list(item.keys())
32-
if 'tenant_id' in columns:
33-
columns.remove('tenant_id')
34-
columns.append('project_id')
35-
return tuple(sorted(columns))
32+
column_map = {
33+
'default_prefix_length': 'default_prefixlen',
34+
'is_shared': 'shared',
35+
'maximum_prefix_length': 'max_prefixlen',
36+
'minimum_prefix_length': 'min_prefixlen',
37+
'tenant_id': 'project_id',
38+
}
39+
return sdk_utils.get_osc_show_columns_for_sdk_resource(item, column_map)
3640

3741

3842
_formatters = {
@@ -134,6 +138,8 @@ def _add_default_options(parser):
134138
)
135139

136140

141+
# TODO(rtheis): Use the SDK resource mapped attribute names once the
142+
# OSC minimum requirements include SDK 1.0.
137143
class CreateSubnetPool(command.ShowOne):
138144
"""Create subnet pool"""
139145

@@ -184,9 +190,9 @@ def take_action(self, parsed_args):
184190
if "prefixes" not in attrs:
185191
attrs['prefixes'] = []
186192
obj = client.create_subnet_pool(**attrs)
187-
columns = _get_columns(obj)
193+
display_columns, columns = _get_columns(obj)
188194
data = utils.get_item_properties(obj, columns, formatters=_formatters)
189-
return (columns, data)
195+
return (display_columns, data)
190196

191197

192198
class DeleteSubnetPool(command.Command):
@@ -223,6 +229,8 @@ def take_action(self, parsed_args):
223229
raise exceptions.CommandError(msg)
224230

225231

232+
# TODO(rtheis): Use only the SDK resource mapped attribute names once the
233+
# OSC minimum requirements include SDK 1.0.
226234
class ListSubnetPool(command.Lister):
227235
"""List subnet pools"""
228236

@@ -283,8 +291,10 @@ def take_action(self, parsed_args):
283291
filters = {}
284292
if parsed_args.share:
285293
filters['shared'] = True
294+
filters['is_shared'] = True
286295
elif parsed_args.no_share:
287296
filters['shared'] = False
297+
filters['is_shared'] = False
288298
if parsed_args.default:
289299
filters['is_default'] = True
290300
elif parsed_args.no_default:
@@ -296,6 +306,7 @@ def take_action(self, parsed_args):
296306
parsed_args.project_domain,
297307
).id
298308
filters['tenant_id'] = project_id
309+
filters['project_id'] = project_id
299310
if parsed_args.name is not None:
300311
filters['name'] = parsed_args.name
301312
if parsed_args.address_scope:
@@ -310,8 +321,8 @@ def take_action(self, parsed_args):
310321
if parsed_args.long:
311322
headers += ('Default Prefix Length', 'Address Scope',
312323
'Default Subnet Pool', 'Shared')
313-
columns += ('default_prefixlen', 'address_scope_id',
314-
'is_default', 'shared')
324+
columns += ('default_prefix_length', 'address_scope_id',
325+
'is_default', 'is_shared')
315326

316327
return (headers,
317328
(utils.get_item_properties(
@@ -320,6 +331,8 @@ def take_action(self, parsed_args):
320331
) for s in data))
321332

322333

334+
# TODO(rtheis): Use the SDK resource mapped attribute names once the
335+
# OSC minimum requirements include SDK 1.0.
323336
class SetSubnetPool(command.Command):
324337
"""Set subnet pool properties"""
325338

@@ -390,9 +403,9 @@ def take_action(self, parsed_args):
390403
parsed_args.subnet_pool,
391404
ignore_missing=False
392405
)
393-
columns = _get_columns(obj)
406+
display_columns, columns = _get_columns(obj)
394407
data = utils.get_item_properties(obj, columns, formatters=_formatters)
395-
return (columns, data)
408+
return (display_columns, data)
396409

397410

398411
class UnsetSubnetPool(command.Command):

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1217,6 +1217,11 @@ def create_one_subnet_pool(attrs=None):
12171217
)
12181218

12191219
# Set attributes with special mapping in OpenStack SDK.
1220+
subnet_pool.default_prefix_length = \
1221+
subnet_pool_attrs['default_prefixlen']
1222+
subnet_pool.is_shared = subnet_pool_attrs['shared']
1223+
subnet_pool.maximum_prefix_length = subnet_pool_attrs['max_prefixlen']
1224+
subnet_pool.minimum_prefix_length = subnet_pool_attrs['min_prefixlen']
12201225
subnet_pool.project_id = subnet_pool_attrs['tenant_id']
12211226

12221227
return subnet_pool

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -435,7 +435,7 @@ def test_subnet_pool_list_no_share(self):
435435
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
436436

437437
columns, data = self.cmd.take_action(parsed_args)
438-
filters = {'shared': False}
438+
filters = {'shared': False, 'is_shared': False}
439439

440440
self.network.subnet_pools.assert_called_once_with(**filters)
441441
self.assertEqual(self.columns, columns)
@@ -451,7 +451,7 @@ def test_subnet_pool_list_share(self):
451451
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
452452

453453
columns, data = self.cmd.take_action(parsed_args)
454-
filters = {'shared': True}
454+
filters = {'shared': True, 'is_shared': True}
455455

456456
self.network.subnet_pools.assert_called_once_with(**filters)
457457
self.assertEqual(self.columns, columns)
@@ -501,7 +501,7 @@ def test_subnet_pool_list_project(self):
501501
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
502502

503503
columns, data = self.cmd.take_action(parsed_args)
504-
filters = {'tenant_id': project.id}
504+
filters = {'tenant_id': project.id, 'project_id': project.id}
505505

506506
self.network.subnet_pools.assert_called_once_with(**filters)
507507
self.assertEqual(self.columns, columns)
@@ -521,7 +521,7 @@ def test_subnet_pool_list_project_domain(self):
521521
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
522522

523523
columns, data = self.cmd.take_action(parsed_args)
524-
filters = {'tenant_id': project.id}
524+
filters = {'tenant_id': project.id, 'project_id': project.id}
525525

526526
self.network.subnet_pools.assert_called_once_with(**filters)
527527
self.assertEqual(self.columns, columns)

0 commit comments

Comments
 (0)