Add support for scaling up and refreshing service info.
diff --git a/containers-docker-local/src/main/java/org/apache/aries/containers/docker/local/impl/LocalDockerContainerFactory.java b/containers-docker-local/src/main/java/org/apache/aries/containers/docker/local/impl/LocalDockerContainerFactory.java
index 307712e..9dcbd8c 100644
--- a/containers-docker-local/src/main/java/org/apache/aries/containers/docker/local/impl/LocalDockerContainerFactory.java
+++ b/containers-docker-local/src/main/java/org/apache/aries/containers/docker/local/impl/LocalDockerContainerFactory.java
@@ -103,7 +103,7 @@
return containers;
}
- private ContainerImpl createDockerContainer(ServiceConfig config) throws Exception {
+ ContainerImpl createDockerContainer(ServiceConfig config) throws Exception {
List<String> command = new ArrayList<>();
command.add("-d");
command.add("-l");
@@ -152,7 +152,7 @@
}
@SuppressWarnings({ "rawtypes", "unchecked" })
- private List<ContainerImpl> discoverContainers(ServiceConfig config) {
+ List<ContainerImpl> discoverContainers(ServiceConfig config) {
List<ContainerImpl> res = new ArrayList<>();
List<String> ids = getDockerIDs(config);
if (ids.size() == 0)
@@ -211,6 +211,7 @@
}
@Override
+ @SuppressWarnings("rawtypes")
public Set<String> listServices() throws Exception {
Set<String> res = new HashSet<>();
List<String> ids = docker.ps(SERVICE_NAME);
diff --git a/containers-docker-local/src/main/java/org/apache/aries/containers/docker/local/impl/LocalDockerController.java b/containers-docker-local/src/main/java/org/apache/aries/containers/docker/local/impl/LocalDockerController.java
index 94801b6..78b74b8 100644
--- a/containers-docker-local/src/main/java/org/apache/aries/containers/docker/local/impl/LocalDockerController.java
+++ b/containers-docker-local/src/main/java/org/apache/aries/containers/docker/local/impl/LocalDockerController.java
@@ -62,6 +62,9 @@
}
public String inspect(List<String> ids) {
+ if (ids.size() == 0)
+ return "[]";
+
List<String> cmd = new ArrayList<>();
cmd.add("docker");
cmd.add("inspect");
diff --git a/containers-docker-local/src/main/java/org/apache/aries/containers/docker/local/impl/ServiceImpl.java b/containers-docker-local/src/main/java/org/apache/aries/containers/docker/local/impl/ServiceImpl.java
index 895d809..f852f00 100644
--- a/containers-docker-local/src/main/java/org/apache/aries/containers/docker/local/impl/ServiceImpl.java
+++ b/containers-docker-local/src/main/java/org/apache/aries/containers/docker/local/impl/ServiceImpl.java
@@ -64,7 +64,11 @@
killContainer(containers.remove(0));
}
} else {
- // TODO implement scaling up
+ for (int i=curSize; i < count; i++) {
+ ContainerImpl c = factory.createDockerContainer(config);
+ c.setService(this);
+ containers.add(c);
+ }
}
} catch (Exception e) {
LocalDockerContainerFactory.LOG.error("Problem changing instance count of service {} to {}",
@@ -87,6 +91,10 @@
@Override
public void refresh() {
- // TODO
+ containers.clear();
+ for (ContainerImpl c : factory.discoverContainers(config)) {
+ c.setService(this);
+ containers.add(c);
+ }
}
}