#!/usr/bin/python3

import os, sys, json
from elasticsearch import helpers
from elasticsearch import Elasticsearch
import datetime
import hashlib
import os.path as path
import untangle

def get_app_properties():
    version = "none"
    language = "none"

    if path.exists('../pom.xml'):
        obj = untangle.parse('../pom.xml')
        version = str(obj.project.version.cdata)
        language = 'java'
    elif path.exists('../package.json'):
        with open('../package.json') as file:
            tweets_data = json.load(file)
            version = str(tweets_data['version'])
            language = 'node'
    
    return version,language

# MAIN
#reload(sys)
#sys.setdefaultencoding('utf-8')

date_deploy = datetime.datetime.utcnow().strftime("%Y-%m-%dT%H:%M:%S")

URL_ES = 'https://elastic:Pcv4s6Yq0yL813cthlzoFrQx@8a3af794e5b7464c9389dd64dee07860.europe-west1.gcp.cloud.es.io:9243'

#print('\n    - Connecting to elastic to save deploy information...')
#es = Elasticsearch([URL_ES], timeout=300, use_ssl=True, ca_certs=certifi.where())
#es = Elasticsearch([URL_ES], timeout=300, ca_certs=certifi.where())
es = Elasticsearch([URL_ES], timeout=300)

version,language = get_app_properties()

data={}
data['date'] = date_deploy
data['@timestamp'] = date_deploy
data['app_name'] = os.environ['RELEASE_NAME']
data['environment'] = os.environ['CI_ENVIRONMENT_NAME']
data['deployed_by'] = os.environ['GITLAB_USER_NAME']
data['version'] = version
data['language'] = language
data['pipeline_status'] = sys.argv[1]

value = str(data['app_name']+'-'+data['deployed_by']+'-'+data['date'])
h = hashlib.md5(value.encode())
ID = h.hexdigest()

#res = es.index(index='deploys',doc_type='type',id=ID,body=data)
res = es.index(index="deploys", id=ID, body=data)
print (res)