summaryrefslogtreecommitdiff
path: root/openstackclient
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2017-01-26 03:01:10 +0000
committerGerrit Code Review <review@openstack.org>2017-01-26 03:01:10 +0000
commit029b389cf89960babf62a0087836f58b26bd6b5b (patch)
tree70ff37639fddd7e0b756e4cdb24c27505013d4d2 /openstackclient
parenta05e2762dca25e4717655b0d3e78209998d61a69 (diff)
parent4cb56269ad30d0bd59f7685040ab0585f38c3b0f (diff)
downloadpython-openstackclient-029b389cf89960babf62a0087836f58b26bd6b5b.tar.gz
Merge "Adds domain specification for SetUser"
Diffstat (limited to 'openstackclient')
-rw-r--r--openstackclient/identity/v3/user.py23
-rw-r--r--openstackclient/tests/unit/identity/v3/test_user.py36
2 files changed, 55 insertions, 4 deletions
diff --git a/openstackclient/identity/v3/user.py b/openstackclient/identity/v3/user.py
index 19a4c298..9c289a6d 100644
--- a/openstackclient/identity/v3/user.py
+++ b/openstackclient/identity/v3/user.py
@@ -302,6 +302,12 @@ class SetUser(command.Command):
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(
'--project',
metavar='<project>',
help=_('Set default project (name or ID)'),
@@ -351,10 +357,19 @@ class SetUser(command.Command):
LOG.warning(_("No password was supplied, authentication will fail "
"when a user does not have a password."))
- user = utils.find_resource(
- identity_client.users,
- parsed_args.user,
- )
+ user_str = common._get_token_resource(identity_client, '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 = {}
if parsed_args.name:
kwargs['name'] = parsed_args.name
diff --git a/openstackclient/tests/unit/identity/v3/test_user.py b/openstackclient/tests/unit/identity/v3/test_user.py
index 3c1f49a6..2ce66e94 100644
--- a/openstackclient/tests/unit/identity/v3/test_user.py
+++ b/openstackclient/tests/unit/identity/v3/test_user.py
@@ -684,9 +684,14 @@ class TestUserList(TestUser):
class TestUserSet(TestUser):
project = identity_fakes.FakeProject.create_one_project()
+ domain = identity_fakes.FakeDomain.create_one_domain()
user = identity_fakes.FakeUser.create_one_user(
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):
super(TestUserSet, self).setUp()
@@ -748,6 +753,37 @@ class TestUserSet(TestUser):
)
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):
arglist = [
'--password', 'secret',