in 5-app-infra/3-artifact-publish/docker/cdmc/tag_engine_api/main.py [0:0]
def create_sensitive_column_config():
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)
if status == False:
return jsonify(response), 400
valid_parameters, template_id, template_project, template_region = check_template_parameters('sensitive_column_config', json_request)
if valid_parameters != True:
response = {
"status": "error",
"message": "Request JSON is missing some required tag template parameters",
}
return jsonify(response), 400
#print('template_id: ' + template_id)
#print('template_project: ' + template_project)
#print('template_region: ' + template_region)
template_uuid = store.write_tag_template(template_id, template_project, template_region)
credentials, success = get_target_credentials(tag_creator_sa)
if success == False:
print('Error acquiring credentials from', tag_creator_sa)
dcc = controller.DataCatalogController(credentials, None, None, template_id, template_project, template_region)
fields = dcc.get_template(included_fields=json_request['fields'])
# validate dlp_dataset parameter
if 'dlp_dataset' in json_request:
dlp_dataset = json_request['dlp_dataset']
else:
print("The sensitive_column_config request doesn't include a dlp_dataset field. This is a required parameter.")
resp = jsonify(success=False)
return resp
# validate infotype_selection_table parameter
if 'infotype_selection_table' in json_request:
infotype_selection_table = json_request['infotype_selection_table']
else:
print("The sensitive_column_config request doesn't include an infotype_selection_table field. This is a required parameter.")
resp = jsonify(success=False)
return resp
# validate infotype_classification_table parameter
if 'infotype_classification_table' in json_request:
infotype_classification_table = json_request['infotype_classification_table']
else:
print("The sensitive_column_config request doesn't include an infotype_classification_table field. This is a required parameter.")
resp = jsonify(success=False)
return resp
if 'included_tables_uris' in json_request:
included_tables_uris = json_request['included_tables_uris']
else:
print("The sensitive_column_tags request requires an included_tables_uris parameter.")
resp = jsonify(success=False)
return resp
if 'excluded_tables_uris' in json_request:
excluded_tables_uris = json_request['excluded_tables_uris']
else:
excluded_tables_uris = ''
# validate create_policy_tags parameter
if 'create_policy_tags' in json_request:
create_policy_tags = json_request['create_policy_tags']
else:
print("The sensitive_column_tags request requires a create_policy_tags field.")
resp = jsonify(success=False)
return resp
if create_policy_tags:
if 'taxonomy_id' in json_request:
taxonomy_id = json_request['taxonomy_id']
else:
print("The sensitive_column_tags request requires a taxonomy_id when the create_policy_tags field is true. ")
resp = jsonify(success=False)
return resp
refresh_mode, refresh_frequency, refresh_unit = get_refresh_parameters(json_request)
tag_history_option, _ = store.read_tag_history_settings()
if 'overwrite' in json_request:
overwrite = json_request['overwrite']
else:
overwrite = True
config_uuid = store.write_sensitive_column_config(tag_creator_sa, fields, dlp_dataset, infotype_selection_table,\
infotype_classification_table, included_tables_uris, \
excluded_tables_uris, create_policy_tags, \
taxonomy_id, template_uuid, template_id, template_project, template_region, \
refresh_mode, refresh_frequency, refresh_unit, \
tag_history_option, overwrite)
return jsonify(config_uuid=config_uuid, config_type='SENSITIVE_TAG_COLUMN')