示例#1
0
def create_task(client,
                job_id,
                json_file=None,
                task_id=None,
                command_line=None,
                resource_files=None,
                environment_settings=None,
                affinity_info=None,
                max_wall_clock_time=None,
                retention_time=None,
                max_task_retry_count=None,
                application_package_references=None):
    def action():
        if task is not None:
            client.add(job_id=job_id, task=task)
            return client.get(job_id=job_id, task_id=task.id)

        submitted_tasks = []
        for i in range(0, len(tasks), MAX_TASKS_PER_REQUEST):
            submission = client.add_collection(
                job_id=job_id, value=tasks[i:i + MAX_TASKS_PER_REQUEST])
            submitted_tasks.extend(submission.value)  # pylint: disable=no-member
        return submitted_tasks

    task = None
    tasks = []
    if json_file:
        with open(json_file) as f:
            json_obj = json.load(f)
            try:
                task = client._deserialize(  # pylint: disable=protected-access
                    'TaskAddParameter', json_obj)
            except DeserializationError:
                try:
                    tasks = client._deserialize(  # pylint: disable=protected-access
                        '[TaskAddParameter]', json_obj)
                except DeserializationError:
                    raise ValueError(
                        "JSON file '{}' is not formatted correctly.".format(
                            json_file))
    else:
        if command_line is None or task_id is None:
            raise ValueError(
                "Missing required arguments.\nEither --json-file, "
                "or both --task-id and --command-line must be specified.")
        task = TaskAddParameter(
            task_id,
            command_line,
            resource_files=resource_files,
            environment_settings=environment_settings,
            affinity_info=affinity_info,
            application_package_references=application_package_references)
        if max_wall_clock_time is not None or retention_time is not None \
                or max_task_retry_count is not None:
            task.constraints = TaskConstraints(
                max_wall_clock_time=max_wall_clock_time,
                retention_time=retention_time,
                max_task_retry_count=max_task_retry_count)
    return _handle_batch_exception(action)
示例#2
0
def create_task(client,
                job_id,
                json_file=None,
                task_id=None,
                command_line=None,
                resource_files=None,
                environment_settings=None,
                affinity_id=None,
                max_wall_clock_time=None,
                retention_time=None,
                max_task_retry_count=None,
                application_package_references=None):
    task = None
    tasks = []
    if json_file:
        json_obj = get_file_json(json_file)
        try:
            task = TaskAddParameter.from_dict(json_obj)
        except DeserializationError:
            tasks = []
            try:
                for json_task in json_obj:
                    tasks.append(TaskAddParameter.from_dict(json_task))
            except (DeserializationError, TypeError):
                raise ValueError(
                    "JSON file '{}' is not formatted correctly.".format(
                        json_file))
    else:
        if command_line is None or task_id is None:
            raise ValueError(
                "Missing required arguments.\nEither --json-file, "
                "or both --task-id and --command-line must be specified.")
        task = TaskAddParameter(
            task_id,
            command_line,
            resource_files=resource_files,
            environment_settings=environment_settings,
            affinity_info=AffinityInformation(affinity_id)
            if affinity_id else None,
            application_package_references=application_package_references)
        if max_wall_clock_time is not None or retention_time is not None \
                or max_task_retry_count is not None:
            task.constraints = TaskConstraints(
                max_wall_clock_time=max_wall_clock_time,
                retention_time=retention_time,
                max_task_retry_count=max_task_retry_count)
    if task is not None:
        client.add(job_id=job_id, task=task)
        return client.get(job_id=job_id, task_id=task.id)

    submitted_tasks = []
    for i in range(0, len(tasks), MAX_TASKS_PER_REQUEST):
        submission = client.add_collection(job_id=job_id,
                                           value=tasks[i:i +
                                                       MAX_TASKS_PER_REQUEST])
        submitted_tasks.extend(submission.value)  # pylint: disable=no-member
    return submitted_tasks
示例#3
0
def create_task(
        client,
        job_id,
        json_file=None,
        task_id=None,
        command_line=None,  # pylint:disable=too-many-arguments
        resource_files=None,
        environment_settings=None,
        affinity_info=None,
        max_wall_clock_time=None,
        retention_time=None,
        max_task_retry_count=None,
        application_package_references=None):
    def action():
        if task is not None:
            client.add(job_id=job_id, task=task)
            return client.get(job_id=job_id, task_id=task.id)
        else:
            result = client.add_collection(job_id=job_id, value=tasks)
            return result.value

    task = None
    if json_file:
        with open(json_file) as f:
            json_obj = json.load(f)
            try:
                task = client._deserialize('TaskAddParameter', json_obj)  # pylint: disable=protected-access
            except DeserializationError:
                try:
                    tasks = client._deserialize('[TaskAddParameter]', json_obj)  # pylint: disable=protected-access
                except DeserializationError:
                    raise ValueError(
                        "JSON file '{}' is not in reqired format.".format(
                            json_file))
    else:
        if command_line is None or task_id is None:
            raise ValueError(
                "Missing required arguments.\nEither --json-file, "
                "or both --task-id and --command-line must be specified.")
        task = TaskAddParameter(
            task_id,
            command_line,
            resource_files=resource_files,
            environment_settings=environment_settings,
            affinity_info=affinity_info,
            application_package_references=application_package_references)
        if max_wall_clock_time is not None or retention_time is not None \
                or max_task_retry_count is not None:
            task.constraints = TaskConstraints(
                max_wall_clock_time=max_wall_clock_time,
                retention_time=retention_time,
                max_task_retry_count=max_task_retry_count)
    return _handle_batch_exception(action)