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

Reply via email to