Docker activity plugin health check support.

Project: 
http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/commit/fe2de44f
Tree: 
http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/tree/fe2de44f
Diff: 
http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/diff/fe2de44f

Branch: refs/heads/docker
Commit: fe2de44f6958ea077a64292d2cabdeebe59c4ac3
Parents: da7a545
Author: Nadeesh Dilanga <[email protected]>
Authored: Tue Aug 9 21:26:31 2016 -0400
Committer: Nadeesh Dilanga <[email protected]>
Committed: Tue Aug 9 21:26:31 2016 -0400

----------------------------------------------------------------------
 .../activities/docker/DockerActivity.java       |  4 ++
 .../docker/DockerActivityHealthChecker.java     | 48 ++++++++++++++++++++
 .../spring/docker-activity-context-osgi.xml     |  1 +
 .../META-INF/spring/docker-activity-context.xml |  2 +
 .../docker/test/DockerActivityTest.java         | 12 ++---
 5 files changed, 61 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/fe2de44f/taverna-docker-activity/src/main/java/org/apache/taverna/activities/docker/DockerActivity.java
----------------------------------------------------------------------
diff --git 
a/taverna-docker-activity/src/main/java/org/apache/taverna/activities/docker/DockerActivity.java
 
b/taverna-docker-activity/src/main/java/org/apache/taverna/activities/docker/DockerActivity.java
index 48cb92d..0562a0b 100644
--- 
a/taverna-docker-activity/src/main/java/org/apache/taverna/activities/docker/DockerActivity.java
+++ 
b/taverna-docker-activity/src/main/java/org/apache/taverna/activities/docker/DockerActivity.java
@@ -189,6 +189,10 @@ public class DockerActivity extends 
AbstractAsynchronousActivity<JsonNode> {
     }
 
 
