From b8ef3119017aa268dc5a108493d5c9e72b8d81ca Mon Sep 17 00:00:00 2001 From: "leon.li" Date: Tue, 24 Jan 2017 21:46:18 +0800 Subject: [PATCH] fix a bug about script path --- .../slb/agent/conf/ConfigureManager.java | 87 ++++++++++++++----- 1 file changed, 67 insertions(+), 20 deletions(-) diff --git a/camel-agent/src/main/java/com/dianping/platform/slb/agent/conf/ConfigureManager.java b/camel-agent/src/main/java/com/dianping/platform/slb/agent/conf/ConfigureManager.java index 59ce494..f41f95a 100644 --- a/camel-agent/src/main/java/com/dianping/platform/slb/agent/conf/ConfigureManager.java +++ b/camel-agent/src/main/java/com/dianping/platform/slb/agent/conf/ConfigureManager.java @@ -1,17 +1,20 @@ package com.dianping.platform.slb.agent.conf; -import org.apache.commons.io.FileUtils; - import java.io.File; -import java.net.URL; -import java.util.Iterator; +import java.io.IOException; +import java.io.InputStream; +import java.util.HashSet; +import java.util.Set; + +import org.apache.commons.io.FileUtils; +import org.apache.commons.io.IOUtils; /** - * dianping.com @2015 - * slb - soft load balance - *

- * Created by leon.li(Li Yang) - */ + * dianping.com @2015 + * slb - soft load balance + *

+ * Created by leon.li(Li Yang) + */ public class ConfigureManager { private static final String COMMAND_LIST_VS = "ls -l /usr/local/nginx/conf/phoenix-slb"; @@ -20,12 +23,61 @@ public class ConfigureManager { private static final String PATH_NGINX_CONF_DIR = "/usr/local/nginx/conf/phoenix-slb"; - static { - File scriptDir = getNginxReloadScriptFile().getParentFile(); - Iterator scriptIter = FileUtils.iterateFiles(scriptDir, new String[] { "sh" }, true); + private static final String DIR_AGENT_SCRIPT = "/data/appdatas/camel/script/"; - while (scriptIter != null && scriptIter.hasNext()) { - scriptIter.next().setExecutable(true, false); + private static final String STATUS_SCRIPT_READY = "/data/appdatas/camel/script/status"; + + private static final Set SET_SCRIPT_NAMES = new HashSet() { + { + add("tengine.sh"); + add("tengine_func.sh"); + add("tengine_reload.sh"); + add("util.sh"); + } + }; + + static { + boolean scriptReady = false; + + File statusFile = new File(STATUS_SCRIPT_READY); + if (statusFile.exists()) { + try { + String statusContent = FileUtils.readFileToString(statusFile); + scriptReady = Boolean.parseBoolean(statusContent); + } catch (Exception e) { + } + } + + if (!scriptReady) { + boolean initialStatus = true; + RuntimeException ex = null; + + File scriptDir = new File(DIR_AGENT_SCRIPT); + if (!scriptDir.exists() || scriptDir.isFile()) { + scriptDir.mkdirs(); + } + + for (String scriptName : SET_SCRIPT_NAMES) { + InputStream inputStream = ConfigureManager.class.getClassLoader().getResourceAsStream("script/" + scriptName); + File targetFile = new File(scriptDir, scriptName); + + try { + FileUtils.writeByteArrayToFile(targetFile, IOUtils.toByteArray(inputStream)); + targetFile.setExecutable(true, false); + } catch (IOException e) { + ex = new RuntimeException(e); + initialStatus = false; + } + } + + if (!initialStatus) { + throw ex; + } else { + try { + FileUtils.writeByteArrayToFile(statusFile, "true".getBytes()); + } catch (IOException e) { + } + } } } @@ -38,12 +90,7 @@ public class ConfigureManager { } private static File getScriptFile(String scriptFileName) { - URL url = ConfigureManager.class.getClassLoader().getResource("script/" + scriptFileName); - - if (url == null) { - throw new IllegalArgumentException("script not exists: " + scriptFileName); - } - return new File(url.getPath()); + return new File(DIR_AGENT_SCRIPT + scriptFileName); } public static File getNginxReloadScriptFile() {