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)
示例#10
0
 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)
示例#11
0
 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)