def run()

in src/scripts/nf-aws.py [0:0]


def run(args):
    session = boto3.Session(region_name=args.region, profile_name=args.profile)
    batch = session.client('batch')
    ssm = session.client('ssm')

    priority_queue = ssm.get_parameter(Name=f"/gwfcore/{args.gwfcore_namespace}/job-queue/priority")
    priority_queue = priority_queue['Parameter']['Value']

    job_name = f"nf-workflow-{args.project}"
    if args.workflow_name:
        job_name = args.workflow_name
    
    job_name = re.sub('[^\w-]', '-', job_name)
    if len(job_name) > 128:
        job_name = job_name[:128]

    command = [args.project] + args.params

    job_sub = {
        "jobName": job_name,
        "jobDefinition": f"nextflow-{args.nextflow_namespace}",
        "jobQueue": priority_queue,
        "containerOverrides": {
            "command": command
        }
    }

    if args.verbose:
        print(f"submission request: {job_sub}")

    response = batch.submit_job(**job_sub)

    if args.verbose:
        pprint(response)
    else:
        pprint({k:v for k, v in response.items() if k in ('jobArn', 'jobName', 'jobId')})