временно отложенные наработки
This commit is contained in:
@@ -16,6 +16,25 @@
|
||||
<version>${asys.version}</version>
|
||||
</parent>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
<artifactId>lombok</artifactId>
|
||||
<version>1.16.10</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>commons-io</groupId>
|
||||
<artifactId>commons-io</artifactId>
|
||||
<version>2.5</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>asys</groupId>
|
||||
<artifactId>core</artifactId>
|
||||
<version>0.3</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<finalName>${project.groupId}.${project.artifactId}-${project.version}</finalName>
|
||||
<plugins>
|
||||
|
||||
@@ -4,11 +4,47 @@
|
||||
*/
|
||||
package asys.brain;
|
||||
|
||||
import asys.core.buildscript.BuildScript;
|
||||
import asys.core.buildscript.CommandException;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.Map;
|
||||
|
||||
class Brain {
|
||||
private Logger logger = LoggerFactory.getLogger(Brain.class);
|
||||
@Getter @Setter
|
||||
private File buildscriptDir;
|
||||
@Getter @Setter
|
||||
private Map<String, String> environment;
|
||||
|
||||
public void deployServers(Map<String, Integer> data) {
|
||||
File[] buildscriptFiles = buildscriptDir.listFiles(file -> file.isFile() && file.getName().endsWith(".bs"));
|
||||
if (buildscriptFiles == null) return;
|
||||
|
||||
for (File buildFile : buildscriptFiles) {
|
||||
String serverName = buildFile.getName().substring(0,buildFile.getName().lastIndexOf('.'));
|
||||
Integer count = data.get(serverName);
|
||||
if (count == null) continue;
|
||||
|
||||
try {
|
||||
BuildScript buildScript = BuildScript.loadFromFile(buildFile);
|
||||
buildScript.setVariables(environment);
|
||||
|
||||
for (int id = 1; id <= count; id++) {
|
||||
logger.debug("Deploy \"{}{}\" server", serverName, id);
|
||||
buildScript.setVariable("id", String.valueOf(id));
|
||||
buildScript.execute();
|
||||
}
|
||||
} catch (IOException | CommandException e) {
|
||||
logger.error("Error deploy server", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void start() {
|
||||
logger.trace("Brain module started");
|
||||
|
||||
@@ -7,6 +7,9 @@ package asys.brain;
|
||||
import org.osgi.framework.BundleActivator;
|
||||
import org.osgi.framework.BundleContext;
|
||||
|
||||
import java.io.FileInputStream;
|
||||
import java.util.Properties;
|
||||
|
||||
public class BrainActivator implements BundleActivator {
|
||||
|
||||
@Override
|
||||
|
||||
51
brain/src/test/java/asys/brain/TestBrain.java
Normal file
51
brain/src/test/java/asys/brain/TestBrain.java
Normal file
@@ -0,0 +1,51 @@
|
||||
/*
|
||||
* DmitriyMX <mail@dmitriymx.ru>
|
||||
* 2016-07-17
|
||||
*/
|
||||
package asys.brain;
|
||||
|
||||
import org.junit.Assert;
|
||||
import org.junit.Before;
|
||||
import org.junit.BeforeClass;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.io.File;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/*
|
||||
* Логика работы модуля
|
||||
*
|
||||
* Вначале происходит загрузка конфига, где прописаны папка со скриптами
|
||||
* и папка с серверами. Затем он проверяет кол-во уже развёрнутых серверов с кол-вом
|
||||
* указанным в конфиге. Проверка простая: если папка есть и в ней есть необходимые файлы
|
||||
* для запуска - значит система полноценно развернута. В ином случае, папка затирается
|
||||
* и разворачиватеся по новому. Помимо разворачивания серверов, "мозг" запускает минимальное кол-во серверов, которые
|
||||
* должы быть активными.
|
||||
*/
|
||||
|
||||
public class TestBrain {
|
||||
private static Brain brain;
|
||||
|
||||
@BeforeClass
|
||||
public static void beforeClass() {
|
||||
File tmpDir = new File("D:/tmp");
|
||||
brain = new Brain();
|
||||
brain.setBuildscriptDir(new File(tmpDir, "scripts"));
|
||||
|
||||
Map<String, String> env = new HashMap<>();
|
||||
env.put("servers", new File(tmpDir, "servers").toString());
|
||||
env.put("distrib", new File(tmpDir, "distrib").toString());
|
||||
|
||||
brain.setEnvironment(env);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test() {
|
||||
Map<String, Integer> data = new HashMap<>();
|
||||
data.put("bedwars", 19);
|
||||
|
||||
brain.deployServers(data);
|
||||
}
|
||||
}
|
||||
10
brain/src/test/resources/brain.conf
Normal file
10
brain/src/test/resources/brain.conf
Normal file
@@ -0,0 +1,10 @@
|
||||
# Папка в которой находятся скрипты разворачивания серверов
|
||||
buildscript.folder = templates
|
||||
#
|
||||
# Папка в которую разворачиваются сервера
|
||||
servers.folder = servers
|
||||
#
|
||||
# Число серверов, которое необходимо сразу развернуть.
|
||||
# Имя параметра формируется по шаблону: server.название_шаблона
|
||||
server.skywars = 9
|
||||
server.bedwars = 7
|
||||
Reference in New Issue
Block a user