Fix API/CLI response result for add users to group

Change-Id: Ia28fd5b3d6b05b3666a61cb8b1e93664c6cccc93
This commit is contained in:
Chi Lo 2019-05-04 12:30:06 -07:00
parent 3b49b96503
commit 97fc5779ae
3 changed files with 35 additions and 67 deletions

View File

@ -5,7 +5,8 @@ from wsmeext.pecan import wsexpose
from orm.common.orm_common.utils import api_error_utils as err_utils from orm.common.orm_common.utils import api_error_utils as err_utils
from orm.common.orm_common.utils import utils from orm.common.orm_common.utils import utils
from orm.services.customer_manager.cms_rest.logger import get_logger from orm.services.customer_manager.cms_rest.logger import get_logger
from orm.services.customer_manager.cms_rest.logic.error_base import ErrorStatus, NotFound from orm.services.customer_manager.cms_rest.logic.error_base import \
ErrorStatus, NotFound
from orm.services.customer_manager.cms_rest.logic.group_logic import GroupLogic from orm.services.customer_manager.cms_rest.logic.group_logic import GroupLogic
from orm.services.customer_manager.cms_rest.model.GroupModels import \ from orm.services.customer_manager.cms_rest.model.GroupModels import \
RegionUser, RegionUserResultWrapper RegionUser, RegionUserResultWrapper
@ -18,9 +19,10 @@ class RegionUserController(rest.RestController):
@wsexpose([str], str, str, str, rest_content_types='json') @wsexpose([str], str, str, str, rest_content_types='json')
def get(self, group_id, region_id, user_id): def get(self, group_id, region_id, user_id):
return ["This is groups region user controller for group id: " + group_id] return ["This is groups region user controller for group id: " +
group_id]
@wsexpose([RegionUserResultWrapper], str, str, body=[RegionUser], @wsexpose(RegionUserResultWrapper, str, str, body=[RegionUser],
rest_content_types='json', status_code=200) rest_content_types='json', status_code=200)
def post(self, group_id, region_id, users): def post(self, group_id, region_id, users):
LOG.info("RegionUserController - Add users to group id {0} " LOG.info("RegionUserController - Add users to group id {0} "

View File

@ -126,43 +126,53 @@ class Groups(Base, CMSBaseModel):
domain_name = self.domain_name domain_name = self.domain_name
description = self.description description = self.description
enabled = True if self.enabled else False enabled = True if self.enabled else False
regions = [group_region.to_wsme() for group_region in self.group_regions if regions = [group_region.to_wsme() for group_region in
group_region.region_id != -1] self.group_regions if group_region.region_id != -1]
roles = []
customer_roles = [customer_role.get_role_name() for customer_role in customer_roles = [customer_role.get_role_name() for customer_role in
self.groups_customer_roles] self.groups_customer_roles]
domain_roles = [domain_role.get_role_name() for domain_role in domain_roles = [domain_role.get_role_name() for domain_role in
self.groups_domain_roles] self.groups_domain_roles]
roles = sorted(set(customer_roles + domain_roles)) roles = sorted(set(customer_roles + domain_roles))
# users = [groups_user.to_wsme() for groups_user in self.groups_users if
# groups_user.region_id == -1] users = []
for user in self.groups_users:
if user.region_id == -1:
users.append(GroupWsmeModels.User(id=[user.user.name],
domain=user.domain_name))
result = GroupWsmeModels.Group(description=description, result = GroupWsmeModels.Group(description=description,
name=name, name=name,
uuid=uuid, uuid=uuid,
regions=regions, regions=regions,
roles=list(roles), roles=list(roles),
users=users,
enabled=enabled, enabled=enabled,
domain=domain_name) domain=domain_name)
return result return result
''' '''
' GroupsRegion is a DataObject and contains all the fields defined in GroupsRegion ' GroupsRegion is a DataObject and contains all the fields defined in
' table record. Defined as SqlAlchemy model map to a table ' in GroupsRegion table record. Defined as SqlAlchemy model map to a table
''' '''
class GroupsRegion(Base, CMSBaseModel): class GroupsRegion(Base, CMSBaseModel):
__tablename__ = "groups_region" __tablename__ = "groups_region"
group_id = Column(String(64), ForeignKey('groups.uuid'), primary_key=True, nullable=False, index=True) group_id = Column(String(64), ForeignKey('groups.uuid'),
region_id = Column(Integer, ForeignKey('cms_region.id'), primary_key=True, nullable=False, index=True) primary_key=True, nullable=False, index=True)
region_id = Column(Integer, ForeignKey('cms_region.id'),
primary_key=True, nullable=False, index=True)
group_region_users = relationship("GroupsUser", group_region_users = relationship(
uselist=True, "GroupsUser",
order_by="GroupsUser.user_id", uselist=True,
primaryjoin="and_(GroupsRegion.group_id==GroupsUser.group_id," order_by="GroupsUser.domain_name",
"GroupsRegion.region_id==GroupsUser.region_id)") primaryjoin="and_(GroupsRegion.group_id==GroupsUser.group_id,"
"GroupsRegion.region_id==GroupsUser.region_id)")
region = relationship("Region", viewonly=True) region = relationship("Region", viewonly=True)
@ -173,7 +183,8 @@ class GroupsRegion(Base, CMSBaseModel):
return dict( return dict(
group_id=self.group_id, group_id=self.group_id,
region_id=self.region_id, region_id=self.region_id,
group_region_users=[groups_user.__json__() for groups_user in self.group_region_users] group_region_users=[groups_user.__json__() for groups_user in
self.group_region_users]
) )
def get_proxy_dict(self): def get_proxy_dict(self):
@ -187,21 +198,12 @@ class GroupsRegion(Base, CMSBaseModel):
def to_wsme(self): def to_wsme(self):
name = self.region.name name = self.region.name
type = self.region.type type = self.region.type
# users = [groups_user.to_wsme() for groups_user in self.group_region_users if
# groups_user.region_id > -1]
users = [] users = []
user = None
for user_role in self.group_region_users: for user in self.group_region_users:
if user and user.id != user_role.user.name: if user.region_id != -1:
users.append(user) users.append(GroupWsmeModels.User(id=[user.user.name],
user = GroupWsmeModels.User(id=[user_role.user.name], domain=user_role.domain_name) domain=user.domain_name))
elif user is None:
user = GroupWsmeModels.User(id=[user_role.user.name], domain=user_role.domain_name)
else:
user.role.append(user_role.user.name)
if user:
users.append(user)
region = GroupWsmeModels.Region(name=name, region = GroupWsmeModels.Region(name=name,
type=type, type=type,

View File

@ -43,23 +43,6 @@ class User(Model):
self.domain = domain self.domain = domain
class UserUsers(Model):
users = wsme.wsattr([str], mandatory=True)
def __init__(self, user=""):
self.users = users
def validate_model(self):
# check no duplicate users in dictonary list
# if len(set(self.users)) != len(self.users) and
# len(set(self.domain)) != len(self.users):
# raise ErrorStatus(400, "Duplicate regions found")
pass
# Remove the below return once implementation is done
return None
class RegionUser(Model): class RegionUser(Model):
id = wsme.wsattr([str]) id = wsme.wsattr([str])
domain = wsme.wsattr(wsme.types.text, mandatory=True) domain = wsme.wsattr(wsme.types.text, mandatory=True)
@ -69,25 +52,6 @@ class RegionUser(Model):
self.domain = domain self.domain = domain
# class UserAssignment(Model):
# userUsers = wsme.wsattr([UserUsers], mandatory=True)
# userRegions = wsme.wsattr([UserRegions], mandatory=True)
#
# def __init__(self, status="", userUsers=None, userRegions=""):
# self.userUsers = userUsers
# self.userRegions = userRegions
#
# def validate_model(self):
#
# if not userUsers and not userRegions:
# raise ErrorStatus(400, "Either regions or users"
# "is required. ")
# check no duplicate users in dictonary list
# for userRegion in userRegions:
# if dups found issue 400 duplicate region error
class Region(Model): class Region(Model):
"""network model the region """network model the region
""" """