From 72e6fd6e8d6c846057362cd390851d0f70b757c8 Mon Sep 17 00:00:00 2001 From: Kelven Yang Date: Thu, 21 Feb 2013 14:32:47 -0800 Subject: [PATCH] CLOUDSTACK-1362: Put a workaround fix to set excutable attribute of injectkys.sh at runtime --- .../cloud/server/ConfigurationServerImpl.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/server/src/com/cloud/server/ConfigurationServerImpl.java b/server/src/com/cloud/server/ConfigurationServerImpl.java index 9566285051d..c5ae1e2a436 100755 --- a/server/src/com/cloud/server/ConfigurationServerImpl.java +++ b/server/src/com/cloud/server/ConfigurationServerImpl.java @@ -151,6 +151,8 @@ public class ConfigurationServerImpl extends ManagerBase implements Configuratio @DB public void persistDefaultValues() throws InternalErrorException { + fixupScriptFileAttribute(); + // Create system user and admin user saveUser(); @@ -703,6 +705,24 @@ public class ConfigurationServerImpl extends ManagerBase implements Configuratio } } + + private void fixupScriptFileAttribute() { + // TODO : this is a hacking fix to workaround that executable bit is not preserved in WAR package + String scriptPath = Script.findScript("", "scripts/vm/systemvm/injectkeys.sh"); + if(scriptPath != null) { + File file = new File(scriptPath); + if(!file.canExecute()) { + s_logger.info("Some of the shell script files may not have executable bit set. Fixup..."); + + String cmd = "chmod ugo+x " + scriptPath; + s_logger.info("Executing " + cmd); + String result = Script.runSimpleBashScript(cmd); + if (result != null) { + s_logger.warn("Failed to fixup shell script executable bits " + result); + } + } + } + } private void updateKeyPairsOnDisk(String homeDir) { File keyDir = new File(homeDir + "/.ssh");