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
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
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:
"""
'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]
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)
+