def push_status(self, status): sender = get_sender() job = self.context.job_by_pid(sender.credentials['pid']) if not job: raise RpcException(errno.EINVAL, 'Unknown job') job.push_status(status)
def checkin(self): sender = get_sender() job = self.context.job_by_pid(sender.credentials['pid']) if not job: raise RpcException(errno.EINVAL, 'Unknown job') job.checkin()
def privileged(uid): """ Warning: that function shall be used only within RPC method context """ sender = get_sender() if not sender: logging.warning('privileged(): sender unknown, assuming no') return False return sender.credentials and sender.credentials['uid'] in (0, uid)
def push(self, entry): creds = get_sender().credentials if creds: entry['pid'] = creds['pid'] entry['uid'] = creds['uid'] entry['gid'] = creds['gid'] if 'identifier' not in entry: try: proc = kinfo_getproc(entry['pid']) entry['identifier'] = proc.command except OSError: entry['identifier'] = 'unknown' entry['source'] = 'rpc' self.context.push(entry)
def change_password(self, user_name, password): self.logger.debug('Change password request for user {0}'.format(user_name)) if not self.getpwnam(user_name): raise RpcException(errno.ENOENT, 'User {0} not found'.format(user_name)) # Now user is cached (if exists) item = self.context.users_cache.get(name=user_name) sender = get_sender() if not sender.credentials: raise RpcException(errno.EPERM, 'Permission denied') if sender.credentials['uid'] not in (item.value['uid'], 0): raise RpcException(errno.EPERM, 'Permission denied') item.directory.instance.change_password(user_name, password) self.context.users_cache.flush(item.uuid)