Adds domain specification for SetUser
This patch adds the ability to specify the domain context for making changes to a user with `--domain` flag. Example: $ openstack user set test_user --domain test_domain --enable Change-Id: I2b3241785c22e72e19181394acff650422299b0e Closes-Bug: #1658147
This commit is contained in:
parent
b69b539a42
commit
4cb56269ad
@ -153,6 +153,13 @@ Set user properties
|
|||||||
|
|
||||||
Set user name
|
Set user name
|
||||||
|
|
||||||
|
.. option:: --domain <domain>
|
||||||
|
|
||||||
|
Domain the user belongs to (name or ID).
|
||||||
|
This can be used in case collisions between user names exist.
|
||||||
|
|
||||||
|
.. versionadded:: 3
|
||||||
|
|
||||||
.. option:: --project <project>
|
.. option:: --project <project>
|
||||||
|
|
||||||
Set default project (name or ID)
|
Set default project (name or ID)
|
||||||
|
@ -301,6 +301,12 @@ class SetUser(command.Command):
|
|||||||
metavar='<name>',
|
metavar='<name>',
|
||||||
help=_('Set user name'),
|
help=_('Set user name'),
|
||||||
)
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
'--domain',
|
||||||
|
metavar='<domain>',
|
||||||
|
help=_('Domain the user belongs to (name or ID). This can be '
|
||||||
|
'used in case collisions between user names exist.'),
|
||||||
|
)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'--project',
|
'--project',
|
||||||
metavar='<project>',
|
metavar='<project>',
|
||||||
@ -351,10 +357,19 @@ class SetUser(command.Command):
|
|||||||
LOG.warning(_("No password was supplied, authentication will fail "
|
LOG.warning(_("No password was supplied, authentication will fail "
|
||||||
"when a user does not have a password."))
|
"when a user does not have a password."))
|
||||||
|
|
||||||
user = utils.find_resource(
|
user_str = common._get_token_resource(identity_client, 'user',
|
||||||
identity_client.users,
|
parsed_args.user)
|
||||||
parsed_args.user,
|
if parsed_args.domain:
|
||||||
)
|
domain = common.find_domain(identity_client, parsed_args.domain)
|
||||||
|
user = utils.find_resource(identity_client.users,
|
||||||
|
user_str,
|
||||||
|
domain_id=domain.id)
|
||||||
|
else:
|
||||||
|
user = utils.find_resource(
|
||||||
|
identity_client.users,
|
||||||
|
parsed_args.user,
|
||||||
|
)
|
||||||
|
|
||||||
kwargs = {}
|
kwargs = {}
|
||||||
if parsed_args.name:
|
if parsed_args.name:
|
||||||
kwargs['name'] = parsed_args.name
|
kwargs['name'] = parsed_args.name
|
||||||
|
@ -684,9 +684,14 @@ class TestUserList(TestUser):
|
|||||||
class TestUserSet(TestUser):
|
class TestUserSet(TestUser):
|
||||||
|
|
||||||
project = identity_fakes.FakeProject.create_one_project()
|
project = identity_fakes.FakeProject.create_one_project()
|
||||||
|
domain = identity_fakes.FakeDomain.create_one_domain()
|
||||||
user = identity_fakes.FakeUser.create_one_user(
|
user = identity_fakes.FakeUser.create_one_user(
|
||||||
attrs={'default_project_id': project.id}
|
attrs={'default_project_id': project.id}
|
||||||
)
|
)
|
||||||
|
user2 = identity_fakes.FakeUser.create_one_user(
|
||||||
|
attrs={'default_project_id': project.id,
|
||||||
|
'domain_id': domain.id}
|
||||||
|
)
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(TestUserSet, self).setUp()
|
super(TestUserSet, self).setUp()
|
||||||
@ -748,6 +753,37 @@ class TestUserSet(TestUser):
|
|||||||
)
|
)
|
||||||
self.assertIsNone(result)
|
self.assertIsNone(result)
|
||||||
|
|
||||||
|
def test_user_set_specify_domain(self):
|
||||||
|
arglist = [
|
||||||
|
'--name', 'qwerty',
|
||||||
|
'--domain', self.domain.id,
|
||||||
|
self.user2.name
|
||||||
|
]
|
||||||
|
verifylist = [
|
||||||
|
('name', 'qwerty'),
|
||||||
|
('password', None),
|
||||||
|
('domain', self.domain.id),
|
||||||
|
('email', None),
|
||||||
|
('project', None),
|
||||||
|
('enable', False),
|
||||||
|
('disable', False),
|
||||||
|
('user', self.user2.name),
|
||||||
|
]
|
||||||
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||||
|
|
||||||
|
result = self.cmd.take_action(parsed_args)
|
||||||
|
|
||||||
|
kwargs = {
|
||||||
|
'enabled': True,
|
||||||
|
'name': 'qwerty'
|
||||||
|
}
|
||||||
|
|
||||||
|
self.users_mock.update.assert_called_with(
|
||||||
|
self.user.id,
|
||||||
|
**kwargs
|
||||||
|
)
|
||||||
|
self.assertIsNone(result)
|
||||||
|
|
||||||
def test_user_set_password(self):
|
def test_user_set_password(self):
|
||||||
arglist = [
|
arglist = [
|
||||||
'--password', 'secret',
|
'--password', 'secret',
|
||||||
|
6
releasenotes/notes/bug-1658147-9de9ae222f9db9ae.yaml
Normal file
6
releasenotes/notes/bug-1658147-9de9ae222f9db9ae.yaml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
features:
|
||||||
|
- |
|
||||||
|
Add ``--domain`` options to the ``user set`` command.
|
||||||
|
Allows specification of domain context when changing users.
|
||||||
|
[Bug `1658147 <https://bugs.launchpad.net/bugs/1658147>`_]
|
Loading…
x
Reference in New Issue
Block a user