Marathon: support for scaling and listing services.
diff --git a/containers-marathon/src/main/java/org/apache/aries/containers/marathon/impl/MarathonContainerFactory.java b/containers-marathon/src/main/java/org/apache/aries/containers/marathon/impl/MarathonContainerFactory.java
index a508c53..e5c6b16 100644
--- a/containers-marathon/src/main/java/org/apache/aries/containers/marathon/impl/MarathonContainerFactory.java
+++ b/containers-marathon/src/main/java/org/apache/aries/containers/marathon/impl/MarathonContainerFactory.java
@@ -20,7 +20,9 @@
import java.util.ArrayList;
import java.util.Collections;
+import java.util.HashSet;
import java.util.List;
+import java.util.Map;
import java.util.Set;
import org.apache.aries.containers.ContainerFactory;
@@ -133,22 +135,17 @@
@Override
public Set<String> listServices() throws Exception {
- GetAppsResponse apps = marathonClient.getApps();
- return Collections.emptySet();
-// apps.getApps().stream().filter(a -> a).map(mapper)
+ GetAppsResponse services = marathonClient.getApps(
+ Collections.singletonMap("label", SERVICE_NAME));
- /*
- return apps.getApps().stream().
- filter(a -> {
- Map<String, String> labels = a.getLabels();
- if (labels != null)
- return MARK_LABEL_VALUE.equals(a.getLabels().get(MARK_LABEL_KEY));
- else
- return false;
- }).
- map(a -> marathonIdToGroupName(a.getId())).
- collect(Collectors.toSet());
- */
+ Set<String> serviceNames = new HashSet<>();
+ for (App app : services.getApps()) {
+ Map<String, String> labels = app.getLabels();
+ String name = labels.get(SERVICE_NAME);
+ if (name != null && name.length() > 0)
+ serviceNames.add(name);
+ }
+ return serviceNames;
}
}
diff --git a/containers-marathon/src/main/java/org/apache/aries/containers/marathon/impl/ServiceImpl.java b/containers-marathon/src/main/java/org/apache/aries/containers/marathon/impl/ServiceImpl.java
index cc6d100..ce1ef99 100644
--- a/containers-marathon/src/main/java/org/apache/aries/containers/marathon/impl/ServiceImpl.java
+++ b/containers-marathon/src/main/java/org/apache/aries/containers/marathon/impl/ServiceImpl.java
@@ -71,15 +71,13 @@
@Override
public void setInstanceCount(int count) {
- App curApp = marathonClient.getApp(marathonAppID).getApp();
- curApp.setInstances(count);
- marathonClient.updateApp(marathonAppID, curApp, true);
+ App updatedApp = new App();
+ updatedApp.setInstances(count);;
+ marathonClient.updateApp(marathonAppID, updatedApp, true);
}
@Override
public void refresh() {
- // TODO Auto-generated method stub
-
+ // No state held - noop
}
-
}