diff --git a/installation/resource/installer/bin/backup-databases.sh b/installation/resource/installer/bin/backup-databases.sh index 422c7475ba7d6698735f16692baf0847224cfbe0..06910f3b0c966ff740d6c5855a36cd7a89fdef54 100755 --- a/installation/resource/installer/bin/backup-databases.sh +++ b/installation/resource/installer/bin/backup-databases.sh @@ -60,7 +60,9 @@ function backupDatabase() { if [ $(checkForBackup $database) == "FALSE" ]; then return fi - if [ $(databaseExist $database) == "TRUE" ]; then + + local user_name_for_check=$(getProperty $DB_PROPS "username") + if [ $(databaseExist $database $user_name_for_check) == "TRUE" ]; then username=$(getProperty $DB_PROPS "username") local dumpDir=$BACKUP_DIR/$database diff --git a/installation/resource/installer/bin/common-functions.sh b/installation/resource/installer/bin/common-functions.sh index 756336c3cee12c6753a930b348baef64e8115bc4..b5fe23e67d5411eeb1240433d8e88439cd9ec88c 100644 --- a/installation/resource/installer/bin/common-functions.sh +++ b/installation/resource/installer/bin/common-functions.sh @@ -50,7 +50,8 @@ contains() databaseExist() { local database=$1 - if [ `exe_psql -U postgres -l | eval "awk '/$database /'" | wc -l` -gt 0 ]; then + local owner=$2 + if [ `exe_psql -U $owner -l | eval "awk '/$database /'" | wc -l` -gt 0 ]; then echo "TRUE" else echo "FALSE" diff --git a/installation/resource/installer/bin/database-existence-check.sh b/installation/resource/installer/bin/database-existence-check.sh index a38c8f4e7ebcf8e6baacea843f65994a44f33907..f0a4e8b1c6745894706436a6e4c24147f8f17a6c 100644 --- a/installation/resource/installer/bin/database-existence-check.sh +++ b/installation/resource/installer/bin/database-existence-check.sh @@ -10,5 +10,6 @@ fi source $BASE/common-functions.sh DATABASE="$1" +OWNER="$2" -databaseExist "$DATABASE" \ No newline at end of file +databaseExist "$DATABASE" "$OWNER" \ No newline at end of file diff --git a/installation/source/java/ch/systemsx/cisd/openbis/installer/izpack/DBConnectionValidator.java b/installation/source/java/ch/systemsx/cisd/openbis/installer/izpack/DBConnectionValidator.java index 56c1bfb90d1ef13dfb19e9c5cb4d1812a560bcc3..a4c453108b1aa970ed372d35523b919fb006362b 100644 --- a/installation/source/java/ch/systemsx/cisd/openbis/installer/izpack/DBConnectionValidator.java +++ b/installation/source/java/ch/systemsx/cisd/openbis/installer/izpack/DBConnectionValidator.java @@ -37,8 +37,6 @@ public class DBConnectionValidator extends AbstractDataValidator private static final String CONNECTION_STRING = "jdbc:postgresql://localhost/template1"; - private static final String POSTGRES_USER = "postgres"; - private static final String NO_PASSWORD = ""; @Override @@ -72,14 +70,8 @@ public class DBConnectionValidator extends AbstractDataValidator { return Status.OK; } - String admin = getAdmin(); - String adminPassword = getAdminPassword(); String owner = getOwner(); String ownerPassword = getOwnerPassword(); - if (testConnectionOK(admin, adminPassword, "database.admin-user") == false) - { - return Status.ERROR; - } if (testConnectionOK(owner, ownerPassword, "database.owner") == false) { return Status.ERROR; @@ -116,33 +108,6 @@ public class DBConnectionValidator extends AbstractDataValidator return password == null ? "" : password; } - private String getAdmin() - { - String defaultAdmin = POSTGRES_USER; - if (GlobalInstallationContext.isFirstTimeInstallation) - { - return defaultAdmin; - } - String admin = - Utils.tryToGetServicePropertyOfAS(GlobalInstallationContext.installDir, - "database.admin-user"); - if (admin != null && admin.length() > 0) - { - return admin; - } - return defaultAdmin; - } - - private String getAdminPassword() - { - if (GlobalInstallationContext.isFirstTimeInstallation) - { - return NO_PASSWORD; - } - return Utils.tryToGetServicePropertyOfAS(GlobalInstallationContext.installDir, - "database.admin-password"); - } - private boolean testConnectionOK(String username, String password, String messagePostfix) { boolean connected = false; diff --git a/installation/source/java/ch/systemsx/cisd/openbis/installer/izpack/ExecuteBackupAction.java b/installation/source/java/ch/systemsx/cisd/openbis/installer/izpack/ExecuteBackupAction.java index 4ae5ce6dde01f15e026e97b7ea3055283e79f4a5..5e972acc21d77088ede13d3335028f016900d647 100644 --- a/installation/source/java/ch/systemsx/cisd/openbis/installer/izpack/ExecuteBackupAction.java +++ b/installation/source/java/ch/systemsx/cisd/openbis/installer/izpack/ExecuteBackupAction.java @@ -16,6 +16,9 @@ package ch.systemsx.cisd.openbis.installer.izpack; +import java.util.HashMap; +import java.util.Map; + import com.izforge.izpack.api.data.AutomatedInstallData; import com.izforge.izpack.api.data.PanelActionConfiguration; import com.izforge.izpack.api.handler.AbstractUIHandler; @@ -40,23 +43,31 @@ public class ExecuteBackupAction extends AbstractScriptExecutor implements Panel String backupFolder = data.getVariable(GlobalInstallationContext.BACKUP_FOLDER_VARNAME); String dataBasesToBackup = data.getVariable(SetDatabasesToBackupAction.DATABASES_TO_BACKUP_VARNAME); String console = data.getVariable("SYSTEM_CONSOLE"); + + String password = + Utils.tryToGetServicePropertyOfAS(GlobalInstallationContext.installDir, + "database.owner-password"); + + Map<String, String> env = new HashMap<String, String>(); + env.put("PGPASSWORD", password); + if (dataBasesToBackup == null) { if (console == null) { - executeAdminScript(null, script, backupFolder); + executeAdminScript(env, script, backupFolder); } else { - executeAdminScript(null, script, backupFolder, "", console); + executeAdminScript(env, script, backupFolder, "", console); } } else { if (console == null) { - executeAdminScript(null, script, backupFolder, dataBasesToBackup); + executeAdminScript(env, script, backupFolder, dataBasesToBackup); } else { - executeAdminScript(null, script, backupFolder, dataBasesToBackup, console); + executeAdminScript(env, script, backupFolder, dataBasesToBackup, console); } } } diff --git a/installation/source/java/ch/systemsx/cisd/openbis/installer/izpack/SetDatabasesToBackupAction.java b/installation/source/java/ch/systemsx/cisd/openbis/installer/izpack/SetDatabasesToBackupAction.java index 0a5fc5a128f47dfca45fa3ec9ca358c260b43655..4d35fb8b63752a73017850b31e8ed87ae0ad00b4 100644 --- a/installation/source/java/ch/systemsx/cisd/openbis/installer/izpack/SetDatabasesToBackupAction.java +++ b/installation/source/java/ch/systemsx/cisd/openbis/installer/izpack/SetDatabasesToBackupAction.java @@ -19,7 +19,9 @@ package ch.systemsx.cisd.openbis.installer.izpack; import java.io.File; import java.lang.reflect.Method; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; import org.apache.commons.io.output.ByteArrayOutputStream; @@ -93,7 +95,18 @@ public class SetDatabasesToBackupAction extends AbstractScriptExecutor implement return true; } ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); - executeAdminScript(null, outputStream, outputStream, scriptFile.getAbsolutePath(), database); + + String owner = + Utils.tryToGetServicePropertyOfAS(GlobalInstallationContext.installDir, + "database.owner"); + String password = + Utils.tryToGetServicePropertyOfAS(GlobalInstallationContext.installDir, + "database.owner-password"); + + Map<String, String> env = new HashMap<String, String>(); + env.put("PGPASSWORD", password); + + executeAdminScript(env, outputStream, outputStream, scriptFile.getAbsolutePath(), database, owner); return outputStream.toString().trim().equals("FALSE") == false; }