def check_access(self, role, methodname, obj, attr): if not role: raise RoleError('No access by null role') if role == 'owner': return if methodname != '__delattr__' and self.user_attribute(obj, attr): return raise RoleError("No %s access to '%s' by role '%s'" % (methodname, attr, role))
def release(self, server): """ Shut-down :class:`ObjServer` `server`. server: :class:`ObjServer` Server to be shut down. """ try: address = server._token.address except AttributeError: address = 'not-a-proxy' self._logger.debug('release %r', server) self._logger.debug(' at %r', address) try: manager, root_dir, owner = self._managers[server] except KeyError: # Not identical to any of our proxies. # Could still be a reference to the same remote object. try: server_host = server.host server_pid = server.pid except Exception: self._logger.error("release: can't identify server at %r", address) raise ValueError("can't identify server at %r" % (address, )) for key in self._managers.keys(): if key.host == server_host and key.pid == server_pid: manager, root_dir, owner = self._managers[key] server = key break else: self._logger.error('release: server %r not found', server) for key in self._managers.keys(): self._logger.debug(' %r', key) self._logger.debug(' at %r', key._token.address) raise ValueError('server %r not found' % server) if get_credentials().user != owner.user: raise RoleError('only the owner can release') manager.shutdown() server._close.cancel() del self._managers[server] keep_dirs = int(os.environ.get('OPENMDAO_KEEPDIRS', '0')) if not keep_dirs and os.path.exists(root_dir): shutil.rmtree(root_dir, onerror=onerror)
def check_access(self, role, methodname, obj, attr): """ Raise :class:`RoleError` if invalid access. """ if attr in ('command', 'get_access_controller') and \ methodname == '__setattr__': raise RoleError('No %s access to %r' % (methodname, attr))
def set(self, path, value, index=None, srcname=None, force=False): if self.protector.user_attribute(self, path): return super(ProtectedBox, self).set(path, value, index, srcname, force) raise RoleError("No set access to '%s' by role '%s'" % (attr, role))
def get_wrapped_attr(self, name): if self.protector.user_attribute(self, name): return super(ProtectedBox, self).get_wrapped_attr(name) raise RoleError("No get_wrapped_attr access to '%s' by role '%s'" % (attr, role))
def get_dyn_trait(self, name, iotype=None): if self.protector.user_attribute(self, name): return super(ProtectedBox, self).get_dyn_trait(name, iotype) raise RoleError("No get access to '%s' by role '%s'" % (attr, role))
def get(self, path, index=None): if self.protector.user_attribute(self, path): return super(ProtectedBox, self).get(path, index) raise RoleError("No get access to '%s' by role '%s'" % (attr, role))
def set(self, path, value, index=None, src=None, force=False): if self.protector.user_attribute(self, path): return super(ProtectedBox, self).set(path, value, index, src, force) raise RoleError('No set access to %r' % path)
def get_attr(self, name, index=None): if self.protector.user_attribute(self, name): return super(ProtectedBox, self).get_attr(name) raise RoleError('No get_attr access to %r' % name)
def get_dyn_trait(self, name, iotype=None, trait=None): if self.protector.user_attribute(self, name): return super(ProtectedBox, self).get_dyn_trait(name, iotype, trait) raise RoleError('No get_dyn_trait access to %r' % name)
def get(self, path, index=None): if self.protector.user_attribute(self, path): return super(ProtectedBox, self).get(path, index) raise RoleError('No get access to %r' % path)
def check_access(self, role, methodname, obj, attr): if attr in ('command', 'get_access_controller') and \ methodname == '__setattr__': raise RoleError('No %s access to %r' % (methodname, attr))
def set(self, path, value): if self.protector.user_attribute(self, path): return super(ProtectedBox, self).set(path, value) raise RoleError('No set access to %r' % path)