summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2016-02-23 06:39:32 +0000
committerGerrit Code Review <review@openstack.org>2016-02-23 06:39:32 +0000
commit76b478b87c0e588444390df403be4e1f231d2bdf (patch)
tree712c670303172ed490f045517e3ded751fb38c92
parent390cff71c8d5461d2338a0b95e02f2305f308712 (diff)
parent0d862095656f5f19610fad61a7e19a68c083d8a8 (diff)
downloadpython-keystoneclient-76b478b87c0e588444390df403be4e1f231d2bdf.tar.gz
Merge "Support creation of domain specific roles"
-rw-r--r--keystoneclient/tests/unit/v3/test_roles.py26
-rw-r--r--keystoneclient/v3/roles.py8
2 files changed, 33 insertions, 1 deletions
diff --git a/keystoneclient/tests/unit/v3/test_roles.py b/keystoneclient/tests/unit/v3/test_roles.py
index 784c233..bcf2948 100644
--- a/keystoneclient/tests/unit/v3/test_roles.py
+++ b/keystoneclient/tests/unit/v3/test_roles.py
@@ -33,6 +33,32 @@ class RoleTests(utils.ClientTestCase, utils.CrudTests):
kwargs.setdefault('name', uuid.uuid4().hex)
return kwargs
+ def _new_domain_ref(self, **kwargs):
+ kwargs.setdefault('enabled', True)
+ kwargs.setdefault('name', uuid.uuid4().hex)
+ return kwargs
+
+ def test_create_with_domain_id(self):
+ ref = self.new_ref()
+ ref['domain_id'] = uuid.uuid4().hex
+ self.test_create(ref=ref)
+
+ def test_create_with_domain(self):
+ ref = self.new_ref()
+ domain_ref = self._new_domain_ref()
+ domain_ref['id'] = uuid.uuid4().hex
+ ref['domain_id'] = domain_ref['id']
+
+ self.stub_entity('POST', entity=ref, status_code=201)
+ returned = self.manager.create(name=ref['name'],
+ domain=domain_ref)
+ self.assertIsInstance(returned, self.model)
+ for attr in ref:
+ self.assertEqual(
+ getattr(returned, attr),
+ ref[attr],
+ 'Expected different %s' % attr)
+
def test_domain_role_grant(self):
user_id = uuid.uuid4().hex
domain_id = uuid.uuid4().hex
diff --git a/keystoneclient/v3/roles.py b/keystoneclient/v3/roles.py
index 4082eb6..1c00a69 100644
--- a/keystoneclient/v3/roles.py
+++ b/keystoneclient/v3/roles.py
@@ -27,6 +27,7 @@ class Role(base.Resource):
Attributes:
* id: a uuid that identifies the role
* name: user-facing identifier
+ * domain: optional domain for the role
"""
pass
@@ -91,9 +92,14 @@ class RoleManager(base.CrudManager):
raise exceptions.ValidationError(msg)
@positional(1, enforcement=positional.WARN)
- def create(self, name, **kwargs):
+ def create(self, name, domain=None, **kwargs):
+ domain_id = None
+ if domain:
+ domain_id = base.getid(domain)
+
return super(RoleManager, self).create(
name=name,
+ domain_id=domain_id,
**kwargs)
def _implied_role_url_tail(self, prior_role, implied_role):