from PLC.Faults import *
from PLC.Debug import log
from PLC.Parameter import Parameter, Mixed
-from PLC.Table import Row, Table
+from PLC.Messages import Message, Messages
from PLC.Roles import Role, Roles
from PLC.Keys import Key, Keys
-from PLC.Messages import Message, Messages
from PLC.Storage.AlchemyObject import AlchemyObj
class Person(AlchemyObj):
return False
- #add_role = Row.add_object(Role, 'person_role')
- #remove_role = Row.remove_object(Role, 'person_role')
+ def add_role(self, role_name, login_base=None):
+ user = self.api.client_shell.keystone.users.find(id=self['keystone_id'])
+ roles = Roles(self.api, {'name': role_name})
+ if not roles:
+ raise PLCInvalidArgument, "Role %s not found" % role_name
+ role = roles[0]
+
+ if login_base:
+ tenant = self.api.client_shell.keystone.tenants.find(name=login_base)
+ else:
+ tenant = self.api.client_shell.keystone.tenants.find(id=self['tenantId'])
+
+ self.api.client_shell.keystone.roles.add_user_role(user, role, tenant)
+
+ def remove_role(self, role_name, login_base=None):
+ user = self.api.client_shell.keystone.users.find(id=self['keystone_id'])
+ roles = Roles(self.api, {'name': role_name})
+ if not roles:
+ raise PLCInvalidArgument, "Role %s not found" % role_name
+ role = roles[0]
+
+ if login_base:
+ tenant = self.api.client_shell.keystone.tenants.find(name=login_base)
+ else:
+ tenant = self.api.client_shell.keystone.tenants.find(id=self['tenantId'])
+
+ self.api.client_shell.keystone.roles.remove_user_role(user, role, tenant)
+
#add_key = Row.add_object(Key, 'person_key')
#remove_key = Row.remove_object(Key, 'person_key')
AlchemyObj.delete(self, dict(self))
- def get_roles(self):
- roles = []
- if self.tenant:
- roles = self.api.client_shell.keystone.roles.roles_for_user(self.object, self.tenant)
- return [role.name for role in roles]
-
def get_tenants_ids(self):
tenants = []
if self.tenantId:
#persons = self.api.client_shell.keystone.users.findall()
persons = Person().select()
elif isinstance(person_filter, (list, tuple, set)):
- #persons = self.api.client_shell.keystone.users.findall()
- #persons = [person for person in persons if person.id in person_filter]
ints = filter(lambda x: isinstance(x, (int, long)), person_filter)
strs = filter(lambda x: isinstance(x, StringTypes), person_filter)
person_filter = {'person_id': ints, 'email': strs}