Merge "Adds support for passing extra tenant attributes to keystone"

This commit is contained in:
Jenkins
2013-08-16 03:04:13 +00:00
committed by Gerrit Code Review
3 changed files with 47 additions and 15 deletions

View File

@@ -74,7 +74,7 @@ class TenantManager(base.ManagerWithFind):
def get(self, tenant_id): def get(self, tenant_id):
return self._get("/tenants/%s" % tenant_id, "tenant") return self._get("/tenants/%s" % tenant_id, "tenant")
def create(self, tenant_name, description=None, enabled=True): def create(self, tenant_name, description=None, enabled=True, **kwargs):
""" """
Create a new tenant. Create a new tenant.
@@ -83,6 +83,11 @@ class TenantManager(base.ManagerWithFind):
"description": description, "description": description,
"enabled": enabled}} "enabled": enabled}}
#Allow Extras Passthru and ensure we don't clobber primary arguments.
for k, v in kwargs.iteritems():
if k not in params['tenant']:
params['tenant'][k] = v
return self._create('/tenants', params, "tenant") return self._create('/tenants', params, "tenant")
def list(self, limit=None, marker=None): def list(self, limit=None, marker=None):
@@ -119,7 +124,7 @@ class TenantManager(base.ManagerWithFind):
return tenant_list return tenant_list
def update(self, tenant_id, tenant_name=None, description=None, def update(self, tenant_id, tenant_name=None, description=None,
enabled=None): enabled=None, **kwargs):
""" """
Update a tenant with a new name and description. Update a tenant with a new name and description.
""" """
@@ -130,6 +135,12 @@ class TenantManager(base.ManagerWithFind):
body['tenant']['enabled'] = enabled body['tenant']['enabled'] = enabled
if description is not None: if description is not None:
body['tenant']['description'] = description body['tenant']['description'] = description
#Allow Extras Passthru and ensure we don't clobber primary arguments.
for k, v in kwargs.iteritems():
if k not in body['tenant']:
body['tenant'][k] = v
# Keystone's API uses a POST rather than a PUT here. # Keystone's API uses a POST rather than a PUT here.
return self._create("/tenants/%s" % tenant_id, body, "tenant") return self._create("/tenants/%s" % tenant_id, body, "tenant")

View File

