from types import StringTypes from PLC.Faults import * from PLC.Parameter import Parameter from PLC.NovaTable import NovaObject, NovaTable class Role(NovaObject): """ Representation of a row in the roles table. To use, instantiate with a dict of values. """ fields = { 'id': Parameter(str, "Role identifier"), 'name': Parameter(str, "Role", max = 100), } 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: roles = self.api.client_shell.keystone.roles.findall() elif isinstance(role_filter, StringTypes): roles = [self.api.client_shell.keystone.roles.find(name=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 role_filter] else: raise PLCInvalidArgument, "Wrong role filter %r"%role_filter #self.append(NovaObject.object_to_dict(role, Role.fields)) for role in roles: role = Role(self.api, object=role) self.append(role)