Skip to content

Commit 2f03c3e

Browse files
committed
identity: Remove unnecessary helper
Make better use of argparse and eliminate the need for a helper in the process. Change-Id: Ibdc9b4bfbb4d532ddb05bce9b49bcf0580cce76d Signed-off-by: Stephen Finucane <stephenfin@redhat.com>
1 parent 88b59d8 commit 2f03c3e

7 files changed

Lines changed: 79 additions & 104 deletions

File tree

openstackclient/identity/common.py

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -348,15 +348,6 @@ def _find_sdk_id(
348348
return resource.id
349349

350350

351-
def get_immutable_options(parsed_args):
352-
options = {}
353-
if parsed_args.immutable:
354-
options['immutable'] = True
355-
if parsed_args.no_immutable:
356-
options['immutable'] = False
357-
return options
358-
359-
360351
def add_user_domain_option_to_parser(parser):
361352
parser.add_argument(
362353
'--user-domain',
@@ -419,17 +410,21 @@ def add_inherited_option_to_parser(parser):
419410

420411

421412
def add_resource_option_to_parser(parser):
422-
enable_group = parser.add_mutually_exclusive_group()
423-
enable_group.add_argument(
413+
immutable_group = parser.add_mutually_exclusive_group()
414+
immutable_group.add_argument(
424415
'--immutable',
425416
action='store_true',
417+
dest='immutable',
418+
default=None,
426419
help=_(
427420
'Make resource immutable. An immutable project may not '
428421
'be deleted or modified except to remove the immutable flag'
429422
),
430423
)
431-
enable_group.add_argument(
424+
immutable_group.add_argument(
432425
'--no-immutable',
433-
action='store_true',
426+
action='store_false',
427+
dest='immutable',
428+
default=None,
434429
help=_('Make resource mutable (default)'),
435430
)

openstackclient/identity/v3/domain.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,9 @@ def get_parser(self, prog_name):
9494
def take_action(self, parsed_args):
9595
identity_client = self.app.client_manager.sdk_connection.identity
9696

97-
options = common.get_immutable_options(parsed_args)
97+
options = {}
98+
if parsed_args.immutable is not None:
99+
options['immutable'] = parsed_args.immutable
98100

99101
try:
100102
domain = identity_client.create_domain(
@@ -242,13 +244,10 @@ def take_action(self, parsed_args):
242244
kwargs['name'] = parsed_args.name
243245
if parsed_args.description:
244246
kwargs['description'] = parsed_args.description
245-
246247
if parsed_args.is_enabled is not None:
247248
kwargs['is_enabled'] = parsed_args.is_enabled
248-
249-
options = common.get_immutable_options(parsed_args)
250-
if options:
251-
kwargs['options'] = options
249+
if parsed_args.immutable is not None:
250+
kwargs['options'] = {'immutable': parsed_args.immutable}
252251

253252
identity_client.update_domain(domain.id, **kwargs)
254253

openstackclient/identity/v3/project.py

Lines changed: 25 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -59,17 +59,22 @@ def get_parser(self, prog_name):
5959
enable_group.add_argument(
6060
'--enable',
6161
action='store_true',
62+
dest='enabled',
63+
default=True,
6264
help=_('Enable project'),
6365
)
6466
enable_group.add_argument(
6567
'--disable',
66-
action='store_true',
68+
action='store_false',
69+
dest='enabled',
70+
default=True,
6771
help=_('Disable project'),
6872
)
6973
parser.add_argument(
7074
'--property',
7175
metavar='<key=value>',
7276
action=parseractions.KeyValueAction,
77+
dest='properties',
7378
help=_(
7479
'Add a property to <name> '
7580
'(repeat option to set multiple properties)'
@@ -98,15 +103,9 @@ def take_action(self, parsed_args):
98103
parsed_args.parent,
99104
).id
100105

101-
enabled = True
102-
if parsed_args.disable:
103-
enabled = False
104-
105-
options = common.get_immutable_options(parsed_args)
106-
107106
kwargs = {}
108-
if parsed_args.property:
109-
kwargs = parsed_args.property.copy()
107+
if parsed_args.properties:
108+
kwargs = parsed_args.properties.copy()
110109
if 'is_domain' in kwargs.keys():
111110
if kwargs['is_domain'].lower() == "true":
112111
kwargs['is_domain'] = True
@@ -117,13 +116,17 @@ def take_action(self, parsed_args):
117116

118117
kwargs['tags'] = list(set(parsed_args.tags))
119118

119+
options = {}
120+
if parsed_args.immutable is not None:
121+
options['immutable'] = parsed_args.immutable
122+
120123
try:
121124
project = identity_client.projects.create(
122125
name=parsed_args.name,
123126
domain=domain,
124127
parent=parent,
125128
description=parsed_args.description,
126-
enabled=enabled,
129+
enabled=parsed_args.enabled,
127130
options=options,
128131
**kwargs,
129132
)
@@ -356,16 +359,21 @@ def get_parser(self, prog_name):
356359
enable_group.add_argument(
357360
'--enable',
358361
action='store_true',
362+
dest='enabled',
363+
default=None,
359364
help=_('Enable project'),
360365
)
361366
enable_group.add_argument(
362367
'--disable',
363-
action='store_true',
368+
action='store_false',
369+
dest='enabled',
370+
default=None,
364371
help=_('Disable project'),
365372
)
366373
parser.add_argument(
367374
'--property',
368375
metavar='<key=value>',
376+
dest='properties',
369377
action=parseractions.KeyValueAction,
370378
help=_(
371379
'Set a property on <project> '
@@ -388,15 +396,12 @@ def take_action(self, parsed_args):
388396
kwargs['name'] = parsed_args.name
389397
if parsed_args.description:
390398
kwargs['description'] = parsed_args.description
391-
if parsed_args.enable:
392-
kwargs['enabled'] = True
393-
if parsed_args.disable:
394-
kwargs['enabled'] = False
395-
options = common.get_immutable_options(parsed_args)
396-
if options:
397-
kwargs['options'] = options
398-
if parsed_args.property:
399-
kwargs.update(parsed_args.property)
399+
if parsed_args.enabled is not None:
400+
kwargs['enabled'] = parsed_args.enabled
401+
if parsed_args.immutable is not None:
402+
kwargs['options'] = {'immutable': parsed_args.immutable}
403+
if parsed_args.properties:
404+
kwargs.update(parsed_args.properties)
400405
tag.update_tags_in_args(parsed_args, project, kwargs)
401406

402407
identity_client.projects.update(project.id, **kwargs)

openstackclient/identity/v3/role.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -334,9 +334,12 @@ def take_action(self, parsed_args):
334334

335335
if parsed_args.name:
336336
create_kwargs['name'] = parsed_args.name
337+
337338
if parsed_args.description:
338339
create_kwargs['description'] = parsed_args.description
339-
create_kwargs['options'] = common.get_immutable_options(parsed_args)
340+
341+
if parsed_args.immutable is not None:
342+
create_kwargs['options'] = {"immutable": parsed_args.immutable}
340343

341344
try:
342345
role = identity_client.create_role(**create_kwargs)
@@ -585,7 +588,9 @@ def take_action(self, parsed_args):
585588
)
586589
update_kwargs["domain_id"] = domain_id
587590

588-
update_kwargs["options"] = common.get_immutable_options(parsed_args)
591+
if parsed_args.immutable is not None:
592+
update_kwargs["options"] = {"immutable": parsed_args.immutable}
593+
589594
role = _find_sdk_id(
590595
identity_client.find_role,
591596
name_or_id=parsed_args.role,

openstackclient/tests/unit/identity/v3/test_domain.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ def test_domain_create_with_no_immutable(self):
186186
self.domain.name,
187187
]
188188
verifylist = [
189-
('no_immutable', True),
189+
('immutable', False),
190190
('name', self.domain.name),
191191
]
192192
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -461,7 +461,7 @@ def test_domain_set_no_immutable_option(self):
461461
self.domain.id,
462462
]
463463
verifylist = [
464-
('no_immutable', True),
464+
('immutable', False),
465465
('domain', self.domain.id),
466466
]
467467
parsed_args = self.check_parser(self.cmd, arglist, verifylist)

0 commit comments

Comments
 (0)