def get_user_groups(self, admin_token, tenant_id, user_id, marker, limit, url): self.__validate_token(admin_token) if tenant_id == None: raise fault.BadRequestFault("Expecting a Tenant Id") if db_api.tenant_get(tenant_id) == None: raise fault.ItemNotFoundFault("The tenant not found") if not db_api.tenant_get(tenant_id).enabled: raise fault.TenantDisabledFault("Your account has been disabled") ts = [] dusergroups = db_api.groups_get_by_user_get_page(user_id, marker, limit) for dusergroup, dusergroupAsso in dusergroups: ts.append(tenants.Group(dusergroup.id, dusergroup.desc, dusergroup.tenant_id)) links = [] if ts.__len__(): prev, next = db_api.groups_get_by_user_get_page_markers(user_id, marker, limit) if prev: links.append(atom.Link('prev', "%s?'marker=%s&limit=%s'" % (url, prev, limit))) if next: links.append(atom.Link('next', "%s?'marker=%s&limit=%s'" % (url, next, limit))) return tenants.Groups(ts, links)
def get_tenant_groups(self, admin_token, tenant_id, marker, limit, url): self.__validate_token(admin_token) if tenant_id == None: raise fault.BadRequestFault("Expecting a Tenant Id") dtenant = db_api.tenant_get(tenant_id) if dtenant == None: raise fault.ItemNotFoundFault("The tenant not found") ts = [] dtenantgroups = db_api.tenant_group_get_page(tenant_id, marker, limit) for dtenantgroup in dtenantgroups: ts.append(tenants.Group(dtenantgroup.id, dtenantgroup.desc, dtenantgroup.tenant_id)) prev, next = db_api.tenant_group_get_page_markers(tenant_id, marker, limit) links = [] if prev: links.append(atom.Link('prev', "%s?'marker=%s&limit=%s'" \ % (url, prev, limit))) if next: links.append(atom.Link('next', "%s?'marker=%s&limit=%s'"\ % (url, next, limit))) return tenants.Groups(ts, links)
def create_role_ref(self, admin_token, user_id, roleRef): self.__validate_token(admin_token) duser = db_api.user_get(user_id) if not duser: raise fault.ItemNotFoundFault("The user could not be found") if not isinstance(roleRef, roles.RoleRef): raise fault.BadRequestFault("Expecting a Role Ref") if roleRef.role_id == None: raise fault.BadRequestFault("Expecting a Role Id") drole = db_api.role_get(roleRef.role_id) if drole == None: raise fault.ItemNotFoundFault("The role not found") if roleRef.tenant_id == None: raise fault.BadRequestFault("Expecting a Tenant Id") dtenant = db_api.tenant_get(roleRef.tenant_id) if dtenant == None: raise fault.ItemNotFoundFault("The tenant not found") drole_ref = db_models.UserRoleAssociation() drole_ref.user_id = duser.id drole_ref.role_id = drole.id drole_ref.tenant_id = dtenant.id user_role_ref = db_api.user_role_add(drole_ref) roleRef.role_ref_id = user_role_ref.id return roleRef
def add_user_global_group(self, admin_token, group, user): self.__validate_token(admin_token) gtenant = self.__check_create_global_tenant() if db_api.tenant_get(gtenant.id) == None: raise fault.ItemNotFoundFault("The Global Tenant not found") if db_api.group_get(group) == None: raise fault.ItemNotFoundFault("The Group not found") duser = db_api.user_get(user) if duser == None: raise fault.ItemNotFoundFault("The User not found") if db_api.tenant_group_get(group, gtenant.id) == None: raise fault.ItemNotFoundFault("A global tenant group with" " that id not found") if db_api.get_user_by_group(user, group) != None: raise fault.UserGroupConflictFault( "A user with that id already exists in group") dusergroup = db_models.UserGroupAssociation() dusergroup.user_id = user dusergroup.group_id = group db_api.user_tenant_group(dusergroup) return tenants.User(duser.id, duser.email, duser.enabled, group_id=group)
def create_tenant_group(self, admin_token, tenant, group): self.__validate_token(admin_token) if not isinstance(group, tenants.Group): raise fault.BadRequestFault("Expecting a Group") if tenant == None: raise fault.BadRequestFault("Expecting a Tenant Id") dtenant = db_api.tenant_get(tenant) if dtenant == None: raise fault.ItemNotFoundFault("The tenant not found") if group.group_id == None: raise fault.BadRequestFault("Expecting a Group Id") if db_api.group_get(group.group_id) != None: raise fault.TenantGroupConflictFault( "A tenant group with that id already exists") dtenant = db_models.Group() dtenant.id = group.group_id dtenant.desc = group.description dtenant.tenant_id = tenant db_api.tenant_group_create(dtenant) return tenants.Group(dtenant.id, dtenant.desc, dtenant.tenant_id)
def update_user(self, admin_token, user_id, user, tenant_id): self.__validate_token(admin_token) dtenant = db_api.tenant_get(tenant_id) if dtenant == None: raise fault.UnauthorizedFault("Unauthorized") if not dtenant.enabled: raise fault.TenantDisabledFault("Your account has been disabled") duser = db_api.user_get(user_id) if not duser: raise fault.ItemNotFoundFault("The user could not be found") if not duser.enabled: raise fault.UserDisabledFault("User has been disabled") if not isinstance(user, users.User): raise fault.BadRequestFault("Expecting a User") if db_api.user_get_email(user.email) is not None: raise fault.EmailConflictFault( "Email already exists") values = {'email': user.email} db_api.user_update(user_id, values) duser = db_api.user_get_update(user_id) return users.User(duser.password, duser.id, tenant_id, duser.email, duser.enabled)
def update_tenant_group(self, admin_token, tenant_id, group_id, group): self.__validate_token(admin_token) if not isinstance(group, tenants.Group): raise fault.BadRequestFault("Expecting a Group") True dtenant = db_api.tenant_get(tenant_id) if dtenant == None: raise fault.ItemNotFoundFault("The tenant not found") dtenant = db_api.tenant_group_get(group_id, tenant_id) if not dtenant: raise fault.ItemNotFoundFault("The tenant group not found") if group_id != group.group_id: raise fault.BadRequestFault("Wrong Data Provided,\ Group id not matching") if str(tenant_id) != str(group.tenant_id): raise fault.BadRequestFault("Wrong Data Provided,\ Tenant id not matching ") values = {'desc': group.description} db_api.tenant_group_update(group_id, tenant_id, values) return tenants.Group(group_id, group.description, tenant_id)
def get_tenant_users(self, admin_token, tenant_id, marker, limit, url): self.__validate_token(admin_token) if tenant_id == None: raise fault.BadRequestFault("Expecting a Tenant Id") dtenant = db_api.tenant_get(tenant_id) if dtenant is None: raise fault.ItemNotFoundFault("The tenant not found") if not dtenant.enabled: raise fault.TenantDisabledFault("Your account has been disabled") ts = [] dtenantusers = db_api.users_get_by_tenant_get_page(tenant_id, marker, limit) for dtenantuser, dtenantuserAsso in dtenantusers: ts.append(users.User(None, dtenantuser.id, tenant_id, dtenantuser.email, dtenantuser.enabled)) links = [] if ts.__len__(): prev, next = db_api.users_get_by_tenant_get_page_markers(tenant_id, marker, limit) if prev: links.append(atom.Link('prev', "%s?'marker=%s&limit=%s'" % (url, prev, limit))) if next: links.append(atom.Link('next', "%s?'marker=%s&limit=%s'" % (url, next, limit))) return users.Users(ts, links)
def get_user(self, admin_token, tenant_id, user_id): self.__validate_token(admin_token) dtenant = db_api.tenant_get(tenant_id) if dtenant == None: raise fault.UnauthorizedFault("Unauthorized") if not dtenant.enabled: raise fault.TenantDisabledFault("Your account has been disabled") duser = db_api.user_get(user_id) if not duser: raise fault.ItemNotFoundFault("The user could not be found") if not duser.enabled: raise fault.UserDisabledFault("User has been disabled") if len(duser.tenants) > 0: tenant_user = duser.tenants[0].tenant_id else: tenant_user = tenant_id ts = [] dusergroups = db_api.user_groups_get_all(user_id) for dusergroup, dusergroupAsso in dusergroups: ts.append(tenants.Group(dusergroup.id, dusergroup.tenant_id, None)) return users.User_Update(None, duser.id, tenant_user, duser.email, duser.enabled, ts)
def set_user_tenant(self, admin_token, user_id, user): self.__validate_token(admin_token) duser = db_api.user_get(user_id) if not duser: raise fault.ItemNotFoundFault("The user could not be found") if not isinstance(user, users.User): raise fault.BadRequestFault("Expecting a User") duser = db_api.user_get(user_id) if duser == None: raise fault.ItemNotFoundFault("The user could not be found") dtenant = db_api.tenant_get(user.tenant_id) #Check if tenant exists.If user has passed a tenant that does not exist throw error. #If user is trying to update to a tenant that is disabled throw an error. if dtenant == None and len(user.tenant_id) > 0: raise fault.ItemNotFoundFault("The tenant not found") elif not dtenant.enabled: raise fault.TenantDisabledFault("Your account has been disabled") values = {'tenant_id': user.tenant_id} db_api.user_update(user_id, values) return users.User_Update(None, None, user.tenant_id, None, None, None)
def create_user(self, admin_token, tenant_id, user): self.__validate_token(admin_token) dtenant = db_api.tenant_get(tenant_id) if dtenant == None: raise fault.UnauthorizedFault("Unauthorized") if not dtenant.enabled: raise fault.TenantDisabledFault("Your account has been disabled") if not isinstance(user, users.User): raise fault.BadRequestFault("Expecting a User") if user.user_id == None: raise fault.BadRequestFault("Expecting a unique User Id") if db_api.user_get(user.user_id) != None: raise fault.UserConflictFault( "An user with that id already exists") if db_api.user_get_email(user.email) != None: raise fault.EmailConflictFault( "Email already exists") duser = db_models.User() duser.id = user.user_id duser.password = user.password duser.email = user.email duser.enabled = user.enabled duser.tenant_id = tenant_id db_api.user_create(duser) return user
def set_user_password(self, admin_token, user_id, user, tenant_id): self.__validate_token(admin_token) dtenant = db_api.tenant_get(tenant_id) if dtenant == None: raise fault.UnauthorizedFault("Unauthorized") if not dtenant.enabled: raise fault.TenantDisabledFault("Your account has been disabled") duser = db_api.user_get(user_id) if not duser: raise fault.ItemNotFoundFault("The user could not be found") if not duser.enabled: raise fault.UserDisabledFault("User has been disabled") if not isinstance(user, users.User): raise fault.BadRequestFault("Expecting a User") duser = db_api.user_get(user_id) if duser == None: raise fault.ItemNotFoundFault("The user could not be found") values = {'password': user.password} db_api.user_update(user_id, values) return users.User_Update(user.password, None, None, None, None, None)
def get_tenant_baseURLs(self, admin_token, marker, limit, url, tenant_id): self.__validate_token(admin_token) if tenant_id == None: raise fault.BadRequestFault("Expecting a Tenant Id") if db_api.tenant_get(tenant_id) == None: raise fault.ItemNotFoundFault("The tenant not found") ts = [] dtenantBaseURLAssociations = \ db_api.baseurls_ref_get_by_tenant_get_page(tenant_id, marker, limit) for dtenantBaseURLAssociation in dtenantBaseURLAssociations: ts.append(baseURLs.BaseURLRef(dtenantBaseURLAssociation.id, url + '/baseURLs/' + \ str(dtenantBaseURLAssociation.baseURLs_id))) links = [] if ts.__len__(): prev, next = \ db_api.baseurls_ref_get_by_tenant_get_page_markers(tenant_id, marker, limit) if prev: links.append(atom.Link('prev', "%s?'marker=%s&limit=%s'" % (url, prev, limit))) if next: links.append(atom.Link('next', "%s?'marker=%s&limit=%s'" % (url, next, limit))) return baseURLs.BaseURLRefs(ts, links)
def get_tenant(self, admin_token, tenant_id): self.__validate_token(admin_token) dtenant = db_api.tenant_get(tenant_id) if not dtenant: raise fault.ItemNotFoundFault("The tenant could not be found") return tenants.Tenant(dtenant.id, dtenant.desc, dtenant.enabled)
def get_users_global_group(self, admin_token, groupId, marker, limit, url): self.__validate_token(admin_token) gtenant = self.__check_create_global_tenant() if gtenant.id == None: raise fault.BadRequestFault("Expecting a global Tenant") if db_api.tenant_get(gtenant.id) == None: raise fault.ItemNotFoundFault("The global tenant not found") if db_api.tenant_group_get(groupId, gtenant.id) == None: raise fault.ItemNotFoundFault( "A global tenant group with that id not found") ts = [] dgroupusers = db_api.users_tenant_group_get_page(groupId, marker, limit) for dgroupuser, dgroupuserassoc in dgroupusers: ts.append(tenants.User(dgroupuser.id, dgroupuser.email, dgroupuser.enabled)) links = [] if ts.__len__(): prev, next = db_api.users_tenant_group_get_page_markers(groupId, marker, limit) if prev: links.append(atom.Link('prev', "%s?'marker=%s&limit=%s'" % (url, prev, limit))) if next: links.append(atom.Link('next', "%s?'marker=%s&limit=%s'" % (url, next, limit))) return tenants.Users(ts, links)
def delete_user(self, admin_token, user_id): self.__validate_token(admin_token) duser = db_api.user_get(user_id) if not duser: raise fault.ItemNotFoundFault("The user could not be found") dtenant = db_api.tenant_get(duser.tenant_id) db_api.user_delete_tenant(user_id, dtenant.id) return None
def __check_create_global_tenant(self): dtenant = db_api.tenant_get('GlobalTenant') if dtenant is None: dtenant = db_models.Tenant() dtenant.id = 'GlobalTenant' dtenant.desc = 'GlobalTenant is Default tenant for global groups' dtenant.enabled = True db_api.tenant_create(dtenant) return dtenant
def delete_user(self, admin_token, user_id): self.__validate_token(admin_token) duser = db_api.user_get(user_id) if not duser: raise fault.ItemNotFoundFault("The user could not be found") dtenant = db_api.tenant_get(duser.tenant_id) if dtenant != None and not dtenant.enabled: raise fault.TenantDisabledFault("Your account has been disabled") db_api.user_delete_tenant(user_id, dtenant.id) return None
def get_tenant_group(self, admin_token, tenant_id, group_id): self.__validate_token(admin_token) dtenant = db_api.tenant_get(tenant_id) if dtenant == None: raise fault.ItemNotFoundFault("The tenant not found") dtenant = db_api.tenant_group_get(group_id, tenant_id) if not dtenant: raise fault.ItemNotFoundFault("The tenant group not found") return tenants.Group(dtenant.id, dtenant.desc, dtenant.tenant_id)
def update_tenant(self, admin_token, tenant_id, tenant): self.__validate_token(admin_token) if not isinstance(tenant, tenants.Tenant): raise fault.BadRequestFault("Expecting a Tenant") dtenant = db_api.tenant_get(tenant_id) if dtenant == None: raise fault.ItemNotFoundFault("The tenant cloud not be found") values = {'desc': tenant.description, 'enabled': tenant.enabled} db_api.tenant_update(tenant_id, values) return tenants.Tenant(dtenant.id, tenant.description, tenant.enabled)
def get_global_group(self, admin_token, group_id): self.__validate_token(admin_token) gtenant = self.__check_create_global_tenant() dtenant = db_api.tenant_get(gtenant.id) if dtenant == None: raise fault.ItemNotFoundFault("The Global tenant not found") dtenant = db_api.tenant_group_get(group_id, gtenant.id) if not dtenant: raise fault.ItemNotFoundFault("The Global tenant group not found") return tenants.GlobalGroup(dtenant.id, dtenant.desc)
def delete_tenant(self, admin_token, tenant_id): self.__validate_token(admin_token) dtenant = db_api.tenant_get(tenant_id) if dtenant == None: raise fault.ItemNotFoundFault("The tenant cloud not be found") if not db_api.tenant_is_empty(tenant_id): raise fault.ForbiddenFault("You may not delete a tenant that " "contains users or groups") db_api.tenant_delete(dtenant.id) return None
def fixture_create_user(self, **kwargs): """ Creates a user fixture. If the user's tenant ID is set, and the tenant does not exist in the database, the tenant is created. :params **kwargs: Attributes of the user to create """ values = kwargs.copy() tenant_id = values.get('tenant_id') if tenant_id: if not db_api.tenant_get(tenant_id): db_api.tenant_create({'id': tenant_id, 'enabled': True, 'desc': tenant_id}) user = db_api.user_create(values) logger.debug("Created user fixture %s", values['id']) return user
def delete_global_group(self, admin_token, group_id): self.__validate_token(admin_token) gtenant = self.__check_create_global_tenant() dtenant = db_api.tenant_get(gtenant.id) if dtenant == None: raise fault.ItemNotFoundFault("The global tenant not found") dtenant = db_api.tenant_group_get(group_id, dtenant.id) if not dtenant: raise fault.ItemNotFoundFault("The global tenant group not found") if not db_api.tenant_group_is_empty(group_id): raise fault.ForbiddenFault("You may not delete a group that " "contains users") db_api.tenant_group_delete(group_id, gtenant.id) return None
def delete_user(self, admin_token, user_id, tenant_id): self.__validate_token(admin_token) dtenant = db_api.tenant_get(tenant_id) if dtenant == None: raise fault.UnauthorizedFault("Unauthorized") if not dtenant.enabled: raise fault.TenantDisabledFault("Your account has been disabled") duser = db_api.user_get(user_id) if not duser: raise fault.ItemNotFoundFault("The user could not be found") duser = db_api.user_get_by_tenant(user_id, tenant_id) if not duser: raise fault.ItemNotFoundFault("The user could not be " "found under given tenant") db_api.user_delete_tenant(user_id, tenant_id) return None
def get_user(self, admin_token, user_id): self.__validate_token(admin_token) duser = db_api.user_get(user_id) if not duser: raise fault.ItemNotFoundFault("The user could not be found") if not duser.enabled: raise fault.UserDisabledFault("User has been disabled") dtenant = db_api.tenant_get(duser.tenant_id) ts = [] dusergroups = db_api.user_groups_get_all(user_id) for dusergroup, dusergroupAsso in dusergroups: ts.append(tenants.Group(dusergroup.id, dusergroup.tenant_id, None)) return users.User_Update(None, duser.id, duser.tenant_id, duser.email, duser.enabled, ts)
def create_tenant(self, admin_token, tenant): self.__validate_token(admin_token) if not isinstance(tenant, tenants.Tenant): raise fault.BadRequestFault("Expecting a Tenant") if tenant.tenant_id == None: raise fault.BadRequestFault("Expecting a unique Tenant Id") if db_api.tenant_get(tenant.tenant_id) != None: raise fault.TenantConflictFault( "A tenant with that id already exists") dtenant = db_models.Tenant() dtenant.id = tenant.tenant_id dtenant.desc = tenant.description dtenant.enabled = tenant.enabled db_api.tenant_create(dtenant) return tenant
def create_baseurl_ref_to_tenant(self, admin_token, tenant_id, baseurl, url): self.__validate_token(admin_token) if tenant_id == None: raise fault.BadRequestFault("Expecting a Tenant Id") if db_api.tenant_get(tenant_id) == None: raise fault.ItemNotFoundFault("The tenant not found") dbaseurl = db_api.baseurls_get(baseurl.id) if not dbaseurl: raise fault.ItemNotFoundFault("The base URL could not be found") dbaseurl_ref = db_models.TenantBaseURLAssociation() dbaseurl_ref.tenant_id = tenant_id dbaseurl_ref.baseURLs_id = baseurl.id dbaseurl_ref = db_api.baseurls_ref_add(dbaseurl_ref) baseurlRef = baseURLs.BaseURLRef(dbaseurl_ref.id, url + \ '/baseURLs/' + \ dbaseurl_ref.baseURLs_id) return baseurlRef
def update_global_group(self, admin_token, group_id, group): self.__validate_token(admin_token) gtenant = self.__check_create_global_tenant() if not isinstance(group, tenants.GlobalGroup): raise fault.BadRequestFault("Expecting a Group") dtenant = db_api.tenant_get(gtenant.id) if dtenant == None: raise fault.ItemNotFoundFault("The global tenant not found") dtenant = db_api.tenant_group_get(group_id, gtenant.id) if not dtenant: raise fault.ItemNotFoundFault("The Global tenant group not found") if group_id != group.group_id: raise fault.BadRequestFault("Wrong Data Provided," "Group id not matching") values = {'desc': group.description} db_api.tenant_group_update(group_id, gtenant.id, values) return tenants.GlobalGroup(group_id, group.description, gtenant.id)
def delete_user_tenant_group(self, admin_token, tenant, group, user): self.__validate_token(admin_token) if db_api.tenant_get(tenant) == None: raise fault.ItemNotFoundFault("The Tenant not found") if db_api.group_get(group) == None: raise fault.ItemNotFoundFault("The Group not found") duser = db_api.user_get(user) if duser == None: raise fault.ItemNotFoundFault("The User not found") if db_api.tenant_group_get(group, tenant) == None: raise fault.ItemNotFoundFault("A tenant group with" " that id not found") if db_api.get_user_by_group(user, group) == None: raise fault.ItemNotFoundFault("A user with that id " "in a group not found") db_api.user_tenant_group_delete(user, group) return None