def dsub_start_job(command, job_name=None, envs=None, labels=None, inputs=None, inputs_recursive=None, outputs=None, outputs_recursive=None, wait=False): envs = envs or {} labels = labels or {} inputs = inputs or {} inputs_recursive = inputs_recursive or {} outputs = outputs or {} outputs_recursive = outputs_recursive or {} labels['test-token'] = test_setup.TEST_TOKEN labels['test-name'] = test_setup.TEST_NAME logging = param_util.build_logging_param(test.LOGGING) job_resources = job_model.Resources(image='ubuntu', logging=logging, zones=['us-central1-*']) env_data = {job_model.EnvParam(k, v) for (k, v) in envs.items()} label_data = {job_model.LabelParam(k, v) for (k, v) in labels.items()} input_file_param_util = param_util.InputFileParamUtil('input') input_data = set() for (recursive, items) in ((False, inputs.items()), (True, inputs_recursive.items())): for (name, value) in items: name = input_file_param_util.get_variable_name(name) input_data.add( input_file_param_util.make_param(name, value, recursive)) output_file_param_util = param_util.OutputFileParamUtil('output') output_data = set() for (recursive, items) in ((False, outputs.items()), (True, outputs_recursive.items())): for (name, value) in items: name = output_file_param_util.get_variable_name(name) output_data.add( output_file_param_util.make_param(name, value, recursive)) job_params = { 'envs': env_data, 'inputs': input_data, 'outputs': output_data, 'labels': label_data, } task_descriptors = [ job_model.TaskDescriptor({'task-id': None}, { 'envs': set(), 'labels': set(), 'inputs': set(), 'outputs': set(), }, job_model.Resources()) ] return dsub.run(get_dsub_provider(), job_resources, job_params, task_descriptors, name=job_name, command=command, wait=wait, disable_warning=True)
def start_job(self, command, name=None, envs={}, labels={}, inputs={}, inputs_recursive={}, outputs={}, outputs_recursive={}, task_count=1, wait=False): logging = param_util.build_logging_param(self.log_path) resources = job_model.Resources(image=DOCKER_IMAGE, logging=logging, zones=['us-central1*']) env_data = {param_util.EnvParam(k, v) for (k, v) in envs.items()} label_data = { job_model.LabelParam(k, v) for (k, v) in labels.items() } # This is mostly an extraction dsubs argument parsing here: # https://github.com/googlegenomics/dsub/blob/master/dsub/lib/param_util.py#L720 # Reworked it to handle dictionaries rather than a list of items # of the form 'key=val' input_file_param_util = param_util.InputFileParamUtil('input') input_data = set() for (recursive, items) in ((False, inputs.items()), (True, inputs_recursive.items())): for (name, value) in items: name = input_file_param_util.get_variable_name(name) input_data.add( input_file_param_util.make_param( name, value, recursive)) output_file_param_util = param_util.OutputFileParamUtil('output') output_data = set() for (recursive, items) in ((False, outputs.items()), (True, outputs_recursive.items())): for (name, value) in items: name = output_file_param_util.get_variable_name(name) output_data.add( output_file_param_util.make_param( name, value, recursive)) job_params = { 'envs': env_data, 'inputs': input_data, 'outputs': output_data, 'labels': label_data, } if task_count > 1: task_descriptors = [ job_model.TaskDescriptor({'task-id': i + 1}, { 'envs': env_data, 'inputs': input_data, 'outputs': output_data, 'labels': label_data, }, job_model.Resources()) for i in xrange(task_count) ] all_task_data = [{ 'task-id': i + 1 } for i in xrange(task_count)] else: task_descriptors = [ job_model.TaskDescriptor({'task-id': None}, { 'labels': set(), 'envs': set(), 'inputs': set(), 'outputs': set() }, job_model.Resources()) ] return execute_redirect_stdout( lambda: dsub.run(self.provider, resources, job_params, task_descriptors, name=name, command=command, wait=wait, disable_warning=True))