in 5-app-infra/3-artifact-publish/docker/cdmc/tag_engine_api/main.py [0:0]
def trigger_job():
print('enter trigger_job')
json_request = request.get_json(force=True)
print('json request: ', json_request)
status, response, tag_creator_sa = do_authentication(request.headers, json_request, ENABLE_AUTH)
print('status:', status, ', response:', response, ', tag_creator_sa:', tag_creator_sa)
if status == False:
return jsonify(response), 400
tag_invoker_sa = get_tag_invoker_account(request.headers.get('Authorization'))
print('tag_invoker_sa:', tag_invoker_sa)
if 'config_type' in json_request:
config_type = json_request['config_type']
is_valid = check_config_type(json_request['config_type'])
else:
print("trigger_job request is missing the required parameter config_type. Please add this parameter to the json object.")
resp = jsonify(success=False)
return resp
if is_valid == False:
print("Invalid config_type parameter. Please choose a config_type from this list: " + get_available_config_types())
resp = jsonify(success=False)
return resp
if 'config_uuid' in json_request:
config_uuid = json_request['config_uuid']
config_type = json_request['config_type']
if isinstance(config_uuid, str):
is_active = store.check_active_config(config_uuid, config_type)
if is_active != True:
print('Error: The config_uuid', config_uuid, 'is not active and cannot be used to run a job.')
resp = jsonify(success=False)
return resp
elif 'template_id' in json_request and 'template_project' in json_request and 'template_region' in json_request:
template_id = json_request['template_id']
template_project = json_request['template_project']
template_region = json_request['template_region']
if 'included_tables_uris' in json_request:
included_uris = json_request['included_tables_uris']
elif 'included_assets_uris' in json_request:
included_uris = json_request['included_assets_uris']
else:
print("trigger_job request is missing the required parameter included_tables_uris or included_assets_uris. Please add this parameter to the json object.")
resp = jsonify(success=False)
return resp
success, config_uuid = store.lookup_config_by_uris(template_id, template_project, template_region, config_type, included_uris)
if success != True or config_uuid == '':
print('Error: could not locate the config based on the parameters provided in json request.')
resp = jsonify(success=False)
return resp
else:
print("trigger_job request is missing the required parameters. Please add the config_uuid or the template_id, template_project, template_region, and included_uris to the json object.")
resp = jsonify(success=False)
return resp
if 'job_metadata' in json_request:
job_metadata = json_request['job_metadata']
if isinstance(job_metadata, dict) == False:
print('Warning: job metadata cannot be recorded because', job_metadata, 'is not a json object')
else:
if ENABLE_JOB_METADATA == False:
print('Warning: Ignoring job metadata in request because ENABLE_JOB_METADATA = False in tagengine.ini')
job_uuid = jm.create_job(tag_creator_sa, tag_invoker_sa, config_uuid, json_request['config_type'])
else:
job_uuid = jm.create_job(tag_creator_sa, tag_invoker_sa, config_uuid, config_type, job_metadata)
template_id = store.lookup_tag_template(config_type, config_uuid)
credentials, success = get_target_credentials(tag_creator_sa)
bqu = bq.BigQueryUtils(credentials, BIGQUERY_REGION)
success = bqu.write_job_metadata(job_uuid, template_id, job_metadata, tag_creator_sa, tag_invoker_sa)
print('Wrote job metadata to BigQuery for job', job_uuid, '. Success =', success)
else:
job_uuid = jm.create_job(tag_creator_sa, tag_invoker_sa, config_uuid, config_type)
return jsonify(job_uuid=job_uuid)