@Library("cadoles") _

pipeline {

    agent {
        label 'common'
    }

    parameters {
        string(
            name: 'packageName', 
            description: 'Nom du paquet à installer'
        )
        string(
            name: 'packageVersion', 
            defaultValue: '', 
            description: 'Version du paquet à installer'
        )
        string(
            name: 'packageRepository',
            description: 'Dépôt de paquets à utiliser sur Vulcain'
        )
        string(
            name: 'vmTemplate',
            description: 'Template OpenNebula de la VM à utiliser pour le test d\'installation'
        )
    }

    stages {

        stage("Check parameters") {
            steps {
                script {
                    if (!params.packageName?.trim()) {
                        error("Le nom du paquet n'est pas défini !")
                    }
                    if (!params.vmTemplate?.trim()) {
                        error("Le template de VM n'est pas défini !")
                    }
                    if (!params.packageRepository?.trim()) {
                        error("Le dépôt de paquets n'est pas défini !")
                    }
                }
            }
        }

        stage("Test package installation") {
            steps {
                script {
                    nebula.runScriptInNewVM([
                        vmTemplate: params.vmTemplate,
                        script: """
                        set -xeo pipefail
                        wget -qO - https://vulcain.cadoles.com/cadoles.gpg | apt-key add -
                        echo 'deb https://vulcain.cadoles.com ${params.packageRepository} main' > /etc/apt/sources.list.d/${params.packageRepository}.list
                        apt-get update -y
                        apt-get install -y ${params.packageName}${ params.packageVersion?.trim() ? '=' + params.packageVersion?.trim() : ''}
                        """
                    ])
                }
            }
        }
    }

    post {
        failure {
            wrap([$class: 'BuildUser']) {
                rocketSend (
                    avatar: 'https://jenkins.cadol.es/static/b5f67753/images/headshot.png',
                    message: """
                    Le test d'installation du paquet `${params.packageName}` a échoué:
                    
                    - Version `${params.packageVersion}`
                    - Dépôt `${params.packageRepository}`
                    - Template de la VM  `${params.vmTemplate}`

                    [Voir le job](${env.RUN_DISPLAY_URL})
                    
                    @${env.BUILD_USER_ID ? env.BUILD_USER_ID : 'here'}
                    """.stripIndent(),
                    rawMessage: true
                )
            }
        }
    }

}