Changes to support getuser by name and gettenant by name calls.

Change-Id: Iac15fdd7588b383e04d5eb0fc6d3a48d9cb7e2e3
This commit is contained in:
Yogeshwar Srikrishnan 2011-10-21 16:34:01 -05:00
parent 47529ee195
commit 135b61b0ac
5 changed files with 72 additions and 10 deletions

View File

@ -20,10 +20,17 @@ class TenantController(wsgi.Controller):
@utils.wrap_error
def get_tenants(self, req):
marker, limit, url = get_marker_limit_and_url(req)
tenants = config.SERVICE.get_tenants(utils.get_auth_token(req),
marker, limit, url, self.is_service_operation)
return utils.send_result(200, req, tenants)
tenant_name = req.GET["name"] if "name" in req.GET else None
if tenant_name:
tenant = config.SERVICE.get_tenant_by_name(
utils.get_auth_token(req),
tenant_name)
return utils.send_result(200, req, tenant)
else:
marker, limit, url = get_marker_limit_and_url(req)
tenants = config.SERVICE.get_tenants(utils.get_auth_token(req),
marker, limit, url, self.is_service_operation)
return utils.send_result(200, req, tenants)
@utils.wrap_error
def get_tenant(self, req, tenant_id):

View File

@ -19,10 +19,17 @@ class UserController(wsgi.Controller):
@utils.wrap_error
def get_users(self, req):
marker, limit, url = get_marker_limit_and_url(req)
users = config.SERVICE.get_users(utils.get_auth_token(req), marker,
limit, url)
return utils.send_result(200, req, users)
user_name = req.GET["name"] if "name" in req.GET else None
if user_name:
tenant = config.SERVICE.get_user_by_name(
utils.get_auth_token(req),
user_name)
return utils.send_result(200, req, tenant)
else:
marker, limit, url = get_marker_limit_and_url(req)
users = config.SERVICE.get_users(utils.get_auth_token(req), marker,
limit, url)
return utils.send_result(200, req, users)
@utils.wrap_error
def get_user(self, req, user_id):

View File

@ -238,6 +238,14 @@ class IdentityService(object):
raise fault.ItemNotFoundFault("The tenant could not be found")
return Tenant(dtenant.id, dtenant.name, dtenant.desc, dtenant.enabled)
def get_tenant_by_name(self, admin_token, tenant_name):
self.__validate_admin_token(admin_token)
dtenant = api.TENANT.get_by_name(tenant_name)
if not dtenant:
raise fault.ItemNotFoundFault("The tenant could not be found")
return Tenant(dtenant.id, dtenant.name, dtenant.desc, dtenant.enabled)
def update_tenant(self, admin_token, tenant_id, tenant):
self.__validate_admin_token(admin_token)
@ -386,6 +394,14 @@ class IdentityService(object):
return User_Update(id=duser.id, tenant_id=duser.tenant_id,
email=duser.email, enabled=duser.enabled, name=duser.name)
def get_user_by_name(self, admin_token, user_name):
self.__validate_admin_token(admin_token)
duser = api.USER.get_by_name(user_name)
if not duser:
raise fault.ItemNotFoundFault("The user could not be found")
return User_Update(id=duser.id, tenant_id=duser.tenant_id,
email=duser.email, enabled=duser.enabled, name=duser.name)
def update_user(self, admin_token, user_id, user):
self.__validate_admin_token(admin_token)

View File

@ -220,6 +220,11 @@ class ApiTestCase(RestfulTestCase):
return self.admin_request(method='GET',
path='/tenants/%s' % (tenant_id,), **kwargs)
def get_tenant_by_name(self, tenant_name, **kwargs):
"""GET /tenants?name=tenant_name"""
return self.admin_request(method='GET',
path='/tenants?name=%s' % (tenant_name,), **kwargs)
def post_tenant_for_update(self, tenant_id, **kwargs):
"""GET /tenants/{tenant_id}"""
return self.admin_request(method='POST',
@ -249,9 +254,9 @@ class ApiTestCase(RestfulTestCase):
path='/users/%s' % (user_id,), **kwargs)
def query_user(self, user_name, **kwargs):
"""GET /users?username={user_name}"""
"""GET /users?name={user_name}"""
return self.admin_request(method='GET',
path='/users?username=%s' % (user_name,), **kwargs)
path='/users?name=%s' % (user_name,), **kwargs)
def post_user_for_update(self, user_id, **kwargs):
"""POST /users/{user_id}"""
@ -556,6 +561,11 @@ class FunctionalTestCase(ApiTestCase):
tenant_id = optional_str(tenant_id)
return self.get_tenant(tenant_id, **kwargs)
def fetch_tenant_by_name(self, tenant_name=None, **kwargs):
tenant_name = optional_str(tenant_name)
if tenant_name:
return self.get_tenant_by_name(tenant_name, **kwargs)
def update_tenant(self, tenant_id=None, tenant_name=None,
tenant_description=None, tenant_enabled=True, **kwargs):
tenant_id = optional_str(tenant_id)

View File

@ -184,6 +184,28 @@ class GetTenantTest(TenantTest):
'Accept': 'application/xml'})
class GetTenantByNameTest(TenantTest):
def setUp(self, *args, **kwargs):
super(TenantTest, self).setUp(*args, **kwargs)
self.tenant = self.create_tenant().json['tenant']
def test_get_tenant(self):
self.fetch_tenant_by_name(self.tenant['name'], assert_status=200)
def test_get_tenant_xml(self):
self.fetch_tenant_by_name(
self.tenant['name'], assert_status=200, headers={
"Accept": "application/xml"})
def test_get_tenant_not_found(self):
self.fetch_tenant_by_name(assert_status=404)
def test_get_tenant_not_found_xml(self):
self.fetch_tenant_by_name(
common.unique_str(), assert_status=404, headers={
'Accept': 'application/xml'})
class UpdateTenantTest(TenantTest):
def setUp(self, *args, **kwargs):
super(UpdateTenantTest, self).setUp(*args, **kwargs)