def main()

in functions/data-processing-engines/dataproc-serverless-job-executor/main.py [0:0]


def main(request):
    """
    Main function, likely triggered by an HTTP request. Extracts parameters, executes a dataproc serverless job
    , and reports the result status or job ID.

    Args:
        request: The incoming HTTP request object.

    Returns:
        str: The status of the query execution or the job ID (if asynchronous).
    """

    request_json = request.get_json(silent=True)
    print("event:" + str(request_json))

    try:
        workflow_properties = request_json.get('workflow_properties', None)
        workflow_name = request_json.get('workflow_name')
        job_name = request_json.get('job_name')
        query_variables = request_json.get('query_variables', None)
        job_id = request_json.get('job_id', None)

        jobs_definitions_bucket = request_json.get("workflow_properties", {}).get("jobs_definitions_bucket")
        extracted_params = {}
        if jobs_definitions_bucket:
            extracted_params = extract_params(
                bucket_name=jobs_definitions_bucket,
                job_name=job_name,
                function_name=function_name
            )

        status_or_job_id = execute_job_or_get_status(job_id, workflow_name, job_name, query_variables,
                                                     workflow_properties, extracted_params)

        if status_or_job_id.startswith('aef-'):
            print(f"Running Job, track it with Job ID: {status_or_job_id}")
        else:
            print(f"Call finished with status: {status_or_job_id}")

        return status_or_job_id
    except Exception as error:
        err_message = "Exception: " + repr(error)
        print(err_message)
        response = {
            "error": error.__class__.__name__,
            "message": repr(error)
        }
        return response