identity: Use plural dest for append opts

Change-Id: I73a263a309e022b7606ced43a814a1d1914bc751
Signed-off-by: Stephen Finucane <stephenfin@redhat.com>
This commit is contained in:
Stephen Finucane
2025-12-15 10:45:17 +00:00
parent 43ffea5c4d
commit 8dbb7126c6
13 changed files with 49 additions and 41 deletions

View File

@@ -59,6 +59,7 @@ class CreateProject(command.ShowOne):
parser.add_argument(
'--property',
metavar='<key=value>',
dest='properties',
action=parseractions.KeyValueAction,
help=_(
'Add a property to <name> '
@@ -79,8 +80,8 @@ class CreateProject(command.ShowOne):
if parsed_args.disable:
enabled = False
kwargs = {}
if parsed_args.property:
kwargs = parsed_args.property.copy()
if parsed_args.properties:
kwargs.update(parsed_args.properties)
try:
project = identity_client.tenants.create(
@@ -230,6 +231,7 @@ class SetProject(command.Command):
parser.add_argument(
'--property',
metavar='<key=value>',
dest='properties',
action=parseractions.KeyValueAction,
help=_(
'Set a project property '
@@ -255,8 +257,8 @@ class SetProject(command.Command):
kwargs['enabled'] = True
if parsed_args.disable:
kwargs['enabled'] = False
if parsed_args.property:
kwargs.update(parsed_args.property)
if parsed_args.properties:
kwargs.update(parsed_args.properties)
if 'id' in kwargs:
del kwargs['id']
if 'name' in kwargs:
@@ -338,6 +340,7 @@ class UnsetProject(command.Command):
parser.add_argument(
'--property',
metavar='<key>',
dest='properties',
action='append',
default=[],
help=_(
@@ -354,7 +357,7 @@ class UnsetProject(command.Command):
parsed_args.project,
)
kwargs = project._info
for key in parsed_args.property:
for key in parsed_args.properties:
if key in kwargs:
kwargs[key] = None
identity_client.tenants.update(project.id, **kwargs)

View File

@@ -149,6 +149,7 @@ class CreateApplicationCredential(command.ShowOne):
parser.add_argument(
'--role',
metavar='<role>',
dest='roles',
action='append',
default=[],
help=_(
@@ -208,7 +209,7 @@ class CreateApplicationCredential(command.ShowOne):
user_id = conn.config.get_auth().get_user_id(conn.identity)
role_ids = []
for role in parsed_args.role:
for role in parsed_args.roles:
if is_uuid_like(role):
role_ids.append({'id': role})
else:

View File

@@ -41,6 +41,7 @@ class CreateIdentityProvider(command.ShowOne):
identity_remote_id_provider.add_argument(
'--remote-id',
metavar='<remote-id>',
dest='remote_ids',
action='append',
help=_(
'Remote IDs to associate with the Identity Provider '
@@ -99,16 +100,15 @@ class CreateIdentityProvider(command.ShowOne):
def take_action(self, parsed_args):
identity_client = self.app.client_manager.identity
remote_ids: list[str] | None = None
if parsed_args.remote_id_file:
file_content = utils.read_blob_file_contents(
parsed_args.remote_id_file
)
remote_ids = file_content.splitlines()
remote_ids = list(map(str.strip, remote_ids))
else:
remote_ids = (
parsed_args.remote_id if parsed_args.remote_id else None
)
elif parsed_args.remote_ids:
remote_ids = parsed_args.remote_ids
domain_id = None
if parsed_args.domain:
@@ -240,6 +240,7 @@ class SetIdentityProvider(command.Command):
identity_remote_id_provider.add_argument(
'--remote-id',
metavar='<remote-id>',
dest='remote_ids',
action='append',
help=_(
'Remote IDs to associate with the Identity Provider '
@@ -287,8 +288,8 @@ class SetIdentityProvider(command.Command):
)
remote_ids = file_content.splitlines()
remote_ids = list(map(str.strip, remote_ids))
elif parsed_args.remote_id:
remote_ids = parsed_args.remote_id
elif parsed_args.remote_ids:
remote_ids = parsed_args.remote_ids
# Setup keyword args for the client
kwargs = {}
@@ -298,7 +299,7 @@ class SetIdentityProvider(command.Command):
kwargs['enabled'] = True
if parsed_args.disable:
kwargs['enabled'] = False
if parsed_args.remote_id_file or parsed_args.remote_id:
if parsed_args.remote_id_file or parsed_args.remote_ids:
kwargs['remote_ids'] = remote_ids
# TODO(pas-ha) actually check for 3.14 microversion

View File

@@ -73,8 +73,8 @@ class CreateProject(command.ShowOne):
parser.add_argument(
'--property',
metavar='<key=value>',
action=parseractions.KeyValueAction,
dest='properties',
action=parseractions.KeyValueAction,
help=_(
'Add a property to <name> '
'(repeat option to set multiple properties)'

View File

@@ -114,6 +114,7 @@ def add_tag_option_to_parser_for_set(parser, resource_name):
parser.add_argument(
'--remove-tag',
action='append',
dest='remove_tags',
metavar='<tag>',
default=[],
help=_(
@@ -128,8 +129,8 @@ def update_tags_in_args(parsed_args, obj, args):
if parsed_args.clear_tags:
args['tags'] = []
obj.tags = []
if parsed_args.remove_tag:
args['tags'] = sorted(set(obj.tags) - set(parsed_args.remove_tag))
if parsed_args.remove_tags:
args['tags'] = sorted(set(obj.tags) - set(parsed_args.remove_tags))
return
if parsed_args.tags:
args['tags'] = sorted(set(obj.tags).union(set(parsed_args.tags)))

View File

@@ -37,6 +37,7 @@ class AuthorizeRequestToken(command.ShowOne):
parser.add_argument(
'--role',
metavar='<role>',
dest='roles',
action='append',
default=[],
required=True,
@@ -52,7 +53,7 @@ class AuthorizeRequestToken(command.ShowOne):
# NOTE(stevemar): We want a list of role ids
roles = []
for role in parsed_args.role:
for role in parsed_args.roles:
role_id = utils.find_resource(
identity_client.roles,
role,

View File

@@ -82,9 +82,9 @@ def _get_options_for_user(identity_client, parsed_args):
options['multi_factor_auth_enabled'] = True
if parsed_args.disable_multi_factor_auth:
options['multi_factor_auth_enabled'] = False
if parsed_args.multi_factor_auth_rule:
if parsed_args.multi_factor_auth_rules:
auth_rules = [
rule.split(",") for rule in parsed_args.multi_factor_auth_rule
rule.split(",") for rule in parsed_args.multi_factor_auth_rules
]
if auth_rules:
options['multi_factor_auth_rules'] = auth_rules
@@ -175,7 +175,8 @@ def _add_user_options(parser):
parser.add_argument(
'--multi-factor-auth-rule',
metavar='<rule>',
action="append",
dest='multi_factor_auth_rules',
action='append',
default=[],
help=_(
'Set multi-factor auth rules. For example, to set a rule '

View File

@@ -195,7 +195,7 @@ class TestProjectCreate(TestProject):
self.fake_project.name,
]
verifylist = [
('property', {'fee': 'fi', 'fo': 'fum'}),
('properties', {'fee': 'fi', 'fo': 'fum'}),
('name', self.fake_project.name),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -464,7 +464,7 @@ class TestProjectSet(TestProject):
('description', None),
('enable', False),
('disable', False),
('property', None),
('properties', None),
]
self.projects_mock.get.side_effect = exceptions.NotFound(None)
self.projects_mock.find.side_effect = exceptions.NotFound(None)
@@ -588,7 +588,7 @@ class TestProjectSet(TestProject):
self.fake_project.name,
]
verifylist = [
('property', {'fee': 'fi', 'fo': 'fum'}),
('properties', {'fee': 'fi', 'fo': 'fum'}),
('project', self.fake_project.name),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -683,7 +683,7 @@ class TestProjectUnset(TestProject):
self.fake_proj.name,
]
verifylist = [
('property', ['fee', 'fo']),
('properties', ['fee', 'fo']),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)

View File

@@ -120,7 +120,7 @@ class TestApplicationCredentialCreate(identity_fakes.TestIdentityv3):
verifylist = [
('name', self.application_credential.name),
('secret', 'moresecuresecret'),
('role', [self.roles.id]),
('roles', [self.roles.id]),
('expiration', '2024-01-01T00:00:00'),
('description', 'credential for testing'),
]

View File

@@ -127,7 +127,7 @@ class TestIdentityProviderCreate(TestIdentityProvider):
]
verifylist = [
('identity_provider_id', identity_fakes.idp_id),
('remote_id', identity_fakes.idp_remote_ids[:1]),
('remote_ids', identity_fakes.idp_remote_ids[:1]),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
columns, data = self.cmd.take_action(parsed_args)
@@ -157,7 +157,7 @@ class TestIdentityProviderCreate(TestIdentityProvider):
]
verifylist = [
('identity_provider_id', identity_fakes.idp_id),
('remote_id', identity_fakes.idp_remote_ids),
('remote_ids', identity_fakes.idp_remote_ids),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
columns, data = self.cmd.take_action(parsed_args)
@@ -561,7 +561,7 @@ class TestIdentityProviderSet(TestIdentityProvider):
('description', new_description),
('enable', False),
('disable', False),
('remote_id', None),
('remote_ids', None),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
self.cmd.take_action(parsed_args)
@@ -597,7 +597,7 @@ class TestIdentityProviderSet(TestIdentityProvider):
('description', None),
('enable', False),
('disable', True),
('remote_id', identity_fakes.idp_remote_ids),
('remote_ids', identity_fakes.idp_remote_ids),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -637,7 +637,7 @@ class TestIdentityProviderSet(TestIdentityProvider):
('description', None),
('enable', True),
('disable', False),
('remote_id', identity_fakes.idp_remote_ids),
('remote_ids', identity_fakes.idp_remote_ids),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -675,7 +675,7 @@ class TestIdentityProviderSet(TestIdentityProvider):
('description', None),
('enable', True),
('disable', False),
('remote_id', [self.new_remote_id]),
('remote_ids', [self.new_remote_id]),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -756,7 +756,7 @@ class TestIdentityProviderSet(TestIdentityProvider):
('identity_provider', identity_fakes.idp_id),
('enable', False),
('disable', False),
('remote_id', None),
('remote_ids', None),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -776,7 +776,7 @@ class TestIdentityProviderSet(TestIdentityProvider):
('identity_provider', identity_fakes.idp_id),
('enable', False),
('disable', False),
('remote_id', None),
('remote_ids', None),
('authorization_ttl', 60),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -800,7 +800,7 @@ class TestIdentityProviderSet(TestIdentityProvider):
('identity_provider', identity_fakes.idp_id),
('enable', False),
('disable', False),
('remote_id', None),
('remote_ids', None),
('authorization_ttl', 0),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -816,7 +816,7 @@ class TestIdentityProviderSet(TestIdentityProvider):
('identity_provider', identity_fakes.idp_id),
('enable', False),
('disable', False),
('remote_id', None),
('remote_ids', None),
('authorization_ttl', -1),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)

View File

@@ -109,7 +109,7 @@ class TestRequestTokenAuthorize(TestOAuth1):
]
verifylist = [
('request_key', identity_fakes.request_token_id),
('role', [identity_fakes.role_name]),
('roles', [identity_fakes.role_name]),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
columns, data = self.cmd.take_action(parsed_args)

View File

@@ -1142,7 +1142,7 @@ class TestProjectSet(TestProject):
verifylist = [
('enabled', None),
('project', self.project.name),
('remove_tag', ['tag1', 'tag2']),
('remove_tags', ['tag1', 'tag2']),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)

View File

@@ -730,7 +730,7 @@ class TestUserCreate(identity_fakes.TestIdentityv3):
]
verifylist = [
(
'multi_factor_auth_rule',
'multi_factor_auth_rules',
[identity_fakes.mfa_opt1, identity_fakes.mfa_opt2],
),
('enable', False),
@@ -769,7 +769,7 @@ class TestUserCreate(identity_fakes.TestIdentityv3):
verifylist = [
('ignore_password_expiry', True),
('disable_multi_factor_auth', True),
('multi_factor_auth_rule', [identity_fakes.mfa_opt1]),
('multi_factor_auth_rules', [identity_fakes.mfa_opt1]),
('enable', False),
('disable', False),
('name', self.user.name),
@@ -1667,7 +1667,7 @@ class TestUserSet(identity_fakes.TestIdentityv3):
('name', None),
('password', None),
('email', None),
('multi_factor_auth_rule', [identity_fakes.mfa_opt1]),
('multi_factor_auth_rules', [identity_fakes.mfa_opt1]),
('project', None),
('enable', False),
('disable', False),
@@ -1701,7 +1701,7 @@ class TestUserSet(identity_fakes.TestIdentityv3):
('email', None),
('ignore_password_expiry', True),
('enable_multi_factor_auth', True),
('multi_factor_auth_rule', [identity_fakes.mfa_opt1]),
('multi_factor_auth_rules', [identity_fakes.mfa_opt1]),
('project', None),
('enable', False),
('disable', False),