Add description field to create_user method

Change-Id: I3444502c61de3931b0bd2623373be927682ceacb
This commit is contained in:
Ricardo Carrillo Cruz 2016-10-10 10:28:59 +00:00 committed by Ricardo Carrillo Cruz
parent cf877de8bb
commit bbc8816e70
5 changed files with 31 additions and 10 deletions

View File

@ -0,0 +1,3 @@
---
features:
- Add description parameter to create_user, available on Keystone v3

View File

@ -365,6 +365,7 @@ def normalize_users(users):
user.get('tenantId')), user.get('tenantId')),
domain_id=user.get('domain_id'), domain_id=user.get('domain_id'),
enabled=user.get('enabled'), enabled=user.get('enabled'),
description=user.get('description')
) for user in users ) for user in users
] ]
return meta.obj_list_to_dict(ret) return meta.obj_list_to_dict(ret)

View File

@ -714,15 +714,25 @@ class OpenStackCloud(object):
def create_user( def create_user(
self, name, password=None, email=None, default_project=None, self, name, password=None, email=None, default_project=None,
enabled=True, domain_id=None): enabled=True, domain_id=None, description=None):
"""Create a user.""" """Create a user."""
with _utils.shade_exceptions("Error in creating user {user}".format( with _utils.shade_exceptions("Error in creating user {user}".format(
user=name)): user=name)):
identity_params = self._get_identity_params( identity_params = self._get_identity_params(
domain_id, default_project) domain_id, default_project)
if self.cloud_config.get_api_version('identity') != '3':
if description is not None:
self.log.info(
"description parameter is not supported on Keystone v2"
)
user = self.manager.submit_task(_tasks.UserCreate( user = self.manager.submit_task(_tasks.UserCreate(
name=name, password=password, email=email, name=name, password=password, email=email,
enabled=enabled, **identity_params)) enabled=enabled, **identity_params))
else:
user = self.manager.submit_task(_tasks.UserCreate(
name=name, password=password, email=email,
enabled=enabled, description=description,
**identity_params))
self.list_users.invalidate(self) self.list_users.invalidate(self)
return _utils.normalize_users([user])[0] return _utils.normalize_users([user])[0]

View File

@ -133,10 +133,11 @@ class FakeService(object):
class FakeUser(object): class FakeUser(object):
def __init__(self, id, email, name, domain_id=None): def __init__(self, id, email, name, domain_id=None, description=None):
self.id = id self.id = id
self.email = email self.email = email
self.name = name self.name = name
self.description = description
if domain_id is not None: if domain_id is not None:
self.domain_id = domain_id self.domain_id = domain_id

View File

@ -36,9 +36,11 @@ class TestUsers(base.TestCase):
fake_user = fakes.FakeUser('1', email, name) fake_user = fakes.FakeUser('1', email, name)
mock_keystone.users.create.return_value = fake_user mock_keystone.users.create.return_value = fake_user
user = self.op_cloud.create_user( user = self.op_cloud.create_user(
name=name, email=email, password=password) name=name, email=email, password=password,
)
mock_keystone.users.create.assert_called_once_with( mock_keystone.users.create.assert_called_once_with(
name=name, password=password, email=email, enabled=True, name=name, password=password, email=email,
enabled=True,
) )
self.assertEqual(name, user.name) self.assertEqual(name, user.name)
self.assertEqual(email, user.email) self.assertEqual(email, user.email)
@ -51,18 +53,22 @@ class TestUsers(base.TestCase):
email = 'mickey@disney.com' email = 'mickey@disney.com'
password = 'mice-rule' password = 'mice-rule'
domain_id = '456' domain_id = '456'
fake_user = fakes.FakeUser('1', email, name) description = 'fake-description'
fake_user = fakes.FakeUser('1', email, name, description=description)
mock_keystone.users.create.return_value = fake_user mock_keystone.users.create.return_value = fake_user
user = self.op_cloud.create_user( user = self.op_cloud.create_user(
name=name, email=email, name=name, email=email,
password=password, password=password,
description=description,
domain_id=domain_id) domain_id=domain_id)
mock_keystone.users.create.assert_called_once_with( mock_keystone.users.create.assert_called_once_with(
name=name, password=password, email=email, enabled=True, name=name, password=password, email=email,
description=description, enabled=True,
domain=domain_id domain=domain_id
) )
self.assertEqual(name, user.name) self.assertEqual(name, user.name)
self.assertEqual(email, user.email) self.assertEqual(email, user.email)
self.assertEqual(description, user.description)
@mock.patch.object(occ.cloud_config.CloudConfig, 'get_api_version') @mock.patch.object(occ.cloud_config.CloudConfig, 'get_api_version')
@mock.patch.object(shade.OpenStackCloud, 'keystone_client') @mock.patch.object(shade.OpenStackCloud, 'keystone_client')
@ -72,7 +78,7 @@ class TestUsers(base.TestCase):
email = 'mickey@disney.com' email = 'mickey@disney.com'
password = 'mice-rule' password = 'mice-rule'
domain_id = '1' domain_id = '1'
user = {'id': '1', 'name': name, 'email': email} user = {'id': '1', 'name': name, 'email': email, 'description': None}
fake_user = fakes.FakeUser(**user) fake_user = fakes.FakeUser(**user)
munch_fake_user = munch.Munch(user) munch_fake_user = munch.Munch(user)
mock_keystone.users.list.return_value = [fake_user] mock_keystone.users.list.return_value = [fake_user]