From: Tony Mack Date: Fri, 14 Sep 2012 18:26:37 +0000 (-0400) Subject: implement AddRole() X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=40e3a2fbfad8c47953dc1e41cc4f271d48cb2c39;p=plcapi.git implement AddRole() --- diff --git a/PLC/Methods/AddRole.py b/PLC/Methods/AddRole.py index d42858ff..d8b65275 100644 --- a/PLC/Methods/AddRole.py +++ b/PLC/Methods/AddRole.py @@ -15,18 +15,12 @@ class AddRole(Method): accepts = [ Auth(), - Role.fields['role_id'], Role.fields['name'] ] returns = Parameter(int, '1 if successful') - def call(self, auth, role_id, name): - role = Role(self.api) - role['role_id'] = role_id - role['name'] = name - role.sync(insert = True) - self.event_objects = {'Role': [role['role_id']]} - + def call(self, auth, name): + self.api.client_shell.keystone.roles.create(name=name) return 1 diff --git a/PLC/Methods/GetRoles.py b/PLC/Methods/GetRoles.py index 78432d9d..d664fcdc 100644 --- a/PLC/Methods/GetRoles.py +++ b/PLC/Methods/GetRoles.py @@ -1,7 +1,7 @@ from PLC.Faults import * from PLC.Method import Method from PLC.Parameter import Parameter, Mixed -from PLC.Roles import Role +from PLC.Roles import Role, Roles from PLC.NovaObject import NovaObject from PLC.Auth import Auth @@ -19,6 +19,4 @@ class GetRoles(Method): returns = [Role.fields] def call(self, auth): - roles = self.api.client_shell.keystone.roles.findall() - result = [NovaObject.object_to_dict(role, Role.fields) for role in roles] - return result + return Roles(self.api) diff --git a/PLC/Roles.py b/PLC/Roles.py index 869eb96d..365c66f5 100644 --- a/PLC/Roles.py +++ b/PLC/Roles.py @@ -1,5 +1,7 @@ - +from types import StringTypes +from PLC.Faults import * from PLC.Parameter import Parameter +from PLC.NovaObject import NovaObject class Role: """ @@ -8,9 +10,23 @@ class Role: """ fields = { - 'role_id': Parameter(str, "Role identifier"), + 'id': Parameter(str, "Role identifier"), 'name': Parameter(str, "Role", max = 100), } class Roles(list): - pass + + 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) + 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] + else: + raise PLCInvalidArgument, "Wrong role filter %r"%role_filter + + for role in roles: + self.append(NovaObject.object_to_dict(role, Role.fields))