1 from types import StringTypes
2 from PLC.Faults import *
3 from PLC.Parameter import Parameter
4 from PLC.NovaTable import NovaObject, NovaTable
6 class Role(NovaObject):
8 Representation of a row in the roles table. To use,
9 instantiate with a dict of values.
13 'id': Parameter(str, "Role identifier"),
14 'name': Parameter(str, "Role", max = 100),
17 def sync(self, insert=False, validate=True):
18 NovaObject.sync(self, insert, validate)
19 if insert == True or id not in self:
20 self.object = self.api.client_shell.keystone.roles.create(**self)
23 class Roles(NovaTable):
24 def __init__(self, api, role_filter={}):
27 roles = self.api.client_shell.keystone.roles.findall()
28 elif isinstance(role_filter, StringTypes):
29 roles = [self.api.client_shell.keystone.roles.find(name=role_filter)]
30 elif isinstance(role_filter, (list, tuple, set)):
31 roles = self.api.client_shell.keystone.roles.findall()
32 roles = [role for role in roles if role.id in role_filter]
34 raise PLCInvalidArgument, "Wrong role filter %r"%role_filter
36 #self.append(NovaObject.object_to_dict(role, Role.fields))
38 role = Role(self.api, object=role)