Glider
Loading...
Searching...
No Matches
glider_upload.py
Go to the documentation of this file.
1import sys
2import pymongo
3import boto3
4from dotenv import load_dotenv
5import os
6import logging
7import json
8import time
9
10path = os.path.dirname(sys.argv[0])
11load_dotenv('{}/.env'.format(path)) #full_path
12
13file = sys.argv[1]
14file_id = sys.argv[2]
15client_id = sys.argv[3]
16exchange_rates = sys.argv[4]
17print(file)
18# filename = sys.argv[5]
19myclient = pymongo.MongoClient(os.environ.get('MONGO_CONNECTION'))
20mydb = myclient["myFirstDatabase"]
21mycol = mydb["files"]
22
23def addToMongo(s3_path, file_id, client_id, filepath):
24 file_dict = { "file_db_id": file_id, "status": "pending", "client_id": client_id, 'name': os.path.basename(filepath), "s3_path":s3_path}
25 logging.info('inserting_file')
26 result = mycol.replace_one({"file_db_id": file_id}, file_dict, upsert=True)
27
28def upload_to_s3(file, client_id):
29 s3_client = boto3.client('s3')
30 object_name = '{}/{}'.format(client_id,os.path.basename(file))
31 try:
32 response = s3_client.upload_file(file, os.environ.get('BUCKET_INPUT'), object_name)
33 except Exception as e:
34 logging.error(e)
35 return False
36 return object_name
37
38def trigger_step_function_ingest(file_id, client_id, file):
39 step_functions_client = boto3.client("stepfunctions")
40 input_parameters = {
41 "client_id": client_id,
42 "bucket":[os.environ.get('BUCKET_INPUT'), os.environ.get('BUCKET_OUTPUT')],
43 "path":["{}".format(client_id), "{}".format(client_id)],
44 "currency": {"EUR": 1, "USD": 1, "GBP": 1},
45 "files": [{"file_id": file_id, "file": file}]
46 }
47
48 execution_name = '{}-{}-{}-{}'.format(file_id,client_id,'ottito', int(time.time()))
49 response = step_functions_client.start_execution(
50 stateMachineArn=os.environ.get('INGESTION_STEP_FUNCTION_ARN'),
51 name=execution_name,
52 input=json.dumps(input_parameters),
53 )
54 result = mycol.update_one({"file_db_id": file_id},{"$set": {"status": "processing"}})
55
56# s3_path = upload_to_s3(file, client_id)
57# addToMongo(s3_path, file_id, client_id, file)
58# trigger_step_function_ingest(file_id, client_id, os.path.basename(file))
upload_to_s3(file, client_id)
trigger_step_function_ingest(file_id, client_id, file)
addToMongo(s3_path, file_id, client_id, filepath)