pipeline {
    agent any

    parameters {
        choice(name: 'ENVIRONMENT', choices: ['qa', 'prod'], description: 'The environment to run against.')
        stashedFile(name: 'WHT_ALLOCATION_TRANSACTIONS_FILE', description: 'The file containing the WHT allocations data.')
        string(name: 'SHARED_LIBRARIES_VERSION', defaultValue: 'master', description: 'The version of the Jenkins shared libraries to use. Can be a branch, tag or Git revision.')
    }

    environment {
        COLLAB_DB_USER = 'collab_env'
        COLLAB_DB_DBNAME = 'ows_collaborator'
        COLLAB_DB_HOST = "${params.ENVIRONMENT}-ows-collaborator.cluster-cb22xqmk0y0q.us-east-1.rds.amazonaws.com"
    }

    stages {
        stage('Load shared libraries') {
            steps {
                library "jenkins-global-libraries@${params.SHARED_LIBRARIES_VERSION}"
            }
        }

        stage('Ingest WHT allocations data') {
            steps {
                withEcr {
                    withCredentials([aws(credentialsId: "${params.ENVIRONMENT}-collaborator-report-trigger")]){
                        withSecrets(secrets: [
                            [id: "${params.ENVIRONMENT}/ows-collaborator/COLLAB_DB_PASS", environmentVariable: 'COLLAB_DB_PASS'],
                            [id: "${params.ENVIRONMENT}/datadog/DD_API_KEY", environmentVariable: 'DD_API_KEY'],
                            [id: "${params.ENVIRONMENT}/datadog/DD_APP_KEY", environmentVariable: 'DD_APP_KEY'],
                        ]) {
                            withFileParameter('WHT_ALLOCATION_TRANSACTIONS_FILE') {
                                sh '''
                                    docker compose run \
                                        --build \
                                        --entrypoint /poetry/bin/poetry \
                                        --env COLLAB_DB_USER=$COLLAB_DB_USER \
                                        --env COLLAB_DB_PASS=$COLLAB_DB_PASS \
                                        --env COLLAB_DB_HOST=$COLLAB_DB_HOST \
                                        --env COLLAB_DB_DBNAME=$COLLAB_DB_DBNAME \
                                        --env DD_API_KEY=$DD_API_KEY \
                                        --env DD_APP_KEY=$DD_APP_KEY \
                                        --env SPLITIO_API_KEY=localhost \
                                        --env AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID \
                                        --env AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY \
                                        --env Environment=$ENVIRONMENT \
                                        --volume $WHT_ALLOCATION_TRANSACTIONS_FILE:/var/app/$WHT_ALLOCATION_TRANSACTIONS_FILE_FILENAME \
                                        dev \
                                        run python -m scripts.ingest_wht_transactions "/var/app/$WHT_ALLOCATION_TRANSACTIONS_FILE_FILENAME" \
                                        2>&1
                                '''
                            }
                        }
                    }
                }
            }
        }

    }
    
    post {
        failure {
            slackSend(
                channel: '#collaborators-alerts',
                color: 'danger',
                message: "WHT allocations ingestion failed in ${params.ENVIRONMENT}")
        }
        success {
            slackSend(
                channel: '#collaborators-alerts',
                color: 'good',
                message: "WHT allocations ingestion succeeded in ${params.ENVIRONMENT}")
        }
    }
}
