diff options
| author | Henry Nash <henryn@linux.vnet.ibm.com> | 2016-02-18 19:24:44 +0000 |
|---|---|---|
| committer | Henry Nash <henryn@linux.vnet.ibm.com> | 2016-02-19 11:48:27 +0000 |
| commit | 0d862095656f5f19610fad61a7e19a68c083d8a8 (patch) | |
| tree | 5e25daee347d1f8fdd11b263491acf9658ec449a /keystoneclient | |
| parent | 9097481e81f5b45310f4f5228369325e3bbc0f28 (diff) | |
| download | python-keystoneclient-0d862095656f5f19610fad61a7e19a68c083d8a8.tar.gz | |
Support creation of domain specific roles
Add support for the domain_id attribute in the role entity.
Partially Implements: blueprint domain-specific-roles
Change-Id: I06af7647e15aa742609b3fe1b9b222fbeaeb5735
Diffstat (limited to 'keystoneclient')
| -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): |
