class SimpleAdminRPCWrapper(object): def __init__(self, hostname, admin_username, admin_password, ssl, **kwargs): """ We don't want to cause an unnecessary RPC requests if the object access does not actually require RPC. We defer this by using SimpleLazyObject. """ member = PortalMember(**kwargs) self.rpc = SimpleLazyObject( lambda: user.User( hostname, user=admin_username, password=admin_password, api_type='admin', member=member, ssl=ssl, ) ) def create(self): return self.rpc.create() def delete(self): try: return self.rpc.delete() except user.DoesNotExist as e: raise ObjectDoesNotExist(str(e)) def update(self, **kwargs): return self.rpc.update(**kwargs)