@@ -51,12 +51,13 @@ class ProjectManager(base.CrudManager):
collection_key = 'projects' collection_key = 'projects'
key = 'project' key = 'project'
def create(self, name, domain, description=None, enabled=True): def create(self, name, domain, description=None, enabled=True, **kwargs):
return super(ProjectManager, self).create( return super(ProjectManager, self).create(
domain_id=base.getid(domain), domain_id=base.getid(domain),
name=name, name=name,
description=description, description=description,
enabled=enabled) enabled=enabled,
**kwargs)
def list(self, domain=None, user=None, **kwargs): def list(self, domain=None, user=None, **kwargs):
"""List projects. """List projects.
@@ -78,13 +79,14 @@ class ProjectManager(base.CrudManager):
project_id=base.getid(project)) project_id=base.getid(project))
def update(self, project, name=None, domain=None, description=None, def update(self, project, name=None, domain=None, description=None,
enabled=None): enabled=None, **kwargs):
return super(ProjectManager, self).update( return super(ProjectManager, self).update(
project_id=base.getid(project), project_id=base.getid(project),
domain_id=base.getid(domain), domain_id=base.getid(domain),
name=name, name=name,
description=description, description=description,
enabled=enabled) enabled=enabled,
**kwargs)
def delete(self, project): def delete(self, project):
return super(ProjectManager, self).delete( return super(ProjectManager, self).delete(

View File

@@ -41,6 +41,13 @@ class TenantTests(utils.TestCase):
"description": "None", "description": "None",
"name": "admin", "name": "admin",
"id": 1, "id": 1,
},
{
"extravalue01": "metadata01",
"enabled": True,
"description": "For testing extras",
"name": "test_extras",
"id": 4,
} }
], ],
"links": [], "links": [],
@@ -52,7 +59,8 @@ class TenantTests(utils.TestCase):
"tenant": { "tenant": {
"name": "tenantX", "name": "tenantX",
"description": "Like tenant 9, but better.", "description": "Like tenant 9, but better.",
"enabled": True "enabled": True,
"extravalue01": "metadata01",
}, },
} }
resp_body = { resp_body = {
@@ -61,6 +69,7 @@ class TenantTests(utils.TestCase):
"enabled": True, "enabled": True,
"id": 4, "id": 4,
"description": "Like tenant 9, but better.", "description": "Like tenant 9, but better.",
"extravalue01": "metadata01",
} }
} }
resp = utils.TestResponse({ resp = utils.TestResponse({
@@ -75,14 +84,17 @@ class TenantTests(utils.TestCase):
urlparse.urljoin(self.TEST_URL, 'v2.0/tenants'), urlparse.urljoin(self.TEST_URL, 'v2.0/tenants'),
**kwargs).AndReturn((resp)) **kwargs).AndReturn((resp))
self.mox.ReplayAll() self.mox.ReplayAll()
tenant = self.client.tenants.create(
tenant = self.client.tenants.create(req_body['tenant']['name'], req_body['tenant']['name'],
req_body['tenant']['description'], req_body['tenant']['description'],
req_body['tenant']['enabled']) req_body['tenant']['enabled'],
extravalue01=req_body['tenant']['extravalue01'],
name="dont overwrite priors")
self.assertTrue(isinstance(tenant, tenants.Tenant)) self.assertTrue(isinstance(tenant, tenants.Tenant))
self.assertEqual(tenant.id, 4) self.assertEqual(tenant.id, 4)
self.assertEqual(tenant.name, "tenantX") self.assertEqual(tenant.name, "tenantX")
self.assertEqual(tenant.description, "Like tenant 9, but better.") self.assertEqual(tenant.description, "Like tenant 9, but better.")
self.assertEqual(tenant.extravalue01, "metadata01")
def test_duplicate_create(self): def test_duplicate_create(self):
req_body = { req_body = {
@@ -228,6 +240,8 @@ class TenantTests(utils.TestCase):
"name": "tenantX", "name": "tenantX",
"description": "I changed you!", "description": "I changed you!",
"enabled": False, "enabled": False,
"extravalue01": "metadataChanged",
#"extraname": "dontoverwrite!",
}, },
} }
resp_body = { resp_body = {
@@ -236,6 +250,7 @@ class TenantTests(utils.TestCase):
"enabled": False, "enabled": False,
"id": 4, "id": 4,
"description": "I changed you!", "description": "I changed you!",
"extravalue01": "metadataChanged",
}, },
} }
resp = utils.TestResponse({ resp = utils.TestResponse({
@@ -252,15 +267,19 @@ class TenantTests(utils.TestCase):
**kwargs).AndReturn((resp)) **kwargs).AndReturn((resp))
self.mox.ReplayAll() self.mox.ReplayAll()
tenant = self.client.tenants.update(req_body['tenant']['id'], tenant = self.client.tenants.update(
req_body['tenant']['name'], req_body['tenant']['id'],
req_body['tenant']['description'], req_body['tenant']['name'],
req_body['tenant']['enabled']) req_body['tenant']['description'],
req_body['tenant']['enabled'],
extravalue01=req_body['tenant']['extravalue01'],
name="dont overwrite priors")
self.assertTrue(isinstance(tenant, tenants.Tenant)) self.assertTrue(isinstance(tenant, tenants.Tenant))
self.assertEqual(tenant.id, 4) self.assertEqual(tenant.id, 4)
self.assertEqual(tenant.name, "tenantX") self.assertEqual(tenant.name, "tenantX")
self.assertEqual(tenant.description, "I changed you!") self.assertEqual(tenant.description, "I changed you!")
self.assertFalse(tenant.enabled) self.assertFalse(tenant.enabled)
self.assertEqual(tenant.extravalue01, "metadataChanged")
def test_update_empty_description(self): def test_update_empty_description(self):
req_body = { req_body = {