implement DeleteRole()
authorTony Mack <tmack@paris.CS.Princeton.EDU>
Fri, 14 Sep 2012 19:01:43 +0000 (15:01 -0400)
committerTony Mack <tmack@paris.CS.Princeton.EDU>
Fri, 14 Sep 2012 19:01:43 +0000 (15:01 -0400)
PLC/Methods/DeleteRole.py
PLC/Methods/GetRoles.py
PLC/NovaObject.py
PLC/Roles.py

index aac0913..0f59888 100644 (file)
@@ -19,20 +19,17 @@ class DeleteRole(Method):
 
     accepts = [
         Auth(),
-        Mixed(Role.fields['role_id'],
-              Role.fields['name'])
+        Role.fields['id']
         ]
 
     returns = Parameter(int, '1 if successful')
 
 
-    def call(self, auth, role_id_or_name):
-        roles = Roles(self.api, [role_id_or_name])
+    def call(self, auth, role_id):
+        roles = Roles(self.api, role_id)
         if not roles:
             raise PLCInvalidArgument, "No such role"
         role = roles[0]
-
         role.delete()
-        self.event_objects = {'Role': [role['role_id']]}
 
         return 1
index d664fcd..769922b 100644 (file)
@@ -19,4 +19,5 @@ class GetRoles(Method):
     returns = [Role.fields]
 
     def call(self, auth):
-        return Roles(self.api) 
+        roles = Roles(self.api) 
+        return roles.dicts() 
index 8a20927..382d69f 100644 (file)
@@ -1,12 +1,19 @@
 class NovaObject:
 
-    # Set this to a dict of the valid fields of this object and their
-    # types. Not all fields (e.g., joined fields) may be updated via
-    # sync().
-    @staticmethod 
+    @staticmethod
     def object_to_dict(object, fields):
         d = {}
         for field in fields:
             if hasattr(object, field):
                 d[field] = getattr(object, field)
-        return d    
+        return d   
+
+
+class NovaObjects(list):
+    fields = {}
+
+    def dicts(self):
+        result = []
+        for obj in self:
+            result.append(NovaObject.object_to_dict(obj, self.fields))
+        return result      
index 365c66f..dde6bbf 100644 (file)
@@ -1,7 +1,7 @@
 from types import StringTypes
 from PLC.Faults import *
 from PLC.Parameter import Parameter
-from PLC.NovaObject import NovaObject
+from PLC.NovaObject import NovaObject, NovaObjects
 
 class Role:
     """
@@ -14,14 +14,15 @@ class Role:
         'name': Parameter(str, "Role", max = 100),
         }
 
-class Roles(list):
+class Roles(NovaObjects):
+    fields = Role.fields
 
     def __init__(self, api, role_filter={}):
         self.api  = api
         if not role_filter:
             roles = self.api.client_shell.keystone.roles.findall()
         elif isinstance(role_filter, StringTypes):
-            [roles] = self.api.client_shell.keystone.roles.find(id=role_filter) 
+            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]
@@ -29,4 +30,6 @@ class Roles(list):
             raise PLCInvalidArgument, "Wrong role filter %r"%role_filter
 
         for role in roles:
-            self.append(NovaObject.object_to_dict(role, Role.fields)) 
+            #self.append(NovaObject.object_to_dict(role, Role.fields)) 
+            self.append(role) 
+