Merge "Use input where ask for confirmation is required"
diff --git a/backupninja-backup-pipeline.groovy b/backupninja-backup-pipeline.groovy
index e707814..58254f3 100644
--- a/backupninja-backup-pipeline.groovy
+++ b/backupninja-backup-pipeline.groovy
@@ -2,9 +2,12 @@
 def salt = new com.mirantis.mk.Salt()
 def python = new com.mirantis.mk.Python()
 def pepperEnv = "pepperEnv"
+def askConfirmation = (env.getProperty('ASK_CONFIRMATION') ?: true).toBoolean()
 
 timeout(time: 12, unit: 'HOURS') {
     node() {
+        def backupNode = ''
+        def backupServer = ''
         stage('Setup virtualenv for Pepper') {
             python.setupPepperVirtualenv(pepperEnv, SALT_MASTER_URL, SALT_MASTER_CREDENTIALS)
         }
@@ -36,6 +39,28 @@
                 currentBuild.result = "FAILURE"
                 return
             }
+
+            def postgresqlMajorVersion = salt.getPillar(pepperEnv, 'I@salt:master', '_param:postgresql_major_version').get('return')[0].values()[0]
+            if (! postgresqlMajorVersion) {
+                input message: "Can't get _param:postgresql_major_version parameter, which is required to determine postgresql-client version. Is it defined in pillar? Confirm to proceed anyway."
+            } else {
+                def postgresqlClientPackage = "postgresql-client-${postgresqlMajorVersion}"
+                try {
+                    if (!salt.isPackageInstalled(['saltId': pepperEnv, 'target': backupNode, 'packageName': postgresqlClientPackage, 'output': false])) {
+                        if (askConfirmation) {
+                            input message: "Do you want to install ${postgresqlClientPackage} package on targeted nodes: ${backupNode}? It's required to make backup. Click to confirm"
+                        }
+                        // update also common fake package
+                        salt.runSaltProcessStep(pepperEnv, backupNode, 'pkg.install', ["postgresql-client,${postgresqlClientPackage}"])
+                    }
+                } catch (Exception e) {
+                    common.errorMsg("Unable to determine status of ${postgresqlClientPackage} packages on target nodes: ${backupNode}.")
+                    if (askConfirmation) {
+                        input message: "Do you want to continue? Click to confirm"
+                    }
+                }
+            }
+
             try {
                 backupServer = salt.getMinions(pepperEnv, "I@backupninja:server")[0]
                 salt.minionsReachable(pepperEnv, "I@salt:master", backupServer)
diff --git a/upgrade-mcp-release.groovy b/upgrade-mcp-release.groovy
index 3a55011..fbac400 100644
--- a/upgrade-mcp-release.groovy
+++ b/upgrade-mcp-release.groovy
@@ -530,6 +530,11 @@
                 }
 
                 salt.enforceState(venvPepper, 'I@jenkins:client and not I@salt:master', 'jenkins.client', true)
+
+                // update Nginx proxy settings for Jenkins/Gerrit if needed
+                if (salt.testTarget(venvPepper, 'I@nginx:server:site:nginx_proxy_jenkins and I@nginx:server:site:nginx_proxy_gerrit')) {
+                    salt.enforceState(venvPepper, 'I@nginx:server:site:nginx_proxy_jenkins and I@nginx:server:site:nginx_proxy_gerrit', 'nginx.server', true, true, null, false, 60, 2)
+                }
             }
         }
         catch (Throwable e) {