a handy yaml launcher
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-library/repo Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-library/commit/30f87cce Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-library/tree/30f87cce Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-library/diff/30f87cce Branch: refs/heads/0.6.0 Commit: 30f87cce88349d1b8b46e3a00c27b0077893f994 Parents: f5c6402 Author: Alex Heneveld <[email protected]> Authored: Thu Oct 31 19:49:12 2013 -0700 Committer: Alex Heneveld <[email protected]> Committed: Thu Nov 14 21:21:26 2013 +0000 ---------------------------------------------------------------------- sandbox/camp/pom.xml | 7 ++ .../BrooklynAssemblyTemplateInstantiator.java | 3 +- .../io/brooklyn/camp/brooklyn/YamlLauncher.java | 84 ++++++++++++++++++++ sandbox/camp/src/test/resources/playing.yaml | 3 + 4 files changed, 96 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/brooklyn-library/blob/30f87cce/sandbox/camp/pom.xml ---------------------------------------------------------------------- diff --git a/sandbox/camp/pom.xml b/sandbox/camp/pom.xml index 63add68..b095f15 100644 --- a/sandbox/camp/pom.xml +++ b/sandbox/camp/pom.xml @@ -56,6 +56,13 @@ <artifactId>brooklyn-example-simple-web-cluster</artifactId> <version>${brooklyn.version}</version> </dependency> + <dependency> + <groupId>io.cloudsoft.memsql</groupId> + <artifactId>brooklyn-memsql</artifactId> + <version>0.1.0-SNAPSHOT</version> + <optional>true</optional> + <scope>test</scope> + </dependency> </dependencies> <build> http://git-wip-us.apache.org/repos/asf/brooklyn-library/blob/30f87cce/sandbox/camp/src/main/java/io/brooklyn/camp/brooklyn/spi/creation/BrooklynAssemblyTemplateInstantiator.java ---------------------------------------------------------------------- diff --git a/sandbox/camp/src/main/java/io/brooklyn/camp/brooklyn/spi/creation/BrooklynAssemblyTemplateInstantiator.java b/sandbox/camp/src/main/java/io/brooklyn/camp/brooklyn/spi/creation/BrooklynAssemblyTemplateInstantiator.java index 341a002..01b9c65 100644 --- a/sandbox/camp/src/main/java/io/brooklyn/camp/brooklyn/spi/creation/BrooklynAssemblyTemplateInstantiator.java +++ b/sandbox/camp/src/main/java/io/brooklyn/camp/brooklyn/spi/creation/BrooklynAssemblyTemplateInstantiator.java @@ -48,6 +48,7 @@ import com.google.common.collect.Maps; public class BrooklynAssemblyTemplateInstantiator implements AssemblyTemplateInstantiator { + public static String TARGET_LOCATION = "localhost"; private static final Logger log = LoggerFactory.getLogger(BrooklynAssemblyTemplateInstantiator.class); @Override @@ -167,7 +168,7 @@ public class BrooklynAssemblyTemplateInstantiator implements AssemblyTemplateIns // TODO support other places besides localhost List<Location> locations = - getBrooklynManagementContext(platform).getLocationRegistry().resolve(Arrays.asList("localhost")); + getBrooklynManagementContext(platform).getLocationRegistry().resolve(Arrays.asList(TARGET_LOCATION)); return Entities.invokeEffector((EntityLocal)app, app, Startable.START, MutableMap.of("locations", locations)); http://git-wip-us.apache.org/repos/asf/brooklyn-library/blob/30f87cce/sandbox/camp/src/test/java/io/brooklyn/camp/brooklyn/YamlLauncher.java ---------------------------------------------------------------------- diff --git a/sandbox/camp/src/test/java/io/brooklyn/camp/brooklyn/YamlLauncher.java b/sandbox/camp/src/test/java/io/brooklyn/camp/brooklyn/YamlLauncher.java new file mode 100644 index 0000000..260596f --- /dev/null +++ b/sandbox/camp/src/test/java/io/brooklyn/camp/brooklyn/YamlLauncher.java @@ -0,0 +1,84 @@ +package io.brooklyn.camp.brooklyn; + +import io.brooklyn.camp.CampServer; +import io.brooklyn.camp.brooklyn.spi.creation.BrooklynAssemblyTemplateInstantiator; +import io.brooklyn.camp.brooklyn.spi.lookup.BrooklynUrlLookup; +import io.brooklyn.camp.spi.Assembly; +import io.brooklyn.camp.spi.AssemblyTemplate; +import io.brooklyn.camp.spi.PlatformRootSummary; + +import java.io.Reader; +import java.util.Set; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import brooklyn.config.BrooklynProperties; +import brooklyn.entity.Entity; +import brooklyn.entity.basic.BrooklynTasks; +import brooklyn.entity.basic.Entities; +import brooklyn.launcher.BrooklynLauncher; +import brooklyn.management.ManagementContext; +import brooklyn.management.Task; +import brooklyn.util.ResourceUtils; +import brooklyn.util.exceptions.Exceptions; +import brooklyn.util.stream.Streams; + +public class YamlLauncher { + + private static final Logger log = LoggerFactory.getLogger(YamlLauncher.class); + + private ManagementContext brooklynMgmt; + private BrooklynCampPlatform platform; + + public void launchPlatform() { + BrooklynLauncher launcher = BrooklynLauncher.newInstance() + .start(); + ((BrooklynProperties)launcher.getServerDetails().getManagementContext().getConfig()). + put(BrooklynUrlLookup.BROOKLYN_ROOT_URL, launcher.getServerDetails().getWebServerUrl()); + brooklynMgmt = launcher.getServerDetails().getManagementContext(); + + platform = new BrooklynCampPlatform( + PlatformRootSummary.builder().name("Brooklyn CAMP Platform").build(), + brooklynMgmt); + + new CampServer(platform, "").start(); + } + + public void launchAppYaml(String filename) { + try { + Reader input = Streams.reader(new ResourceUtils(this).getResourceFromUrl(filename)); + AssemblyTemplate at = platform.pdp().registerDeploymentPlan(input); + + Assembly assembly = at.getInstantiator().newInstance().instantiate(at, platform); + Entity app = brooklynMgmt.getEntityManager().getEntity(assembly.getId()); + log.info("Launching "+app); + + Set<Task<?>> tasks = BrooklynTasks.getTasksInEntityContext(brooklynMgmt.getExecutionManager(), app); + log.info("Waiting on "+tasks.size()+" task(s)"); + for (Task<?> t: tasks) t.blockUntilEnded(); + + log.info("App started:"); + Entities.dumpInfo(app); + } catch (Exception e) { + throw Exceptions.propagate(e); + } + } + + public static void main(String[] args) { + BrooklynAssemblyTemplateInstantiator.TARGET_LOCATION = + "localhost" + //"named:hpcloud-compute-us-west-az1" + //"aws-ec2:us-west-2" + ; + + YamlLauncher l = new YamlLauncher(); + l.launchPlatform(); + +// l.launchAppYaml("java-web-app-and-db-with-function.yaml"); +// l.launchAppYaml("java-web-app-and-memsql.yaml"); +// l.launchAppYaml("memsql.yaml"); + l.launchAppYaml("playing.yaml"); + } + +} http://git-wip-us.apache.org/repos/asf/brooklyn-library/blob/30f87cce/sandbox/camp/src/test/resources/playing.yaml ---------------------------------------------------------------------- diff --git a/sandbox/camp/src/test/resources/playing.yaml b/sandbox/camp/src/test/resources/playing.yaml new file mode 100644 index 0000000..a47f7a0 --- /dev/null +++ b/sandbox/camp/src/test/resources/playing.yaml @@ -0,0 +1,3 @@ +name: cassandra node +services: +- type: brooklyn.entity.nosql.cassandra.CassandraNode
