65ab289c30adbd3185efaeee6d4bc8fec9cf7f87
[plcapi.git] / PLC / Roles.py
1 from types import StringTypes
2 from PLC.Faults import *
3 from PLC.Parameter import Parameter
4 from PLC.NovaTable import NovaObject, NovaTable
5
6 class Role(NovaObject):
7     """
8     Representation of a row in the roles table. To use,
9     instantiate with a dict of values.
10     """
11
12     fields = {
13         'id': Parameter(str, "Role identifier"),
14         'name': Parameter(str, "Role", max = 100),
15         }
16
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)
21           
22
23 class Roles(NovaTable):
24     def __init__(self, api, role_filter={}):
25         self.api  = api
26         if not 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(id=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]
33         else:
34             raise PLCInvalidArgument, "Wrong role filter %r"%role_filter
35
36             #self.append(NovaObject.object_to_dict(role, Role.fields)) 
37         for role in roles:
38             role = Role(self.api, object=role)
39             self.append(role)
40
41     
42