def create_sensitive_column_config()

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')