setup nova connection in __init__
[plcapi.git] / PLC / Roles.py
index 92cad65..65ab289 100644 (file)
@@ -1,9 +1,9 @@
 from types import StringTypes
 from PLC.Faults import *
 from PLC.Parameter import Parameter
-from PLC.NovaObject import NovaObject, NovaObjects
+from PLC.NovaTable import NovaObject, NovaTable
 
-class Role:
+class Role(NovaObject):
     """
     Representation of a row in the roles table. To use,
     instantiate with a dict of values.
@@ -14,9 +14,13 @@ class Role:
         'name': Parameter(str, "Role", max = 100),
         }
 
-class Roles(NovaObjects):
-    fields = Role.fields
+    def sync(self, insert=False, validate=True):
+        NovaObject.sync(self, insert, validate) 
+        if insert == True or id not in self:
+            self.object = self.api.client_shell.keystone.roles.create(**self)
+          
 
+class Roles(NovaTable):
     def __init__(self, api, role_filter={}):
         self.api  = api
         if not role_filter:
@@ -25,10 +29,14 @@ class Roles(NovaObjects):
             roles = [self.api.client_shell.keystone.roles.find(id=role_filter)] 
         elif isinstance(role_filter, (list, tuple, set)):
             roles = self.api.client_shell.keystone.roles.findall()
-            roles = [role for role in roles if role.id in rile_filter]
+            roles = [role for role in roles if role.id in role_filter]
         else:
             raise PLCInvalidArgument, "Wrong role filter %r"%role_filter
 
             #self.append(NovaObject.object_to_dict(role, Role.fields)) 
-        self.extend(roles) 
+        for role in roles:
+            role = Role(self.api, object=role)
+            self.append(role)
+
+