brooklyn-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From henev...@apache.org
Subject [02/13] incubator-brooklyn git commit: wholesale replacement by docs folder from master
Date Fri, 09 Jan 2015 16:09:30 GMT
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/guide/yaml/example_yaml/appserver-configured.yaml
----------------------------------------------------------------------
diff --git a/docs/guide/yaml/example_yaml/appserver-configured.yaml b/docs/guide/yaml/example_yaml/appserver-configured.yaml
new file mode 100644
index 0000000..04ec858
--- /dev/null
+++ b/docs/guide/yaml/example_yaml/appserver-configured.yaml
@@ -0,0 +1,5 @@
+name: appserver-configured
+services:
+- type: brooklyn.entity.webapp.jboss.JBoss7Server
+  war: http://search.maven.org/remotecontent?filepath=io/brooklyn/example/brooklyn-example-hello-world-sql-webapp/0.6.0/brooklyn-example-hello-world-sql-webapp-0.6.0.war
+  httpPort: 8080

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/guide/yaml/example_yaml/appserver-w-db-other-flavor.yaml
----------------------------------------------------------------------
diff --git a/docs/guide/yaml/example_yaml/appserver-w-db-other-flavor.yaml b/docs/guide/yaml/example_yaml/appserver-w-db-other-flavor.yaml
new file mode 100644
index 0000000..6a4a81d
--- /dev/null
+++ b/docs/guide/yaml/example_yaml/appserver-w-db-other-flavor.yaml
@@ -0,0 +1,17 @@
+name: appserver-w-db-other-flavor
+services:
+- type: brooklyn.entity.webapp.tomcat.TomcatServer
+  name: AppServer HelloWorld 
+  brooklyn.config:
+    wars.root: http://search.maven.org/remotecontent?filepath=io/brooklyn/example/brooklyn-example-hello-world-sql-webapp/0.6.0/brooklyn-example-hello-world-sql-webapp-0.6.0.war
+    http.port: 8080+
+    java.sysprops: 
+      brooklyn.example.db.url: $brooklyn:formatString("jdbc:%s%s?user=%s\\&password=%s",
+         component("db").attributeWhenReady("datastore.url"), "visitors", "brooklyn", "br00k11n")
+- type: brooklyn.entity.database.mariadb.MariaDbNode
+  id: db
+  name: DB HelloWorld Visitors
+  brooklyn.config:
+    datastore.creation.script.url: https://github.com/apache/incubator-brooklyn/raw/master/usage/launcher/src/test/resources/visitors-creation-script.sql
+    provisioning.properties:
+      minRam: 8192

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/guide/yaml/example_yaml/appserver-w-db.yaml
----------------------------------------------------------------------
diff --git a/docs/guide/yaml/example_yaml/appserver-w-db.yaml b/docs/guide/yaml/example_yaml/appserver-w-db.yaml
new file mode 100644
index 0000000..a043f1a
--- /dev/null
+++ b/docs/guide/yaml/example_yaml/appserver-w-db.yaml
@@ -0,0 +1,15 @@
+name: appserver-w-db
+services:
+- type: brooklyn.entity.webapp.jboss.JBoss7Server
+  name: AppServer HelloWorld 
+  brooklyn.config:
+    wars.root: http://search.maven.org/remotecontent?filepath=io/brooklyn/example/brooklyn-example-hello-world-sql-webapp/0.6.0/brooklyn-example-hello-world-sql-webapp-0.6.0.war
+    http.port: 8080+
+    java.sysprops: 
+      brooklyn.example.db.url: $brooklyn:formatString("jdbc:%s%s?user=%s\\&password=%s",
+         component("db").attributeWhenReady("datastore.url"), "visitors", "brooklyn", "br00k11n")
+- type: brooklyn.entity.database.mysql.MySqlNode
+  id: db
+  name: DB HelloWorld Visitors
+  brooklyn.config:
+    datastore.creation.script.url: https://github.com/apache/incubator-brooklyn/raw/master/usage/launcher/src/test/resources/visitors-creation-script.sql

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/guide/yaml/example_yaml/appserver-w-policy.yaml
----------------------------------------------------------------------
diff --git a/docs/guide/yaml/example_yaml/appserver-w-policy.yaml b/docs/guide/yaml/example_yaml/appserver-w-policy.yaml
new file mode 100644
index 0000000..cada61f
--- /dev/null
+++ b/docs/guide/yaml/example_yaml/appserver-w-policy.yaml
@@ -0,0 +1,26 @@
+name: appserver-w-policy
+services:
+- type: brooklyn.entity.webapp.ControlledDynamicWebAppCluster
+  initialSize: 1
+  memberSpec:
+    $brooklyn:entitySpec:
+      type: brooklyn.entity.webapp.jboss.JBoss7Server
+      brooklyn.config:
+        wars.root: http://search.maven.org/remotecontent?filepath=io/brooklyn/example/brooklyn-example-hello-world-sql-webapp/0.6.0/brooklyn-example-hello-world-sql-webapp-0.6.0.war
+        http.port: 8080+
+        java.sysprops: 
+          brooklyn.example.db.url: $brooklyn:formatString("jdbc:%s%s?user=%s\\&password=%s",
+              component("db").attributeWhenReady("datastore.url"), "visitors", "brooklyn", "br00k11n")
+  brooklyn.policies:
+  - policyType: brooklyn.policy.autoscaling.AutoScalerPolicy
+    brooklyn.config:
+      metric: $brooklyn:sensor("brooklyn.entity.webapp.DynamicWebAppCluster", "webapp.reqs.perSec.windowed.perNode")
+      metricLowerBound: 10
+      metricUpperBound: 100
+      minPoolSize: 1
+      maxPoolSize: 5
+- type: brooklyn.entity.database.mysql.MySqlNode
+  id: db
+  name: DB HelloWorld Visitors
+  brooklyn.config:
+    datastore.creation.script.url: https://github.com/apache/incubator-brooklyn/raw/master/usage/launcher/src/test/resources/visitors-creation-script.sql

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/guide/yaml/example_yaml/cluster-vm.yaml
----------------------------------------------------------------------
diff --git a/docs/guide/yaml/example_yaml/cluster-vm.yaml b/docs/guide/yaml/example_yaml/cluster-vm.yaml
new file mode 100644
index 0000000..a0a50da
--- /dev/null
+++ b/docs/guide/yaml/example_yaml/cluster-vm.yaml
@@ -0,0 +1,12 @@
+name: cluster-vm
+services:
+- type: brooklyn.entity.group.DynamicCluster
+  initialSize: 5
+  memberSpec:
+    $brooklyn:entitySpec:
+      type: brooklyn.entity.basic.EmptySoftwareProcess
+      name: VM
+      provisioning.properties:
+        minRam: 8g
+        minCores: 4
+        minDisk: 100g

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/guide/yaml/example_yaml/simple-appserver-with-location-byon.yaml
----------------------------------------------------------------------
diff --git a/docs/guide/yaml/example_yaml/simple-appserver-with-location-byon.yaml b/docs/guide/yaml/example_yaml/simple-appserver-with-location-byon.yaml
new file mode 100644
index 0000000..7ba5b0c
--- /dev/null
+++ b/docs/guide/yaml/example_yaml/simple-appserver-with-location-byon.yaml
@@ -0,0 +1,12 @@
+name: simple-appserver-with-location-byon
+location:
+  byon:
+    user: brooklyn
+    privateKeyFile: ~/.ssh/brooklyn.pem
+    hosts:
+    - 192.168.0.18
+    - 192.168.0.19
+services:
+- type: brooklyn.entity.webapp.jboss.JBoss7Server
+  location:
+    byon: { hosts: [ 127.0.0.1 ] }

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/guide/yaml/example_yaml/simple-appserver-with-location.yaml
----------------------------------------------------------------------
diff --git a/docs/guide/yaml/example_yaml/simple-appserver-with-location.yaml b/docs/guide/yaml/example_yaml/simple-appserver-with-location.yaml
new file mode 100644
index 0000000..c241ab2
--- /dev/null
+++ b/docs/guide/yaml/example_yaml/simple-appserver-with-location.yaml
@@ -0,0 +1,8 @@
+name: simple-appserver-with-location
+location:
+  jclouds:aws-ec2:
+    region: us-east-1
+    identity: AKA_YOUR_ACCESS_KEY_ID
+    credential: <access-key-hex-digits>
+services:
+- type: brooklyn.entity.webapp.jboss.JBoss7Server

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/guide/yaml/example_yaml/simple-appserver.yaml
----------------------------------------------------------------------
diff --git a/docs/guide/yaml/example_yaml/simple-appserver.yaml b/docs/guide/yaml/example_yaml/simple-appserver.yaml
new file mode 100644
index 0000000..3850b26
--- /dev/null
+++ b/docs/guide/yaml/example_yaml/simple-appserver.yaml
@@ -0,0 +1,4 @@
+name: simple-appserver
+location: localhost
+services:
+- type: brooklyn.entity.webapp.jboss.JBoss7Server

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/guide/yaml/example_yaml/simple-vm.yaml
----------------------------------------------------------------------
diff --git a/docs/guide/yaml/example_yaml/simple-vm.yaml b/docs/guide/yaml/example_yaml/simple-vm.yaml
new file mode 100644
index 0000000..149a1b9
--- /dev/null
+++ b/docs/guide/yaml/example_yaml/simple-vm.yaml
@@ -0,0 +1,8 @@
+name: simple-vm
+services:
+- type: brooklyn.entity.basic.EmptySoftwareProcess
+  name: VM
+  provisioning.properties:
+    minRam: 8192mb
+    minCores: 4
+    minDisk: 100gb

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/guide/yaml/example_yaml/vanilla-bash-netcat-file.yaml
----------------------------------------------------------------------
diff --git a/docs/guide/yaml/example_yaml/vanilla-bash-netcat-file.yaml b/docs/guide/yaml/example_yaml/vanilla-bash-netcat-file.yaml
new file mode 100644
index 0000000..7950b8c
--- /dev/null
+++ b/docs/guide/yaml/example_yaml/vanilla-bash-netcat-file.yaml
@@ -0,0 +1,6 @@
+name: Simple Netcat Example From File
+location: localhost
+services:
+- type: brooklyn.entity.basic.VanillaSoftwareProcess
+  name: Simple Netcat Server
+  download.url: file:///tmp/netcat-server.tgz

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/guide/yaml/example_yaml/vanilla-bash-netcat-restarter.yaml
----------------------------------------------------------------------
diff --git a/docs/guide/yaml/example_yaml/vanilla-bash-netcat-restarter.yaml b/docs/guide/yaml/example_yaml/vanilla-bash-netcat-restarter.yaml
new file mode 100644
index 0000000..1fd70c3
--- /dev/null
+++ b/docs/guide/yaml/example_yaml/vanilla-bash-netcat-restarter.yaml
@@ -0,0 +1,20 @@
+name: Simple Netcat Example with Restarter Policy
+location: localhost
+services:
+- type: brooklyn.entity.basic.VanillaSoftwareProcess
+  id: netcat-server
+  name: Simple Netcat Server
+  launch.command: |
+    echo hello | nc -l 4321 &
+    echo $! > $PID_FILE
+  brooklyn.enrichers:
+  - type: brooklyn.policy.ha.ServiceFailureDetector
+    brooklyn.config:
+      # wait 15s after service fails before propagating failure
+      serviceFailedStabilizationDelay: 15s
+  brooklyn.policies:
+  - type: brooklyn.policy.ha.ServiceRestarter
+    brooklyn.config:
+      # repeated failures in a time window can cause the restarter to abort,
+      # propagating the failure; a time window of 0 will mean it always restarts!
+      failOnRecurringFailuresInThisDuration: 0

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/guide/yaml/example_yaml/vanilla-bash-netcat-w-client.yaml
----------------------------------------------------------------------
diff --git a/docs/guide/yaml/example_yaml/vanilla-bash-netcat-w-client.yaml b/docs/guide/yaml/example_yaml/vanilla-bash-netcat-w-client.yaml
new file mode 100644
index 0000000..50051db
--- /dev/null
+++ b/docs/guide/yaml/example_yaml/vanilla-bash-netcat-w-client.yaml
@@ -0,0 +1,72 @@
+name: Simple Netcat with Client
+
+location: localhost
+
+services:
+
+# the netcat server instance, running in listener mode (-l)
+- type: brooklyn.entity.basic.VanillaSoftwareProcess
+  id: netcat-server
+  name: Simple Netcat Server
+  launch.command: |
+    echo hello | nc -l 4321 >> server-input &
+    echo $! > $PID_FILE
+
+  brooklyn.policies:
+  # restarter and 
+  - policyType: brooklyn.policy.ha.ServiceFailureDetector
+    brooklyn.config:
+      # wait 15s after service fails before propagating failure
+      serviceFailedStabilizationDelay: 15s
+  - policyType: brooklyn.policy.ha.ServiceRestarter
+    brooklyn.config:
+      # repeated failures in a time window can cause the restarter to abort,
+      # propagating the failure; a time window of 0 will mean it always restarts!
+      failOnRecurringFailuresInThisDuration: 0
+      
+  brooklyn.initializers:
+  # two sensors, recording the data sent to this netcat server:
+  
+  - type: brooklyn.entity.software.ssh.SshCommandSensor
+    brooklyn.config:
+      name: output.last
+      command: tail -1 server-input
+      
+  - type: brooklyn.entity.software.ssh.SshCommandSensor
+    brooklyn.config:
+      name: output.all
+      command: cat server-input
+
+# a client to hit netcat
+- type: brooklyn.entity.basic.VanillaSoftwareProcess
+  name: Simple Pinger
+  
+  # set the hostname of the netcat instance as an env var for the scripts 
+  env:
+    TARGET_HOSTNAME: $brooklyn:component("netcat-server").attributeWhenReady("host.name")
+    
+  # start/check/stop are no-op
+  launch.command: ""
+  checkRunning.command: ""
+  stop.command: ""
+  
+  brooklyn.initializers:
+  # but there is a sample effector which runs nc in client mode
+  
+  - type: brooklyn.entity.software.ssh.SshCommandEffector
+    brooklyn.config:
+      name: sayHiNetcat
+      description: Echo a small hello string to the netcat entity
+      command: |
+        echo $message | nc $TARGET_HOSTNAME 4321
+      parameters:
+        message:
+          description: The string to pass to netcat
+          defaultValue: hi netcat
+
+# and add an enricher at the root so all sensors from netcat-server are visible on the root
+brooklyn.enrichers:
+- enricherType: brooklyn.enricher.basic.Propagator
+  brooklyn.config:
+    enricher.producer: $brooklyn:component("netcat-server")
+    enricher.propagating.propagatingAll: true

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/guide/yaml/example_yaml/vanilla-bash-netcat.yaml
----------------------------------------------------------------------
diff --git a/docs/guide/yaml/example_yaml/vanilla-bash-netcat.yaml b/docs/guide/yaml/example_yaml/vanilla-bash-netcat.yaml
new file mode 100644
index 0000000..d4cb37b
--- /dev/null
+++ b/docs/guide/yaml/example_yaml/vanilla-bash-netcat.yaml
@@ -0,0 +1,18 @@
+name: Simple Netcat Server Example
+location: localhost
+services:
+- type: brooklyn.entity.basic.VanillaSoftwareProcess
+  name: Simple Netcat Server
+  launch.command: |
+    echo hello | nc -l 4321 &
+    echo $! > $PID_FILE
+
+  # The following overrides demonstrate the use of a custom shell environment as well as
+  # check-running and stop commands. These are optional; default behavior will "do the
+  # right thing" with the pid file automatically.
+
+  env:                  { CHECK_MARKER: "checkRunning", STOP_MARKER: "stop" }
+  checkRunning.command: echo $CHECK_MARKER >> DATE && test -f "$PID_FILE" && ps -p `cat $PID_FILE` >/dev/null
+  stop.command:         echo $STOP_MARKER  >> DATE && test -f "$PID_FILE" && { kill -9 `cat $PID_FILE`; rm /tmp/vanilla.pid; }
+
+# can also define download.url, in which case the launch command defaults to ./start.sh in that (archive) file

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/guide/yaml/index.md
----------------------------------------------------------------------
diff --git a/docs/guide/yaml/index.md b/docs/guide/yaml/index.md
new file mode 100644
index 0000000..4073f70
--- /dev/null
+++ b/docs/guide/yaml/index.md
@@ -0,0 +1,18 @@
+---
+title: YAML Blueprints
+layout: website-normal
+children:
+- creating-yaml.md
+- setting-locations.md
+- configuring-vms.md
+- clusters.md
+- multiple-services.md
+- clusters-and-policies.md
+- custom-entities.md
+- catalog-maintenance.md
+- chef/
+- { path: yaml-reference.md, title: YAML Blueprint Reference }
+---
+
+
+{% include list-children.html %}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/guide/yaml/multiple-services.md
----------------------------------------------------------------------
diff --git a/docs/guide/yaml/multiple-services.md b/docs/guide/yaml/multiple-services.md
new file mode 100644
index 0000000..17e1f04
--- /dev/null
+++ b/docs/guide/yaml/multiple-services.md
@@ -0,0 +1,64 @@
+---
+title: Multiple Services and Dependency Injection
+layout: guide-normal
+toc: ../guide_toc.json
+categories: [use, guide, defining-applications]
+---
+
+If you explored the `hello-world-sql` application we just deployed, 
+you'll have noticed it tries to access a database.
+And it fails, because we have not set one up.  Let's do that now:
+
+{% highlight yaml %}
+{% readj example_yaml/appserver-w-db.yaml %}
+{% endhighlight %}
+
+Here there are a few things going on:
+
+* We've added a second service, which will be the database;
+  you'll note the database has been configured to run a custom setup script
+* We've injected the URL of the second service into the appserver as a Java system property
+  (so our app knows where to find the database) 
+
+**Caution: Be careful if you write your YAML in an editor which attempts to put "smart-quotes" in.
+All quote characters must be plain ASCII, not fancy left-double-quotes and right-double-quotes!**
+
+There are as many ways to do dependency injection as there are developers,
+it sometimes seems; our aim in Brooklyn is not to say this has to be done one way,
+but to support the various mechanisms people might need to do, for whatever reasons.
+(We each have our opinions about what works well, of course;
+the one thing we do want to call out is that being able to dynamically update
+the injection is useful in a modern agile application -- so we are definitively **not**
+recommending this Java system property approach ... but it is an easy one to demo!)
+
+The way the dependency injection works is again by using the `$brooklyn:` DSL,
+this time referring to the `component("db")` (looked up by the `id` field on our DB component),
+and then to a sensor emitted by that component.
+All the database entities emit a `database.url` sensor when they are up and running;
+the `attributeWhenReady` DSL method will store a pointer to that sensor (a Java Future under the covers)
+in the Java system properties map which the JBoss entity reads at launch time, blocking if needed.
+
+This means that the deployment occurs in parallel, and if the database comes up first,
+there is no blocking; but if the JBoss entity completes its installation and 
+downloading the WAR, it will wait for the database before it launches.
+At that point the URL is injected, first passing it through `formatString`
+to include the credentials for the database (which are defined in the database creation script).
+
+
+
+### An Aside: Substitutability
+
+Don't like JBoss?  Is there something about Maria?
+One of the modular principles we follow in Brooklyn is substitutability:
+in many cases, the config keys, sensors, and effectors are defined
+in superclasses and are portable across multiple implementations.
+
+Here's an example deploying the same application but with different flavors of the components:
+
+{% highlight yaml %}
+{% readj example_yaml/appserver-w-db-other-flavor.yaml %}
+{% endhighlight %}
+
+We've also brought in the `provisioning.properties` from the VM example earlier
+so our database has 8GB RAM.
+Any of those properties, including `imageId` and `user`, can be defined on a per-entity basis.

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/guide/yaml/mutlitple-services.md
----------------------------------------------------------------------
diff --git a/docs/guide/yaml/mutlitple-services.md b/docs/guide/yaml/mutlitple-services.md
new file mode 100644
index 0000000..b5dfe34
--- /dev/null
+++ b/docs/guide/yaml/mutlitple-services.md
@@ -0,0 +1,100 @@
+---
+title: Multiple Services and Dependency Injection
+layout: guide-normal
+toc: ../guide_toc.json
+categories: [use, guide, defining-applications]
+---
+We've seen the configuration of machines and how to build up clusters.
+Now let's return to our app-server example and explore how more interesting
+services can be configured, composed, and combined.
+
+Also note there are some good overview materials [here]({{site.path.guide}}//use/guide/defining-applications/basic-concepts.html)
+covering clusters, sensors, effectors and more, 
+if you're the kind of person who likes to learn more about concepts before seeing them in action.
+
+
+### Service Configuration
+
+We'll begin by using more key-value pairs to configure the JBoss server to run a real app:
+
+{% highlight yaml %}
+{% readj example_yaml/appserver-configured.yaml %}
+{% endhighlight %}
+
+(As before, you'll need to add the `location` info; `localhost` will work for these and subsequent examples.)
+
+When this is deployed, you can see management information in the Brooklyn Web Console,
+including a link to the deployed application (downloaded to the target machine from the `hello-world` URL),
+running on port 8080.
+
+**Top tip**:  If port 8080 might be in use, you can specify `8080+` to take the first available port >= 8080;
+the actual port will be reported as a sensor by Brooklyn.
+
+It's also worth indicating an alternate, more formal syntax.
+Not all configuration on entities is supported at the top level of the service specification
+(only those which are defined as "flags" in the underlying blueprint,
+e.g. the `@SetFromFlag("war")` in the `WebAppServiceConstants` parent of `JBoss7Server`).
+All configuration has a formal qualified name, and this can be supplied even where flags or config keys are not
+explicitly defined, by placing it into a `brooklyn.config` section:
+
+{% highlight yaml %}
+{% readj example_yaml/appserver-configured-in-config.yaml %}
+{% endhighlight %}
+
+If you explored the `hello-world-sql` application we just deployed, 
+you'll have noticed it tries to access a database.
+And it fails, because we have not set one up.  Let's do that now:
+
+{% highlight yaml %}
+{% readj example_yaml/appserver-w-db.yaml %}
+{% endhighlight %}
+
+Here there are a few things going on:
+
+* We've added a second service, which will be the database;
+  you'll note the database has been configured to run a custom setup script
+* We've injected the URL of the second service into the appserver as a Java system property
+  (so our app knows where to find the database) 
+
+**Caution: Be careful if you write your YAML in an editor which attempts to put "smart-quotes" in.
+All quote characters must be plain ASCII, not fancy left-double-quotes and right-double-quotes!**
+
+There are as many ways to do dependency injection as there are developers,
+it sometimes seems; our aim in Brooklyn is not to say this has to be done one way,
+but to support the various mechanisms people might need to do, for whatever reasons.
+(We each have our opinions about what works well, of course;
+the one thing we do want to call out is that being able to dynamically update
+the injection is useful in a modern agile application -- so we are definitively **not**
+recommending this Java system property approach ... but it is an easy one to demo!)
+
+The way the dependency injection works is again by using the `$brooklyn:` DSL,
+this time referring to the `component("db")` (looked up by the `id` field on our DB component),
+and then to a sensor emitted by that component.
+All the database entities emit a `database.url` sensor when they are up and running;
+the `attributeWhenReady` DSL method will store a pointer to that sensor (a Java Future under the covers)
+in the Java system properties map which the JBoss entity reads at launch time, blocking if needed.
+
+This means that the deployment occurs in parallel, and if the database comes up first,
+there is no blocking; but if the JBoss entity completes its installation and 
+downloading the WAR, it will wait for the database before it launches.
+At that point the URL is injected, first passing it through `formatString`
+to include the credentials for the database (which are defined in the database creation script).
+
+
+
+### An Aside: Substitutability
+
+Don't like JBoss?  Is there something about Maria?
+One of the modular principles we follow in Brooklyn is substitutability:
+in many cases, the config keys, sensors, and effectors are defined
+in superclasses and are portable across multiple implementations.
+
+Here's an example deploying the same application but with different flavors of the components:
+
+{% highlight yaml %}
+{% readj example_yaml/appserver-w-db-other-flavor.yaml %}
+{% endhighlight %}
+
+We've also brought in the `provisioning.properties` from the VM example earlier
+so our database has 8GB RAM.
+Any of those properties, including `imageId` and `user`, can be defined on a per-entity basis.

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/guide/yaml/mysql-in-catalog-w700.png
----------------------------------------------------------------------
diff --git a/docs/guide/yaml/mysql-in-catalog-w700.png b/docs/guide/yaml/mysql-in-catalog-w700.png
new file mode 100644
index 0000000..f370249
Binary files /dev/null and b/docs/guide/yaml/mysql-in-catalog-w700.png differ

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/guide/yaml/mysql-in-catalog.png
----------------------------------------------------------------------
diff --git a/docs/guide/yaml/mysql-in-catalog.png b/docs/guide/yaml/mysql-in-catalog.png
new file mode 100644
index 0000000..685455d
Binary files /dev/null and b/docs/guide/yaml/mysql-in-catalog.png differ

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/guide/yaml/setting-locations.md
----------------------------------------------------------------------
diff --git a/docs/guide/yaml/setting-locations.md b/docs/guide/yaml/setting-locations.md
new file mode 100644
index 0000000..6feffe3
--- /dev/null
+++ b/docs/guide/yaml/setting-locations.md
@@ -0,0 +1,44 @@
+---
+title: Setting Locations
+layout: guide-normal
+toc: ../guide_toc.json
+categories: [use, guide, defining-applications]
+---
+
+Brooklyn supports a very wide range of target locations -- localhost is mainly a convenience for testing.
+With deep integration to [Apache jclouds](http://jclouds.org), most well-known clouds and cloud platforms are supported.
+The following example is for Amazon EC2:
+
+{% highlight yaml %}
+{% readj example_yaml/simple-appserver-with-location.yaml %}
+{% endhighlight %}
+
+(You'll need to replace the `identity` and `credential` with the 
+"Access Key ID" and "Secret Access Key" for your account,
+as configured in the [AWS Console](https://console.aws.amazon.com/iam/home?#security_credential).)
+
+Other popular public clouds include `softlayer`, `google-compute-engine`, and `rackspace-cloudservers-us`.
+Private cloud systems including `openstack-nova` and `cloudstack` are also supported,
+although for these you'll supply an `endpoint: https://9.9.9.9:9999/v2.0/` 
+(or `client/api/` in the case of CloudStack) instead of the `region`.
+
+You can also specify pre-existing servers to use -- "bring-your-own-nodes".
+These can be a global pool or specific to a service.
+Both styles are shown here (though normally only one will be selected,
+<!-- TODO see #1377, currently it is *parent* location which is preferred typically --> 
+depending on the blueprint):
+
+{% highlight yaml %}
+{% readj example_yaml/simple-appserver-with-location-byon.yaml %}
+{% endhighlight %}
+
+You'll also note in this example that we've used JSON-style notation in the second `location` block.
+YAML supports this, and sometimes that makes more readable plans.
+(Although in this case a simple `location: localhost` is equivalent and even more succinct, but this is a tutorial.)
+
+For more information see the Locations section of the [YAML reference](yaml-reference.html) 
+and in the [User's Guide]({{ site.path.guide }}/use/guide/locations/).
+Another good reference is the [template brooklyn.properties](/use/guide/quickstart/brooklyn.properties),
+which if you install in `~/.brooklyn/brooklyn.properties` and edit with your credentials,  
+allows you to refer to clouds simply as `location: jclouds:aws-ec2:eu-west-1` or
+set up "named locations" you can use as `location: named:my_cloudstack`.

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/guide/yaml/web-console-yaml-700.png
----------------------------------------------------------------------
diff --git a/docs/guide/yaml/web-console-yaml-700.png b/docs/guide/yaml/web-console-yaml-700.png
new file mode 100644
index 0000000..d6a2249
Binary files /dev/null and b/docs/guide/yaml/web-console-yaml-700.png differ

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/guide/yaml/web-console-yaml.png
----------------------------------------------------------------------
diff --git a/docs/guide/yaml/web-console-yaml.png b/docs/guide/yaml/web-console-yaml.png
new file mode 100644
index 0000000..3d65a99
Binary files /dev/null and b/docs/guide/yaml/web-console-yaml.png differ

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/guide/yaml/yaml-reference.md
----------------------------------------------------------------------
diff --git a/docs/guide/yaml/yaml-reference.md b/docs/guide/yaml/yaml-reference.md
new file mode 100644
index 0000000..980b9e3
--- /dev/null
+++ b/docs/guide/yaml/yaml-reference.md
@@ -0,0 +1,181 @@
+---
+title: Broooklyn YAML Blueprint Reference
+layout: website-normal
+---
+
+## Root Elements
+
+* `name`: human readable names
+* `services`: a list of `ServiceSpecification` elements
+* `location` (or `locations` taking a list): a `LocationSpecification` element as a string or a map
+
+
+## `ServiceSpecification` Elements
+
+Within the `services` block, a list of maps should be supplied, with each map
+defining a `ServiceSpecification`.  Each `ServiceSpecification` should declare the
+service `type` (synonyms `serviceType` and `service_type`), indicating what type of 
+service is being specified there.  The following formats are supported for
+defining types:
+
+* `io.brooklyn.package.JavaEntityClass`
+* `java:io.brooklyn.package.JavaEntityClass`
+* *OSGi and YAML references are coming soon!* <!-- TODO -->
+
+A reference of some of the common service `type` instances used is included in a section below.
+
+Within the `ServiceSpecification`, other key-value pairs can be supplied to customize
+the entity being defined, with these being the most common:
+
+* `id`: an ID string, used to refer to this service
+
+* `location` (or `locations`): as defined in the root element 
+  
+* `brooklyn.config`: configuration key-value pairs passed to the service entity being created
+
+* `brooklyn.children`: a list of `ServiceSpecifications` which will be configured as children of this entity
+
+* `brooklyn.policies`: a list of policies, each as a map described with their `type` and their `brooklyn.config` as keys
+
+* `brooklyn.enrichers`: a list of enrichers, each as a map described with their `type` and their `brooklyn.config` as keys
+
+* `brooklyn.initializers`: a list of `EntityInitializer` instances to be constructed and run against the entity, 
+  each as a map described with their `type` and their `brooklyn.config` as keys.
+  An `EntityInitiailzer` can perform arbitrary customization to an entity whilst it is being constructed,
+  such as adding dynamic sensors and effectors. These classes must expose a public constructor taking
+  a single `Map` where the `brooklyn.config` is passed in.
+  Some common initializers are:
+  
+  * `brooklyn.entity.software.ssh.SshCommandEffector`: takes a `name` and `command`,
+    and optionally a map of named `parameters` to their `description` and `defaultValue`,
+    to define an effector with the given name implemented by the given SSH command
+    (on an entity which as an ssh-able machine)
+
+  * `brooklyn.entity.software.ssh.SshCommandSensor`: takes a `name` and `command`,
+    and optionally a `period`, to create a sensor feed which populates the sensor with
+    the given name by running the given command (on an entity which as an ssh-able machine) 
+
+Entities, policies, and initializers may accept additional key-value pairs, 
+usually documented in their documentation (e.g. javadoc), or in the case of Java
+often as static fields in the underlying Java class.
+Often there are config keys or flags (indicated by `@SetFromFlag`) declared on the class; 
+these declared flags and config keys may be passed in at the root of the `ServiceSpecification` or in `brooklyn.config`.
+(Undeclared config is only accepted in the `brooklyn.config` map.)
+
+
+## `LocationSpecification` Elements
+
+<!-- TODO - expand this, currently it's concise notes -->
+
+In brief, location specs are supplied as follows, either for the entire application (at the root)
+or for a specific `ServiceSpecification`:
+
+    location:
+      jclouds:aws-ec2:
+        region: us-east-1
+        identity: AKA_YOUR_ACCESS_KEY_ID
+        credential: <access-key-hex-digits>
+
+Or in many cases it can be in-lined:
+
+    location: localhost
+    location: named:my_openstack
+    location: aws-ec2:us-west-1
+
+For the first immediately, you'll need password-less ssh access to localhost.
+For the second, you'll need to define a named location in `brooklyn.properties`,
+using `brooklyn.location.named.my_openstack....` properties.
+For the third, you'll need to have the identity and credentials defined in
+`brooklyn.properties`, using `brooklyn.location.jclouds.aws-ec2....` properties.
+
+If specifying multiple locations, e.g. for a fabric:
+
+    locations:
+    - localhost
+    - named:my_openstack
+    - aws-ec2:us-east-2   # if credentials defined in `brooklyn.properties
+    - jclouds:aws-ec2:
+        region: us-east-1
+        identity: AKA_YOUR_ACCESS_KEY_ID
+        credential: <access-key-hex-digits>
+
+If you have pre-existing nodes, you can use the `byon` provider, either in this format:
+
+    location:
+      byon:
+        user: root
+        privateKeyFile: ~/.ssh/key.pem
+        hosts:
+        - 81.95.144.58
+        - 81.95.144.59
+        - brooklyn@159.253.144.139
+        - brooklyn@159.253.144.140
+
+or:
+
+    location:
+      byon:
+        user: root
+        privateKeyFile: ~/.ssh/key.pem
+        hosts: "{81.95.144.{58,59},brooklyn@159.253.144.{139-140}"
+
+You cannot use glob expansions with the list notation, nor can you specify per-host
+information apart from user within a single `byon` declaration.
+However you can combine locations using `multi`:
+
+    location:
+      multi:
+        targets:
+        - byon:
+            user: root
+            privateKeyFile: ~/.ssh/key.pem
+            hosts:
+            - 81.95.144.58
+            - 81.95.144.59
+        - byon:
+            privateKeyFile: ~/.ssh/brooklyn_key.pem
+            hosts: brooklyn@159.253.144{139-140}
+
+
+## DSL Commands
+
+Dependency injection other powerful references and types can be built up within the YAML using the
+concise DSL defined here:
+ 
+* `$brooklyn:component("ID")` refers to a Brooklyn component with the given ID; you can then access the following subfields:
+  * `.attributeWhenReady("sensor")` will store a future which will be blocked when it is accessed,
+    until the given `sensor` from the component `ID` has a "truthy" (i.e. non-trivial, non-empty, non-zero) value
+  * `.config("key")` will insert the value set against the given key at this entity (or nearest ancestor);
+    can be used to supply config at the root which is used in multiple places in the plan
+* `$brooklyn:component("scope", "ID")` is also supported, to limit scope to any of
+  * `global`: looks for the `ID` anywhere in the plan
+  * `child`: looks for the `ID` anywhere in the child only
+  * `descendant`: looks for the `ID` anywhere in children or their descendants
+  * `sibling`: looks for the `ID` anywhere among children of the parent entity
+  * `parent`: returns the parent entity (ignores the `ID`)
+  * `this`: returns this entity (ignores the `ID`)
+* `$brooklyn:formatString("pattern e.g. %s %s", "field 1", "field 2")` returns a future which creates the formatted string
+  with the given parameters, where parameters may be strings *or* other tasks such as `attributeWhenReady`
+* `$brooklyn:literal("string")` returns the given string as a literal (suppressing any `$brooklyn:` expansion)
+* `$brooklyn:sensor("io.brooklyn.ContainingEntityClass", "sensor.name")` returns the strongly typed sensor defined in the given class
+* `$brooklyn:entitySpec(Map)` returns a new `ServiceSpecification` as defined by the given `Map`,
+  but as an `EntitySpec` suitable for setting as the value of `ConfigKey<EntitySpec>` config items
+  (such as `memberSpec` in `DynamicCluster`)
+
+These can be supplied either as strings or as lists and maps in YAML. 
+
+
+## Some Powerful YAML Entities
+
+All entities support configuration via YAML, but these entities in particular 
+have been designed for general purpose use from YAML.  Consult the Javadoc for these
+elements for more information:
+
+* **Vanilla Software** in `VanillaSoftwareProcess`: makes it very easy to build entities
+  which use `bash` commands to install and the PID to stop and restart
+* **Chef** in `ChefSoftwareProcess`: makes it easy to use Chef cookbooks to build entities,
+  either with recipes following conventions or with configuration in the `ServiceSpecification`
+  to use artibitrary recipes 
+* `DynamicCluster`: provides resizable clusters given a `memberSpec` set with `$brooklyn.entitySpec(Map)` as described above 
+* `DynamicFabric`: provides a set of homogeneous instances started in different locations,
+  with an effector to `addLocation`, i.e. add a new instance in a given location, at runtime

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/style/css/base.scss
----------------------------------------------------------------------
diff --git a/docs/style/css/base.scss b/docs/style/css/base.scss
index 8356379..74308df 100644
--- a/docs/style/css/base.scss
+++ b/docs/style/css/base.scss
@@ -23,6 +23,13 @@ img {border: 0;}
 a {color: $a_color;}
 a:hover {text-decoration: none; color: $a_hover_color;}
 
+/* Offset link anchors so they are not hidden by the header */
+a[id]:empty, a[name]:empty {
+    padding-top: 60px;
+    margin-top: -60px;
+    display: block;
+}
+
 
 /* WEBSITE MENUS
    ----------------------------------------------------------------------- */
@@ -64,11 +71,81 @@ a:hover {text-decoration: none; color: $a_hover_color;}
 }
 .navbar-icon-shift { margin-right: -2px; }
 
-/* pop-up menu */
+.navbar div.dropdown_section_header hr {
+  margin: 4px 12px;
+  border-color: #ddd;
+}
+
+.navbar div.dropdown_new_section hr {
+  margin: 6px 0px;
+  border-color: #ddd;
+}
+
+/* pop-up top-menu */
 ul.nav li.dropdown:hover > ul.dropdown-menu {
     display: block;
 }
 
+/* side menu */
+.side-menu {
+  h4.with_following {
+    margin-bottom: 0;
+  }
+  h4.with_preceding {
+    margin-top: 0;
+  }
+  h4.with_following a {
+    border-bottom-right-radius: 0 !important ;
+    border-bottom-left-radius: 0 !important ;
+    border-bottom: 0;
+  }
+  h4.with_preceding a {
+    border-top-right-radius: 0;
+    border-top-left-radius: 0;
+    border-top: 0;
+  }
+  a, a.breadcrumb.breadcrumb0 { padding-left: 15px; }
+  a.breadcrumb.breadcrumb1 { padding-left: 30px; }
+  a.breadcrumb.breadcrumb2 { padding-left: 45px; }
+  a.breadcrumb.breadcrumb3 { padding-left: 60px; }
+  /* further crumbs all get the same */
+  a.breadcrumb { padding-left: 70px; }
+  
+  div.sub-item {
+    background-color: #48a648;
+    border-left: 1px solid #428bca;
+    /*
+    border-bottom: 1px solid #428bca;
+    border-top: 1px solid #428bca;
+    border-right: 1px solid #428bca;
+    */
+    /*
+    padding-bottom: 6px;
+    padding-right: 6px;
+    */
+  } 
+  div.sub-item:last-child {
+    border-bottom: 1px solid #ddd;
+    border-bottom-left-radius: 4px;
+    border-bottom-right-radius: 4px;
+  }
+  div.sub-item:last-child a.sub-item:last-child {
+    border-bottom-right-radius: 4px !important;
+  }
+  a.with-sub-item {
+    /* border-bottom: 1px solid #ddd; */
+    border-bottom: 0;
+  }
+  a.sub-item { 
+    border-radius: 0 !important;
+    border-bottom: 0;
+    margin-left: 12px;
+    padding-left: 10px; 
+    padding-top: 8px; 
+    padding-bottom: 8px; 
+  }
+}
+
 
 /* FOOTER
    ----------------------------------------------------------------------- */

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/website/community/how-to-contribute-docs.md
----------------------------------------------------------------------
diff --git a/docs/website/community/how-to-contribute-docs.md b/docs/website/community/how-to-contribute-docs.md
index b6b3cd5..2e29b6b 100644
--- a/docs/website/community/how-to-contribute-docs.md
+++ b/docs/website/community/how-to-contribute-docs.md
@@ -93,7 +93,7 @@ Contributing using GitHub
 Our GitHub repository is located at
 [https://github.com/apache/incubator-brooklyn](https://github.com/apache/incubator-brooklyn)
 
-Your commit messages must properly describes the changes that have been made and
+Your commit messages must properly describe the changes that have been made and
 their purpose ([here are some
 guidelines](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html)).
 If your contributions fix a Jira issue, then ensure that you reference the issue
@@ -130,7 +130,7 @@ set of commits, and having an atomic change per commit is preferred in the end.
 Use your best judgement and work with your reviewer as to when you should revise
 a commit or create a new one.
 
-A pull request is considered ready to be merged once it gets at lease one +1
+A pull request is considered ready to be merged once it gets at least one +1
 from a committer. Once all the changes have been completed and the pull request
 is accepted, you may be asked to rebase it against the latest code. You may also
 wish to squash some commits together and make other history revisions, to leave

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/website/community/how-to-contribute.md
----------------------------------------------------------------------
diff --git a/docs/website/community/how-to-contribute.md b/docs/website/community/how-to-contribute.md
index f73c2fb..0f2ce1e 100644
--- a/docs/website/community/how-to-contribute.md
+++ b/docs/website/community/how-to-contribute.md
@@ -1,7 +1,6 @@
 ---
 layout: website-normal
 title: How to Contribute
-navgroup: community
 ---
 
 Welcome and thank you for your interest in contributing to Apache Brooklyn! This guide will take you through the
@@ -83,3 +82,9 @@ Our canonical repository is located at `https://git-wip-us.apache.org/repos/asf/
 
 When producing patches, please use `git format-patch` or a similar mechanism - this will ensure that you are properly
 attributed as the author of the patch when a committer merges it.
+
+
+Handy Places
+------------
+
+Development bookmarks are available [here](links.html).

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/website/community/links.md
----------------------------------------------------------------------
diff --git a/docs/website/community/links.md b/docs/website/community/links.md
new file mode 100644
index 0000000..20a062d
--- /dev/null
+++ b/docs/website/community/links.md
@@ -0,0 +1,22 @@
+---
+layout: website-normal
+title: Development Bookmarks
+menu_proxy_for: how-to-contribute.md
+---
+
+{% include fields.md %}
+
+Handy places:
+
+* **Code** is in Github at [https://github.com/apache/incubator-brooklyn/](https://github.com/apache/incubator-brooklyn/)
+
+* **Issues** are in Jira at [https://issues.apache.org/jira/browse/BROOKLYN/](https://issues.apache.org/jira/browse/BROOKLYN/)
+
+* **Maven repositories** are:
+  * [Apache releases]({{ apache_releases_repo_groupid_url }})
+  * [Apache snapshots]({{ apache_snapshots_repo_groupid_url }})
+  * Other repositories are at [http://developers.cloudsoftcorp.com/download/maven2/](http://developers.cloudsoftcorp.com/download/maven2/) for releases 
+  and [http://ccweb.cloudsoftcorp.com/maven/libs-snapshot-local/](http://ccweb.cloudsoftcorp.com/maven/libs-snapshot-local/) for snapshots
+            
+* **CI server** is a jenkins server at: [https://builds.apache.org/job/incubator-brooklyn-master-build/](https://builds.apache.org/job/incubator-brooklyn-master-build/)
+

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/website/documentation.md
----------------------------------------------------------------------
diff --git a/docs/website/documentation.md b/docs/website/documentation.md
deleted file mode 100644
index 4ad3c8e..0000000
--- a/docs/website/documentation.md
+++ /dev/null
@@ -1,19 +0,0 @@
----
-layout: website-normal
-title: Documentation
-children:
-- { link: "{{ site.path.guide }}", title: User Guide }
-- { path: glossary.md }
-- { path: documentation/install-on-server.md }
----
-
-## Official User Manual
-
-Our main user manual is organised by release version. Please pick the version that you are using:
-
-- [0.7.0-M1]({{ site.path.v }}/0.7.0-M1) -
-  Please note that this release was made prior to entering the Apache Incubator,
-  and therefore it is not endorsed by Apache.
-
-## Server install
-Follow this [guide](documentation/install-on-server.html) to install Brooklyn on a production server.

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/website/documentation/faq.md
----------------------------------------------------------------------
diff --git a/docs/website/documentation/faq.md b/docs/website/documentation/faq.md
new file mode 100644
index 0000000..25d3864
--- /dev/null
+++ b/docs/website/documentation/faq.md
@@ -0,0 +1,22 @@
+---
+title: FAQ
+layout: website-normal
+---
+
+## What's the difference between Brooklyn and...
+
+#### Chef and Puppet and other server config management tools?
+
+#### Cloudformation and Heat and other infrastructure declarative tools?
+ 
+#### CloudFoundry and other PaaS platforms?
+
+  
+## Why is this page blank?
+
+Supplying the answers are a TODO.
+
+
+## How do I supply answers?
+
+Click the "Edit this Page" link in the bottom right.

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/website/documentation/glossary.md
----------------------------------------------------------------------
diff --git a/docs/website/documentation/glossary.md b/docs/website/documentation/glossary.md
new file mode 100644
index 0000000..0651068
--- /dev/null
+++ b/docs/website/documentation/glossary.md
@@ -0,0 +1,92 @@
+---
+layout: website-normal
+title: Glossary
+---
+
+[//]: # (Abusing link groups to write comments that are not rendered in the document..)
+[//]: # (The links below reference the id attributes generated for the headers.)
+[//]: # (For example, the Autonomic section can be referred to with a link to #autonomic.)
+[//]: # (So if you alter any of the headers you should update the relevant link group too.)
+
+[autonomic]: #autonomic
+[blueprint]: #blueprint
+[effector]: #effector
+[entity]: #entity
+[policy]: #policy
+[sensor]: #sensor
+[YAML]: #yaml
+
+[//]: # (Note: Autonomic and blueprint section could link to learnmore page.)
+
+
+#### Autonomic
+
+Refers to the self-managing characteristics of distributed computing resources,
+adapting to unpredictable changes while hiding intrinsic complexity to
+operators and users.
+
+
+#### Blueprint
+
+A description of an application or system, which can be used for its automated
+deployment and runtime management. The blueprint describes a model of the
+application (i.e. its components, their configuration, and their
+relationships), along with policies for runtime management. The blueprint can
+be described in [YAML][].
+
+###### See also
+* [Documentation]({{site.path.website}}/learnmore/catalog/index.html) for the entity,
+  policy and enricher blueprints that Apache Brooklyn supports out-of-the-box.
+
+
+#### Effector
+
+An operation on an [entity][].
+
+
+#### Entity
+
+A component of an application or system. This could be a physical component, a
+service, a grouping of components, or a logical construct describing part of an
+application/system. It is a "managed element" in autonomic computing parlance.
+
+
+#### Policy
+
+Part of an autonomic management system, performing runtime management. A policy
+is associated with an [entity][]; it normally manages the health of that entity
+or an associated group of entities (e.g. HA policies or auto-scaling policies).
+
+
+#### Sensor
+
+An attribute of an [entity][].
+
+
+#### YAML
+
+A human-readable data format.
+
+###### See also
+* [Wikipedia article](http://en.wikipedia.org/wiki/YAML) on YAML
+
+
+#### Apache Jclouds
+
+An open source Java library that provides a consistent interface to many
+clouds. Apache Brooklyn uses Apache Jclouds as its core cloud abstraction.
+
+###### See also
+* [Project homepage](https://jclouds.apache.org/)
+
+
+#### CAMP and TOSCA
+
+OASIS Cloud Application Management for Platforms (CAMP) and OASIS Topology and
+Orchestration Specification for Cloud Applications (TOSCA) are specifications
+that aim to standardise the portability and management of cloud applications.
+
+###### See also
+* [CAMP homepage](https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=camp)
+* [TOSCA homepage](https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=tosca)
+

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/website/documentation/index.md
----------------------------------------------------------------------
diff --git a/docs/website/documentation/index.md b/docs/website/documentation/index.md
new file mode 100644
index 0000000..67aaa9c
--- /dev/null
+++ b/docs/website/documentation/index.md
@@ -0,0 +1,31 @@
+---
+layout: website-normal
+title: Documentation
+children:
+- /guide/
+- /guide/dev/
+- faq.md
+- other-docs.md
+---
+
+{% comment %}
+This is redundant with versions page.  Link to versions page?  List more things including other docs?
+Basically make this page pretty...
+{% endcomment %}
+
+## Official User Guide
+
+Our main user manual is organised by release version. Please pick the version that you are using:
+
+- [{{ site.brooklyn-stable-version }}]({{ site.path.v }}/latest) -
+  This is the latest stable version.
+
+- [0.7.0-M1]({{ site.path.v }}/0.7.0-M1) -
+  Please note that this release was made prior to entering the Apache Incubator,
+  and therefore it is not endorsed by Apache.
+
+From the links above you can also access the Developer Guide for the relevant versions.
+
+## Other Docs
+
+Many other mini-docs are available [here](other-docs.md).

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/website/documentation/other-docs.md
----------------------------------------------------------------------
diff --git a/docs/website/documentation/other-docs.md b/docs/website/documentation/other-docs.md
new file mode 100644
index 0000000..a6d01df
--- /dev/null
+++ b/docs/website/documentation/other-docs.md
@@ -0,0 +1,11 @@
+---
+title: Other Resources
+layout: website-normal
+children:
+- { path: glossary.md }
+- { path: install-on-server.md }
+- { path: ../meta/versions.md }
+- { path: ../meta/sitemap.md }
+---
+
+{% include list-children.html %}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/website/documentation/todo.md
----------------------------------------------------------------------
diff --git a/docs/website/documentation/todo.md b/docs/website/documentation/todo.md
new file mode 100644
index 0000000..724cb8c
--- /dev/null
+++ b/docs/website/documentation/todo.md
@@ -0,0 +1,7 @@
+---
+title: TODO
+layout: website-normal
+---
+
+TODO
+

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/website/download.md
----------------------------------------------------------------------
diff --git a/docs/website/download.md b/docs/website/download.md
deleted file mode 100644
index 4cd5cdf..0000000
--- a/docs/website/download.md
+++ /dev/null
@@ -1,40 +0,0 @@
----
-layout: website-normal
-title: Download
-children:
-- { path: download/verify.md }
----
-
-## Latest Brooklyn Source Code Release
-
-[Download Apache Brooklyn {{ site.data.brooklyn.version }} from our mirror sites](https://www.apache.org/dyn/closer.cgi/incubator/brooklyn/{{ site.data.brooklyn.version }}/apache-brooklyn-{{ site.data.brooklyn.version }}.tar.gz)
-
-You can also verify that you build has not been tampered with by [verifying the hashes and signatures](download/verify.html).
-
-
-## Build the Binary Package
-
-We do not yet have an official binary package for Apache Brooklyn. We plan to address this in our next release. However,
-it is relatively easy to create the binary package from source code, if you have a working JDK of at least version 6,
-and Maven 3.
-
-Unpack `apache-brooklyn-{{ site.data.brooklyn.version }}.tar.gz` and then execute this command in the `apache-brooklyn-{{ site.data.brooklyn.version }}` folder:
-
-{% highlight bash %}
-mvn clean install -DskipTests
-{% endhighlight %}
-
-You can then find the binary distribution in the folder `usage/dist/target/brooklyn-dist`, or archived as `usage/dist/target/brooklyn-{{ site.data.brooklyn.version }}-dist.tar.gz`.
-
-
-## Get Started!
-
-Take a look at the [Get Started](quickstart/) page!
-
-
-## Previous Versions
-
-Versions of Brooklyn prior to 0.7.0-M2 were all made prior to joining the Apache Incubator, therefore **they are not
-endorsed by Apache** and are not hosted by Apache or their mirrors. You can obtain the source code by [inspecting the
-branches of the pre-Apache GitHub repository](https://github.com/brooklyncentral/brooklyn/branches/stale) and binary
-releases by [querying Maven Central for io.brooklyn:brooklyn.dist](http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22io.brooklyn%22%20AND%20a%3A%22brooklyn-dist%22).

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/website/download/index.md
----------------------------------------------------------------------
diff --git a/docs/website/download/index.md b/docs/website/download/index.md
new file mode 100644
index 0000000..690c856
--- /dev/null
+++ b/docs/website/download/index.md
@@ -0,0 +1,40 @@
+---
+layout: website-normal
+title: Download
+children:
+- { path: verify.md }
+---
+
+## Latest Brooklyn Source Code Release
+
+[Download Apache Brooklyn {{ site.data.brooklyn.version }} from our mirror sites](https://www.apache.org/dyn/closer.cgi/incubator/brooklyn/{{ site.data.brooklyn.version }}/apache-brooklyn-{{ site.data.brooklyn.version }}.tar.gz)
+
+You can also verify that you build has not been tampered with by [verifying the hashes and signatures](download/verify.html).
+
+
+## Build the Binary Package
+
+We do not yet have an official binary package for Apache Brooklyn. We plan to address this in our next release. However,
+it is relatively easy to create the binary package from source code, if you have a working JDK of at least version 6,
+and Maven 3.
+
+Unpack `apache-brooklyn-{{ site.data.brooklyn.version }}.tar.gz` and then execute this command in the `apache-brooklyn-{{ site.data.brooklyn.version }}` folder:
+
+{% highlight bash %}
+mvn clean install -DskipTests
+{% endhighlight %}
+
+You can then find the binary distribution in the folder `usage/dist/target/brooklyn-dist`, or archived as `usage/dist/target/brooklyn-{{ site.data.brooklyn.version }}-dist.tar.gz`.
+
+
+## Get Started!
+
+Take a look at the [Get Started](quickstart/) page!
+
+
+## Previous Versions
+
+Versions of Brooklyn prior to 0.7.0-M2 were all made prior to joining the Apache Incubator, therefore **they are not
+endorsed by Apache** and are not hosted by Apache or their mirrors. You can obtain the source code by [inspecting the
+branches of the pre-Apache GitHub repository](https://github.com/brooklyncentral/brooklyn/branches/stale) and binary
+releases by [querying Maven Central for io.brooklyn:brooklyn.dist](http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22io.brooklyn%22%20AND%20a%3A%22brooklyn-dist%22).

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/website/glossary.md
----------------------------------------------------------------------
diff --git a/docs/website/glossary.md b/docs/website/glossary.md
deleted file mode 100644
index 0651068..0000000
--- a/docs/website/glossary.md
+++ /dev/null
@@ -1,92 +0,0 @@
----
-layout: website-normal
-title: Glossary
----
-
-[//]: # (Abusing link groups to write comments that are not rendered in the document..)
-[//]: # (The links below reference the id attributes generated for the headers.)
-[//]: # (For example, the Autonomic section can be referred to with a link to #autonomic.)
-[//]: # (So if you alter any of the headers you should update the relevant link group too.)
-
-[autonomic]: #autonomic
-[blueprint]: #blueprint
-[effector]: #effector
-[entity]: #entity
-[policy]: #policy
-[sensor]: #sensor
-[YAML]: #yaml
-
-[//]: # (Note: Autonomic and blueprint section could link to learnmore page.)
-
-
-#### Autonomic
-
-Refers to the self-managing characteristics of distributed computing resources,
-adapting to unpredictable changes while hiding intrinsic complexity to
-operators and users.
-
-
-#### Blueprint
-
-A description of an application or system, which can be used for its automated
-deployment and runtime management. The blueprint describes a model of the
-application (i.e. its components, their configuration, and their
-relationships), along with policies for runtime management. The blueprint can
-be described in [YAML][].
-
-###### See also
-* [Documentation]({{site.path.website}}/learnmore/catalog/index.html) for the entity,
-  policy and enricher blueprints that Apache Brooklyn supports out-of-the-box.
-
-
-#### Effector
-
-An operation on an [entity][].
-
-
-#### Entity
-
-A component of an application or system. This could be a physical component, a
-service, a grouping of components, or a logical construct describing part of an
-application/system. It is a "managed element" in autonomic computing parlance.
-
-
-#### Policy
-
-Part of an autonomic management system, performing runtime management. A policy
-is associated with an [entity][]; it normally manages the health of that entity
-or an associated group of entities (e.g. HA policies or auto-scaling policies).
-
-
-#### Sensor
-
-An attribute of an [entity][].
-
-
-#### YAML
-
-A human-readable data format.
-
-###### See also
-* [Wikipedia article](http://en.wikipedia.org/wiki/YAML) on YAML
-
-
-#### Apache Jclouds
-
-An open source Java library that provides a consistent interface to many
-clouds. Apache Brooklyn uses Apache Jclouds as its core cloud abstraction.
-
-###### See also
-* [Project homepage](https://jclouds.apache.org/)
-
-
-#### CAMP and TOSCA
-
-OASIS Cloud Application Management for Platforms (CAMP) and OASIS Topology and
-Orchestration Specification for Cloud Applications (TOSCA) are specifications
-that aim to standardise the portability and management of cloud applications.
-
-###### See also
-* [CAMP homepage](https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=camp)
-* [TOSCA homepage](https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=tosca)
-

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/website/index.md
----------------------------------------------------------------------
diff --git a/docs/website/index.md b/docs/website/index.md
index 2892e94..dac0968 100644
--- a/docs/website/index.md
+++ b/docs/website/index.md
@@ -1,19 +1,24 @@
 ---
 layout: website-landing
 title: Home
-navgroup: home
+landing: true
 children:
-- { path: learnmore/index.md }
-- { path: download.md }
-- { path: quickstart/index.md }
-- { path: documentation.md }
-- { path: community/index.md }
-navgroups:
-- { id: learnmore, page: learnmore/index.md, title: learn more, title_in_menu: Learn More }
-- { id: download, page: download.md, title: download }
-- { id: getstarted, page: quickstart/index.md, title: get started, title_in_menu: Get Started }
-- { id: documentation, page: documentation.md, title: documentation, title_in_menu: All Documentation }
-- { id: community, page: community/index.md, title: community, title_in_menu: Community Home }
+- learnmore/
+- { path: download/, menu: null }
+- { path: /guide/start/running.md, title: Get Started }
+- path: documentation/
+  menu:
+  - { path: /guide/index.md, title_in_menu: "User Guide", 
+      menu_customization: { dropdown_section_header: true } }
+  - { path: /guide/yaml/index.md, title_in_menu: YAML Blueprints, href_path: /guide/yaml/creating-yaml.md }
+  - { path: /guide/java/index.md, title_in_menu: Java Blueprints }
+  - { path: /guide/ops/index.md, title_in_menu: Operations,
+      menu_customization: { dropdown_section_header: true } }
+  - { path: /guide/dev/index.md, title_in_menu: Developer Guide }
+  - { path: documentation/faq.md, title_in_menu: FAQ,
+      menu_customization: { dropdown_new_section: true } }
+  - { path: documentation/other-docs.md, title_in_menu: Other Resources }
+- community/
 ---
 
 <div class="jumbotron">
@@ -63,7 +68,7 @@ View and modify using the *web console* or automate using the *REST API*
 
 <div style="text-align: center" markdown="1">
 
-<a class="btn btn-primary btn-lg" role="button" href="learnmore.html">learn more</a>
+<a class="btn btn-primary btn-lg" role="button" href="learnmore/">learn more</a>
 <a class="btn btn-primary btn-lg" role="button" href="quickstart/">get started</a>
 
 </div>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/website/learnmore/index.md
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/index.md b/docs/website/learnmore/index.md
index b185ace..d2a8998 100644
--- a/docs/website/learnmore/index.md
+++ b/docs/website/learnmore/index.md
@@ -3,7 +3,7 @@ layout: website-normal
 title: Learn More
 children:
 # - { path: yaml-explained.md }
-- { path: theory.md, title: Theory }
+- { path: theory.md, title_in_menu: Theory }
 ---
 
 <!--
@@ -12,4 +12,5 @@ TODO have a list of resources here?  or start w yaml explained?
 TODO include { path: catalog/index.html }
 -->
 
-* [The Theory of Brooklyn](theory.html)
+{% include list-children.html %}
+

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/website/learnmore/theory.md
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/theory.md b/docs/website/learnmore/theory.md
index 33d9b18..f1c3899 100644
--- a/docs/website/learnmore/theory.md
+++ b/docs/website/learnmore/theory.md
@@ -1,7 +1,6 @@
 ---
 layout: website-normal
 title: The Theory behind Brooklyn
-navgroup: learnmore
 ---
 
 <div class="jumobotron" markdown="1">

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/website/meta/license.md
----------------------------------------------------------------------
diff --git a/docs/website/meta/license.md b/docs/website/meta/license.md
new file mode 100644
index 0000000..c7f5366
--- /dev/null
+++ b/docs/website/meta/license.md
@@ -0,0 +1,205 @@
+---
+layout: website-normal
+title: Legal
+---
+
+## License
+
+Apache Brooklyn is released to the public as open source under the 
+terms of the [Apache License, v2.0](http://www.apache.org/licenses/LICENSE-2.0), a full copy of
+which is included below for reference.
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+Apache Brooklyn is currently undergoing Incubation at the Apache Software Foundation.
+
+
+## Trademark
+
+The Brooklyn name and logo are trademarks owned by the Apache Software Foundation.
+
+
+## Apache License, v2.0 (reference copy)
+
+
+{% highlight text %}
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+{% endhighlight %} 

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/website/meta/sitemap.md
----------------------------------------------------------------------
diff --git a/docs/website/meta/sitemap.md b/docs/website/meta/sitemap.md
new file mode 100644
index 0000000..efff2b2
--- /dev/null
+++ b/docs/website/meta/sitemap.md
@@ -0,0 +1,19 @@
+---
+layout: website-normal
+title: Site Map
+---
+
+<!-- TODO this is very much work in progress -->
+
+Site map is:
+
+{% for item in site.data.menu %}
+&nbsp;&nbsp;&nbsp; * {{ item['title_in_menu'] }} / {{ item.data['title'] }} - {{ item.data }}<br/>
+  {% for item2 in item['menu'] %}
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * {{ item2['title_in_menu'] }} / {{ item2['path'] }} / {{ item2['link'] }}<br/>
+    {% for item3 in item2['menu'] %}
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * {{ item3['title_in_menu'] }} / {{ item3['path'] }} / {{ item3['breadcrumbs'] }}<br/>
+    {% endfor %}
+  {% endfor %}
+{% endfor %}
+

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/website/meta/versions.md
----------------------------------------------------------------------
diff --git a/docs/website/meta/versions.md b/docs/website/meta/versions.md
new file mode 100644
index 0000000..949e6f6
--- /dev/null
+++ b/docs/website/meta/versions.md
@@ -0,0 +1,71 @@
+---
+layout: website-normal
+title: Versions
+---
+
+### Current Version: {{ site.brooklyn-stable-version }}
+
+The current stable version of Brooklyn is {{ site.brooklyn-stable-version }}:
+
+* [Download]({{ site.path.website }}/download.md)
+* [User Guide]({{ site.path.guide }}/)
+* [Release Notes]({{ site.path.guide }}/start/release-notes.md)
+
+This documentation was generated {{ site.time | date_to_string }}.
+
+
+### Version History
+
+Apache versions:
+
+* **[0.7.0-SNAPSHOT](/v/0.7.0-SNAPSHOT/)**: bleeding-edge (not voted on or endorsed by Apache!)
+
+* **[0.7.0-M2](/v/0.7.0-M2/)**: YAML, persistence, Chef, Windows, Docker. The first Apache release! (Dec 2014)
+
+
+The versions below were made prior to joining the Apache Incubator, 
+therefore **they are not endorsed by Apache** and are not hosted by Apache or their mirrors. 
+You can obtain the source code by [inspecting the branches of the pre-Apache GitHub repository](https://github.com/brooklyncentral/brooklyn/branches/stale) 
+and binary releases by [querying Maven Central for io.brooklyn:brooklyn.dist](http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22io.brooklyn%22%20AND%20a%3A%22brooklyn-dist%22).
+
+* **[0.6.0](/v/0.6.0/)**: use of spec objects, chef and windows support, more clouds (Nov 2013)
+
+* **[0.5.0](/v/0.5.0/)**: includes new JS GUI and REST API, rebind/persistence support, cleaner model and naming conventions, more entities (May 2013)
+
+* **[0.4.0](/v/0.4.0/)**: initial public GA release of Brooklyn to Maven Central, supporting wide range of entities and examples (Jan 2013)
+
+Note: To prevent accidentally referring to out-of-date information,
+a banner is displayed when accessing content from specific versions in the archive.
+You may 
+<a href="#" onclick="set_user_versions_all();">disable all warnings</a> or
+<a href="#" onclick="clear_user_versions();">re-enable all warnings</a>.
+
+
+### Versioning
+
+Brooklyn follows [semantic versioning](http://semver.org/) with a leading `0.` qualifier:
+
+    0.<major>.<minor>[.<patch>]-<qualifier>
+
+Breaking backward compatibility increments the `<major>` version.
+New additions without breaking backward compatibility ups the `<minor>` version.
+Bug fixes and misc changes bumps the `<patch>` version.
+New major and minor releases zero the less significant counters.
+
+From time to time, the Brooklyn project will make snapshots, milestone releases, and other qualified versions available,
+using the following conventions:
+
+* Milestone versions (`-M<n>`) have been voted on and have been through some QA,
+  but have not had the extensive testing as is done on a release.
+
+* Snapshot (`-SNAPSHOT`) is the bleeding edge.
+  With good test coverage these builds are usually healthy, 
+  but they have not been through QA or voted on.
+
+* Nightly builds (`-N<date>`) represent a snapshot which has
+  been given a permanent version number, typically for use by other projects.
+  The same caveats as for snapshot releases apply (no QA or Apache vote). 
+
+* Release Candidate builds (`-RC<n>`) are made in the run-up to a release;
+  these should not normally be used except for deciding whether to cut a release.
+

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/website/quickstart/_my-web-cluster.yaml
----------------------------------------------------------------------
diff --git a/docs/website/quickstart/_my-web-cluster.yaml b/docs/website/quickstart/_my-web-cluster.yaml
deleted file mode 100644
index 3b6134b..0000000
--- a/docs/website/quickstart/_my-web-cluster.yaml
+++ /dev/null
@@ -1,19 +0,0 @@
-name: My Web Cluster
-location: location
-services:
-
-- serviceType: brooklyn.entity.webapp.ControlledDynamicWebAppCluster
-  name: My Web
-  brooklyn.config:
-    wars.root: http://search.maven.org/remotecontent?filepath=io/brooklyn/example/brooklyn-example-hello-world-sql-webapp/{{ site.data.brooklyn.version }}/brooklyn-example-hello-world-sql-webapp-{{ site.data.brooklyn.version }}.war
-    java.sysprops:
-      brooklyn.example.db.url: >
-        $brooklyn:formatString("jdbc:%s%s?user=%s\\&password=%s",
-        component("db").attributeWhenReady("datastore.url"),
-        "visitors", "brooklyn", "br00k11n")
-
-- serviceType: brooklyn.entity.database.mysql.MySqlNode
-  id: db
-  name: My DB
-  brooklyn.config:
-    creationScriptUrl: https://bit.ly/brooklyn-visitors-creation-script
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/website/quickstart/catalog.xml
----------------------------------------------------------------------
diff --git a/docs/website/quickstart/catalog.xml b/docs/website/quickstart/catalog.xml
deleted file mode 100644
index 6cff554..0000000
--- a/docs/website/quickstart/catalog.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<catalog>
-    <name>Brooklyn Demos</name>
-
-
-    <template type="brooklyn.demo.WebClusterDatabaseExample" name="Demo Web Cluster with DB">
-      <description>Deploys a demonstration web application to a managed JBoss cluster with elasticity, persisting to a MySQL</description>
-      <iconUrl>http://downloads.cloudsoftcorp.com/brooklyn/catalog/logos/JBoss_by_Red_Hat.png</iconUrl>
-    </template>
-
-    <template type="brooklyn.demo.GlobalWebFabricExample" name="Demo GeoDNS Web Fabric DB">
-      <description>Deploys a demonstration web application to JBoss clusters around the world</description>
-      <iconUrl>http://downloads.cloudsoftcorp.com/brooklyn/catalog/logos/JBoss_by_Red_Hat.png</iconUrl>
-    </template>
-    
-    <classpath>
-      <entry>https://oss.sonatype.org/service/local/artifact/maven/redirect?r=releases&amp;g=io.brooklyn.example&amp;a=brooklyn-example-simple-web-cluster&amp;v=0.7.0-SNAPSHOT&amp;e=jar</entry> <!-- BROOKLYN_VERSION -->
-      <entry>https://oss.sonatype.org/service/local/artifact/maven/redirect?r=releases&amp;g=io.brooklyn.example&amp;a=brooklyn-example-global-web-fabric&amp;v=0.7.0-SNAPSHOT&amp;e=jar</entry> <!-- BROOKLYN_VERSION -->
-    </classpath>
-
-
-</catalog>
-

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/website/quickstart/images/add-application-catalog-web-cluster-with-db-large.png
----------------------------------------------------------------------
diff --git a/docs/website/quickstart/images/add-application-catalog-web-cluster-with-db-large.png b/docs/website/quickstart/images/add-application-catalog-web-cluster-with-db-large.png
deleted file mode 100644
index b566b1a..0000000
Binary files a/docs/website/quickstart/images/add-application-catalog-web-cluster-with-db-large.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/website/quickstart/images/add-application-catalog-web-cluster-with-db-location-large.png
----------------------------------------------------------------------
diff --git a/docs/website/quickstart/images/add-application-catalog-web-cluster-with-db-location-large.png b/docs/website/quickstart/images/add-application-catalog-web-cluster-with-db-location-large.png
deleted file mode 100644
index 05e9b0c..0000000
Binary files a/docs/website/quickstart/images/add-application-catalog-web-cluster-with-db-location-large.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/website/quickstart/images/add-application-catalog-web-cluster-with-db-location.png
----------------------------------------------------------------------
diff --git a/docs/website/quickstart/images/add-application-catalog-web-cluster-with-db-location.png b/docs/website/quickstart/images/add-application-catalog-web-cluster-with-db-location.png
deleted file mode 100644
index c13fdd8..0000000
Binary files a/docs/website/quickstart/images/add-application-catalog-web-cluster-with-db-location.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/website/quickstart/images/add-application-catalog-web-cluster-with-db.png
----------------------------------------------------------------------
diff --git a/docs/website/quickstart/images/add-application-catalog-web-cluster-with-db.png b/docs/website/quickstart/images/add-application-catalog-web-cluster-with-db.png
deleted file mode 100644
index ebb6f42..0000000
Binary files a/docs/website/quickstart/images/add-application-catalog-web-cluster-with-db.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/website/quickstart/images/add-application-modal-yaml.png
----------------------------------------------------------------------
diff --git a/docs/website/quickstart/images/add-application-modal-yaml.png b/docs/website/quickstart/images/add-application-modal-yaml.png
deleted file mode 100644
index c50b7ab..0000000
Binary files a/docs/website/quickstart/images/add-application-modal-yaml.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/website/quickstart/images/jboss7-cluster-policies-large.png
----------------------------------------------------------------------
diff --git a/docs/website/quickstart/images/jboss7-cluster-policies-large.png b/docs/website/quickstart/images/jboss7-cluster-policies-large.png
deleted file mode 100644
index 3d84477..0000000
Binary files a/docs/website/quickstart/images/jboss7-cluster-policies-large.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/website/quickstart/images/jboss7-cluster-policies.png
----------------------------------------------------------------------
diff --git a/docs/website/quickstart/images/jboss7-cluster-policies.png b/docs/website/quickstart/images/jboss7-cluster-policies.png
deleted file mode 100644
index 2f85328..0000000
Binary files a/docs/website/quickstart/images/jboss7-cluster-policies.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/website/quickstart/images/my-db-activities-large.png
----------------------------------------------------------------------
diff --git a/docs/website/quickstart/images/my-db-activities-large.png b/docs/website/quickstart/images/my-db-activities-large.png
deleted file mode 100644
index c214d9e..0000000
Binary files a/docs/website/quickstart/images/my-db-activities-large.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/website/quickstart/images/my-db-activities.png
----------------------------------------------------------------------
diff --git a/docs/website/quickstart/images/my-db-activities.png b/docs/website/quickstart/images/my-db-activities.png
deleted file mode 100644
index 0f2327c..0000000
Binary files a/docs/website/quickstart/images/my-db-activities.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/website/quickstart/images/my-web-cluster-starting.png
----------------------------------------------------------------------
diff --git a/docs/website/quickstart/images/my-web-cluster-starting.png b/docs/website/quickstart/images/my-web-cluster-starting.png
deleted file mode 100644
index c389b0b..0000000
Binary files a/docs/website/quickstart/images/my-web-cluster-starting.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/website/quickstart/images/my-web-cluster-stop-confirm-large.png
----------------------------------------------------------------------
diff --git a/docs/website/quickstart/images/my-web-cluster-stop-confirm-large.png b/docs/website/quickstart/images/my-web-cluster-stop-confirm-large.png
deleted file mode 100644
index c9bdab6..0000000
Binary files a/docs/website/quickstart/images/my-web-cluster-stop-confirm-large.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/website/quickstart/images/my-web-cluster-stop-confirm.png
----------------------------------------------------------------------
diff --git a/docs/website/quickstart/images/my-web-cluster-stop-confirm.png b/docs/website/quickstart/images/my-web-cluster-stop-confirm.png
deleted file mode 100644
index 179b00a..0000000
Binary files a/docs/website/quickstart/images/my-web-cluster-stop-confirm.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/website/quickstart/images/my-web-summary-large.png
----------------------------------------------------------------------
diff --git a/docs/website/quickstart/images/my-web-summary-large.png b/docs/website/quickstart/images/my-web-summary-large.png
deleted file mode 100644
index fc4bffe..0000000
Binary files a/docs/website/quickstart/images/my-web-summary-large.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/website/quickstart/images/my-web-summary.png
----------------------------------------------------------------------
diff --git a/docs/website/quickstart/images/my-web-summary.png b/docs/website/quickstart/images/my-web-summary.png
deleted file mode 100644
index e85752f..0000000
Binary files a/docs/website/quickstart/images/my-web-summary.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/website/quickstart/images/my-web.png
----------------------------------------------------------------------
diff --git a/docs/website/quickstart/images/my-web.png b/docs/website/quickstart/images/my-web.png
deleted file mode 100644
index 2bd6ac3..0000000
Binary files a/docs/website/quickstart/images/my-web.png and /dev/null differ


Mime
View raw message