Update OpenShift with placeholder entities extending Kubernetes
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/3d000954 Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/3d000954 Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/3d000954 Branch: refs/heads/master Commit: 3d0009546a2d0a2358f952d955ad813070d4d9b6 Parents: 422d78d Author: Andrew Donald Kennedy <[email protected]> Authored: Sat Jan 28 03:33:57 2017 +0000 Committer: Andrew Donald Kennedy <[email protected]> Committed: Fri May 19 14:01:20 2017 +0100 ---------------------------------------------------------------------- .../kubernetes/entity/KubernetesPod.java | 8 ++--- .../location/KubernetesLocationConfig.java | 6 ++++ .../openshift/entity/OpenShiftPod.java | 10 ++++++ .../openshift/entity/OpenShiftPodImpl.java | 7 ++++ .../openshift/entity/OpenShiftResource.java | 15 +++++++++ .../openshift/entity/OpenShiftResourceImpl.java | 6 ++++ .../openshift/location/OpenShiftLocation.java | 15 +++++---- .../location/OpenShiftLocationYamlLiveTest.java | 19 +++++++++-- .../location/SimpleBlueprintsLiveTest.java | 35 -------------------- 9 files changed, 71 insertions(+), 50 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/3d000954/kubernetes-location/src/main/java/io/cloudsoft/amp/containerservice/kubernetes/entity/KubernetesPod.java ---------------------------------------------------------------------- diff --git a/kubernetes-location/src/main/java/io/cloudsoft/amp/containerservice/kubernetes/entity/KubernetesPod.java b/kubernetes-location/src/main/java/io/cloudsoft/amp/containerservice/kubernetes/entity/KubernetesPod.java index 475f941..e7858ba 100644 --- a/kubernetes-location/src/main/java/io/cloudsoft/amp/containerservice/kubernetes/entity/KubernetesPod.java +++ b/kubernetes-location/src/main/java/io/cloudsoft/amp/containerservice/kubernetes/entity/KubernetesPod.java @@ -23,6 +23,8 @@ public interface KubernetesPod extends DockerContainer { ConfigKey<String> NAMESPACE = KubernetesLocationConfig.NAMESPACE; + ConfigKey<Boolean> PRIVILEGED = KubernetesLocationConfig.PRIVILEGED; + ConfigKey<String> POD = ConfigKeys.builder(String.class) .name("pod") .description("The name of the pod") @@ -61,12 +63,6 @@ public interface KubernetesPod extends DockerContainer { .description("Container resource limits for the pod") .build(); - ConfigKey<Boolean> PRIVILEGED = ConfigKeys.builder(Boolean.class) - .name("privileged") - .description("Whether the container is privileged") - .defaultValue(false) - .build(); - MapConfigKey<Object> METADATA = new MapConfigKey.Builder<Object>(Object.class, "metadata") .description("Metadata to set on the pod") .defaultValue(ImmutableMap.<String, Object>of()) http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/3d000954/kubernetes-location/src/main/java/io/cloudsoft/amp/containerservice/kubernetes/location/KubernetesLocationConfig.java ---------------------------------------------------------------------- diff --git a/kubernetes-location/src/main/java/io/cloudsoft/amp/containerservice/kubernetes/location/KubernetesLocationConfig.java b/kubernetes-location/src/main/java/io/cloudsoft/amp/containerservice/kubernetes/location/KubernetesLocationConfig.java index fdb658b..c293413 100644 --- a/kubernetes-location/src/main/java/io/cloudsoft/amp/containerservice/kubernetes/location/KubernetesLocationConfig.java +++ b/kubernetes-location/src/main/java/io/cloudsoft/amp/containerservice/kubernetes/location/KubernetesLocationConfig.java @@ -107,6 +107,12 @@ public interface KubernetesLocationConfig extends CloudLocationConfig { .constraint(Predicates.<String>notNull()) .build(); + ConfigKey<Boolean> PRIVILEGED = ConfigKeys.builder(Boolean.class) + .name("privileged") + .description("Whether the pods use privileged containers") + .defaultValue(false) + .build(); + @SuppressWarnings("serial") ConfigKey<Map<String, ?>> ENV = ConfigKeys.builder(new TypeToken<Map<String, ?>>() {}) .name("env") http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/3d000954/openshift-location/src/main/java/io/cloudsoft/amp/containerservice/openshift/entity/OpenShiftPod.java ---------------------------------------------------------------------- diff --git a/openshift-location/src/main/java/io/cloudsoft/amp/containerservice/openshift/entity/OpenShiftPod.java b/openshift-location/src/main/java/io/cloudsoft/amp/containerservice/openshift/entity/OpenShiftPod.java new file mode 100644 index 0000000..0073904 --- /dev/null +++ b/openshift-location/src/main/java/io/cloudsoft/amp/containerservice/openshift/entity/OpenShiftPod.java @@ -0,0 +1,10 @@ +package io.cloudsoft.amp.containerservice.openshift.entity; + +import org.apache.brooklyn.api.entity.ImplementedBy; + +import io.cloudsoft.amp.containerservice.kubernetes.entity.KubernetesPod; + +@ImplementedBy(OpenShiftPodImpl.class) +public interface OpenShiftPod extends KubernetesPod { + +} http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/3d000954/openshift-location/src/main/java/io/cloudsoft/amp/containerservice/openshift/entity/OpenShiftPodImpl.java ---------------------------------------------------------------------- diff --git a/openshift-location/src/main/java/io/cloudsoft/amp/containerservice/openshift/entity/OpenShiftPodImpl.java b/openshift-location/src/main/java/io/cloudsoft/amp/containerservice/openshift/entity/OpenShiftPodImpl.java new file mode 100644 index 0000000..7e95533 --- /dev/null +++ b/openshift-location/src/main/java/io/cloudsoft/amp/containerservice/openshift/entity/OpenShiftPodImpl.java @@ -0,0 +1,7 @@ +package io.cloudsoft.amp.containerservice.openshift.entity; + +mport io.cloudsoft.amp.containerservice.kubernetes.entity.KubernetesPodImpl; + +public class OpenShiftPodImpl extends KubernetesPodImpl implements OpenShiftPod { + +} http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/3d000954/openshift-location/src/main/java/io/cloudsoft/amp/containerservice/openshift/entity/OpenShiftResource.java ---------------------------------------------------------------------- diff --git a/openshift-location/src/main/java/io/cloudsoft/amp/containerservice/openshift/entity/OpenShiftResource.java b/openshift-location/src/main/java/io/cloudsoft/amp/containerservice/openshift/entity/OpenShiftResource.java new file mode 100644 index 0000000..d4c8d95 --- /dev/null +++ b/openshift-location/src/main/java/io/cloudsoft/amp/containerservice/openshift/entity/OpenShiftResource.java @@ -0,0 +1,15 @@ +package io.cloudsoft.amp.containerservice.openshift.entity; + +import org.apache.brooklyn.api.entity.ImplementedBy; + +import io.cloudsoft.amp.containerservice.kubernetes.entity.KubernetesResource; + +@ImplementedBy(OpenShiftResourceImpl.class) +public interface OpenShiftResource extends KubernetesResource { + + String DEPLOYMENT_CONFIG = "DeploymentConfig"; + String PROJECT = "Project"; + String TEMPLATE = "Template"; + String BUILD_CONFIG = "BuildConfig"; + +} http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/3d000954/openshift-location/src/main/java/io/cloudsoft/amp/containerservice/openshift/entity/OpenShiftResourceImpl.java ---------------------------------------------------------------------- diff --git a/openshift-location/src/main/java/io/cloudsoft/amp/containerservice/openshift/entity/OpenShiftResourceImpl.java b/openshift-location/src/main/java/io/cloudsoft/amp/containerservice/openshift/entity/OpenShiftResourceImpl.java new file mode 100644 index 0000000..53badcc --- /dev/null +++ b/openshift-location/src/main/java/io/cloudsoft/amp/containerservice/openshift/entity/OpenShiftResourceImpl.java @@ -0,0 +1,6 @@ +package io.cloudsoft.amp.containerservice.openshift.entity; + +import io.cloudsoft.amp.containerservice.kubernetes.entity.KubernetesResourceImpl; + +public class OpenShiftResourceImpl extends KubernetesResourceImpl implements OpenShiftResource { +} http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/3d000954/openshift-location/src/main/java/io/cloudsoft/amp/containerservice/openshift/location/OpenShiftLocation.java ---------------------------------------------------------------------- diff --git a/openshift-location/src/main/java/io/cloudsoft/amp/containerservice/openshift/location/OpenShiftLocation.java b/openshift-location/src/main/java/io/cloudsoft/amp/containerservice/openshift/location/OpenShiftLocation.java index 91fbee6..c6f0190 100644 --- a/openshift-location/src/main/java/io/cloudsoft/amp/containerservice/openshift/location/OpenShiftLocation.java +++ b/openshift-location/src/main/java/io/cloudsoft/amp/containerservice/openshift/location/OpenShiftLocation.java @@ -16,7 +16,8 @@ import com.google.common.collect.ImmutableSet; import io.cloudsoft.amp.containerservice.kubernetes.location.KubernetesClientRegistry; import io.cloudsoft.amp.containerservice.kubernetes.location.KubernetesLocation; -import io.cloudsoft.amp.containerservice.kubernetes.location.KubernetesLocationConfig; +import io.cloudsoft.amp.containerservice.openshift.entity.OpenShiftPod; +import io.cloudsoft.amp.containerservice.openshift.entity.OpenShiftResource; import io.fabric8.kubernetes.api.model.Container; import io.fabric8.kubernetes.api.model.HasMetadata; import io.fabric8.kubernetes.api.model.Namespace; @@ -65,13 +66,13 @@ public class OpenShiftLocation extends KubernetesLocation implements OpenShiftLo try { switch (resourceType) { - case "DeploymentConfig": + case OpenShiftResource.DEPLOYMENT_CONFIG: return client.deploymentConfigs().inNamespace(namespace).withName(resourceName).delete(); - case "Project": + case OpenShiftResource.PROJECT: return client.projects().withName(resourceName).delete(); - case "Template": + case OpenShiftResource.TEMPLATE: return client.templates().inNamespace(namespace).withName(resourceName).delete(); - case "BuildConfig": + case OpenShiftResource.BUILD_CONFIG: return client.buildConfigs().inNamespace(namespace).withName(resourceName).delete(); } } catch (KubernetesClientException kce) { @@ -86,11 +87,11 @@ public class OpenShiftLocation extends KubernetesLocation implements OpenShiftLo return true; } - if (resourceType.equals("DeploymentConfig")) { + if (resourceType.equals(OpenShiftResource.DEPLOYMENT_CONFIG)) { DeploymentConfig deploymentConfig = (DeploymentConfig) metadata; Map<String, String> labels = deploymentConfig.getSpec().getTemplate().getMetadata().getLabels(); Pod pod = getPod(namespace, labels); - entity.sensors().set(KubernetesLocationConfig.KUBERNETES_POD, pod.getMetadata().getName()); + entity.sensors().set(OpenShiftPod.KUBERNETES_POD, pod.getMetadata().getName()); InetAddress node = Networking.getInetAddressWithFixedName(pod.getSpec().getNodeName()); String podAddress = pod.getStatus().getPodIP(); http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/3d000954/openshift-location/src/test/java/io/cloudsoft/amp/containerservice/openshift/location/OpenShiftLocationYamlLiveTest.java ---------------------------------------------------------------------- diff --git a/openshift-location/src/test/java/io/cloudsoft/amp/containerservice/openshift/location/OpenShiftLocationYamlLiveTest.java b/openshift-location/src/test/java/io/cloudsoft/amp/containerservice/openshift/location/OpenShiftLocationYamlLiveTest.java index 104f148..6dd4773 100644 --- a/openshift-location/src/test/java/io/cloudsoft/amp/containerservice/openshift/location/OpenShiftLocationYamlLiveTest.java +++ b/openshift-location/src/test/java/io/cloudsoft/amp/containerservice/openshift/location/OpenShiftLocationYamlLiveTest.java @@ -7,11 +7,12 @@ import static io.cloudsoft.amp.containerservice.openshift.location.OpenShiftLoca import static io.cloudsoft.amp.containerservice.openshift.location.OpenShiftLocationLiveTest.OPENSHIFT_ENDPOINT; import org.testng.annotations.BeforeMethod; +import org.testng.annotations.Test; import com.google.common.base.Joiner; import io.cloudsoft.amp.containerservice.kubernetes.location.KubernetesLocationYamlLiveTest; -import io.cloudsoft.amp.containerservice.openshift.location.OpenShiftLocation; +import io.cloudsoft.amp.containerservice.openshift.entity.OpenShiftPod; /** * Tests YAML apps via the {@code openshift"} location, to an OpenShift endpoint. @@ -53,7 +54,7 @@ public class OpenShiftLocationYamlLiveTest extends KubernetesLocationYamlLiveTes @Override public void setUp() throws Exception { super.setUp(); - + locationYaml = Joiner.on("\n").join( "location:", " openshift:", @@ -65,4 +66,18 @@ public class OpenShiftLocationYamlLiveTest extends KubernetesLocationYamlLiveTes " " + OpenShiftLocation.PRIVILEGED.getName() + ": true", " " + OpenShiftLocation.LOGIN_USER_PASSWORD.getName() + ": p4ssw0rd"); } + + @Test(groups={"Live"}) + public void testTomcatOpenShiftPod() throws Exception { + String yaml = Joiner.on("\n").join( + locationYaml, + "services:", + " - type: " + OpenShiftPod.class.getName(), + " brooklyn.config:", + " docker.container.imageName: tomcat", + " docker.container.inboundPorts: [ \"8080\" ]"); + + runTomcat(yaml); + } + } http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/3d000954/openshift-location/src/test/java/io/cloudsoft/amp/containerservice/openshift/location/SimpleBlueprintsLiveTest.java ---------------------------------------------------------------------- diff --git a/openshift-location/src/test/java/io/cloudsoft/amp/containerservice/openshift/location/SimpleBlueprintsLiveTest.java b/openshift-location/src/test/java/io/cloudsoft/amp/containerservice/openshift/location/SimpleBlueprintsLiveTest.java deleted file mode 100644 index 25ad5c0..0000000 --- a/openshift-location/src/test/java/io/cloudsoft/amp/containerservice/openshift/location/SimpleBlueprintsLiveTest.java +++ /dev/null @@ -1,35 +0,0 @@ -package io.cloudsoft.amp.containerservice.openshift.location; - -import org.apache.brooklyn.launcher.blueprints.AbstractBlueprintTest; -import org.testng.annotations.Test; - -public class SimpleBlueprintsLiveTest extends AbstractBlueprintTest { - - // TODO These blueprints won't work because they don't have enough config to make the location - // viable - e.g. no cert files, etc. - - @Test(groups={"Live", "Broken"}, enabled=false) - public void testSimpleServer() throws Exception { - runTest("blueprints/simple-server-on-openshift.yaml"); - } - - @Test(groups={"Live", "Broken"}, enabled=false) - public void testVanillaSoftwareProcess() throws Exception { - runTest("blueprints/vanilla-software-process-on-openshift.yaml"); - } - - @Test(groups={"Live", "Broken"}, enabled=false) - public void testTomcatDockerImage() throws Exception { - runTest("blueprints/tomcat-docker-image-on-openshift.yaml"); - } - - @Test(groups={"Live", "Broken"}, enabled=false) - public void testWordpressDockerImage() throws Exception { - runTest("blueprints/mysql_wordpress-docker-images-on-openshift.yaml"); - } - - @Test(groups={"Live", "Broken"}, enabled=false) - public void testIronRunnerDockerImage() throws Exception { - runTest("blueprints/iron_runner-docker-image-on-openshift.yaml"); - } -}
