Add --import-offline-session command line option to clearml-task

This commit is contained in:
allegroai 2022-04-13 14:31:18 +03:00
parent d25b0868b3
commit 0c0739379b

View File

@ -70,6 +70,12 @@ def setup_parser(parser):
parser.add_argument('--base-task-id', type=str, default=None, parser.add_argument('--base-task-id', type=str, default=None,
help='Use a pre-existing task in the system, instead of a local repo/script. ' help='Use a pre-existing task in the system, instead of a local repo/script. '
'Essentially clones an existing task and overrides arguments/requirements.') 'Essentially clones an existing task and overrides arguments/requirements.')
parser.add_argument(
"--import-offline-session",
type=str,
default=None,
help="Specify the path to the offline session you want to import.",
)
def cli(): def cli():
@ -89,7 +95,7 @@ def cli():
print('Version {}'.format(__version__)) print('Version {}'.format(__version__))
exit(0) exit(0)
if not args.name: if not args.name and not args.import_offline_session:
raise ValueError("Task name must be provided, use `--name <task-name>`") raise ValueError("Task name must be provided, use `--name <task-name>`")
if args.docker_bash_setup_script and Path(args.docker_bash_setup_script).is_file(): if args.docker_bash_setup_script and Path(args.docker_bash_setup_script).is_file():
@ -101,42 +107,45 @@ def cli():
else: else:
bash_setup_script = args.docker_bash_setup_script or None bash_setup_script = args.docker_bash_setup_script or None
create_populate = CreateAndPopulate( if args.import_offline_session:
project_name=args.project, print("Importing offline session: {}".format(args.import_offline_session))
task_name=args.name, Task.import_offline_session(args.import_offline_session)
task_type=args.task_type, else:
repo=args.repo or args.folder, create_populate = CreateAndPopulate(
branch=args.branch, project_name=args.project,
commit=args.commit, task_name=args.name,
script=args.script, task_type=args.task_type,
working_directory=args.cwd, repo=args.repo or args.folder,
packages=args.packages, branch=args.branch,
requirements_file=args.requirements, commit=args.commit,
docker=args.docker, script=args.script,
docker_args=args.docker_args, working_directory=args.cwd,
docker_bash_setup_script=bash_setup_script, packages=args.packages,
output_uri=args.output_uri, requirements_file=args.requirements,
base_task_id=args.base_task_id, docker=args.docker,
add_task_init_call=not args.skip_task_init, docker_args=args.docker_args,
raise_on_missing_entries=True, docker_bash_setup_script=bash_setup_script,
verbose=True, output_uri=args.output_uri,
) base_task_id=args.base_task_id,
# verify args before creating the Task add_task_init_call=not args.skip_task_init,
create_populate.update_task_args(args.args) raise_on_missing_entries=True,
verbose=True,
)
# verify args before creating the Task
create_populate.update_task_args(args.args)
print('Creating new task')
create_populate.create_task()
# update Task args
create_populate.update_task_args(args.args)
print('Creating new task') print('New task created id={}'.format(create_populate.get_id()))
create_populate.create_task() if not args.queue:
# update Task args print('Warning: No queue was provided, leaving task in draft-mode.')
create_populate.update_task_args(args.args) exit(0)
print('New task created id={}'.format(create_populate.get_id())) Task.enqueue(create_populate.task, queue_name=args.queue)
if not args.queue: print('Task id={} sent for execution on queue {}'.format(create_populate.get_id(), args.queue))
print('Warning: No queue was provided, leaving task in draft-mode.') print('Execution log at: {}'.format(create_populate.task.get_output_log_web_page()))
exit(0)
Task.enqueue(create_populate.task, queue_name=args.queue)
print('Task id={} sent for execution on queue {}'.format(create_populate.get_id(), args.queue))
print('Execution log at: {}'.format(create_populate.task.get_output_log_web_page()))
def main(): def main():