def post(self, cmd): params = { k: v[0] for k, v in self.request.arguments.iteritems() } uid = manager.run(cmd, params=params) self.set_status(302) self.add_header('Location', self.reverse_url('status', uid))
def post(self): cmd = self.get_argument('command') success_codes = [int(c) for c in self.get_arguments('success_code')] params = dict((k, v[0]) for k, v in self.request.arguments.iteritems() if k not in ('success_code',)) env = {} for header, value in self.request.headers.iteritems(): if header.upper().startswith('ENV_'): env_var_name = header.upper()[len('ENV_'):] env[env_var_name] = value uid = manager.run(cmd, params, env=env, success_codes=success_codes) self.set_status(302) self.add_header('Location', self.reverse_url('status', uid))
def post(self): cmd = self.get_argument('command') success_codes = [int(c) for c in self.get_arguments('success_code')] params = dict((k, v[0]) for k, v in self.request.arguments.iteritems() if k not in ('success_code', )) env = {} for header, value in self.request.headers.iteritems(): if header.upper().startswith('ENV_'): env_var_name = header.upper()[len('ENV_'):] env[env_var_name] = value uid = manager.run(cmd, params, env=env, success_codes=success_codes) self.set_status(302) self.add_header('Location', self.reverse_url('status', uid))
def post(self): params = { k: v[0] for k, v in self.request.arguments.iteritems() } log_extra = { 'task_id': params.get('task_id'), 'job_id': params.get('job_id'), } if config['common'].get('base_path') is None: cmd_logger.error('base path is not set, create group cannot be performed', extra=log_extra) self.set_status(500) raise RuntimeError('group creation is not allowed') files = {} for filename, http_files in self.request.files.iteritems(): norm_filename = os.path.normpath(filename) if norm_filename.startswith('..') or norm_filename.startswith('/'): cmd_logger.error( 'Cannot create file {filename}, ' 'normalized path {norm_filename} is not allowed'.format( filename=filename, norm_filename=norm_filename, ), extra=log_extra, ) self.set_status(403) raise RuntimeError( 'File {filename} is forbidden, path should be relative ' 'to group base directory'.format(filename=filename) ) http_file = http_files[0] files[norm_filename] = http_file.body params['group_base_path_root_dir'] = os.path.normpath(params['group_base_path_root_dir']) if not params['group_base_path_root_dir'].startswith(config['common']['base_path']): self.set_status(403) raise RuntimeError( 'Group base path {path} is not under common base path'.format( path=params['group_base_path_root_dir'], ) ) params['files'] = files uid = manager.run('create_group', params=params) self.set_status(302) self.add_header('Location', self.reverse_url('status', uid))
def post(self): params = {k: v[0] for k, v in self.request.arguments.iteritems()} log_extra = { 'task_id': params.get('task_id'), 'job_id': params.get('job_id'), } if config['common'].get('base_path') is None: cmd_logger.error( 'base path is not set, create group cannot be performed', extra=log_extra) self.set_status(500) raise RuntimeError('group creation is not allowed') files = {} for filename, http_files in self.request.files.iteritems(): norm_filename = os.path.normpath(filename) if norm_filename.startswith('..') or norm_filename.startswith('/'): cmd_logger.error( 'Cannot create file {filename}, ' 'normalized path {norm_filename} is not allowed'.format( filename=filename, norm_filename=norm_filename, ), extra=log_extra, ) self.set_status(403) raise RuntimeError( 'File {filename} is forbidden, path should be relative ' 'to group base directory'.format(filename=filename)) http_file = http_files[0] files[norm_filename] = http_file.body params['group_base_path_root_dir'] = os.path.normpath( params['group_base_path_root_dir']) if not params['group_base_path_root_dir'].startswith( config['common']['base_path']): self.set_status(403) raise RuntimeError( 'Group base path {path} is not under common base path'.format( path=params['group_base_path_root_dir'], )) params['files'] = files uid = manager.run('create_group', params=params) self.set_status(302) self.add_header('Location', self.reverse_url('status', uid))
def post(self): if config['common'].get('base_path') is None: logger.error('base path is not set, remove group cannot be performed') self.set_status(500) raise RuntimeError('group creation is not allowed') params = { k: v[0] for k, v in self.request.arguments.iteritems() } params['group_base_path'] = os.path.normpath(params['group_base_path']) if not params['group_base_path'].startswith(config['common']['base_path']): self.set_status(403) raise RuntimeError( 'Group path {path} is not under common base path'.format( path=params['group_base_path'], ) ) uid = manager.run('remove_group', params=params) self.set_status(302) self.add_header('Location', self.reverse_url('status', uid))
def post(self): params = {k: v[0] for k, v in self.request.arguments.iteritems()} if config['common'].get('base_path') is None: cmd_logger.error( 'base path is not set, remove group cannot be performed', extra={ 'task_id': params.get('task_id'), 'job_id': params.get('job_id'), }) self.set_status(500) raise RuntimeError('group creation is not allowed') params['group_base_path'] = os.path.normpath(params['group_base_path']) if not params['group_base_path'].startswith( config['common']['base_path']): self.set_status(403) raise RuntimeError( 'Group path {path} is not under common base path'.format( path=params['group_base_path'], )) uid = manager.run('remove_group', params=params) self.set_status(302) self.add_header('Location', self.reverse_url('status', uid))
def post(self): cmd = self.get_argument('command') params = dict((k, v[0]) for k, v in self.request.arguments.iteritems()) uid = manager.run(cmd, params) self.set_status(302) self.add_header('Location', self.reverse_url('status', uid))
def post(self, cmd): params = {k: v[0] for k, v in self.request.arguments.iteritems()} uid = manager.run(cmd, params=params) self.set_status(302) self.add_header('Location', self.reverse_url('status', uid))