diff options
author | Jenkins <jenkins@review.openstack.org> | 2016-02-23 06:39:32 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2016-02-23 06:39:32 +0000 |
commit | 76b478b87c0e588444390df403be4e1f231d2bdf (patch) | |
tree | 712c670303172ed490f045517e3ded751fb38c92 | |
parent | 390cff71c8d5461d2338a0b95e02f2305f308712 (diff) | |
parent | 0d862095656f5f19610fad61a7e19a68c083d8a8 (diff) | |
download | python-keystoneclient-76b478b87c0e588444390df403be4e1f231d2bdf.tar.gz |
Merge "Support creation of domain specific roles"
-rw-r--r-- | keystoneclient/tests/unit/v3/test_roles.py | 26 | ||||
-rw-r--r-- | keystoneclient/v3/roles.py | 8 |
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): |