fix a bug about script path

This commit is contained in:
leon.li 2017-01-24 21:46:18 +08:00
parent 6d90bf1a16
commit b8ef311901

View file

@ -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
* <p/>
* Created by leon.li(Li Yang)
*/
* dianping.com @2015
* slb - soft load balance
* <p>
* 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<File> 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<String> SET_SCRIPT_NAMES = new HashSet<String>() {
{
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() {