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(); } /**
