You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by dr...@apache.org on 2017/06/29 15:35:47 UTC
[05/50] [abbrv] brooklyn-server git commit: Use KubernetesPod as
entity for container deployment
Use KubernetesPod as entity for container deployment
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/eb94f08a
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/eb94f08a
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/eb94f08a
Branch: refs/heads/master
Commit: eb94f08aa791c8cbab53c462a44fe8d3dbdf3522
Parents: b78362c
Author: Andrew Donald Kennedy <an...@cloudsoftcorp.com>
Authored: Sat Jan 28 00:55:22 2017 +0000
Committer: Andrew Donald Kennedy <an...@cloudsoftcorp.com>
Committed: Fri May 19 14:01:20 2017 +0100
----------------------------------------------------------------------
.../kubernetes/entity/KubernetesPod.java | 6 +-
.../kubernetes/entity/KubernetesPodImpl.java | 4 +-
.../kubernetes/location/KubernetesLocation.java | 2 +-
.../location/KubernetesLocationConfig.java | 17 ++--
.../KubernetesLocationYamlLiveTest.java | 100 ++++++++++---------
.../location/SimpleBlueprintsLiveTest.java | 37 -------
6 files changed, 66 insertions(+), 100 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/eb94f08a/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 9f23037..ae9bdb3 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
@@ -1,8 +1,10 @@
package io.cloudsoft.amp.containerservice.kubernetes.entity;
import org.apache.brooklyn.api.entity.ImplementedBy;
-import org.apache.brooklyn.entity.stock.BasicStartable;
+
+import io.cloudsoft.amp.containerservice.dockercontainer.DockerContainer;
+import io.cloudsoft.amp.containerservice.kubernetes.location.KubernetesLocationConfig;
@ImplementedBy(KubernetesPodImpl.class)
-public interface KubernetesPod extends BasicStartable {
+public interface KubernetesPod extends DockerContainer, KubernetesLocationConfig {
}
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/eb94f08a/kubernetes-location/src/main/java/io/cloudsoft/amp/containerservice/kubernetes/entity/KubernetesPodImpl.java
----------------------------------------------------------------------
diff --git a/kubernetes-location/src/main/java/io/cloudsoft/amp/containerservice/kubernetes/entity/KubernetesPodImpl.java b/kubernetes-location/src/main/java/io/cloudsoft/amp/containerservice/kubernetes/entity/KubernetesPodImpl.java
index 774a276..2acf734 100644
--- a/kubernetes-location/src/main/java/io/cloudsoft/amp/containerservice/kubernetes/entity/KubernetesPodImpl.java
+++ b/kubernetes-location/src/main/java/io/cloudsoft/amp/containerservice/kubernetes/entity/KubernetesPodImpl.java
@@ -1,7 +1,7 @@
package io.cloudsoft.amp.containerservice.kubernetes.entity;
-import org.apache.brooklyn.entity.stock.BasicStartableImpl;
+import io.cloudsoft.amp.containerservice.dockercontainer.DockerContainerImpl;
-public class KubernetesPodImpl extends BasicStartableImpl implements KubernetesPod {
+public class KubernetesPodImpl extends DockerContainerImpl implements KubernetesPod {
}
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/eb94f08a/kubernetes-location/src/main/java/io/cloudsoft/amp/containerservice/kubernetes/location/KubernetesLocation.java
----------------------------------------------------------------------
diff --git a/kubernetes-location/src/main/java/io/cloudsoft/amp/containerservice/kubernetes/location/KubernetesLocation.java b/kubernetes-location/src/main/java/io/cloudsoft/amp/containerservice/kubernetes/location/KubernetesLocation.java
index 4543b4d..1cf9545 100644
--- a/kubernetes-location/src/main/java/io/cloudsoft/amp/containerservice/kubernetes/location/KubernetesLocation.java
+++ b/kubernetes-location/src/main/java/io/cloudsoft/amp/containerservice/kubernetes/location/KubernetesLocation.java
@@ -98,7 +98,7 @@ import io.fabric8.kubernetes.api.model.extensions.DeploymentStatus;
import io.fabric8.kubernetes.client.KubernetesClient;
import io.fabric8.kubernetes.client.KubernetesClientException;
-public class KubernetesLocation extends AbstractLocation implements MachineProvisioningLocation<MachineLocation>, KubernetesLocationConfig {
+public class KubernetesLocation extends AbstractLocation implements MachineProvisioningLocation<MachineLocation>, CloudLocationConfig, KubernetesLocationConfig {
/*
* TODO
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/eb94f08a/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 0b90cac..c2e9d89 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
@@ -7,7 +7,6 @@ import org.apache.brooklyn.api.sensor.AttributeSensor;
import org.apache.brooklyn.config.ConfigKey;
import org.apache.brooklyn.core.config.ConfigKeys;
import org.apache.brooklyn.core.location.LocationConfigKeys;
-import org.apache.brooklyn.core.location.cloud.CloudLocationConfig;
import org.apache.brooklyn.core.sensor.Sensors;
import org.apache.brooklyn.util.core.flags.SetFromFlag;
import org.apache.brooklyn.util.time.Duration;
@@ -16,7 +15,7 @@ import com.google.common.base.Predicates;
import com.google.common.collect.ImmutableMap;
import com.google.common.reflect.TypeToken;
-public interface KubernetesLocationConfig extends CloudLocationConfig {
+public interface KubernetesLocationConfig {
@SetFromFlag("endpoint")
ConfigKey<String> MASTER_URL = LocationConfigKeys.CLOUD_ENDPOINT;
@@ -89,13 +88,6 @@ public interface KubernetesLocationConfig extends CloudLocationConfig {
.constraint(Predicates.<Duration>notNull())
.build();
- ConfigKey<String> NAMESPACE = ConfigKeys.builder(String.class)
- .name("namespace")
- .description("Namespace where resources will live; the default is 'amp'")
- .defaultValue("amp")
- .constraint(Predicates.<String>notNull())
- .build();
-
ConfigKey<Boolean> CREATE_NAMESPACE = ConfigKeys.builder(Boolean.class)
.name("namespace.create")
.description("Whether to create the namespace if it does not exist")
@@ -110,6 +102,13 @@ public interface KubernetesLocationConfig extends CloudLocationConfig {
.constraint(Predicates.<Boolean>notNull())
.build();
+ ConfigKey<String> NAMESPACE = ConfigKeys.builder(String.class)
+ .name("namespace")
+ .description("Namespace where resources will live; the default is 'amp'")
+ .defaultValue("amp")
+ .constraint(Predicates.<String>notNull())
+ .build();
+
@SuppressWarnings("serial")
ConfigKey<List<String>> PERSISTENT_VOLUMES = ConfigKeys.builder(new TypeToken<List<String>>() {})
.name("persistentVolumes")
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/eb94f08a/kubernetes-location/src/test/java/io/cloudsoft/amp/containerservice/kubernetes/location/KubernetesLocationYamlLiveTest.java
----------------------------------------------------------------------
diff --git a/kubernetes-location/src/test/java/io/cloudsoft/amp/containerservice/kubernetes/location/KubernetesLocationYamlLiveTest.java b/kubernetes-location/src/test/java/io/cloudsoft/amp/containerservice/kubernetes/location/KubernetesLocationYamlLiveTest.java
index 11c78ef..962be36 100644
--- a/kubernetes-location/src/test/java/io/cloudsoft/amp/containerservice/kubernetes/location/KubernetesLocationYamlLiveTest.java
+++ b/kubernetes-location/src/test/java/io/cloudsoft/amp/containerservice/kubernetes/location/KubernetesLocationYamlLiveTest.java
@@ -30,6 +30,7 @@ import org.apache.brooklyn.core.sensor.Sensors;
import org.apache.brooklyn.entity.software.base.EmptySoftwareProcess;
import org.apache.brooklyn.entity.software.base.SoftwareProcess;
import org.apache.brooklyn.entity.software.base.VanillaSoftwareProcess;
+import org.apache.brooklyn.entity.stock.BasicStartable;
import org.apache.brooklyn.location.ssh.SshMachineLocation;
import org.apache.brooklyn.util.net.Networking;
import org.apache.brooklyn.util.text.Identifiers;
@@ -42,7 +43,6 @@ import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
import com.google.common.net.HostAndPort;
-import io.cloudsoft.amp.containerservice.dockercontainer.DockerContainer;
import io.cloudsoft.amp.containerservice.kubernetes.entity.KubernetesPod;
import io.cloudsoft.amp.containerservice.kubernetes.entity.KubernetesResource;
@@ -70,7 +70,7 @@ public class KubernetesLocationYamlLiveTest extends AbstractYamlTest {
locationYaml = Joiner.on("\n").join(
"location:",
" kubernetes:",
- " " + KubernetesLocationConfig.CLOUD_ENDPOINT.getName() + ": \"" + KUBERNETES_ENDPOINT + "\"",
+ " " + KubernetesLocationConfig.MASTER_URL.getName() + ": \"" + KUBERNETES_ENDPOINT + "\"",
" " + (Strings.isBlank(IDENTITY) ? "" : "identity: "+IDENTITY),
" " + (Strings.isBlank(CREDENTIAL) ? "" : "credential: "+CREDENTIAL));
}
@@ -195,12 +195,12 @@ public class KubernetesLocationYamlLiveTest extends AbstractYamlTest {
String yaml = Joiner.on("\n").join(
locationYaml,
"services:",
- "- type: " + DockerContainer.class.getName(),
+ "- type: " + KubernetesPod.class.getName(),
" brooklyn.config:",
" docker.container.imageName: tomcat",
" docker.container.inboundPorts: [ \"8080\" ]");
Entity app = createStartWaitAndLogApplication(yaml);
- DockerContainer entity = Iterables.getOnlyElement(Entities.descendantsAndSelf(app, DockerContainer.class));
+ KubernetesPod entity = Iterables.getOnlyElement(Entities.descendantsAndSelf(app, KubernetesPod.class));
Entities.dumpInfo(app);
String publicMapped = assertAttributeEventuallyNonNull(entity, Sensors.newStringSensor("docker.port.8080.mapped.public"));
@@ -212,32 +212,64 @@ public class KubernetesLocationYamlLiveTest extends AbstractYamlTest {
@Test(groups={"Live"})
- public void testWordpressInPod() throws Exception {
+ public void testWordpressInContainers() throws Exception {
// TODO docker.container.inboundPorts doesn't accept list of ints - need to use quotes
String randomId = Identifiers.makeRandomLowercaseId(4);
String yaml = Joiner.on("\n").join(
locationYaml,
"services:",
- "- type: " + KubernetesPod.class.getName(),
- " brooklyn.children:",
- " - type: " + DockerContainer.class.getName(),
+ " - type: " + KubernetesPod.class.getName(),
+ " brooklyn.children:",
+ " - type: " + KubernetesPod.class.getName(),
+ " id: wordpress-mysql",
+ " name: mysql",
+ " brooklyn.config:",
+ " docker.container.imageName: mysql:5.6",
+ " docker.container.inboundPorts:",
+ " - \"3306\"",
+ " docker.container.environment:",
+ " MYSQL_ROOT_PASSWORD: \"password\"",
+ " provisioning.properties:",
+ " deployment: wordpress-mysql-" + randomId,
+ " - type: " + KubernetesPod.class.getName(),
+ " id: wordpress",
+ " name: wordpress",
+ " brooklyn.config:",
+ " docker.container.imageName: wordpress:4.4-apache",
+ " docker.container.inboundPorts:",
+ " - \"80\"",
+ " docker.container.environment:",
+ " WORDPRESS_DB_HOST: \"wordpress-mysql\"",
+ " WORDPRESS_DB_PASSWORD: \"password\"",
+ " provisioning.properties:",
+ " deployment: wordpress-" + randomId);
+
+ runWordpress(yaml);
+ }
+
+ @Test(groups={"Live"})
+ public void testWordpressInSeperatePods() throws Exception {
+ // TODO docker.container.inboundPorts doesn't accept list of ints - need to use quotes
+ String randomId = Identifiers.makeRandomId(4);
+ String yaml = Joiner.on("\n").join(
+ locationYaml,
+ "services:",
+ " - type: " + KubernetesPod.class.getName(),
" id: wordpress-mysql",
" name: mysql",
" brooklyn.config:",
" docker.container.imageName: mysql:5.6",
" docker.container.inboundPorts:",
- " - \"3306\"",
+ " - \"3306\"",
" docker.container.environment:",
" MYSQL_ROOT_PASSWORD: \"password\"",
- " provisioning.properties:",
- " deployment: wordpress-mysql-" + randomId,
- " - type: " + DockerContainer.class.getName(),
+ " - type: " + KubernetesPod.class.getName(),
" id: wordpress",
" name: wordpress",
" brooklyn.config:",
" docker.container.imageName: wordpress:4-apache",
" docker.container.inboundPorts:",
- " - \"80\"",
+ " - \"80\"",
" docker.container.environment:",
" WORDPRESS_DB_HOST: \"wordpress-mysql\"",
" WORDPRESS_DB_PASSWORD: \"password\"",
@@ -247,45 +279,17 @@ public class KubernetesLocationYamlLiveTest extends AbstractYamlTest {
runWordpress(yaml);
}
- @Test(groups={"Live"})
- public void testWordpressInSeperatePods() throws Exception {
- // TODO docker.container.inboundPorts doesn't accept list of ints - need to use quotes
- String yaml = Joiner.on("\n").join(
- locationYaml,
- "services:",
- "- type: " + DockerContainer.class.getName(),
- " id: wordpress-mysql",
- " name: mysql",
- " brooklyn.config:",
- " docker.container.imageName: mysql:5.6",
- " docker.container.inboundPorts:",
- " - \"3306\"",
- " docker.container.environment:",
- " MYSQL_ROOT_PASSWORD: \"password\"",
- "- type: " + DockerContainer.class.getName(),
- " id: wordpress",
- " name: wordpress",
- " brooklyn.config:",
- " docker.container.imageName: wordpress:4-apache",
- " docker.container.inboundPorts:",
- " - \"80\"",
- " docker.container.environment:",
- " WORDPRESS_DB_HOST: \"wordpress-mysql\"",
- " WORDPRESS_DB_PASSWORD: \"password\"");
- runWordpress(yaml);
- }
-
/**
- * Assumes that the {@link DockerContainer} entities have display names of "mysql" and "wordpress",
+ * Assumes that the {@link KubernetesPod} entities have display names of "mysql" and "wordpress",
* and that they use ports 3306 and 80 respectively.
*/
protected void runWordpress(String yaml) throws Exception {
Entity app = createStartWaitAndLogApplication(yaml);
Entities.dumpInfo(app);
- Iterable<DockerContainer> containers = Entities.descendantsAndSelf(app, DockerContainer.class);
- DockerContainer mysql = Iterables.find(containers, EntityPredicates.displayNameEqualTo("mysql"));
- DockerContainer wordpress = Iterables.find(containers, EntityPredicates.displayNameEqualTo("wordpress"));
+ Iterable<KubernetesPod> containers = Entities.descendantsAndSelf(app, KubernetesPod.class);
+ KubernetesPod mysql = Iterables.find(containers, EntityPredicates.displayNameEqualTo("mysql"));
+ KubernetesPod wordpress = Iterables.find(containers, EntityPredicates.displayNameEqualTo("wordpress"));
String mysqlPublicPort = assertAttributeEventuallyNonNull(mysql, Sensors.newStringSensor("docker.port.3306.mapped.public"));
assertReachableEventually(HostAndPort.fromString(mysqlPublicPort));
@@ -301,9 +305,7 @@ public class KubernetesLocationYamlLiveTest extends AbstractYamlTest {
String yaml = Joiner.on("\n").join(
locationYaml,
"services:",
- "- type: " + KubernetesPod.class.getName(),
- " brooklyn.children:",
- " - type: " + DockerContainer.class.getName(),
+ " - type: " + KubernetesPod.class.getName(),
" brooklyn.config:",
" docker.container.imageName: tomcat",
" docker.container.inboundPorts:",
@@ -312,7 +314,7 @@ public class KubernetesLocationYamlLiveTest extends AbstractYamlTest {
" CLUSTER_ID: \"id\"",
" CLUSTER_TOKEN: \"token\"");
Entity app = createStartWaitAndLogApplication(yaml);
- DockerContainer container = Iterables.getOnlyElement(Entities.descendantsAndSelf(app, DockerContainer.class));
+ KubernetesPod container = Iterables.getOnlyElement(Entities.descendantsAndSelf(app, KubernetesPod.class));
Entities.dumpInfo(app);
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/eb94f08a/kubernetes-location/src/test/java/io/cloudsoft/amp/containerservice/kubernetes/location/SimpleBlueprintsLiveTest.java
----------------------------------------------------------------------
diff --git a/kubernetes-location/src/test/java/io/cloudsoft/amp/containerservice/kubernetes/location/SimpleBlueprintsLiveTest.java b/kubernetes-location/src/test/java/io/cloudsoft/amp/containerservice/kubernetes/location/SimpleBlueprintsLiveTest.java
deleted file mode 100644
index 34e57e6..0000000
--- a/kubernetes-location/src/test/java/io/cloudsoft/amp/containerservice/kubernetes/location/SimpleBlueprintsLiveTest.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package io.cloudsoft.amp.containerservice.kubernetes.location;
-
-import org.apache.brooklyn.launcher.blueprints.AbstractBlueprintTest;
-import org.testng.annotations.Test;
-
-public class SimpleBlueprintsLiveTest extends AbstractBlueprintTest {
-
- // TODO The yaml hard-codes a k8s endpoint URL that is no longer running
- @Test(groups={"Live", "Broken"}, enabled=false)
- public void testSimpleServer() throws Exception {
- runTest("blueprints/simple-server-on-kubernetes.yaml");
- }
-
- // TODO The yaml hard-codes a k8s endpoint URL that is no longer running
- @Test(groups={"Live", "Broken"}, enabled=false)
- public void testVanillaSoftwareProcess() throws Exception {
- runTest("blueprints/vanilla-software-process-on-kubernetes.yaml");
- }
-
- // TODO The yaml hard-codes a k8s endpoint URL that is no longer running
- @Test(groups={"Live", "Broken"}, enabled=false)
- public void testTomcatDockerImage() throws Exception {
- runTest("blueprints/tomcat-docker-image-on-kubernetes.yaml");
- }
-
- // TODO The yaml hard-codes a k8s endpoint URL that is no longer running
- @Test(groups={"Live", "Broken"}, enabled=false)
- public void testWordpressDockerImage() throws Exception {
- runTest("blueprints/mysql_wordpress-docker-images-on-kubernetes.yaml");
- }
-
- // TODO The yaml hard-codes a k8s endpoint URL that is no longer running
- @Test(groups={"Live", "Broken"}, enabled=false)
- public void testIronRunnerDockerImage() throws Exception {
- runTest("blueprints/iron_runner-docker-image-on-kubernetes.yaml");
- }
-}