+    public DockerContainerConfiguration getContainerConfiguration() {
+        return containerConfiguration;
+    }
+
     private String getRenderedParam(ReferenceService referenceService, 
InvocationContext context, T2Reference key) {
         return (String) referenceService.renderIdentifier(key, String.class, 
context);
 

http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/fe2de44f/taverna-docker-activity/src/main/java/org/apache/taverna/activities/docker/DockerActivityHealthChecker.java
----------------------------------------------------------------------
diff --git 
a/taverna-docker-activity/src/main/java/org/apache/taverna/activities/docker/DockerActivityHealthChecker.java
 
b/taverna-docker-activity/src/main/java/org/apache/taverna/activities/docker/DockerActivityHealthChecker.java
new file mode 100644
index 0000000..7d23840
--- /dev/null
+++ 
b/taverna-docker-activity/src/main/java/org/apache/taverna/activities/docker/DockerActivityHealthChecker.java
@@ -0,0 +1,48 @@
+package org.apache.taverna.activities.docker;
+
+import org.apache.taverna.visit.VisitReport;
+import org.apache.taverna.workflowmodel.health.HealthCheck;
+import org.apache.taverna.workflowmodel.health.HealthChecker;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class DockerActivityHealthChecker implements HealthChecker<Object> {
+
+    @Override
+    public boolean canVisit(Object o) {
+        return o instanceof DockerActivity;
+    }
+
+    @Override
+    public VisitReport visit(Object o, List<Object> list) {
+        DockerActivity activity = (DockerActivity) o;
+        DockerContainerConfiguration contCfg = 
activity.getContainerConfiguration();
+        String containerName = contCfg.getName();
+        boolean createValid = ValidationUtil.validateCreateContainer(contCfg, 
containerName);
+
+        List<VisitReport> reports = new ArrayList<VisitReport>();
+
+        if (createValid) {
+            reports.add(new VisitReport(HealthCheck.getInstance(), activity,
+                    "Docker create container operation is healthy",
+                    HealthCheck.NO_PROBLEM, VisitReport.Status.OK));
+        } else {
+            reports.add(new VisitReport(HealthCheck.getInstance(), activity,
+                    "REST Activity - bad configuration",
+                    HealthCheck.INVALID_CONFIGURATION, 
VisitReport.Status.SEVERE));
+        }
+
+        // collection all reports together
+        VisitReport.Status worstStatus = VisitReport.getWorstStatus(reports);
+        VisitReport report = new VisitReport(HealthCheck.getInstance(), 
activity,
+                "REST Activity Report", HealthCheck.NO_PROBLEM, worstStatus, 
reports);
+
+        return report;
+    }
+
+    @Override
+    public boolean isTimeConsuming() {
+        return false;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/fe2de44f/taverna-docker-activity/src/main/resources/META-INF/spring/docker-activity-context-osgi.xml
----------------------------------------------------------------------
diff --git 
a/taverna-docker-activity/src/main/resources/META-INF/spring/docker-activity-context-osgi.xml
 
b/taverna-docker-activity/src/main/resources/META-INF/spring/docker-activity-context-osgi.xml
index 6875bfb..69540e7 100755
--- 
a/taverna-docker-activity/src/main/resources/META-INF/spring/docker-activity-context-osgi.xml
+++ 
b/taverna-docker-activity/src/main/resources/META-INF/spring/docker-activity-context-osgi.xml
@@ -25,5 +25,6 @@
                       
http://www.springframework.org/schema/osgi/spring-osgi.xsd";>
 
     <reference id="configurationManager" 
interface="org.apache.taverna.configuration.ConfigurationManager" />
+    <service ref="dockerActivityHealthChecker" 
interface="org.apache.taverna.workflowmodel.health.HealthChecker" />
 
 </beans:beans>

http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/fe2de44f/taverna-docker-activity/src/main/resources/META-INF/spring/docker-activity-context.xml
----------------------------------------------------------------------
diff --git 
a/taverna-docker-activity/src/main/resources/META-INF/spring/docker-activity-context.xml
 
b/taverna-docker-activity/src/main/resources/META-INF/spring/docker-activity-context.xml
index c3bb871..90d99eb 100755
--- 
a/taverna-docker-activity/src/main/resources/META-INF/spring/docker-activity-context.xml
+++ 
b/taverna-docker-activity/src/main/resources/META-INF/spring/docker-activity-context.xml
@@ -26,4 +26,6 @@
         <constructor-arg name="configurationManager" 
ref="configurationManager" />
     </bean>
 
+    <bean id="dockerActivityHealthChecker" 
class="org.apache.taverna.activities.docker.DockerActivityHealthChecker" />
+
 </beans>

http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/fe2de44f/taverna-docker-activity/src/test/java/org/apache/taverna/activities/docker/test/DockerActivityTest.java
----------------------------------------------------------------------
diff --git 
a/taverna-docker-activity/src/test/java/org/apache/taverna/activities/docker/test/DockerActivityTest.java
 
b/taverna-docker-activity/src/test/java/org/apache/taverna/activities/docker/test/DockerActivityTest.java
index 751c247..8d69092 100755
--- 
a/taverna-docker-activity/src/test/java/org/apache/taverna/activities/docker/test/DockerActivityTest.java
+++ 
b/taverna-docker-activity/src/test/java/org/apache/taverna/activities/docker/test/DockerActivityTest.java
@@ -52,7 +52,7 @@ public class DockerActivityTest {
     public static final String DOCKER_REGISTRY = 
"https://registry-1.docker.io/v2";;
 
     public static void main(String[] args) throws Exception {
-    DockerActivityTest activityTest = new DockerActivityTest();
+        DockerActivityTest activityTest = new DockerActivityTest();
         activityTest.setup();
         activityTest.testAll();
     }
@@ -81,12 +81,12 @@ public class DockerActivityTest {
 
     @Test
     public void testAll() throws Exception {
-//        testCreateContainer();
+        testCreateContainer();
         testInspectImage();
-//        testListContainers();
-//        testStartContainer();
-//        testStopContainer();
-//        testDeleteContainer();
+        testListContainers();
+        testStartContainer();
+        testStopContainer();
+        testDeleteContainer();
     }
 
     /**

Reply via email to