You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by he...@apache.org on 2015/01/20 00:00:21 UTC

[01/13] incubator-brooklyn git commit: docs - three minor liquid language things which break in v.next of liquid

Repository: incubator-brooklyn
Updated Branches:
  refs/heads/master 09377df27 -> 677762b2c


docs - three minor liquid language things which break in v.next of liquid

discovered when testing incremental regen in https://github.com/jekyll/jekyll/pull/3116 --
means changes get picked up in 1s instead of 10s, using the next version of jekyll
(unfortunately not yet gemmed)


Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/335a5755
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/335a5755
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/335a5755

Branch: refs/heads/master
Commit: 335a57553745643ecd12fbe40562665fe8873e22
Parents: 663f673
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Thu Jan 15 01:50:46 2015 +0000
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Thu Jan 15 16:32:11 2015 +0000

----------------------------------------------------------------------
 docs/_includes/sidemenu.html     | 3 ++-
 docs/_includes/sitemap-item.html | 5 +++--
 2 files changed, 5 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/335a5755/docs/_includes/sidemenu.html
----------------------------------------------------------------------
diff --git a/docs/_includes/sidemenu.html b/docs/_includes/sidemenu.html
index 68791ce..f37ce66 100644
--- a/docs/_includes/sidemenu.html
+++ b/docs/_includes/sidemenu.html
@@ -33,7 +33,8 @@
                       {% if item.external %}&nbsp;<span class="octicon octicon-link-external"></span>{% endif %}</a></h4>
               {% endfor %}
               {% for item in page.menu_parent.menu %}
-                {% if (page.breadcrumb_paths contains item.menu_path) and page.menu %}
+                {% if page.breadcrumb_paths contains item.menu_path %}{% assign in_menu = true %}{% else %}{% assign in_menu = false %}{% endif %} 
+                {% if in_menu and page.menu %}
                   {% comment %} case 3b {% endcomment %}
                   <a href="{{item.url}}" class="list-group-item active with-sub-item">{{ item.title_in_menu }}
                     {% if item.external %}&nbsp;<span class="octicon octicon-link-external"></span>{% endif %}</a>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/335a5755/docs/_includes/sitemap-item.html
----------------------------------------------------------------------
diff --git a/docs/_includes/sitemap-item.html b/docs/_includes/sitemap-item.html
index eb6395c..247fc5d 100644
--- a/docs/_includes/sitemap-item.html
+++ b/docs/_includes/sitemap-item.html
@@ -14,7 +14,7 @@
 <a id="{{ item_path }}"></a>
 <li>
  {% if visited contains item_path %}
-  {{ item['title'] }} &nbsp; <a href="#{{ item_path] }}"><span class="octicon octicon-link-external flip"></span></a>
+  {{ item['title'] }} &nbsp; <a href="#{{ item_path }}"><span class="octicon octicon-link-external flip"></span></a>
  {% elsif item['external'] %}
   {{ item['title'] }} &nbsp; <a href="{{ item['url'] }}"><span class="octicon octicon-link-external"></span></a>
   
@@ -24,7 +24,8 @@
    {% push visited item_path %}
    <ul>
     {% push site_items item %}
-    {% for item in site_items[-1]['menu'] %}
+    {% assign last_item = site_items[-1] %}
+    {% for item in last_item['menu'] %}
      {% push site_items item %}
      {% include sitemap-item.html %}
     {% endfor %}


[08/13] incubator-brooklyn git commit: docs: add cloud-explorer CLI

Posted by he...@apache.org.
docs: add cloud-explorer CLI

Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/b36436b3
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/b36436b3
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/b36436b3

Branch: refs/heads/master
Commit: b36436b30b69d052b9e7c5c5e0cee2ebbb3f5537
Parents: aed2f1c
Author: Aled Sage <al...@gmail.com>
Authored: Thu Jan 15 17:01:55 2015 +0000
Committer: Aled Sage <al...@gmail.com>
Committed: Thu Jan 15 17:01:55 2015 +0000

----------------------------------------------------------------------
 docs/guide/ops/launching/index.md | 56 ++++++++++++++++++++++++++++++++++
 1 file changed, 56 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/b36436b3/docs/guide/ops/launching/index.md
----------------------------------------------------------------------
diff --git a/docs/guide/ops/launching/index.md b/docs/guide/ops/launching/index.md
index 8eb3dd9..c35281e 100644
--- a/docs/guide/ops/launching/index.md
+++ b/docs/guide/ops/launching/index.md
@@ -32,6 +32,9 @@ These can be specified as a shell environment variable or as a Java system prope
 although in those contexts the conventional format ``BROOKLYN_JCLOUDS_AWS_EC2_IDENTITY`` 
 is supported and recommended.
 
+The recommended approach is to use the properties file, with permissions 600 
+(i.e. readable and writable only by the file's owner).
+
 
 Command Line Interface
 ----------------------
@@ -85,3 +88,56 @@ You can add things to the brooklyn classpath in a number of ways:
 * Use the ``BROOKLYN_CLASSPATH`` environment variable. If set, this is prepended to the brooklyn classpath.
 
 
+### Cloud Explorer
+
+The `brooklyn` command line tool includes support for querying (and managing) cloud
+compute resources and blob-store resources. 
+
+For example, `brooklyn cloud-compute list-instances --location aws-ec2:eu-west-1`
+will use the AWS credentials from brooklyn.properties, and will list the VM instances
+running in the given EC2 region.
+
+Use `brooklyn help` and `brooklyn help cloud-compute` to find out more information.
+
+This functionality is not intended as a generic cloud management CLI, but instead 
+solves specific brooklyn use-cases. The main use-case is discovering the valid 
+configuration options on a given cloud, such as for `imageId` and `hardwareId`.
+
+
+#### Cloud Compute
+
+The command `brooklyn cloud-compute` has the following options:
+
+* `list-images`: lists VM images within the given cloud, which can be chosen when
+  provisioning new VMs.
+  This is useful for finding the possible values for the `imageId` configuration.
+
+* `get-image <imageId1> <imageId2> ...`: retrieves metadata about the specific images.
+
+* `list-hardware-profiles`: lists the ids and the details of the hardware profiles
+  available when provisioning. 
+  This is useful for finding the possible values for the `hardwareId` configuration.
+
+* `default-template`: retrieves metadata about the image and hardware profile that will
+  be used by Brooklyn for that location, if no additional configuration options
+  are supplied.
+
+* `list-instances`: lists the VM instances within the given cloud.
+
+* `terminate-instances <instanceId1> <instanceId2> ...`: Terminates the instances with
+  the given ids.
+
+
+#### Blob Store
+
+The command `brooklyn cloud-blobstore` is used to access a given object store, such as S3
+or Swift. It has the following options:
+
+* `list-containers`: lists the containers (i.e. buckets in S3 terminology) within the 
+  given object store.
+
+* `list-container <containerName>`: lists all the blobs (i.e. objects) contained within 
+  the given container.
+
+* `blob --container <containerName> --blob <blobName>`: retrieves the given blob
+  (i.e. object), including metadata and its contents.


[11/13] incubator-brooklyn git commit: docs: update catalog description

Posted by he...@apache.org.
docs: update catalog description


Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/1f48765f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/1f48765f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/1f48765f

Branch: refs/heads/master
Commit: 1f48765fc3e868adcf541a1af0dc8f4f1cb8f792
Parents: f008e27
Author: Aled Sage <al...@gmail.com>
Authored: Fri Jan 16 18:22:58 2015 +0000
Committer: Aled Sage <al...@gmail.com>
Committed: Fri Jan 16 18:26:50 2015 +0000

----------------------------------------------------------------------
 docs/guide/ops/catalog/index.md | 174 ++++++++++++++++++++++-------------
 1 file changed, 111 insertions(+), 63 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/1f48765f/docs/guide/ops/catalog/index.md
----------------------------------------------------------------------
diff --git a/docs/guide/ops/catalog/index.md b/docs/guide/ops/catalog/index.md
index 4b05afc..8b14b65 100644
--- a/docs/guide/ops/catalog/index.md
+++ b/docs/guide/ops/catalog/index.md
@@ -1,102 +1,81 @@
 ---
-title: Catalog Maintenance
+title: Catalog
 layout: website-normal
-toc: ../guide_toc.json
-categories: [use, guide, catalog-maintenance]
 ---
 
-In addition to deploying [YAML blueprints](creating-yaml.html) directly through the web console, it is possible
-to add YAML blueprints to the catalog via Brooklyn's REST API.
-
-The catalog is a collection of versioned blueprints, which can be deployed directly or referenced 
-by other blueprints.  Blueprints in the catalog can be deployed via the Brooklyn REST API, or from 
+Brooklyn has a 'catalog', which is a collection of versioned blueprints. 
+These can be deployed directly or referenced by other blueprints. 
+Blueprints in the catalog can be deployed via the Brooklyn REST API, or from 
 the web-console's 'Catalog' section of the 'Create Application' dialog box.
 
-All YAML blueprints added to the catalog must also contain a `brooklyn.catalog` section. 
-
-For a blueprint to be accessible via the 'Create Application' dialog, it must be an Application 
-(i.e. the entity at the root of the blueprint must implement `brooklyn.entity.Application`).
-If just deploying via the REST API, then this is not necessary.
 
 <!--
-TODO: Add section that explains how to add plain entities to the catalog and use them either from the App Wizard,
-(and entity UI) or embed the catalog id + version in another YAML
+TODO: Clean up confusion in terminology between Catalog item and Blueprint (and Java blueprint?)?
 -->
 
-Let's take the following YAML as a starting point.
-
-{% highlight yaml %}
-location: localhost
-
-name: MySQL Database
-services:
-- type: brooklyn.entity.database.mysql.MySqlNode
-  brooklyn.config:
-    datastore.creation.script.url: classpath://visitors-creation-script.sql
-{% endhighlight %}
-
-We will convert it for adding to the catalog, such that it will usable through the 
-'Create Application' dialog.
+### Catalog items
 
-The steps are therefore:
+An item to be added to the catalog is defined in YAML. This looks like any other 
+YAML blueprint, but also has a `brooklyn.catalog` section giving appropriate metadata.
 
-* Add a brooklyn.catalog section to give metadata about the version etc. This is also used 
-  when displaying the blueprint in the 'Add Application' dialog.
-* Remove the explicit location (as the user will typically select the location in the GUI).
-* Add a root element that extends `brooklyn.entity.Application`. As we don't require any
-  custom application-specific logic, we can use the `brooklyn.entity.basic.BasicApplication` 
-  class. We can then add our MySqlNode as a child of the BasicApplication. 
-  (When deploying via YAML at the REST API, this is not necessary as Brooklyn will do this 
-  automatically).
+An example is shown below.
 
 {% highlight yaml %}
 brooklyn.catalog:
-  id: MySQL
+  id: org.example.MySQL
   version: 1.0
   iconUrl: classpath://mysql.png
   description: MySql is an open source relational database management system (RDBMS)
+  libraries:
+    - url: http://example.com/path/to/my-dependency-1.2.3.jar
+    - url: http://example.com/path/to/my-other-dependency-4.5.6.jar
 
-name: MySQL Database
 services:
-- type: brooklyn.entity.basic.BasicApplication
-  brooklyn.children:
-  - type: brooklyn.entity.database.mysql.MySqlNode
-    brooklyn.config:
-      datastore.creation.script.url: classpath://visitors-creation-script.sql
+- type: brooklyn.entity.database.mysql.MySqlNode
 {% endhighlight %}
 
-<!--
-TODO: Add documentation to explain that the brooklyn.catalog section can contain a libraries array, each item pointing to 
-an OSGi bundle where the code for the blueprint is hosted. Every type from the blueprint will be searched for in the 
-libraries first and then on the standard Brooklyn classpath.*
--->
-
 To explain the `brooklyn.catalog` section:
 
-- The `id: MySQL` section specifies a unique ID used by Brooklyn to identify the catalog item. This ID is also passed to 
-`UsageManager.UsageListener.onApplicationEvent` for metering purposes.
+- The `id: MySQL` section specifies a unique ID used by Brooklyn to identify the catalog item. 
+  Other blueprints can reference the catalog item using this id.
 - The `version: 1.0` section provides a unique version for the *blueprint*. NOTE: This is *not* the version of the software
 being installed (in this case MySQL).
-- The `iconUrl: classpath://...` is an optional, but recommended, section that allows you to provide a graphic to be 
-displayed in the 'Add Application' dialog alongside the blueprint name. These image files should be placed in the 
-`conf` folder to make them available at runtime.
+- The `iconUrl: classpath://...` is an optional, but recommended, section that allows you to provide the URL of a graphic to be 
+displayed in the 'Add Application' dialog alongside the blueprint name. If using a URL of the form `classpath://...`, then
+the image should be on Brooklyn's classpath (e.g. in the `conf` folder of the Brooklyn distro).
 - The `description: ...` section allows you to give a free-format description of the blueprint, which is displayed in the 
 'Add Application' dialog.
 
-To add the blueprint to the catalog, post the YAML file to Brooklyn's REST API by using the `curl` command as
+The `libraries` section references OSGi bundles required for the blueprint. It can be omitted if everything
+required by the blueprint is already on the Brooklyn classpath. The URLs should be to stable OSGi bundles -
+if the bundle at this URL changes then this could impact applications if the Brooklyn server is restarted
+or fails over to a standby node.
+
+
+To reference a catalog item in another blueprint, simply use its id and optionally its version number.
+For example: 
+
+{% highlight yaml %}
+services:
+- type: org.example.MySQL:1.0
+{% endhighlight %}
+
+
+### Adding to the Catalog
+
+To add a catalog item to the catalog, post the YAML file to Brooklyn's REST API by using the `curl` command as
 follows (substituting your own usename:password, URL and file path):
 
 {% highlight bash %}
 curl -u admin:password http://127.0.0.1:8081/v1/catalog --data-binary @/path/to/mysql-catalog.yaml
 {% endhighlight %}
 
-This will add the blueprint to the catalog as shown here:
-[![MySQL in Brooklyn Catalog](mysql-in-catalog-w700.png "MySQL in Brooklyn Catalog")](mysql-in-catalog.png) 
 
-If you attempt to run the curl command a second time, you will receive an error stating `Updating existing catalog entries is forbidden`.
-To update the blueprint, you will need to change the version number in your yaml file before running the curl command 
-again. This will create a second blueprint. You can then delete the old version via the REST API, using its ID and version
-as follows:
+
+### Deleting from the Catalog
+
+You can delete a versioned item from the catalog using the REST API. For example, to delete
+the item with id `org.example.MySQL` and version `1.0`:
 
 {% highlight bash %}
 curl -u admin:password -X DELETE http://127.0.0.1:8081/v1/catalog/entities/MySQL/1.0
@@ -105,6 +84,75 @@ curl -u admin:password -X DELETE http://127.0.0.1:8081/v1/catalog/entities/MySQL
 **Note** Catalog items should not be deleted if there are running apps which were created using the same item. During
 rebinding the catalog item is used to reconstruct the entity.
 
+
+### Versioning
+
+Version numbers follow the OSGi convention. This can have a major, minor, micro and qualifier part.
+For example, `1.0`. `1.0.1` or `1.0.1-20150101`.
+
+If you attempt to deploy the same version of a catalog item a second time, you will receive an 
+error stating `Updating existing catalog entries is forbidden`.
+To update the blueprint, you will need to change the version number in your yaml file and then
+POST the new YAML file.
+
+An exception to this rule is when no version is specified. Re-deploying will automatically
+increment an internal version number for that catalog item.
+
+When referencing a blueprint, if a version number is not specified then the latest version will
+be used when the application is deployed.
+
+
+### Special requirements for 'Create Application' dialog
+
+For a blueprint in the catalog to be accessible via the 'Create Application' dialog, it must be an Application 
+(i.e. the entity at the root of the blueprint must implement `brooklyn.entity.Application`).
+In contrast, if a YAML blueprint is deployed direct via the REST API, then this is not necessary.
+
+For example, the MySql catalog item defined previously could be re-written to use a
+`brooklyn.entity.basic.BasicApplication`, because no application-specific logic is 
+required other than to pass-through the start and stop commands.
+the `MySqlNode` is added as a child of the `BasicApplication`.
+
+{% highlight yaml %}
+brooklyn.catalog:
+  id: org.example.MySQL
+  version: 1.0
+  iconUrl: classpath://mysql.png
+  description: MySql is an open source relational database management system (RDBMS)
+
+name: MySQL Database
+services:
+- type: brooklyn.entity.basic.BasicApplication
+  brooklyn.children:
+  - type: brooklyn.entity.database.mysql.MySqlNode
+{% endhighlight %}
+
+When added to the catalog via the HTTP POST command, the blueprint will appear in the 'Create Application' dialog
+as shown here:
+
+[![MySQL in Brooklyn Catalog](mysql-in-catalog-w700.png "MySQL in Brooklyn Catalog")](mysql-in-catalog.png) 
+
+When deploying a new version of a blueprint, the catalog will show both the previous and the new versions 
+of the blueprint. You may wish to delete the older version, assuming no applications currently running
+are using that old version.
+
+<!--
+TODO: Should improve the 'Create Application' dialog, so that the two versions don't appear on the front page.
+Currently they are indistinguisable, if they have the same description/icon.
+-->
+
+
+<!--
+TODO: Add section that explains how to add plain entities to the catalog and use them either from the App Wizard,
+(and entity UI) or embed the catalog id + version in another YAML
+-->
+
+<!--
+TODO: Add documentation to explain that the brooklyn.catalog section can contain a libraries array, each item pointing to 
+an OSGi bundle where the code for the blueprint is hosted. Every type from the blueprint will be searched for in the 
+libraries first and then on the standard Brooklyn classpath.*
+-->
+
 <!--
 TODO: Add documentation about adding policies to the catalog, and explaining how to add items to 
 the UI using the plus icon on the catalog tab*


[02/13] incubator-brooklyn git commit: tweaks for firefox

Posted by he...@apache.org.
tweaks for firefox


Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/6379bb70
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/6379bb70
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/6379bb70

Branch: refs/heads/master
Commit: 6379bb70e8d54acf5704978e8332766b45695221
Parents: 4c6d4b7
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Thu Jan 15 16:27:53 2015 +0000
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Thu Jan 15 16:33:00 2015 +0000

----------------------------------------------------------------------
 docs/style/css/base.scss | 3 +++
 1 file changed, 3 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/6379bb70/docs/style/css/base.scss
----------------------------------------------------------------------
diff --git a/docs/style/css/base.scss b/docs/style/css/base.scss
index 663d596..2f778ee 100644
--- a/docs/style/css/base.scss
+++ b/docs/style/css/base.scss
@@ -487,6 +487,9 @@ code {
   display: inherit;
 }
 .clipboard_button .on-active {
+  // z-index often doesn't help here (diff stacking context to the side menu)... but it shouldn't hurt!
+  z-index: 10;
+  font-family: $fonts;
   display: none;
   margin-top: -20px;
   height: 0;


[10/13] incubator-brooklyn git commit: docs: move catalog.md from yaml to ops section

Posted by he...@apache.org.
docs: move catalog.md from yaml to ops section

- renaming file from catalog-maintenance.md to catalog/index.md


Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/f008e27a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/f008e27a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/f008e27a

Branch: refs/heads/master
Commit: f008e27a913006f1d0a077308f64d6a7463e0862
Parents: 1ca11bd
Author: Aled Sage <al...@gmail.com>
Authored: Fri Jan 16 17:37:18 2015 +0000
Committer: Aled Sage <al...@gmail.com>
Committed: Fri Jan 16 18:26:50 2015 +0000

----------------------------------------------------------------------
 docs/guide/ops/catalog/index.md                 | 115 +++++++++++++++++++
 .../guide/ops/catalog/mysql-in-catalog-w700.png | Bin 0 -> 92767 bytes
 docs/guide/ops/catalog/mysql-in-catalog.png     | Bin 0 -> 168831 bytes
 docs/guide/ops/index.md                         |   1 +
 docs/guide/yaml/catalog-maintenance.md          | 115 -------------------
 docs/guide/yaml/index.md                        |   1 -
 docs/guide/yaml/mysql-in-catalog-w700.png       | Bin 92767 -> 0 bytes
 docs/guide/yaml/mysql-in-catalog.png            | Bin 168831 -> 0 bytes
 8 files changed, 116 insertions(+), 116 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/f008e27a/docs/guide/ops/catalog/index.md
----------------------------------------------------------------------
diff --git a/docs/guide/ops/catalog/index.md b/docs/guide/ops/catalog/index.md
new file mode 100644
index 0000000..4b05afc
--- /dev/null
+++ b/docs/guide/ops/catalog/index.md
@@ -0,0 +1,115 @@
+---
+title: Catalog Maintenance
+layout: website-normal
+toc: ../guide_toc.json
+categories: [use, guide, catalog-maintenance]
+---
+
+In addition to deploying [YAML blueprints](creating-yaml.html) directly through the web console, it is possible
+to add YAML blueprints to the catalog via Brooklyn's REST API.
+
+The catalog is a collection of versioned blueprints, which can be deployed directly or referenced 
+by other blueprints.  Blueprints in the catalog can be deployed via the Brooklyn REST API, or from 
+the web-console's 'Catalog' section of the 'Create Application' dialog box.
+
+All YAML blueprints added to the catalog must also contain a `brooklyn.catalog` section. 
+
+For a blueprint to be accessible via the 'Create Application' dialog, it must be an Application 
+(i.e. the entity at the root of the blueprint must implement `brooklyn.entity.Application`).
+If just deploying via the REST API, then this is not necessary.
+
+<!--
+TODO: Add section that explains how to add plain entities to the catalog and use them either from the App Wizard,
+(and entity UI) or embed the catalog id + version in another YAML
+-->
+
+Let's take the following YAML as a starting point.
+
+{% highlight yaml %}
+location: localhost
+
+name: MySQL Database
+services:
+- type: brooklyn.entity.database.mysql.MySqlNode
+  brooklyn.config:
+    datastore.creation.script.url: classpath://visitors-creation-script.sql
+{% endhighlight %}
+
+We will convert it for adding to the catalog, such that it will usable through the 
+'Create Application' dialog.
+
+The steps are therefore:
+
+* Add a brooklyn.catalog section to give metadata about the version etc. This is also used 
+  when displaying the blueprint in the 'Add Application' dialog.
+* Remove the explicit location (as the user will typically select the location in the GUI).
+* Add a root element that extends `brooklyn.entity.Application`. As we don't require any
+  custom application-specific logic, we can use the `brooklyn.entity.basic.BasicApplication` 
+  class. We can then add our MySqlNode as a child of the BasicApplication. 
+  (When deploying via YAML at the REST API, this is not necessary as Brooklyn will do this 
+  automatically).
+
+{% highlight yaml %}
+brooklyn.catalog:
+  id: MySQL
+  version: 1.0
+  iconUrl: classpath://mysql.png
+  description: MySql is an open source relational database management system (RDBMS)
+
+name: MySQL Database
+services:
+- type: brooklyn.entity.basic.BasicApplication
+  brooklyn.children:
+  - type: brooklyn.entity.database.mysql.MySqlNode
+    brooklyn.config:
+      datastore.creation.script.url: classpath://visitors-creation-script.sql
+{% endhighlight %}
+
+<!--
+TODO: Add documentation to explain that the brooklyn.catalog section can contain a libraries array, each item pointing to 
+an OSGi bundle where the code for the blueprint is hosted. Every type from the blueprint will be searched for in the 
+libraries first and then on the standard Brooklyn classpath.*
+-->
+
+To explain the `brooklyn.catalog` section:
+
+- The `id: MySQL` section specifies a unique ID used by Brooklyn to identify the catalog item. This ID is also passed to 
+`UsageManager.UsageListener.onApplicationEvent` for metering purposes.
+- The `version: 1.0` section provides a unique version for the *blueprint*. NOTE: This is *not* the version of the software
+being installed (in this case MySQL).
+- The `iconUrl: classpath://...` is an optional, but recommended, section that allows you to provide a graphic to be 
+displayed in the 'Add Application' dialog alongside the blueprint name. These image files should be placed in the 
+`conf` folder to make them available at runtime.
+- The `description: ...` section allows you to give a free-format description of the blueprint, which is displayed in the 
+'Add Application' dialog.
+
+To add the blueprint to the catalog, post the YAML file to Brooklyn's REST API by using the `curl` command as
+follows (substituting your own usename:password, URL and file path):
+
+{% highlight bash %}
+curl -u admin:password http://127.0.0.1:8081/v1/catalog --data-binary @/path/to/mysql-catalog.yaml
+{% endhighlight %}
+
+This will add the blueprint to the catalog as shown here:
+[![MySQL in Brooklyn Catalog](mysql-in-catalog-w700.png "MySQL in Brooklyn Catalog")](mysql-in-catalog.png) 
+
+If you attempt to run the curl command a second time, you will receive an error stating `Updating existing catalog entries is forbidden`.
+To update the blueprint, you will need to change the version number in your yaml file before running the curl command 
+again. This will create a second blueprint. You can then delete the old version via the REST API, using its ID and version
+as follows:
+
+{% highlight bash %}
+curl -u admin:password -X DELETE http://127.0.0.1:8081/v1/catalog/entities/MySQL/1.0
+{% endhighlight %}
+
+**Note** Catalog items should not be deleted if there are running apps which were created using the same item. During
+rebinding the catalog item is used to reconstruct the entity.
+
+<!--
+TODO: Add documentation about adding policies to the catalog, and explaining how to add items to 
+the UI using the plus icon on the catalog tab*
+
+TODO: describe entity addition (this just covers app addition)
+
+TODO: describe how to use the web-console GUI
+-->

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

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

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/f008e27a/docs/guide/ops/index.md
----------------------------------------------------------------------
diff --git a/docs/guide/ops/index.md b/docs/guide/ops/index.md
index 2e076da..60b7c6e 100644
--- a/docs/guide/ops/index.md
+++ b/docs/guide/ops/index.md
@@ -6,6 +6,7 @@ children:
 - locations/configuring.md
 - persistence/
 - launching/
+- catalog/
 - runtime-management/
 ---
 

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/f008e27a/docs/guide/yaml/catalog-maintenance.md
----------------------------------------------------------------------
diff --git a/docs/guide/yaml/catalog-maintenance.md b/docs/guide/yaml/catalog-maintenance.md
deleted file mode 100644
index 4b05afc..0000000
--- a/docs/guide/yaml/catalog-maintenance.md
+++ /dev/null
@@ -1,115 +0,0 @@
----
-title: Catalog Maintenance
-layout: website-normal
-toc: ../guide_toc.json
-categories: [use, guide, catalog-maintenance]
----
-
-In addition to deploying [YAML blueprints](creating-yaml.html) directly through the web console, it is possible
-to add YAML blueprints to the catalog via Brooklyn's REST API.
-
-The catalog is a collection of versioned blueprints, which can be deployed directly or referenced 
-by other blueprints.  Blueprints in the catalog can be deployed via the Brooklyn REST API, or from 
-the web-console's 'Catalog' section of the 'Create Application' dialog box.
-
-All YAML blueprints added to the catalog must also contain a `brooklyn.catalog` section. 
-
-For a blueprint to be accessible via the 'Create Application' dialog, it must be an Application 
-(i.e. the entity at the root of the blueprint must implement `brooklyn.entity.Application`).
-If just deploying via the REST API, then this is not necessary.
-
-<!--
-TODO: Add section that explains how to add plain entities to the catalog and use them either from the App Wizard,
-(and entity UI) or embed the catalog id + version in another YAML
--->
-
-Let's take the following YAML as a starting point.
-
-{% highlight yaml %}
-location: localhost
-
-name: MySQL Database
-services:
-- type: brooklyn.entity.database.mysql.MySqlNode
-  brooklyn.config:
-    datastore.creation.script.url: classpath://visitors-creation-script.sql
-{% endhighlight %}
-
-We will convert it for adding to the catalog, such that it will usable through the 
-'Create Application' dialog.
-
-The steps are therefore:
-
-* Add a brooklyn.catalog section to give metadata about the version etc. This is also used 
-  when displaying the blueprint in the 'Add Application' dialog.
-* Remove the explicit location (as the user will typically select the location in the GUI).
-* Add a root element that extends `brooklyn.entity.Application`. As we don't require any
-  custom application-specific logic, we can use the `brooklyn.entity.basic.BasicApplication` 
-  class. We can then add our MySqlNode as a child of the BasicApplication. 
-  (When deploying via YAML at the REST API, this is not necessary as Brooklyn will do this 
-  automatically).
-
-{% highlight yaml %}
-brooklyn.catalog:
-  id: MySQL
-  version: 1.0
-  iconUrl: classpath://mysql.png
-  description: MySql is an open source relational database management system (RDBMS)
-
-name: MySQL Database
-services:
-- type: brooklyn.entity.basic.BasicApplication
-  brooklyn.children:
-  - type: brooklyn.entity.database.mysql.MySqlNode
-    brooklyn.config:
-      datastore.creation.script.url: classpath://visitors-creation-script.sql
-{% endhighlight %}
-
-<!--
-TODO: Add documentation to explain that the brooklyn.catalog section can contain a libraries array, each item pointing to 
-an OSGi bundle where the code for the blueprint is hosted. Every type from the blueprint will be searched for in the 
-libraries first and then on the standard Brooklyn classpath.*
--->
-
-To explain the `brooklyn.catalog` section:
-
-- The `id: MySQL` section specifies a unique ID used by Brooklyn to identify the catalog item. This ID is also passed to 
-`UsageManager.UsageListener.onApplicationEvent` for metering purposes.
-- The `version: 1.0` section provides a unique version for the *blueprint*. NOTE: This is *not* the version of the software
-being installed (in this case MySQL).
-- The `iconUrl: classpath://...` is an optional, but recommended, section that allows you to provide a graphic to be 
-displayed in the 'Add Application' dialog alongside the blueprint name. These image files should be placed in the 
-`conf` folder to make them available at runtime.
-- The `description: ...` section allows you to give a free-format description of the blueprint, which is displayed in the 
-'Add Application' dialog.
-
-To add the blueprint to the catalog, post the YAML file to Brooklyn's REST API by using the `curl` command as
-follows (substituting your own usename:password, URL and file path):
-
-{% highlight bash %}
-curl -u admin:password http://127.0.0.1:8081/v1/catalog --data-binary @/path/to/mysql-catalog.yaml
-{% endhighlight %}
-
-This will add the blueprint to the catalog as shown here:
-[![MySQL in Brooklyn Catalog](mysql-in-catalog-w700.png "MySQL in Brooklyn Catalog")](mysql-in-catalog.png) 
-
-If you attempt to run the curl command a second time, you will receive an error stating `Updating existing catalog entries is forbidden`.
-To update the blueprint, you will need to change the version number in your yaml file before running the curl command 
-again. This will create a second blueprint. You can then delete the old version via the REST API, using its ID and version
-as follows:
-
-{% highlight bash %}
-curl -u admin:password -X DELETE http://127.0.0.1:8081/v1/catalog/entities/MySQL/1.0
-{% endhighlight %}
-
-**Note** Catalog items should not be deleted if there are running apps which were created using the same item. During
-rebinding the catalog item is used to reconstruct the entity.
-
-<!--
-TODO: Add documentation about adding policies to the catalog, and explaining how to add items to 
-the UI using the plus icon on the catalog tab*
-
-TODO: describe entity addition (this just covers app addition)
-
-TODO: describe how to use the web-console GUI
--->

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/f008e27a/docs/guide/yaml/index.md
----------------------------------------------------------------------
diff --git a/docs/guide/yaml/index.md b/docs/guide/yaml/index.md
index 4073f70..c16dab2 100644
--- a/docs/guide/yaml/index.md
+++ b/docs/guide/yaml/index.md
@@ -9,7 +9,6 @@ children:
 - multiple-services.md
 - clusters-and-policies.md
 - custom-entities.md
-- catalog-maintenance.md
 - chef/
 - { path: yaml-reference.md, title: YAML Blueprint Reference }
 ---

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/f008e27a/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
deleted file mode 100644
index f370249..0000000
Binary files a/docs/guide/yaml/mysql-in-catalog-w700.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/f008e27a/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
deleted file mode 100644
index 685455d..0000000
Binary files a/docs/guide/yaml/mysql-in-catalog.png and /dev/null differ


[13/13] incubator-brooklyn git commit: This closes #456

Posted by he...@apache.org.
This closes #456


Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/677762b2
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/677762b2
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/677762b2

Branch: refs/heads/master
Commit: 677762b2cc919dde5ea78c7f3523bfff048727dc
Parents: 556489b 1f48765
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Mon Jan 19 22:56:36 2015 +0000
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Mon Jan 19 22:56:36 2015 +0000

----------------------------------------------------------------------
 docs/guide/ops/catalog/index.md                 | 163 ++++++++
 .../guide/ops/catalog/mysql-in-catalog-w700.png | Bin 0 -> 92767 bytes
 docs/guide/ops/catalog/mysql-in-catalog.png     | Bin 0 -> 168831 bytes
 docs/guide/ops/index.md                         |   4 +-
 docs/guide/ops/launching/index.md               | 143 +++++++
 docs/guide/ops/runtime-management/index.md      | 325 +++++++++++++++
 .../webconsole-dashboard-w400.png               | Bin 0 -> 137463 bytes
 .../runtime-management/webconsole-dashboard.png | Bin 0 -> 214723 bytes
 .../webconsole-detail-w400.png                  | Bin 0 -> 111993 bytes
 .../runtime-management/webconsole-detail.png    | Bin 0 -> 165359 bytes
 docs/guide/ops/webconsole/index.md              | 399 -------------------
 .../webconsole/webconsole-dashboard-w400.png    | Bin 137463 -> 0 bytes
 .../ops/webconsole/webconsole-dashboard.png     | Bin 214723 -> 0 bytes
 .../ops/webconsole/webconsole-detail-w400.png   | Bin 111993 -> 0 bytes
 docs/guide/ops/webconsole/webconsole-detail.png | Bin 165359 -> 0 bytes
 docs/guide/yaml/catalog-maintenance.md          | 115 ------
 docs/guide/yaml/index.md                        |   1 -
 docs/guide/yaml/mysql-in-catalog-w700.png       | Bin 92767 -> 0 bytes
 docs/guide/yaml/mysql-in-catalog.png            | Bin 168831 -> 0 bytes
 19 files changed, 634 insertions(+), 516 deletions(-)
----------------------------------------------------------------------



[12/13] incubator-brooklyn git commit: This closes #453

Posted by he...@apache.org.
This closes #453


Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/556489b7
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/556489b7
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/556489b7

Branch: refs/heads/master
Commit: 556489b770a58b3e38e336e588d0edc98bf71bbe
Parents: 09377df 6379bb7
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Mon Jan 19 22:56:23 2015 +0000
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Mon Jan 19 22:56:23 2015 +0000

----------------------------------------------------------------------
 docs/_extra/brooklyn-gpg-public-key.asc         |  21 +
 docs/_extra/deploying-yaml.md                   |  37 ++
 docs/_extra/meta/brooklyn-gpg-public-key.asc    |  21 -
 docs/_extra/meta/contact.include.md             |   9 -
 docs/_extra/meta/contact.md                     |   7 -
 docs/_extra/meta/irc.md                         |  31 --
 docs/_extra/meta/toc.json                       |   8 -
 docs/_extra/meta/versions.md                    | 110 -----
 docs/_extra/standards.md                        |  15 -
 docs/_includes/base-head.html                   |   1 +
 docs/_includes/base-scss.scss                   |  29 +-
 docs/_includes/sidemenu.html                    |   3 +-
 docs/_includes/sitemap-item.html                |   5 +-
 docs/_layouts/base.html                         | 117 ++++++
 docs/_layouts/website-normal.html               |   1 +
 docs/guide/start/running.md                     |   8 +-
 .../vanilla-bash-netcat-w-client.yaml           |   8 +-
 docs/style/css/base.scss                        | 401 ++++++++++++++++---
 docs/website/developers/code-standards.md       |  14 +
 docs/website/developers/index.md                |   1 +
 docs/website/learnmore/blueprint-tour.md        | 192 +++++++++
 docs/website/learnmore/index.md                 |  30 +-
 docs/website/learnmore/theory.md                |  10 +-
 docs/website/learnmore/yaml-explained.md        |   8 -
 docs/website/meta/sitemap.md                    |  12 +-
 25 files changed, 809 insertions(+), 290 deletions(-)
----------------------------------------------------------------------



[06/13] incubator-brooklyn git commit: added interactive tour of a brooklyn blueprint

Posted by he...@apache.org.
added interactive tour of a brooklyn blueprint

in docs under "learn more".  lots of snazzy css/js.  needs testing in more browsers though.


Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/24f07994
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/24f07994
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/24f07994

Branch: refs/heads/master
Commit: 24f079940c7905bd4bef45467b35396c737ead52
Parents: 640a980
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Wed Jan 14 09:25:30 2015 +0000
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Thu Jan 15 16:33:00 2015 +0000

----------------------------------------------------------------------
 docs/_includes/base-scss.scss            |  29 ++-
 docs/style/css/base.scss                 | 249 +++++++++++++++++++++-----
 docs/website/learnmore/blueprint-tour.md | 192 ++++++++++++++++++++
 docs/website/learnmore/index.md          |  30 ++--
 docs/website/learnmore/theory.md         |  10 +-
 docs/website/learnmore/yaml-explained.md |   8 -
 6 files changed, 447 insertions(+), 71 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/24f07994/docs/_includes/base-scss.scss
----------------------------------------------------------------------
diff --git a/docs/_includes/base-scss.scss b/docs/_includes/base-scss.scss
index f6d850f..d102394 100644
--- a/docs/_includes/base-scss.scss
+++ b/docs/_includes/base-scss.scss
@@ -1,12 +1,35 @@
 
 $fonts: "Lato", "Helvetica Neue", Helvetica, Arial, sans-serif;
 
-$text_color: #393939;
+// colors
 
 /* this green is approx what is in the logo (taken from image picker) */
 $brooklyn_green: #6db34b;
+$bootstrap_theme_green_gradient_upper: #5cb85c;
+$bootstrap_theme_green_gradient_lower: #48a648;
+$vibrant_bg_green: $bootstrap_theme_green_gradient_lower;
+$vibrant_fg_green: #483;
 
-$a_color: #483;
+$white_fa: #fafafa;
+$white_f5: #f5f5f5;
+$white_ee: #eee;
+$white_dd: #ddd;  // for borders and tooltip bg
+$gray_aa: #aaa;
+$gray_88: #888;
+$gray_66: #666;
+
+$blackish: #393939;
+
+$bootstrap_blue_border: #428bca;
+
+// roles for colors
+
+$text_color: $blackish;
+
+$a_color: $vibrant_fg_green;
 $a_hover_color: $brooklyn_green;
 
-$code_bg_color: #e8eded;
\ No newline at end of file
+//$code_bg_color: #e8eded;
+$code_bg_color: $white_f5;
+
+$footer_icon_gray: $gray_88;

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/24f07994/docs/style/css/base.scss
----------------------------------------------------------------------
diff --git a/docs/style/css/base.scss b/docs/style/css/base.scss
index 9034e20..01a7122 100644
--- a/docs/style/css/base.scss
+++ b/docs/style/css/base.scss
@@ -11,7 +11,7 @@ body {
     font-family: $fonts;
     font-weight: 300;
     font-size: 17px; 
-    background-color: #ffffff; 
+    background-color: white; 
     color: $text_color; 
 }
 h1, h2, h3, h4, h5, h6 { font-family: Avenir, $fonts; }
@@ -39,7 +39,7 @@ a[id]:empty, a[name]:empty {
     font-weight: 300;
 }
 .btn-default {
-    color: #666;
+    color: $gray_66;
 }
 .panel-heading {
   h4 {
@@ -50,9 +50,9 @@ a[id]:empty, a[name]:empty {
 .panel-body {
     margin: 0px;
     font-size: 95%;
-    color: #606060;
+    color: $gray_66;
     padding: 15px;
-    background-color: #fafafa;
+    background-color: $white_fa;
     border-radius: 5px;
     p:first-child {
       margin-top: 0px;
@@ -95,13 +95,14 @@ a[id]:empty, a[name]:empty {
   margin-top: -16px;
   padding-bottom: 6px;
   margin-bottom: 24px;
-  border-bottom: 1px dotted #aaa;
+  border-bottom: 1px dotted $gray_aa;
   font-weight: 300;
   font-size: 36px;
   text-transform: uppercase;
 }
 
 /* headings get a tooltip showing the permalink URL, a la github jekyll */
+/* install subset of font-awesome */
 @font-face {
   font-family: 'FontAwesome';
   src: url('{{ site.path.style }}/deps/font-awesome-4.2.0/fonts/fontawesome-webfont.eot');
@@ -121,6 +122,9 @@ a[id]:empty, a[name]:empty {
 .fa-link:before {
   content: "\f0c1";
 }
+.fa-play-circle-o:before {
+  content: "\f01d";
+}
 /*
  * This code is courtesy Ben Balter, modified by Parker Moore for jekyllrb.com
  * http://ben.balter.com/2014/03/13/pages-anchor-links/
@@ -149,14 +153,14 @@ a.header-literal-anchor { display: inline !important; }
    
 .tooltip .tooltip-inner {
     color: $text_color;
-    background-color: #ccc;
+    background-color: $white_dd;
     font-weight: 500;
 }
 .tooltip.top .tooltip-arrow { 
-    border-top-color: #ccc;
+    border-top-color: $white_dd;
 }
 .tooltip.bottom .tooltip-arrow { 
-    border-bottom-color: #ccc;
+    border-bottom-color: $white_dd;
 }
 
 /* WEBSITE MENUS
@@ -252,12 +256,12 @@ a.header-literal-anchor { display: inline !important; }
 
 .navbar div.dropdown_section_header hr {
   margin: 4px 12px;
-  border-color: #ddd;
+  border-color: $white_dd;
 }
 
 .navbar div.dropdown_new_section hr {
   margin: 6px 0px;
-  border-color: #ddd;
+  border-color: $white_dd;
 }
 
 /* pop-up top-menu */
@@ -265,14 +269,14 @@ a.header-literal-anchor { display: inline !important; }
 .navbar-default .navbar-nav > li > a:focus,
 .navbar-default .navbar-nav > .active > a:hover,
 .navbar-default .navbar-nav > .active > a:focus {
-  background-color: #f5f5f5;
+  background-color: $white_f5;
   color: $brooklyn_green;
 }
 .top-menu {
   font-size: 14px;
   font-weight: 400;
   .dropdown-menu > li > a:hover, .dropdown-menu > li > a:focus {
-    background-color: #f5f5f5;
+    background-color: $white_f5;
     background-image: none;
     color: $brooklyn_green;
   }
@@ -311,20 +315,11 @@ a.header-literal-anchor { display: inline !important; }
   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;
-    */
+    background-color: $bootstrap_theme_green_gradient_lower;
+    border-left: 1px solid $bootstrap_blue_border;
   } 
   div.sub-item:last-child {
-    border-bottom: 1px solid #ddd;
+    border-bottom: 1px solid $white_dd;
     border-bottom-left-radius: 4px;
     border-bottom-right-radius: 4px;
   }
@@ -332,7 +327,7 @@ a.header-literal-anchor { display: inline !important; }
     border-bottom-right-radius: 4px !important;
   }
   a.with-sub-item {
-    /* border-bottom: 1px solid #ddd; */
+    /* border-bottom: 1px solid $white_dd; */
     border-bottom: 0;
   }
   a.sub-item { 
@@ -344,18 +339,12 @@ a.header-literal-anchor { display: inline !important; }
     padding-bottom: 8px; 
   }
   a.sub-item.list-group-item.active {
-//    background-image: -webkit-linear-gradient(top, #5cb85c 0%, #48a648 100%);
-//    background-image: linear-gradient(to bottom, #5cb85c 0%, #48a648 100%);
-
-//    background-image: -webkit-linear-gradient(top, #ff0000 0%, #0000ff 100%);
-//    background-image: linear-gradient(to bottom, #6ca06c 0%, #589058 100%);
-
-    background-color: #f5f5f5;
+    background-color: $white_f5;
     // the below is needed to achieve the above, since bg-image is already set
-    background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #f5f5f5 100%);
-    background-image: linear-gradient(to bottom, #f5f5f5 0%, #f5f5f5 100%);
+    background-image: -webkit-linear-gradient(top, $white_f5 0%, $white_f5 100%);
+    background-image: linear-gradient(to bottom, $white_f5 0%, $white_f5 100%);
     
-    border-color: #ddd;
+    border-color: $white_dd;
     color: $text_color;
     text-shadow: none;
     // not sure why the bottom border is visible at all, and stays on hover, but vanishes on 'active';
@@ -390,12 +379,12 @@ div#footer {
     width: 100%;
     padding-top: 1em;
     padding-bottom: 1em;
-    background-color: #f5f5f5;
+    background-color: $white_f5;
     text-align: center;
     font-size: 80%;
 }
 .octicon-footer {
-    color: #777;
+    color: $footer_icon_gray;
     font-size: 130%;
     position: relative;
     top: 2px;
@@ -417,23 +406,28 @@ a:hover .octicon-footer {
 @mixin code() {
     font-family: Consolas, Lucida Console, Monaco, monospace;
     @include nowrap();
-    font-size: 85%;
+    font-size: 14px;
     /* override color and bg-color on 'code' from bootstrap, and a touch more padding on top since font-size is smaller */
     color: $text_color;
     background-color: $code_bg_color;
 }
 
-pre {
+@mixin pre() {
     @include code();
     padding: 0.4em 0.8em;
     overflow-x: scroll;
     /* override border and line-height on 'pre' from bootstrap */
     border: none;
     border-radius: 2px;
-    line-height: 1;
+    line-height: 1.4;
+    font-size: 13px;
+}
+
+pre {
+    @include pre();
     code {
         /* override settings on 'pre code' from bootstrap */
-        @include code();
+        @include pre();
         line-height: 1;
         /** and no padding since pre already has some */ 
         padding: 0px; 
@@ -484,3 +478,176 @@ div.feather.landing {
     max-width: 100%;
   }
 }
+
+/* YAML EXPLAINED
+   ----------------------------------------------------------------------- */
+
+$explained_code_bg_color: $gray_66;
+$explained_code_fg_color: $white_dd;
+$explained_code_highlight_bg_color: $vibrant_bg_green; 
+$explained_code_highlight_fg_color: $white_fa;
+$explained_text_highlight_fg_color: $text_color;
+$explained_text_highlight_bg_color: $white_fa;
+
+$code_width: 57%;
+$annotation_width: 41%;
+
+div.annotated_blueprint {
+  margin-top: 60px;
+  div.code_scroller {
+    background-color: $code_bg_color;
+    border: 0.4em solid $explained_code_bg_color;
+    border-left: 0;
+    border-right: 0;
+    border-radius: 3px;
+    width: $code_width;
+    margin-right: 0px;
+    margin-left: auto;
+    background-color: $explained_code_bg_color;
+    color: $explained_code_fg_color;
+    overflow-x: scroll;
+    div { 
+      overflow-x: visible !important; 
+      overflow-y: visible !important; 
+    }  
+    div.code_viewer {
+      width: auto;
+      height: 100%;
+      div.block {
+        display: flex;
+        align-items: center;
+        z-index: -10;
+      }
+      div.block > div:last-child {
+          @include pre();
+          border: 0;
+          border-radius: 0;
+          padding: 0px 0.6em;
+          background-color: $explained_code_bg_color;
+          color: $explained_code_fg_color;
+          min-width: 100%;
+          margin-top: 3px;
+          margin-bottom: 3px;
+      }
+      div.block > div.annotations_wrapper1 {
+        font-family: $fonts;
+        div.annotations_wrapper2 {
+          // seems we have to use abs positioning because other techniques
+          // (translation, negative margins, etc) don't show up outside the scroll-x
+          position: absolute;
+          transform: translateX(-100%) translateY(-50%);
+          width: $annotation_width;
+          
+          display: flex;
+          align-items: center;
+          div.annotations {
+            // positioning and sizing
+            height: auto;
+            width: 100%;
+            padding: 8px 8px;
+            color: $explained_text_highlight_fg_color;
+
+            div.short {
+              font-size: 125%;
+              text-align: right;
+            }
+            div.long {
+              display: none;
+              
+              font-size: 85%;
+              p { margin: 8px 0 8px 0; }
+              p:first-child { margin-top: 0; }
+              p:last-child { margin-bottom: 0; }
+            }
+          }
+          div.connector {
+            height: 7px;
+            width: 24px;
+          }
+        }
+      }
+      div.block:hover > div:last-child {
+          background-color: $explained_code_highlight_bg_color;
+          color: $explained_code_highlight_fg_color;
+          // TODO the bg color doesn't apply to regions which are only visible after a scroll-right :(
+          // to fix this i think we can us JS to set width of div.block to the width of this, the code last-child
+      }
+      div.block:hover {
+        z-index: 30 !important;
+        div.annotations_wrapper1 {
+          z-index: 30 !important;
+        }
+        div.annotations {
+          background-color: $explained_text_highlight_bg_color;
+          border: 4px solid $explained_code_highlight_bg_color;
+          border-radius: 8px;
+          text-align: center; 
+          div.short {
+            font-size: 100% !important;
+            text-align: center !important;
+            color: $text_color;
+            margin-bottom: 8px;
+            font-weight: bold; 
+            z-index: 10;
+          }
+          div.long { display: inherit !important; }
+        }
+        div.connector {
+          background-color: $explained_code_highlight_bg_color;
+        }
+      }
+      // highlighting of key code segments
+      div.block > div:last-child .ann_highlight { 
+        font-weight: bold; 
+        color: #e8f0e0; 
+      }
+      div.block:hover > div:last-child .ann_highlight { 
+        color: #f8fff8; 
+      }
+    }
+  }
+  div.code_viewer:hover {
+    div.annotations div.short {
+      color: $gray_aa;
+    }
+  }
+  
+  // have an initial notice
+  div.code_scroller {
+    div.initial_notice {
+      height: 0;
+      width: 0;
+      overflow-x: visible;
+      overflow-y: visible;
+    }
+    div.initial_notice > div {
+      z-index: 10;
+      background-color: transparentize($gray_aa, 0.1);
+      position: relative;
+      width: 0;
+      height: 0;
+      display: flex;
+      align-items: top;
+    }
+    div.initial_notice > div > div {
+      padding-top: 24px;
+      font-size: 125%;
+      font-weight: bold;
+      text-align: center;
+      width: 100%;
+      .ann_light {
+        padding-top: 12px;
+        font-weight: 300;
+      }
+      .ann_play {
+        display: block;
+        padding-top: 24px;
+        padding-bottom: 24px;
+        font-size: 600%;
+      }
+    }
+  }
+  div.code_scroller:hover div.initial_notice {
+    display: none;
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/24f07994/docs/website/learnmore/blueprint-tour.md
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/blueprint-tour.md b/docs/website/learnmore/blueprint-tour.md
new file mode 100644
index 0000000..c202d19
--- /dev/null
+++ b/docs/website/learnmore/blueprint-tour.md
@@ -0,0 +1,192 @@
+---
+layout: website-normal
+title: A Quick Tour of a Brooklyn Blueprint
+title_in_menu: Blueprint Tour
+---
+
+
+<div class="jumobotron annotated_blueprint" markdown="1">
+  <div class="code_scroller">
+    <div class="initial_notice"><div><div>
+      Hover over an element to learn more
+      <div class="ann_light">This message will self-destruct in <span id="countdown">3s</span></div>
+      <div class="ann_play fa fa-play-circle-o"></div>
+    </div></div></div>
+    <div class="code_viewer">
+  
+<div class="block">
+      <div class="annotations_wrapper1"><div class="annotations_wrapper2"><div class="annotations">
+        <div class="short">
+          Describe your application
+        </div>
+        <div class="long"><p>
+            Start by giving it a name, 
+            optionally adding a version and other metadata.
+            The format is YAML -- a human-friendly extension to JSON --
+            following the  
+            <a href="{{ site.path.guide }}/learnmore/theory.html">CAMP</a> standard.
+          </p><p>
+            Treat it like source code: use comments, version control it, test it with CI.
+        </p></div>
+      </div><div class="connector"><div>&nbsp;</div></div></div></div>
+<div><span class="ann_highlight"># java chatroom with ruby chatbot and couchbase backend (example)</span>    
+name: Chatroom with Chatbot
+services:</div></div>
+    
+<div class="block">
+      <div class="annotations_wrapper1"><div class="annotations_wrapper2"><div class="annotations">
+        <div class="short">
+          Compose blueprints
+        </div>
+        <div class="long"><p>
+            Choose your building blocks from a large curated catalog,  
+            and compose them together to form new blueprints
+            you can deploy and share.
+          </p><p>
+            Customize with config keys, such as the initial size
+            and, for Couchbase, the data buckets required.
+        </p></div>
+      </div><div class="connector"><div>&nbsp;</div></div></div></div>
+<div><span class="ann_highlight">- type: couchbase-cluster</span>
+  initialSize: 3
+  createBuckets: [{ bucket: chatroom }]
+  id: chat-couchbase</div></div>
+
+<div class="block">
+      <div class="annotations_wrapper1"><div class="annotations_wrapper2"><div class="annotations">
+        <div class="short">
+          Run scripts and recipes
+        </div>
+        <div class="long"><p>
+            Use bash, with variables supplied by Brooklyn;
+            or Chef recipes, with attributes passed from config;
+            or package managers, dockerfiles, etc.
+        </p></div>
+      </div><div class="connector"><div>&nbsp;</div></div></div></div>
+<div>- type: bash-server
+  launch.command: |
+<span class="ann_highlight">    wget http://example.com/couchbase-chat/chat-bot/{server.rb,Gemfile,install_ruby_and_libs.sh}
+    bash install_ruby_and_libs.sh
+    ruby ./server.rb $COUCHBASE_URL</span></div></div>
+
+<div class="block">
+      <div class="annotations_wrapper1"><div class="annotations_wrapper2"><div class="annotations">
+        <div class="short">
+          Configure locations
+        </div>
+        <div class="long"><p>
+            Give generic VM properties or specific images and flavors.
+            Networking topologies and geographic constraints are also supported.
+        </p></div>
+      </div><div class="connector"><div>&nbsp;</div></div></div></div>
+<div>  provisioning.properties:
+<span class="ann_highlight">    osFamily: ubuntu
+    minRam: 4gb</span>
+</div></div>
+
+<div class="block">
+      <div class="annotations_wrapper1"><div class="annotations_wrapper2"><div class="annotations">
+        <div class="short">
+          Inject dependencies
+        </div>
+        <div class="long"><p>
+            Connect entities with each other using 
+            <i>sensors</i> published at runtime to give
+            just-in-time resolution for
+            shell variables, template expansion, REST calls,
+            and any other "happens-before" or "on-change" behaviour.
+        </p></div>
+      </div><div class="connector"><div>&nbsp;</div></div></div></div>
+<div>  shell.env:
+    COUCHBASE_URL:
+<span class="ann_highlight">      $brooklyn:entity("chat-couchbase").
+        attributeWhenReady("couchbase.cluster.connection.url")</span></div></div>
+
+<div class="block">
+      <div class="annotations_wrapper1"><div class="annotations_wrapper2"><div class="annotations">
+        <div class="short">
+          Extend using Java
+        </div>
+        <div class="long"><p>
+            Create new entities, policies, and "effector" operations
+            using Java or JVM bridges to many languages, workflow systems,
+            or PaaSes.
+          </p><p>
+            Add new blueprints to the catalog, dynamically,
+            with versions and libraries handled 
+            under the covers automatically with OSGi.
+        </p></div>
+      </div><div class="connector"><div>&nbsp;</div></div></div></div>
+<div>- type: <span class="ann_highlight">brooklyn.entity.webapp.ControlledDynamicWebAppCluster:1.1.0</span>
+  war: http://example.com/couchbase-chat/chatroom.war
+  java.sysprops:
+    chat.db.url: $brooklyn:entity("couchbase").attributeWhenReady("couchbase.cluster.connection.url")</div></div>
+
+<div class="block">
+      <div class="annotations_wrapper1"><div class="annotations_wrapper2"><div class="annotations">
+        <div class="short">
+          Attach management logic
+        </div>
+        <div class="long"><p>
+          Set up policies which subscribe to real-time metric sensors
+          to scale, throttle, failover, or follow-the-{sun,moon,action,etc}.
+          Cloud should be something that <i>applications</i> consume, not people!
+        </p></div>
+      </div><div class="connector"><div>&nbsp;</div></div></div></div>
+<div>  brooklyn.policies:
+  - type: <span class="ann_highlight">brooklyn.policy.autoscaling.AutoScalerPolicy</span>
+    brooklyn.config:
+      metric: $brooklyn:sensor("brooklyn.entity.webapp.DynamicWebAppCluster", "webapp.reqs.perSec.windowed.perNode")
+      metricLowerBound: 400
+      metricUpperBound: 600</div></div>
+
+<div class="block">
+      <div class="annotations_wrapper1"><div class="annotations_wrapper2"><div class="annotations">
+        <div class="short">
+          Run across many locations
+        </div>
+        <div class="long"><p>
+          Blueprints are designed for portability.
+          Pick from dozens of clouds in hundreds of datacenters. 
+          Or machines with fixed IP addresses, localhost, 
+          Docker on <a href="http://clocker.io">Clocker</a>, etc.
+        </p><p>
+          And you're not limited to servers:
+          services, PaaS, even networks can be locations.
+        </p></div>
+      </div><div class="connector"><div>&nbsp;</div></div></div></div>
+<div>location:
+  <span class="ann_highlight">jclouds:aws-ec2</span>:
+    region: us-east-1
+    identity: <i>AKA_YOUR_ACCESS_KEY_ID</i>
+    credential: <i>[access-key-hex-digits]</i></div></div>
+
+  </div></div>
+</div>
+
+<script language="JavaScript" type="application/javascript">
+
+{% comment %}
+I've done all I could manage with pure CSS. Just one thing, the bg color
+on hover doesn't apply full width to the row if it extends the code_scroller.
+Fix it with JS. 
+
+Also resize the warning to be full size, and after first hover get rid of it.
+{% endcomment %} 
+
+$(function() {
+  maxCodeWidth = Math.max.apply(Math, $(".annotated_blueprint div.block > div:last-child").map(function(){ return this.scrollWidth; }).get());
+  $(".annotated_blueprint div.block").width(maxCodeWidth);
+})
+
+$(".annotated_blueprint .code_scroller .initial_notice > div").height($(".annotated_blueprint .code_scroller .code_viewer").height());
+$(".annotated_blueprint .code_scroller .initial_notice > div").width($(".annotated_blueprint .code_scroller").width());
+$(".annotated_blueprint .code_scroller").hover(function() {
+  $(".annotated_blueprint .initial_notice").css("display", "none");
+});
+$(function() {
+  setTimeout(function() { $(".annotated_blueprint .initial_notice").hide(400); }, 3000);
+  setTimeout(function() { $(".annotated_blueprint #countdown").text("2s"); }, 1000);
+  setTimeout(function() { $(".annotated_blueprint #countdown").text("1s"); }, 2000);
+});
+</script>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/24f07994/docs/website/learnmore/index.md
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/index.md b/docs/website/learnmore/index.md
index 8035e07..a2e1c6f 100644
--- a/docs/website/learnmore/index.md
+++ b/docs/website/learnmore/index.md
@@ -2,27 +2,27 @@
 layout: website-normal
 title: Learn More
 children:
-# - yaml-explained.md
+- blueprint-tour.md
 - { path: theory.md, title_in_menu: Theory }
-- catalog/
+- { path: catalog/, title_in_menu: Browse Catalog }
 ---
 
 <!--
 TODO have a list of resources here?  or start w yaml explained?
 
-What's a blueprint (image showing yaml with hovers for detail)
-Intro video (2m video)
-Features list (cf http://help.eclipse.org/juno/index.jsp?topic=%2Forg.eclipse.platform.doc.user%2FwhatsNew%2Fplatform_whatsnew.html  -- though maybe with smaller screenshots at left and bigger text for summary!)
-Supported software, clouds, and policies
-The Theory 
-(based on existing top-level content;
-introduction, core entities, glossary (maybe))
-News
-infoq - http://www.infoq.com/news/2014/06/clocker
-Adam Davis: The case for application-driven cloud computing (Gluecon keynote) http://www.cloudsoftcorp.com/blog/2014/06/adam-davis-case-application-driven-cloud-computing/
-[showing video at min 14]
-FAQ (in time)
-
+Got a minute?  blueprint-tour
+Got two minutes?  watch the video
+Four minutes?  read the features list
+  cf http://help.eclipse.org/juno/index.jsp?topic=%2Forg.eclipse.platform.doc.user%2FwhatsNew%2Fplatform_whatsnew.html  -- though maybe with smaller screenshots at left and bigger text for summary!)
+More time?
+  Browse the catalog of Supported software, clouds, and policies
+  Read on the Theory behing brooklyn
+  Read the Brooklyn News
+    infoq - http://www.infoq.com/news/2014/06/clocker
+    Adam Davis: The case for application-driven cloud computing (Gluecon keynote) http://www.cloudsoftcorp.com/blog/2014/06/adam-davis-case-application-driven-cloud-computing/
+    [showing video at min 14]
+    twitter feed
+    selected blog posts
 -->
 
 {% include list-children.html %}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/24f07994/docs/website/learnmore/theory.md
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/theory.md b/docs/website/learnmore/theory.md
index 8175494..5f8d97f 100644
--- a/docs/website/learnmore/theory.md
+++ b/docs/website/learnmore/theory.md
@@ -173,10 +173,12 @@ model.
 
 ### Standards
 
-Finally we note some emerging standards in this area. OASIS CAMP (Cloud
-Application Management for Platforms) and TOSCA (Topology and Orchestration
-Specification for Cloud Applications) both define YAML application models
-similar to Brooklyn's. CAMP focuses on the REST API for interacting with such a
+Finally we note some emerging standards in this area. OASIS CAMP 
+(<a href="https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=camp#technical">Cloud Application Management for Platforms</a>) 
+and TOSCA 
+(<a href="https://www.oasis-open.org/committees/tosca/">Topology and Orchestration Specification for Cloud Applications</a>) 
+both define YAML application models similar to Brooklyn's. 
+CAMP focuses on the REST API for interacting with such a
 management layer, and TOSCA focuses on declarative support for more
 sophisticated orchestration. Currently Brooklyn uses a YAML which complies with
 CAMP's syntax and exposes many of the CAMP REST API endpoints. We would like to

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/24f07994/docs/website/learnmore/yaml-explained.md
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/yaml-explained.md b/docs/website/learnmore/yaml-explained.md
deleted file mode 100644
index 6ada16c..0000000
--- a/docs/website/learnmore/yaml-explained.md
+++ /dev/null
@@ -1,8 +0,0 @@
----
-layout: website-normal
-title: YAML Explained
----
-
-<div class="jumobotron" markdown="1">
-
-TODO


[04/13] incubator-brooklyn git commit: css fixes to support safari

Posted by he...@apache.org.
css fixes to support safari


Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/4c6d4b71
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/4c6d4b71
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/4c6d4b71

Branch: refs/heads/master
Commit: 4c6d4b71738f7b76987afae1f990927116f0c169
Parents: 783e638
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Thu Jan 15 16:24:42 2015 +0000
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Thu Jan 15 16:33:00 2015 +0000

----------------------------------------------------------------------
 docs/style/css/base.scss | 49 +++++++++++++++++++++++++++++++------------
 1 file changed, 36 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/4c6d4b71/docs/style/css/base.scss
----------------------------------------------------------------------
diff --git a/docs/style/css/base.scss b/docs/style/css/base.scss
index 6d2b9fa..663d596 100644
--- a/docs/style/css/base.scss
+++ b/docs/style/css/base.scss
@@ -66,13 +66,25 @@ a[id]:empty, a[name]:empty {
 }
 /* GENERAL UTILS
    ----------------------------------------------------------------------- */
+
+@mixin flex() {
+  display: -webkit-box;      /* OLD - iOS 6-, Safari 3.1-6 */
+  display: -moz-box;         /* OLD - Firefox 19- (buggy but mostly works) */
+  display: -ms-flexbox;      /* TWEENER - IE 10 */
+  display: -webkit-flex;     /* NEW - Chrome */
+  display: flex;             /* NEW, Spec - Opera 12.1, Firefox 20+ */
+}
+
+@mixin transform($tfn) {
+  -webkit-transform: #{$tfn};
+  -moz-transform: #{$tfn};
+  -o-transform: #{$tfn};
+  transform: #{$tfn};
+}
    
 @mixin flip() {
-  transform: scaleX(-1);
   filter: FlipH;
-  -webkit-transform: scaleX(-1);
-  -moz-transform: scaleX(-1);
-  -o-transform: scaleX(-1);
+  @include transform('scaleX(-1)');
   -ms-filter: "FlipH";
 }
 
@@ -206,9 +218,13 @@ a.header-literal-anchor { display: inline !important; }
    squashing the main container instead */
 .container-and-sidebars {
     width: 100%;
-    display: flex;
+    @include flex();
 }
 .container-between-sidebars {
+    -webkit-box-flex: 1 100%;
+    -webkit-flex: 1 100%;
+    -webkit-flex-flex: 1 100%;
+    flex: 1 100%;
     flex: 10 1 100%;
     display: inline-block;
     width: auto;
@@ -216,6 +232,10 @@ a.header-literal-anchor { display: inline !important; }
     margin-right: auto;
 }
 .container-sidebar {
+    -webkit-box-flex: 0 auto;
+    -webkit-flex: 0 auto;
+    -webkit-flex-flex: 0 auto;
+    flex: 0 auto;
     flex: 0 0 auto;
 }
 .container-sidebar-right { 
@@ -456,8 +476,8 @@ code {
 }
 .clipboard_button {
   font-size: 18px;
-  transform: translateY(-2px);
   color: $vibrant_fg_green;
+  @include transform('translateY(-2px)');
 }
 .clipboard_button:hover, .clipboard_button.zeroclipboard-is-hover {
   color: $a_hover_color;
@@ -487,7 +507,7 @@ code {
   display: inline-block;
   @include nowrap();
   padding: 3px 7px;
-  transform: translateX(-50%);
+  @include transform('translateX(-50%)');
 }
 
 
@@ -495,8 +515,8 @@ code {
    ----------------------------------------------------------------------- */
 
 div.search_right {
-  float: right; 
-  transform: translateY(-12px);
+  float: right;
+  @include transform('translateY(-12px)');
   padding-right: 5%; 
   padding-bottom: 18px;
   font-size: 75%;
@@ -628,7 +648,8 @@ div.annotated_blueprint {
       width: auto;
       height: 100%;
       div.block {
-        display: flex;
+        @include flex();
+        -webkit-align-items: center;
         align-items: center;
         z-index: -10;
       }
@@ -649,10 +670,11 @@ div.annotated_blueprint {
           // seems we have to use abs positioning because other techniques
           // (translation, negative margins, etc) don't show up outside the scroll-x
           position: absolute;
-          transform: translateX(-100%) translateY(-50%);
+          @include transform('translateX(-100%) translateY(-50%)');
           width: $annotation_width;
           
-          display: flex;
+          @include flex();
+          -webkit-align-items: center;
           align-items: center;
           div.annotations {
             // positioning and sizing
@@ -740,7 +762,8 @@ div.annotated_blueprint {
       position: relative;
       width: 0;
       height: 0;
-      display: flex;
+      @include flex();
+      -webkit-align-items: top;
       align-items: top;
     }
     div.initial_notice > div > div {


[05/13] incubator-brooklyn git commit: reinstate several old pieces of functionality

Posted by he...@apache.org.
reinstate several old pieces of functionality

clipboard, warning for archived guides, search (only on sitemap), analytics (untested),
old code standards, and cleaning out some of the _extras folder; and recover deploying-yaml to go into the ops guide


Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/783e6382
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/783e6382
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/783e6382

Branch: refs/heads/master
Commit: 783e6382331e82f1e0c15a10f73129163a44e26c
Parents: 24f0799
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Wed Jan 14 14:23:44 2015 +0000
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Thu Jan 15 16:33:00 2015 +0000

----------------------------------------------------------------------
 docs/_extra/brooklyn-gpg-public-key.asc      |  21 ++++
 docs/_extra/deploying-yaml.md                |  37 +++++++
 docs/_extra/meta/brooklyn-gpg-public-key.asc |  21 ----
 docs/_extra/meta/contact.include.md          |   9 --
 docs/_extra/meta/contact.md                  |   7 --
 docs/_extra/meta/irc.md                      |  31 ------
 docs/_extra/meta/toc.json                    |   8 --
 docs/_extra/meta/versions.md                 | 110 --------------------
 docs/_extra/standards.md                     |  15 ---
 docs/_includes/base-head.html                |   1 +
 docs/_layouts/base.html                      | 117 ++++++++++++++++++++++
 docs/_layouts/website-normal.html            |   1 +
 docs/guide/start/running.md                  |   8 +-
 docs/style/css/base.scss                     | 116 ++++++++++++++++++++-
 docs/website/developers/code-standards.md    |  14 +++
 docs/website/developers/index.md             |   1 +
 docs/website/meta/sitemap.md                 |  12 ++-
 17 files changed, 321 insertions(+), 208 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/783e6382/docs/_extra/brooklyn-gpg-public-key.asc
----------------------------------------------------------------------
diff --git a/docs/_extra/brooklyn-gpg-public-key.asc b/docs/_extra/brooklyn-gpg-public-key.asc
new file mode 100644
index 0000000..3b515a4
--- /dev/null
+++ b/docs/_extra/brooklyn-gpg-public-key.asc
@@ -0,0 +1,21 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG/MacGPG2 v2.0.18 (Darwin)
+Comment: GPGTools - http://gpgtools.org
+
+mQENBFDsSLEBCAC2JxQHeXpL3oGN2IickcG9C49gkxIsws4hpasQModVipezrQi0
+9pLq4lkB01GgC2sfPH+XXE8rCpA9EL0e4wVA7JICz5AsLZAAJH91tKksL20tLMeU
+Yrbufaq1ga7ifk3JWhF4iwvkDMBKyCjrF173nI+2TwX2XfNTQpzoQGOL1bNvS4NZ
+AD9JeXGW2D996zHdSK+x3wVdY3cDECvVMuw61+5ytZrGNnyvaaWTl3lJUyydPXHQ
+5TXVtbQH5WgYCLPr4E95axJ0BoY8H+fEaG1Uax1a+xLumVWhiWNp7rMvmgcZXuJO
+fx+wXAIbRNlAHoJcdZ4NCReRxDIBQ+2HsU1zABEBAAG0bUJyb29rbHluIFByb2pl
+Y3QgKGJyb29rbHluLmlvKSAoS2V5IHVzZWQgdG8gYXV0aGVudGljYXRlIEJyb29r
+bHluIGFydGlmYWN0cykgPGJyb29rbHluLWRldkBncm91cHMuZ29vZ2xlLmNvbT6J
+AT8EEwECACkFAlDsSLECGy8FCQeGH4AHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX
+gAAKCRANhinnSRLCsOdIB/4tUVShup2NHXJ9acCah8TuEN4GmN9dBiD9YsGW66SR
+/ptY0Gn9XExl2wbmQW+7TQg3QUGv8uffwYLtnMwnmCp/WwgE+uSnRmcENxa9GuTu
+PLlURKKGK0C9ljTAHwXtPcIYxPNN3BT4VB56ME1DTBRCgEvudaNSANs8/kT88kE2
+eMC7x0Uo3/P38Ob8XSOfR8c6G6nSz6jILcRBXZTPNNK4svyqF5XHIru65d3/0+mr
+bpfcDLcUQYms0MpPmO1RCHLZWwJLsPUIxNwGGnKJc8/RNEvQinK+Ap0cf+PGUQSX
+PhB6Z81ROFIVToEVZslgSiL+u4Tc7zXDfDQDY4HeLY2t
+=w/CG
+-----END PGP PUBLIC KEY BLOCK-----

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/783e6382/docs/_extra/deploying-yaml.md
----------------------------------------------------------------------
diff --git a/docs/_extra/deploying-yaml.md b/docs/_extra/deploying-yaml.md
new file mode 100644
index 0000000..265f496
--- /dev/null
+++ b/docs/_extra/deploying-yaml.md
@@ -0,0 +1,37 @@
+---
+title: Deploying YAML Blueprints
+layout: page
+toc: ../guide_toc.json
+categories: [use, guide, defining-applications]
+---
+
+Once you've [written a YAML blueprint](creating-yaml.md), there are several ways to deploy it.
+These insructions assume you have [installed]({{ site.url }}/use/guide/quickstart/) Brooklyn.
+You can then:
+
+- Supply the YAML blueprint file on the CLI when launching the server:
+
+{% highlight bash %}
+$ brooklyn launch --app ./blueprint.yaml
+{% endhighlight %}
+
+
+Or, assuming you've launched a server already 
+(usually on [http://127.0.0.1/](http://127.0.0.1/) unless you've 
+configured security in [`brooklyn.properties`](/use/guide/quickstart/brooklyn.properties)),
+you can:
+
+- Curl it to the Brooklyn REST API:
+
+{% highlight bash %}
+$ curl -T ./blueprint.yaml -X POST http://localhost:8081/v1/applications
+{% endhighlight %}
+
+
+- In the web-console, select the "YAML" tab in the "Add Application" wizard:
+
+[![Web Console](web-console-yaml-700.png "YAML via Web Console")](web-console-yaml.png)
+
+
+- The web-console also has an interactive "REST API" page,
+  where you can paste the YAML for uploading into the `POST` to `/v1/applications`.

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/783e6382/docs/_extra/meta/brooklyn-gpg-public-key.asc
----------------------------------------------------------------------
diff --git a/docs/_extra/meta/brooklyn-gpg-public-key.asc b/docs/_extra/meta/brooklyn-gpg-public-key.asc
deleted file mode 100644
index 3b515a4..0000000
--- a/docs/_extra/meta/brooklyn-gpg-public-key.asc
+++ /dev/null
@@ -1,21 +0,0 @@
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: GnuPG/MacGPG2 v2.0.18 (Darwin)
-Comment: GPGTools - http://gpgtools.org
-
-mQENBFDsSLEBCAC2JxQHeXpL3oGN2IickcG9C49gkxIsws4hpasQModVipezrQi0
-9pLq4lkB01GgC2sfPH+XXE8rCpA9EL0e4wVA7JICz5AsLZAAJH91tKksL20tLMeU
-Yrbufaq1ga7ifk3JWhF4iwvkDMBKyCjrF173nI+2TwX2XfNTQpzoQGOL1bNvS4NZ
-AD9JeXGW2D996zHdSK+x3wVdY3cDECvVMuw61+5ytZrGNnyvaaWTl3lJUyydPXHQ
-5TXVtbQH5WgYCLPr4E95axJ0BoY8H+fEaG1Uax1a+xLumVWhiWNp7rMvmgcZXuJO
-fx+wXAIbRNlAHoJcdZ4NCReRxDIBQ+2HsU1zABEBAAG0bUJyb29rbHluIFByb2pl
-Y3QgKGJyb29rbHluLmlvKSAoS2V5IHVzZWQgdG8gYXV0aGVudGljYXRlIEJyb29r
-bHluIGFydGlmYWN0cykgPGJyb29rbHluLWRldkBncm91cHMuZ29vZ2xlLmNvbT6J
-AT8EEwECACkFAlDsSLECGy8FCQeGH4AHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIX
-gAAKCRANhinnSRLCsOdIB/4tUVShup2NHXJ9acCah8TuEN4GmN9dBiD9YsGW66SR
-/ptY0Gn9XExl2wbmQW+7TQg3QUGv8uffwYLtnMwnmCp/WwgE+uSnRmcENxa9GuTu
-PLlURKKGK0C9ljTAHwXtPcIYxPNN3BT4VB56ME1DTBRCgEvudaNSANs8/kT88kE2
-eMC7x0Uo3/P38Ob8XSOfR8c6G6nSz6jILcRBXZTPNNK4svyqF5XHIru65d3/0+mr
-bpfcDLcUQYms0MpPmO1RCHLZWwJLsPUIxNwGGnKJc8/RNEvQinK+Ap0cf+PGUQSX
-PhB6Z81ROFIVToEVZslgSiL+u4Tc7zXDfDQDY4HeLY2t
-=w/CG
------END PGP PUBLIC KEY BLOCK-----

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/783e6382/docs/_extra/meta/contact.include.md
----------------------------------------------------------------------
diff --git a/docs/_extra/meta/contact.include.md b/docs/_extra/meta/contact.include.md
deleted file mode 100644
index e0d1e4b..0000000
--- a/docs/_extra/meta/contact.include.md
+++ /dev/null
@@ -1,9 +0,0 @@
-
-Contact us on the [brooklyn mailing list](https://mail-archives.apache.org/mod_mbox/incubator-brooklyn-dev/).
-
-Additionally look for us on:
-
-* **IRC**: #brooklyncentral ([IRC??](/meta/irc.html))
-* **Twitter**: @brooklyncentral #brooklyncentral
-
-We'd love to hear from you!

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/783e6382/docs/_extra/meta/contact.md
----------------------------------------------------------------------
diff --git a/docs/_extra/meta/contact.md b/docs/_extra/meta/contact.md
deleted file mode 100644
index 83de32f..0000000
--- a/docs/_extra/meta/contact.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-layout: website-normal
-title: Contact
-toc: /guide/toc.json
----
-
-{% readj contact.include.md %}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/783e6382/docs/_extra/meta/irc.md
----------------------------------------------------------------------
diff --git a/docs/_extra/meta/irc.md b/docs/_extra/meta/irc.md
deleted file mode 100644
index 2cc5b97..0000000
--- a/docs/_extra/meta/irc.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-layout: website-normal
-title: IRC
-toc: /guide/toc.json
----
-
-IRC is a basic group chat system used by many open source projects to enable developers to 
-collaborate and to help users communicate and support each other. Brooklyn has an IRC 
-channel where users and developers hang out.
-
-## Getting Help On IRC
-
-When you connect to the Brooklyn IRC channel, say Hi and then ask your question. It may 
-take a little while for someone to see and respond to your question. (Be 
-patient if you don't get an instant answer - unless there's already a conversation 
-happening folk will probably not have their eyes on the channel.) 
-
-You may want to do other things while you wait, like reviewing the [brooklyn mailing list](https://mail-archives.apache.org/mod_mbox/incubator-brooklyn-dev/)
-lists to see if anyone has had the same issue before.
-
-## Brooklyn IRC Channel
-
-* **IRC Server:** irc.freenode.net 
-* **Channel/Room:** #brooklyncentral
-* **Port:** 6667 (Default)
-
-If you are new to IRC, there is a web interface at [webchat.freenode.net](http://webchat.freenode.net/?channels=brooklyncentral) 
-but you may prefer to checkout the [Wikipedia IRC article](http://en.wikipedia.org/wiki/IRC#Client_software) 
-for an IRC application.
-
-You can find more information about using IRC at [irchelp.org](http://www.irchelp.org/).

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/783e6382/docs/_extra/meta/toc.json
----------------------------------------------------------------------
diff --git a/docs/_extra/meta/toc.json b/docs/_extra/meta/toc.json
deleted file mode 100644
index f01fa8e..0000000
--- a/docs/_extra/meta/toc.json
+++ /dev/null
@@ -1,8 +0,0 @@
-[
-{ "title": "Versions",
-  "file":  "{{ site.path.guide }}/meta/versions.html" },
-{ "title": "Verify",
-  "file":  "{{ site.path.guide }}/meta/verify.html" },
-{ "title": "Contact",
-  "file":  "{{ site.path.guide }}/meta/contact.html" }
-]

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/783e6382/docs/_extra/meta/versions.md
----------------------------------------------------------------------
diff --git a/docs/_extra/meta/versions.md b/docs/_extra/meta/versions.md
deleted file mode 100644
index aeea4ef..0000000
--- a/docs/_extra/meta/versions.md
+++ /dev/null
@@ -1,110 +0,0 @@
----
-layout: website-normal
-title: Versions
-toc: /guide/toc.json
----
-
-<!--- display which version we are using, based on where it is written -->
-
-### Brooklyn v{{ site.brooklyn-stable-version }}
-
-
-{% if site.server %} 
-> **Server (debug) mode detected.**
-
-> *Links to other versions on this page and others will likely not work when running in server/debug mode.
-Files must be copied to the brooklyncentral.github.com repo for these links to resolve correctly.*
-
-> *Debug page generated {{ site.time }}*
-{% endif %}
-
-
-{% if site.brooklyn-version contains 'SNAPSHOT' %}
-<!--- snapshot version -->
-
-  {% if site.path.guide == '' %}
-
-<!--- current version (served off root of site) is snapshot (unusual) -->
-
-This is the documentation for the current snapshot version of Brooklyn,
-generated {{ site.time | date_to_string }}.
-
-  {% else %}
-
-<!--- archive docs -->
-
-This is the documentation for a snapshot version of Brooklyn,
-generated {{ site.time | date_to_string }}.
-
-[View current documentation here.](/meta/versions.html)
-
-
-  {% endif %}
-
-NB: "Snapshot" means it is the code at a point in time,
-and that a reference to this version {{ site.brooklyn-version }}
-may resolve to different code at a different point in time.
-Where possible it is preferable to develop against a GA version
-rather than a shapshot.  
-
-{% else %}
-<!--- not snapshot -->
-
-  {% if site.path.guide == '' %}
-   
-<!--- current version (served off root of site) -->
-
-This is the documentation for the latest stable version of Brooklyn,
-generated {{ site.time | date_to_string }}.
-Other versions with documentation available are listed below.
-
-  {% else %}
-
-<!--- archive version -->
-
-This is the archived documentation for Brooklyn {{ site.brooklyn-version }}
-(generated {{ site.time }}, archived under {{ site.path.guide }}).
-
-[View current documentation here.](/meta/versions.html)
-
-  {% endif %}  
-{% endif %}
-
-
-### Version History
-
-* **[0.7.0-SNAPSHOT (master)](/v/0.7.0-SNAPSHOT)**: since 0.6.0, lots of work on yaml, persistence, policies, and more supported systems
-
-* **[0.7.0](/v/0.7.0-M1/)**: most recent milestone release
-
-* **[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 specific versions from 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 uses the [semantic versioning](http://semver.org/) guidelines. Releases will be numbered with the following format:
-
-`Brooklyn <major>.<minor>.<patch>`
-
-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.
-
-Additionally, Brooklyn's release process include Snapshots, Milestones and Release Candidates.
-
-A Snapshot (`-SNAPSHOT`) is the bleeding edge. This will not be stable.
-
-Milestone versions (`-Mn`) are frozen snapshots. Some code features may be stable, but the documentation and examples may not be complete.
-
-A Release Candidate (`-rc.n`) is a just-about-ready version. Release candidates are tested against our acceptance criteria, and qualifying builds are promoted as final.

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/783e6382/docs/_extra/standards.md
----------------------------------------------------------------------
diff --git a/docs/_extra/standards.md b/docs/_extra/standards.md
deleted file mode 100644
index ab6a2e3..0000000
--- a/docs/_extra/standards.md
+++ /dev/null
@@ -1,15 +0,0 @@
----
-layout: website-normal
-title: Code Standards
-toc: /guide/toc.json
----
-
-Without being too restrictive about how you have to code as part of Brooklyn,
-there are some style points that really make life easier when sharing code
-among ourselves:
-
-* Use spaces (not tabs!) with 4 spaces indentation
-* Keep line length <=128
-* Don't reformat code or organize imports unless there's very good
-  reason (this makes history and merges much harder)
-

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/783e6382/docs/_includes/base-head.html
----------------------------------------------------------------------
diff --git a/docs/_includes/base-head.html b/docs/_includes/base-head.html
index 2cdc852..7286eb7 100644
--- a/docs/_includes/base-head.html
+++ b/docs/_includes/base-head.html
@@ -14,3 +14,4 @@
 
 <script src="{% dependency_url jquery.js %}"></script>
 <script src="{% dependency_url bootstrap.js %}"></script>
+<script type="text/javascript" src="{{ site.path.style }}/deps/jquery.cookie.js"></script>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/783e6382/docs/_layouts/base.html
----------------------------------------------------------------------
diff --git a/docs/_layouts/base.html b/docs/_layouts/base.html
index a456173..6c51578 100644
--- a/docs/_layouts/base.html
+++ b/docs/_layouts/base.html
@@ -24,6 +24,8 @@ under the License.
 {{ content }}
 
 
+<script src="//cdnjs.cloudflare.com/ajax/libs/zeroclipboard/1.3.1/ZeroClipboard.min.js"></script>
+
 <script language="JavaScript" type="application/javascript">
     fix_padding_function = function () { 
         $('body').css('padding-top', parseInt($('#header').css("height"))+10);
@@ -62,6 +64,121 @@ $(function () {
       linkifyAnchors(level, contentBlock);
     }
 });
+
+<!-- Clipboard support -->
+  ZeroClipboard.config({ moviePath: '//cdnjs.cloudflare.com/ajax/libs/zeroclipboard/1.3.1/ZeroClipboard.swf' });
+
+$(function() {
+  $('div.highlight').prepend(
+  $('<div class="clipboard_container" title="Copy to Clipboard">'+
+    '<div class="fa clipboard_button">'+
+    '<div class="on-active"><div>Copied to Clipboard</div></div>'+
+  '</div></div>'));
+  $('div.clipboard_container').each(function(index) {
+    var clipboard = new ZeroClipboard();
+    clipboard.clip( $(this).find(":first")[0], $(this)[0] );
+    var target = $(this).next();
+    var txt = target.text().trim();
+    if (target.find('code.bash')) {
+      // Strip out bash prompts from the start of each line (i.e. '$' or '%' characters
+      // at the very start, or immediately following any newline). Correctly handles continuation
+      // lines, where a leading '$' or '%' is *not* a prompt character.
+      txt = txt.replace(/(^|[^\\]\n)[$%] /g, "$1");
+    }
+    clipboard.on( 'dataRequested', function (client, args) {
+      client.setText( txt );
+    });
+  });
+});
+
+<!-- search -->
+    $(function() {
+        $('#simple_google')
+            .submit(function() {
+                $('input[name="q"]').val("site:" + document.location.hostname + " " + $('input[name="brooklyn-search"]').val());
+            return true;
+            });
+        $('input[name="brooklyn-search"]').focus(function() {
+                if ($(this).val() === $(this).attr('placeholder')) {
+                    $(this).val('');
+                }
+            })
+            .blur(function() {
+                if ($(this).val() === '') {
+                    $(this).val($(this).attr('placeholder'));
+                }
+            })
+            .blur();
+    });
+
+
+ <!-- analytics -->
+    var _gaq = _gaq || [];
+    _gaq.push(['_setAccount', 'UA-30530918-1']);
+    _gaq.push(['_trackPageview']);
+    
+    (function() {
+      var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+      ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+      var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+    })();
+
+
+<!-- page warning (for archive pages) -->
+{% comment %}
+TODO insert the warning html at generation-time (jekyll) rather than runtime (JS)
+{% endcomment %}
+{% if page.path contains 'guide/' %} 
+    $(function() {
+        if (document.location.pathname.replace(/^\/([^\/]*).*$/, '$1') === "v"){
+            var thisversion = document.location.pathname.split("/")[2],
+                msg = "";
+            if (thisversion != 'latest' && (!$.cookie('brooklyn_versions') || 
+                    (($.inArray('ALL', $.cookie('brooklyn_versions').split(",")) === -1) &&
+                    ($.inArray(thisversion, $.cookie('brooklyn_versions').split(",")) === -1))) ){
+                msg += "<div class='warning_banner_image'><img src='{{ site.path.style }}/img/warning.png'/></div>";
+                msg += "<p>You are browsing the archive site for version <strong>"+thisversion+"</strong>.</p>";
+                if (thisversion.indexOf("SNAPSHOT") >= 0) {
+                  msg += "<p>Note that SNAPSHOT versions have not been voted on and are not endorsed by the Apache Software Foundation.</p>";
+                  msg += "<p>Do you understand and accept the risks?</p>";
+                } else {
+                  msg += "<p>Is this deliberate?</p>";
+                }
+                msg += "<center><p class='warning_banner_buttons'>";
+                msg += "<a href = '#' onclick=\"set_user_version('"+thisversion+"');\">Yes, hide this warning</a>";
+                msg += "<a href = '{{ site.page.guide }}'>No, take me to the latest version guide</a>";
+                msg += "<a href = '{{ site.page.website }}/meta/versions.html'>Show all versions</a>";
+                msg += "</p></center>"
+                            
+                $('#page_notes').html(msg);
+                $('#page_notes').fadeIn('slow');
+            }
+        }
+    });
+{% endif %}
+    function get_user_versions() {
+        return $.cookie("brooklyn_versions") ? $.cookie("brooklyn_versions").split(",") : [];
+    };
+    function set_user_version(version) {
+        var version_cookie = get_user_versions();
+        version_cookie.push(version);
+        $.cookie('brooklyn_versions', version_cookie, { expires: 365, path: '/' });
+        $('#page_notes').fadeOut();
+        event.preventDefault ? event.preventDefault() : event.returnValue = false;
+    };
+    function set_user_versions_all() {
+        var version_cookie = get_user_versions();
+        version_cookie.push("ALL");
+        $.cookie('brooklyn_versions', version_cookie, { expires: 365, path: '/' });
+        $('#page_notes').fadeOut();
+        event.preventDefault ? event.preventDefault() : event.returnValue = false;
+    };
+    function clear_user_versions() {
+        $.removeCookie('brooklyn_versions', { path: '/' });
+        $('#page_notes').fadeIn('slow');
+        event.preventDefault ? event.preventDefault() : event.returnValue = false;
+    };
+
 </script>
 
 </body>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/783e6382/docs/_layouts/website-normal.html
----------------------------------------------------------------------
diff --git a/docs/_layouts/website-normal.html b/docs/_layouts/website-normal.html
index 3a7e9b9..a89bb91 100644
--- a/docs/_layouts/website-normal.html
+++ b/docs/_layouts/website-normal.html
@@ -25,6 +25,7 @@ layout: website-base
 <div class="container" id="main_container">
     <div class="row">
         <div class="col-md-9" id="content_container">
+            <div id="page_notes"></div>
             <h1>{{ page.title }}</h1>
             {{ content }}
         </div>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/783e6382/docs/guide/start/running.md
----------------------------------------------------------------------
diff --git a/docs/guide/start/running.md b/docs/guide/start/running.md
index 4053e0c..17e3d934 100644
--- a/docs/guide/start/running.md
+++ b/docs/guide/start/running.md
@@ -94,10 +94,10 @@ $ brooklyn launch
 
 Brooklyn will output the address of the management interface:
 
-
-`INFO  Starting brooklyn web-console on loopback interface because no security config is set`
-
-`INFO  Started Brooklyn console at http://127.0.0.1:8081/, running classpath://brooklyn.war and []`
+<pre>
+INFO  Starting brooklyn web-console on loopback interface because no security config is set
+INFO  Started Brooklyn console at http://127.0.0.1:8081/, running classpath://brooklyn.war and []
+</pre>
 
 ### Next
 

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/783e6382/docs/style/css/base.scss
----------------------------------------------------------------------
diff --git a/docs/style/css/base.scss b/docs/style/css/base.scss
index 01a7122..6d2b9fa 100644
--- a/docs/style/css/base.scss
+++ b/docs/style/css/base.scss
@@ -135,9 +135,11 @@ a[id]:empty, a[name]:empty {
   opacity: 0;
   font-size: 0.8em;
 
+/* not using -- but this is cool!
   -webkit-transition: opacity 0.2s ease-in-out 0.1s;
   -moz-transition: opacity 0.2s ease-in-out 0.1s;
   -ms-transition: opacity 0.2s ease-in-out 0.1s;
+*/
 }
 h2:hover .header-link,
 h3:hover .header-link,
@@ -438,10 +440,121 @@ code {
     padding: 4px 4px 2px 4px;
     border-radius: 3px;
 }
-.highlight { background-color:$code_bg_color; } /* clipboard icon should have the same background color as the code */
 
 .nowrap { @include nowrap(); }
 
+.highlight { background-color:$code_bg_color; } /* clipboard icon should have the same background color as the code */
+
+.highlight .clipboard_button { display: none; }
+.highlight:hover .clipboard_button { display: inherit; }
+.clipboard_button.zeroclipboard-is-hover { display: inherit; }
+
+.clipboard_container { float: right; padding: 8px; }
+.clipboard_button:before {
+  // fa-copy
+  content: "\f0c5";
+}
+.clipboard_button {
+  font-size: 18px;
+  transform: translateY(-2px);
+  color: $vibrant_fg_green;
+}
+.clipboard_button:hover, .clipboard_button.zeroclipboard-is-hover {
+  color: $a_hover_color;
+  cursor: pointer; cursor: hand;
+}
+.clipboard_button.zeroclipboard-is-active .on-active {
+  display: inherit;
+}
+.clipboard_button .on-active {
+  display: none;
+  margin-top: -20px;
+  height: 0;
+  width: 0;
+  overflow-x: visible;
+  overflow-y: visible;
+  position: relative;
+  top: -30px;
+}
+.clipboard_button .on-active > div {
+  background-color: $white_dd;
+  border: 1px solid $gray_aa;
+  font-size: 75%;
+  font-weight: normal;
+  left: -50%;
+  color: $blackish;
+  width: auto;
+  display: inline-block;
+  @include nowrap();
+  padding: 3px 7px;
+  transform: translateX(-50%);
+}
+
+
+/* SEARCH
+   ----------------------------------------------------------------------- */
+
+div.search_right {
+  float: right; 
+  transform: translateY(-12px);
+  padding-right: 5%; 
+  padding-bottom: 18px;
+  font-size: 75%;
+  .searchform {
+    width: 240px; 
+    margin: 0; 
+    padding: 5px 5px 0 0; 
+    overflow: hidden; 
+    text-align: right;
+  }
+  .searchinput {
+    width: 227px; 
+    background: #ffffff; 
+    border: 1px solid #b1b7c2; 
+    -moz-border-radius: 2px; 
+    border-radius: 2px; 
+    color: #c8ccd5; 
+    padding: 3px;
+  }
+  .searchinput:focus {
+    color: $blackish;
+  }
+}
+
+
+/* ARCHIVE PAGE WARNING
+   ----------------------------------------------------------------------- */
+
+#page_notes {
+    display: none;
+    background-color: #4D9D3A;
+    border: 3px solid orange;
+    -moz-border-radius: 8px;
+    border-radius: 8px;
+    padding: 0.3em;
+    padding-left: 0.75em;
+    margin-top: 24px;
+    margin-bottom: -24px;
+
+ div.warning {
+    background-color: #F8CB9C;
+    border: 1px solid #FFAB7C;
+    padding-left: 0.75em;
+    -moz-border-radius: 8px;
+    border-radius: 8px;
+ }
+ .warning_banner_image img {
+    width: 64px; padding-top: 8px; padding-right: 12px;
+    float: left;
+ }
+ p { line-height: 100%; color: white; }
+ p.warning_banner_buttons {padding-right: 24px; } 
+ p.warning_banner_buttons a, #page_notes p.warning_banner_buttons a:visited { 
+    color: orange; font-weight: bold; padding-right: 1em; text-decoration: none; }
+ p.warning_banner_buttons a:hover { color: #FFC31E; font-weight: bold; }
+}
+
+
 /* LANDING PAGE
    ----------------------------------------------------------------------- */
 
@@ -479,6 +592,7 @@ div.feather.landing {
   }
 }
 
+
 /* YAML EXPLAINED
    ----------------------------------------------------------------------- */
 

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/783e6382/docs/website/developers/code-standards.md
----------------------------------------------------------------------
diff --git a/docs/website/developers/code-standards.md b/docs/website/developers/code-standards.md
new file mode 100644
index 0000000..4d18ca9
--- /dev/null
+++ b/docs/website/developers/code-standards.md
@@ -0,0 +1,14 @@
+---
+layout: website-normal
+title: Code Standards
+---
+
+Without being too restrictive about how you have to code as part of Brooklyn,
+there are some style points that really make life easier when sharing code
+among ourselves:
+
+* Use spaces (not tabs!) with 4 spaces indentation
+* Keep line length <=128
+* Don't reformat code or organize imports unless there's very good
+  reason (this makes history and merges much harder)
+

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/783e6382/docs/website/developers/index.md
----------------------------------------------------------------------
diff --git a/docs/website/developers/index.md b/docs/website/developers/index.md
index 8c1af7d..2edae18 100644
--- a/docs/website/developers/index.md
+++ b/docs/website/developers/index.md
@@ -5,6 +5,7 @@ children:
 - how-to-contribute.md
 - /guide/dev/
 - committers/
+- code-standards.md
 - { link: 'http://github.com/apache/incubator-brooklyn', title: 'GitHub' }
 - { link: 'https://issues.apache.org/jira/browse/BROOKLYN', title: 'Bug Tracker (JIRA)' }
 ---

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/783e6382/docs/website/meta/sitemap.md
----------------------------------------------------------------------
diff --git a/docs/website/meta/sitemap.md b/docs/website/meta/sitemap.md
index 1341959..7411976 100644
--- a/docs/website/meta/sitemap.md
+++ b/docs/website/meta/sitemap.md
@@ -3,10 +3,15 @@ layout: website-normal
 title: Site Map
 ---
 
-<!-- TODO this is very much work in progress -->
-
 <div class="sitemap">
 
+<div class="search_right">
+<form method="get" id="simple_google" class="searchform" action="http://www.google.com/search">
+                <input type="text" class="searchinput" name="brooklyn-search" placeholder="Google site search: type &amp; hit enter">
+                <input type="hidden" name="q" value="">
+            </form>
+</div>
+
 {% assign visited = "" | split: "|" %}
 {% assign site_items = "" | split: "|" %}
 <ul>
@@ -15,3 +20,6 @@ title: Site Map
   {% include sitemap-item.html %}
 {% endfor %}
 </ul>
+
+</div>
+


[09/13] incubator-brooklyn git commit: docs: fix REST api description

Posted by he...@apache.org.
docs: fix REST api description

Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/1ca11bd3
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/1ca11bd3
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/1ca11bd3

Branch: refs/heads/master
Commit: 1ca11bd3edbf84c25b0d1b16989ff0024f8c1ef9
Parents: b36436b
Author: Aled Sage <al...@gmail.com>
Authored: Fri Jan 16 13:44:34 2015 +0000
Committer: Aled Sage <al...@gmail.com>
Committed: Fri Jan 16 13:44:34 2015 +0000

----------------------------------------------------------------------
 docs/guide/ops/runtime-management/index.md | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/1ca11bd3/docs/guide/ops/runtime-management/index.md
----------------------------------------------------------------------
diff --git a/docs/guide/ops/runtime-management/index.md b/docs/guide/ops/runtime-management/index.md
index 42b274e..dd825dd 100644
--- a/docs/guide/ops/runtime-management/index.md
+++ b/docs/guide/ops/runtime-management/index.md
@@ -167,13 +167,14 @@ More information can be found in the javadoc for ``ManagementContext``.
 
 ### Management REST API
 
-Brooklyn does not yet expose a REST API. This was to allow the APi to be designed to align with emerging standards.
+Brooklyn's REST API supports a wide range of queries and operations. All information
+and operations shown in the web-console is performed via the REST API.
 
-Selected management operations are possible remotely using links exposed by the GUI (after authenticating with the GUI).
+The REST API can be explored through the Brooklyn web-console, via the menu Script -> REST API.
 
 ### Logging
 
-Brooklyn uses the SLF4J logging facade,  which allows use of many popular frameworks including java.util.logging, log4j, and logback.
+Brooklyn uses the SLF4J logging facade, which allows use of many popular frameworks including logback, java.util.logging and log4j.
 
 The convention for log levels is as follows:
 * ERROR and above:  exceptional situations which indicate that something has unexpectedly failed or


[03/13] incubator-brooklyn git commit: fix some minor mistakes in docs

Posted by he...@apache.org.
fix some minor mistakes in docs


Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/640a980e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/640a980e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/640a980e

Branch: refs/heads/master
Commit: 640a980e0e29fd287d022c7ebe274d90017b098a
Parents: 335a575
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Thu Jan 15 12:34:26 2015 +0000
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Thu Jan 15 16:33:00 2015 +0000

----------------------------------------------------------------------
 .../yaml/example_yaml/vanilla-bash-netcat-w-client.yaml      | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/640a980e/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
index 85a334a..fbf0505 100644
--- a/docs/guide/yaml/example_yaml/vanilla-bash-netcat-w-client.yaml
+++ b/docs/guide/yaml/example_yaml/vanilla-bash-netcat-w-client.yaml
@@ -14,13 +14,13 @@ services:
 
   # a failure detector and a service restarter work together
   brooklyn.enrichers:
-  - enricherType: brooklyn.policy.ha.ServiceFailureDetector
+  - type: brooklyn.policy.ha.ServiceFailureDetector
     brooklyn.config:
       # wait 15s after service fails before propagating failure
       serviceFailedStabilizationDelay: 15s
 
   brooklyn.policies:
-  - policyType: brooklyn.policy.ha.ServiceRestarter
+  - 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!
@@ -45,7 +45,9 @@ services:
   
   # set the hostname of the netcat instance as an env var for the scripts 
   env:
-    TARGET_HOSTNAME: $brooklyn:component("netcat-server").attributeWhenReady("host.name")
+    TARGET_HOSTNAME: 
+      $brooklyn:component("netcat-server").
+        attributeWhenReady("host.name")
     
   # start/check/stop are no-op
   launch.command: ""


[07/13] incubator-brooklyn git commit: docs: separate “launching” and “runtime management”

Posted by he...@apache.org.
docs: separate “launching” and “runtime management”

Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/aed2f1c8
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/aed2f1c8
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/aed2f1c8

Branch: refs/heads/master
Commit: aed2f1c8ae96e44d9a65ee8e994a28e494794a35
Parents: 663f673
Author: Aled Sage <al...@gmail.com>
Authored: Thu Jan 15 16:51:22 2015 +0000
Committer: Aled Sage <al...@gmail.com>
Committed: Thu Jan 15 16:51:22 2015 +0000

----------------------------------------------------------------------
 docs/guide/ops/index.md                         |   3 +-
 docs/guide/ops/launching/index.md               |  87 ++++
 docs/guide/ops/runtime-management/index.md      | 324 +++++++++++++++
 .../webconsole-dashboard-w400.png               | Bin 0 -> 137463 bytes
 .../runtime-management/webconsole-dashboard.png | Bin 0 -> 214723 bytes
 .../webconsole-detail-w400.png                  | Bin 0 -> 111993 bytes
 .../runtime-management/webconsole-detail.png    | Bin 0 -> 165359 bytes
 docs/guide/ops/webconsole/index.md              | 399 -------------------
 .../webconsole/webconsole-dashboard-w400.png    | Bin 137463 -> 0 bytes
 .../ops/webconsole/webconsole-dashboard.png     | Bin 214723 -> 0 bytes
 .../ops/webconsole/webconsole-detail-w400.png   | Bin 111993 -> 0 bytes
 docs/guide/ops/webconsole/webconsole-detail.png | Bin 165359 -> 0 bytes
 12 files changed, 413 insertions(+), 400 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/aed2f1c8/docs/guide/ops/index.md
----------------------------------------------------------------------
diff --git a/docs/guide/ops/index.md b/docs/guide/ops/index.md
index 27da59f..2e076da 100644
--- a/docs/guide/ops/index.md
+++ b/docs/guide/ops/index.md
@@ -5,7 +5,8 @@ children:
 - locations/index.md
 - locations/configuring.md
 - persistence/
-- webconsole/
+- launching/
+- runtime-management/
 ---
 
 {% include list-children.html %}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/aed2f1c8/docs/guide/ops/launching/index.md
----------------------------------------------------------------------
diff --git a/docs/guide/ops/launching/index.md b/docs/guide/ops/launching/index.md
new file mode 100644
index 0000000..8eb3dd9
--- /dev/null
+++ b/docs/guide/ops/launching/index.md
@@ -0,0 +1,87 @@
+---
+title: Launching Brooklyn
+layout: website-normal
+---
+
+There are several ways to launch applications with brooklyn, and useful configuration options,
+as well as a debug-view web console.
+
+This chapter describes how to launch brooklyn.
+
+
+Startup Configuration
+---------------------
+
+brooklyn can read configuration from a variety of places:
+
+* the file ``~/.brooklyn/brooklyn.properties``
+* ``-D`` defines on the brooklyn (java) command-line
+* shell environment variables
+
+Default properties are described in the Javadoc and code of the class ``BrooklynProperties``,
+but some of the most common ones are:
+ 
+{% highlight properties %}
+brooklyn.location.jclouds.aws-ec2.identity=AKA50M30N3S1DFR0MAW55
+brooklyn.location.jclouds.aws-ec2.credential=aT0Ps3cr3tC0D3wh1chAW5w1llG1V3y0uTOus333
+brooklyn.location.jclouds.aws-ec2.privateKeyFile=~/path/to/id_rsa       # use specified key (default is ~/.ssh/id_rsa)
+brooklyn.location.jclouds.aws-ec2.publicKeyFile=~/path/to/id_rsa.pub    # (optional, inferred from previous if omitted)
+{% endhighlight %} 
+
+These can be specified as a shell environment variable or as a Java system property,
+although in those contexts the conventional format ``BROOKLYN_JCLOUDS_AWS_EC2_IDENTITY`` 
+is supported and recommended.
+
+
+Command Line Interface
+----------------------
+
+Brooklyn comes with a Command Line Interface (cli) that makes it easier to launch an application.
+
+In order to have easy access to the cli it is useful to configure the PATH environment variable to also point to the cli's bin directory:
+
+{% highlight bash %}
+BROOKLYN_HOME=/path/to/brooklyn/
+export PATH=$PATH:$BROOKLYN_HOME/usage/dist/target/brooklyn-dist/bin/
+{% endhighlight %}
+
+If you have set this up correctly you should be able to invoke the ```brooklyn``` command:
+
+{% highlight bash %}
+brooklyn
+{% endhighlight %}
+
+To get information about all the supported cli options just run:
+
+{% highlight bash %}
+brooklyn help
+usage: brooklyn [(-q | --quiet)] [(-v | --verbose)] <command> [<args>]
+
+The most commonly used brooklyn commands are:
+    help     Display help information about brooklyn
+    info     Display information about brooklyn
+    launch   Starts a brooklyn application. Note that a BROOKLYN_CLASSPATH environment variable needs to be set up beforehand to point to the user application classpath.
+
+See 'brooklyn help <command>' for more information on a specific command.
+{% endhighlight %}
+
+Here is an example of the commands you might run to get the Brooklyn code, compile it and launch an application:
+
+{% highlight bash %}
+git clone https://github.com/apache/incubator-brooklyn.git
+cd brooklyn
+mvn clean install -DskipTests
+BROOKLYN_HOME=$(pwd)
+export PATH=${PATH}:${BROOKLYN_HOME}/usage/dist/target/brooklyn-dist/bin/
+export BROOKLYN_CLASSPATH=${BROOKLYN_HOME}/examples/simple-web-cluster/target/classes
+brooklyn launch --app brooklyn.demo.SingleWebServerExample --location localhost
+{% endhighlight %}
+
+You can add things to the brooklyn classpath in a number of ways:
+
+* Add ``.jar`` files to brooklyn's ``./lib/dropins/`` directory. These are added at the end of the classpath.
+* Add ``.jar`` files to brooklyn's ``./lib/patch/`` directory. These are added at the front of the classpath.
+* Add resources to brooklyn's ``./conf/`` directory. This directory is at the very front of the classpath.
+* Use the ``BROOKLYN_CLASSPATH`` environment variable. If set, this is prepended to the brooklyn classpath.
+
+

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/aed2f1c8/docs/guide/ops/runtime-management/index.md
----------------------------------------------------------------------
diff --git a/docs/guide/ops/runtime-management/index.md b/docs/guide/ops/runtime-management/index.md
new file mode 100644
index 0000000..42b274e
--- /dev/null
+++ b/docs/guide/ops/runtime-management/index.md
@@ -0,0 +1,324 @@
+---
+title: Runtime Management
+layout: website-normal
+---
+
+brooklyn uses many of the ideas from autonomic computing to implement management of entities in a 
+structured and reusable fashion (including provisioning, healing, and optimising).
+
+Each external system, process or service is represented as an entity within brooklyn, with 
+collections of these being represented and managed by other entities, and so forth through 
+a hierarchy rooted in entities referred to as "Applications". Each entity has:
+
+- provisioning and tear-down logic for the external system(s) it represents
+- sensors which it publishes to report on its state and activity
+- effectors which can be invoked to change it
+- policies which perform analysis, enrichment (sensors), and execution (effectors). It is the 
+  policies in brooklyn which perform the self-management (in autonomic terms) by monitoring sensors 
+  and invoking effectors.
+
+This chapter describes these high-level runtime concepts, as well as presenting more
+detailed information on the underlying implementation of management within brooklyn.
+
+
+
+
+Management Web Console
+----------------------
+
+The web-based management console that comes with brooklyn serves as a way to observe and manage brooklyn entities.
+It provides low-level details of activity (including stack-traces), sensor values, and policies,
+and some visual widgets for observing what is happening.
+This console is not designed as a management dashboard or portal -- 
+many good options exist in that space --
+but what could be useful is to embed widgets from the brooklyn portal for selected high-level views.
+
+<!-- FIXME Update to use new construction pattern, rather than calling app's constructor -->
+To start a management console from your own code, use ``BrooklynLaucher.launch``:
+{% highlight java %}
+public static void main(String[] argv) {
+	Application app = new MyApplicationExample(displayName:"myapp")
+    BrooklynServerDetails server = BrooklynLauncher.newLauncher()
+            .managing(app)
+            .launch();
+	// ...
+}
+{% endhighlight %}
+
+This will start an embedded brooklyn management node, including the web console.
+The URL for the web console defaults to http://127.0.0.1:8081, .
+
+The mechanism for launching brooklyn management will change in a future release. For this release, the brooklyn management node is embedded.
+
+The console contains two main views: Dashboard and Detail. These update in real-time.
+
+**Dashboard**
+
+The dashboard is a high level overview of the state of the application:
+
+[![Screenshot of the Webconsole Dashboard](webconsole-dashboard-w400.png "Screenshot of the Webconsole Dashboard")](webconsole-dashboard.png)
+
+
+**Detail**
+
+The Detail view gives an in-depth view of the application and its entities. 
+Child-parent relationships between entities are navigable using the entity tree;
+each entity is shown with its children (or, in the case of childless group entities, the members). 
+Selecting a specific entity allows you to access detailed information about that entity.
+
+[![Screenshot of the Webconsole Detail](webconsole-detail-w400.png "Screenshot of the Webconsole Detail")](webconsole-detail.png)
+
+The Detail view contains a breadcrumb trail, showing the current entitiy's position in the heirarchy, and six tabs:
+
+**Summary:** Description of the selected entity.
+
+**Sensors:** Lists the attribute sensors that the entity has and their values.
+
+**Effectors:** Lists the effectors that can be invoked on the selected entity.
+
+**Activity:** Current and historic activity of the entity, currently running effectors, finished effectors.
+
+**Location:** The geographical location of the selected entity.
+
+**Policies:** Lists the policies associated with the current entity. Policies can be suspended, resumed and removed through the UI.
+
+### Security
+
+Security providers can be configured by specifying `brooklyn.webconsole.security.provider` equal 
+to the name of a class implementing `SecurityProvider`.
+An implementation of this could point to Spring, LDAP, OpenID or another identity management system.
+
+The default implementation, `ExplicitUsersSecurityProvider`, reads from a list of users and passwords
+which should be specified as configuration parameters e.g. in `brooklyn.properties`.
+This configuration could look like:
+
+{% highlight properties %}
+brooklyn.webconsole.security.users=admin
+brooklyn.webconsole.security.user.admin.salt=OHDf
+brooklyn.webconsole.security.user.admin.sha256=91e16f94509fa8e3dd21c43d69cadfd7da6e7384051b18f168390fe378bb36f9
+{% endhighlight %}
+
+The `users` line should contain a comma-separated list. The special value `*` is accepted to permit all users.
+
+To generate this, the brooklyn CLI can be used:
+{% highlight bash %}
+brooklyn generate-password --user admin
+
+Enter password: 
+Re-enter password: 
+
+Please add the following to your brooklyn.properies:
+
+brooklyn.webconsole.security.users=admin
+brooklyn.webconsole.security.user.admin.salt=OHDf
+brooklyn.webconsole.security.user.admin.sha256=91e16f94509fa8e3dd21c43d69cadfd7da6e7384051b18f168390fe378bb36f9
+{% endhighlight %}
+
+For legacy and dev purposes, the password can also be stored in plain text:
+
+{% highlight properties %}
+brooklyn.webconsole.security.users=admin
+brooklyn.webconsole.security.user.admin.password=mypassword
+{% endhighlight %}
+
+If not using the web console, you can specify
+`brooklyn.webconsole.security.provider=brooklyn.rest.security.provider.BlackholeSecurityProvider` to prevent inadvertant logins.
+During dev/test you can specify `brooklyn.webconsole.security.provider=brooklyn.rest.security.provider.AnyoneSecurityProvider`
+to allow logins with no credentials. 
+
+To enable https, you will need a server certificate in a java keystore. To create a self-signed certificate, you can use the
+following command:
+
+`keytool -genkey -keyalg RSA -alias brooklyn -keystore <path-to-keystore-directory>/server.key -storepass mypassword -validity 360 -keysize 2048`
+
+You will then be prompted to enter you name and organization details. This will create a keystore with the password `mypassword`
+- you should use your own secure password, which will be the same password used in your brooklyn.properties (below). 
+You will also need to replace `<path-to-keystore-directory>` with the full path of the folder where you wish to store your
+keystore. 
+
+The certificate generated will be a self-signed certificate and will not have a CN field identifying the website server 
+name, which will cause a warning to be displayed by the browser when viewing the page. For production servers, a valid signed 
+certificate from a trusted certifying authority should be used instead
+
+To enable HTTPS in Brooklyn, add the following to your brooklyn.properties:
+
+```
+# HTTPS
+brooklyn.webconsole.security.https.required=true
+brooklyn.webconsole.security.keystore.url=<path-to-keystore-directory>/server.key
+brooklyn.webconsole.security.keystore.password=mypassword
+brooklyn.webconsole.security.keystore.certificate.alias=brooklyn
+```
+
+In order to access the Brooklyn console, you will also need to enable security, and setup a user as described above
+
+Other Ways to Observe Activity
+------------------------------
+
+### Java API
+
+``ManagementContext`` provides a Java programmatic API. 
+
+More information can be found in the javadoc for ``ManagementContext``.
+
+### Command-line Console
+
+*Not available yet.*
+
+### Management REST API
+
+Brooklyn does not yet expose a REST API. This was to allow the APi to be designed to align with emerging standards.
+
+Selected management operations are possible remotely using links exposed by the GUI (after authenticating with the GUI).
+
+### Logging
+
+Brooklyn uses the SLF4J logging facade,  which allows use of many popular frameworks including java.util.logging, log4j, and logback.
+
+The convention for log levels is as follows:
+* ERROR and above:  exceptional situations which indicate that something has unexpectedly failed or
+some other problem has occured which the user is expected to attend to
+* WARN:  exceptional situations which the user may which to know about but which do not necessarily indicate failure or require a response
+* INFO:  a synopsis of activity, but which should not generate large volumes of events nor overwhelm a human observer
+* DEBUG and lower:  detail of activity which is not normally of interest, but which might merit closer inspection under certain circumstances.
+
+Loggers follow the ``package.ClassName`` naming standard.  
+
+It is possible for entities to emit logging activity sensors so that an operator can observe what is occurring within their application through the web console or via programmatic means.
+
+Examples for testing can be found in some of the poms.
+
+
+<!---
+
+<a name="distributed-management"></a>
+Distributed Management
+----------------------
+
+TODO Describe how and when objects become "live", pushed out to other nodes.
+-->
+
+<!---
+
+<a name="resilience"></a>
+Resilience
+----------
+TODO
+*This section still needs to be written. Feel free to [fork]({{site.path.guide}}/dev/code) the docs and lend a hand.*
+-->
+
+
+Key APIs
+--------
+<!---
+TODO - brief overview of key APIs
+-->
+*This section still needs to be written. Feel free to [fork]({{site.path.guide}}/dev/code) the docs and lend a hand.*
+
+- ``ManagementContext`` (Java management API)
+- ``EntityLocal`` (used by policies)
+
+
+<!---
+TODO - describe how to simply configure logging slf4j
+-->
+
+Sensors and Effectors
+---------------------
+
+### Sensors
+
+Sensors are typically defined as static named fields on the Entity subclass. These define the channels of events and activity that interested parties can track remotely. For example:
+{% highlight java %}
+/** a sensor for saying hi (illustrative), carrying a String value 
+	which is typically the name of the person to whom we are saying hi */
+public static final Sensor<String> HELLO_SENSOR = ...
+
+{% endhighlight %}
+
+If the entity is local (e.g. to a policy) these can be looked up using ``get(Sensor)``. If it may be remote, you can subscribe to it through various APIs.
+
+<!---
+TODO probably say about events now, quick reference about SubscriptionManager (either here or in next section on management context)
+TODO remaining section on Sensors perhaps should be moved to Writing Entities section? as reader won't need to know too much detail of sensor types to understand policies... though perhaps saying some is right. (Talking about JSON is almost certainly overkill...)
+-->
+
+Sensors are used by operators and policies to monitor health and know when to invoke the effectors. The sensor data forms a nested map (i.e. JSON), which can be subscribed to through the ``ManagementContext``.
+
+Often ``Policy`` instances will subscribe to sensor events on their associated entity or its children; these events might be an ``AttributeValueEvent`` – an attribute value being reported on change or periodically – or something transient such as ``LogMessage`` or a custom ``Event`` such as "TOO_HOT".
+
+<!---
+TODO check classes above; is this much detail needed here?
+-->
+
+Sensor values form a map-of-maps. An example of some simple sensor information is shown below in JSON:
+		
+	{
+	  config : {
+		url : "jdbc:mysql://ec2-50-17-19-65.compute-1.amazonaws.com:3306/mysql"
+		status : "running"
+	  }
+	  workrate : {
+		msgsPerSec : 432
+	  }
+	}
+
+Sensor values are defined as statics, which can be used to programmatically drive the subscription.
+<!---
+TODO , etc., example
+-->
+
+### SubscriptionManager
+
+*This section is not complete. Feel free to [fork]({{site.path.guide}}/dev/code) the docs and lend a hand.*
+
+*See the* ``SubscriptionManager`` *class.*
+<!---
+TODO
+-->
+
+### Effectors
+
+Like sensors and config info, effectors are also static fields on the Entity class. These describe actions available on the entity, similar to methods. Their implementation includes details of how to invoke them, typically this is done by calling a method on the entity. Effectors are typically defined as follows:
+
+{% highlight java %}
+/** an effector which returns no value,
+	but which causes the entity to emit a HELLO sensor event */
+public static Effector<Void> SAY_HI = ...
+
+{% endhighlight %}
+
+Effectors are invoked by calling ``invoke(SAY_HI, name:"Bob")`` or similar. The method may take an entity if context is not clear, and it takes parameters as named parameters or a Map.
+
+Invocation returns a ``Task`` object (extending ``Future``). This allows the caller to understand progress and errors on the task, as well as ``Task.get()`` the return value. Be aware that ``task.get()`` is a blocking function that will wait until a value is available before returning.
+
+The management framework ensures that execution occurs on the machine where the ``Entity`` is mastered, with progress, result, and/or any errors reported back to the caller. It does this through the ``ExecutionManager`` which, where necessary, creates proxy ``Task`` instances. The ``ExecutionManager`` associates ``Tasks`` with the corresponding ``Entity`` so that these can be tracked externally (and relocated if the Entity is remastered to a different location).
+
+It is worth noting that where a method corresponds to an effector, direct invocation of that method on an ``Entity`` will implicitly generate the ``Task`` object as though the effector had been invoked. For example, invoking ``Cluster.resize(int)``, where ``resize`` provides an ``Effector RESIZE``, will generate a ``Task`` which can be observed remotely.
+
+### ExecutionManager
+
+The ``ExecutionManager`` is responsible for tracking simultaneous executing tasks and associating these with given **tags**.
+Arbitrary tasks can be run by calling ``Task submit(Runnable)`` (similarly to the standard ``Executor``, although it also supports ``Callable`` arguments including Groovy closures, and can even be passed ``Task`` instances which have not been started). ``submit`` also accepts a few other named parameters, including ``description``, which allow additional metadata to be kept on the ``Task``. The main benefit then is to have rich metadata for executing tasks, which can be inspected through methods on the ``Task`` interface.
+
+By using the ``tag`` or ``tags`` named parameters on ``submit`` (or setting ``tags`` in a ``Task`` that is submitted), execution can be associated with various categories. This allows easy viewing can be examined by calling
+``ExecutionManager.getTasksWithTag(...)``.
+
+The following example uses Groovy, with time delays abused for readability. brooklyn's test cases check this using mutexes, which is recommended.
+	
+	ExecutionManager em = []
+	em.submit(tag:"a", description:"One Mississippi", { Thread.sleep(1000) })
+	em.submit(tags:["a","b"], description:"Two Mississippi", { Thread.sleep(1000) })
+	assert em.getTasksWithTag("a").size()==2
+	assert em.getTasksWithTag("a").every { Task t -> !t.isDone() }
+	Thread.sleep(1500)
+	assert em.getTasksWithTag("a").size()==2
+	assert em.getTasksWithTag("a").every { Task t -> t.isDone() }
+
+It is possible to define ParallelTasks and SequentialTasks and to specify inter-task relationships with TaskPreprocessors. This allows building quite sophisticated workflows relatively easily. 
+
+Continuing the example above, submitting a SequentialTasks or specifying ``em.setTaskPreprocessorForTag("a", SingleThreadedExecution.class)`` will cause ``Two Mississippi`` to run after ``One Mississippi`` completes.
+
+For more information consult the javadoc on these classes and associated tests.
+
+Note that it is currently necessary to prune dead tasks, either periodically or by the caller. By default they are kept around for reference. It is expected that an enhancement in a future release will allow pruning completed and failed tasks after a specified amount of time.

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/aed2f1c8/docs/guide/ops/runtime-management/webconsole-dashboard-w400.png
----------------------------------------------------------------------
diff --git a/docs/guide/ops/runtime-management/webconsole-dashboard-w400.png b/docs/guide/ops/runtime-management/webconsole-dashboard-w400.png
new file mode 100644
index 0000000..6364dc5
Binary files /dev/null and b/docs/guide/ops/runtime-management/webconsole-dashboard-w400.png differ

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/aed2f1c8/docs/guide/ops/runtime-management/webconsole-dashboard.png
----------------------------------------------------------------------
diff --git a/docs/guide/ops/runtime-management/webconsole-dashboard.png b/docs/guide/ops/runtime-management/webconsole-dashboard.png
new file mode 100644
index 0000000..cac5567
Binary files /dev/null and b/docs/guide/ops/runtime-management/webconsole-dashboard.png differ

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/aed2f1c8/docs/guide/ops/runtime-management/webconsole-detail-w400.png
----------------------------------------------------------------------
diff --git a/docs/guide/ops/runtime-management/webconsole-detail-w400.png b/docs/guide/ops/runtime-management/webconsole-detail-w400.png
new file mode 100644
index 0000000..b372e55
Binary files /dev/null and b/docs/guide/ops/runtime-management/webconsole-detail-w400.png differ

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/aed2f1c8/docs/guide/ops/runtime-management/webconsole-detail.png
----------------------------------------------------------------------
diff --git a/docs/guide/ops/runtime-management/webconsole-detail.png b/docs/guide/ops/runtime-management/webconsole-detail.png
new file mode 100644
index 0000000..17829cd
Binary files /dev/null and b/docs/guide/ops/runtime-management/webconsole-detail.png differ

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/aed2f1c8/docs/guide/ops/webconsole/index.md
----------------------------------------------------------------------
diff --git a/docs/guide/ops/webconsole/index.md b/docs/guide/ops/webconsole/index.md
deleted file mode 100644
index 62afc2c..0000000
--- a/docs/guide/ops/webconsole/index.md
+++ /dev/null
@@ -1,399 +0,0 @@
----
-title: Runtime Management
-layout: website-normal
----
-
-brooklyn uses many of the ideas from autonomic computing to implement management of entities in a structured and reusable fashion (including provisioning, 
-healing, and optimising).
-
-Each external system, process or service is represented as an entity within brooklyn, with collections of these being represented and
-managed by other entities, and so forth through a hierarchy rooted in entities referred to as "Applications". Each entity has:
-
-- provisioning and tear-down logic for the external system(s) it represents
-- sensors which it publishes to report on its state and activity
-- effectors which can be invoked to change it
-- policies which perform analysis, enrichment (sensors), and execution (effectors). It is the policies in brooklyn which
-  perform the self-management (in autonomic terms) by monitoring sensors and invoking effectors.
-
-There are several ways to launch applications with brooklyn, and useful configuration options,
-as well as a debug-view web console.
-This chapter describes these high-level runtime concepts, then proceeds to present more
-detailed information on the underlying implementation of management within brooklyn.
-
-
-Startup Configuration
----------------------
-
-brooklyn can read configuration from a variety of places:
-
-* the file ``~/.brooklyn/brooklyn.properties``
-* ``-D`` defines on the brooklyn (java) command-line
-* shell environment variables
-
-Default properties are described in the Javadoc and code of the class ``BrooklynProperties``,
-but some of the most common ones are:
- 
-{% highlight properties %}
-brooklyn.location.jclouds.aws-ec2.identity=AKA50M30N3S1DFR0MAW55
-brooklyn.location.jclouds.aws-ec2.credential=aT0Ps3cr3tC0D3wh1chAW5w1llG1V3y0uTOus333
-brooklyn.location.jclouds.aws-ec2.privateKeyFile=~/path/to/id_rsa       # use specified key (default is ~/.ssh/id_rsa)
-brooklyn.location.jclouds.aws-ec2.publicKeyFile=~/path/to/id_rsa.pub    # (optional, inferred from previous if omitted)
-{% endhighlight %} 
-
-These can be specified as a shell environment variable or as a Java system property,
-although in those contexts the conventional format ``BROOKLYN_JCLOUDS_AWS_EC2_IDENTITY`` 
-is supported and recommended. 
-
-
-
-Command Line Interface
-----------------------
-
-Brooklyn comes with a Command Line Interface (cli) that makes it easier to launch an application.
-
-In order to have easy access to the cli it is useful to configure the PATH environment variable to also point to the cli's bin directory:
-
-{% highlight bash %}
-BROOKLYN_HOME=/path/to/brooklyn/
-export PATH=$PATH:$BROOKLYN_HOME/usage/dist/target/brooklyn-dist/bin/
-{% endhighlight %}
-
-If you have set this up correctly you should be able to invoke the ```brooklyn``` command:
-
-{% highlight bash %}
-brooklyn
-{% endhighlight %}
-
-To get information about all the supported cli options just run:
-
-{% highlight bash %}
-brooklyn help
-usage: brooklyn [(-q | --quiet)] [(-v | --verbose)] <command> [<args>]
-
-The most commonly used brooklyn commands are:
-    help     Display help information about brooklyn
-    info     Display information about brooklyn
-    launch   Starts a brooklyn application. Note that a BROOKLYN_CLASSPATH environment variable needs to be set up beforehand to point to the user application classpath.
-
-See 'brooklyn help <command>' for more information on a specific command.
-{% endhighlight %}
-
-Here is an example of the commands you might run to get the Brooklyn code, compile it and launch an application:
-
-{% highlight bash %}
-git clone https://github.com/apache/incubator-brooklyn.git
-cd brooklyn
-mvn clean install -DskipTests
-BROOKLYN_HOME=$(pwd)
-export PATH=${PATH}:${BROOKLYN_HOME}/usage/dist/target/brooklyn-dist/bin/
-export BROOKLYN_CLASSPATH=${BROOKLYN_HOME}/examples/simple-web-cluster/target/classes
-brooklyn launch --app brooklyn.demo.SingleWebServerExample --location localhost
-{% endhighlight %}
-
-You can add things to the brooklyn classpath in a number of ways:
-
-* Add ``.jar`` files to brooklyn's ``./lib/dropins/`` directory. These are added at the end of the classpath.
-* Add ``.jar`` files to brooklyn's ``./lib/patch/`` directory. These are added at the front of the classpath.
-* Add resources to brooklyn's ``./conf/`` directory. This directory is at the very front of the classpath.
-* Use the ``BROOKLYN_CLASSPATH`` environment variable. If set, this is prepended to the brooklyn classpath.
-
-
-Management Web Console
-----------------------
-
-The web-based management console that comes with brooklyn serves as a way to observe and manage brooklyn entities.
-It provides low-level details of activity (including stack-traces), sensor values, and policies,
-and some visual widgets for observing what is happening.
-This console is not designed as a management dashboard or portal -- 
-many good options exist in that space --
-but what could be useful is to embed widgets from the brooklyn portal for selected high-level views.
-
-<!-- FIXME Update to use new construction pattern, rather than calling app's constructor -->
-To start a management console from your own code, use ``BrooklynLaucher.launch``:
-{% highlight java %}
-public static void main(String[] argv) {
-	Application app = new MyApplicationExample(displayName:"myapp")
-    BrooklynServerDetails server = BrooklynLauncher.newLauncher()
-            .managing(app)
-            .launch();
-	// ...
-}
-{% endhighlight %}
-
-This will start an embedded brooklyn management node, including the web console.
-The URL for the web console defaults to http://127.0.0.1:8081, .
-
-The mechanism for launching brooklyn management will change in a future release. For this release, the brooklyn management node is embedded.
-
-The console contains two main views: Dashboard and Detail. These update in real-time.
-
-**Dashboard**
-
-The dashboard is a high level overview of the state of the application:
-
-[![Screenshot of the Webconsole Dashboard](webconsole-dashboard-w400.png "Screenshot of the Webconsole Dashboard")](webconsole-dashboard.png)
-
-
-**Detail**
-
-The Detail view gives an in-depth view of the application and its entities. 
-Child-parent relationships between entities are navigable using the entity tree;
-each entity is shown with its children (or, in the case of childless group entities, the members). 
-Selecting a specific entity allows you to access detailed information about that entity.
-
-[![Screenshot of the Webconsole Detail](webconsole-detail-w400.png "Screenshot of the Webconsole Detail")](webconsole-detail.png)
-
-The Detail view contains a breadcrumb trail, showing the current entitiy's position in the heirarchy, and six tabs:
-
-**Summary:** Description of the selected entity.
-
-**Sensors:** Lists the attribute sensors that the entity has and their values.
-
-**Effectors:** Lists the effectors that can be invoked on the selected entity.
-
-**Activity:** Current and historic activity of the entity, currently running effectors, finished effectors.
-
-**Location:** The geographical location of the selected entity.
-
-**Policies:** Lists the policies associated with the current entity. Policies can be suspended, resumed and removed through the UI.
-
-### Security
-
-Security providers can be configured by specifying `brooklyn.webconsole.security.provider` equal 
-to the name of a class implementing `SecurityProvider`.
-An implementation of this could point to Spring, LDAP, OpenID or another identity management system.
-
-The default implementation, `ExplicitUsersSecurityProvider`, reads from a list of users and passwords
-which should be specified as configuration parameters e.g. in `brooklyn.properties`.
-This configuration could look like:
-
-{% highlight properties %}
-brooklyn.webconsole.security.users=admin
-brooklyn.webconsole.security.user.admin.salt=OHDf
-brooklyn.webconsole.security.user.admin.sha256=91e16f94509fa8e3dd21c43d69cadfd7da6e7384051b18f168390fe378bb36f9
-{% endhighlight %}
-
-The `users` line should contain a comma-separated list. The special value `*` is accepted to permit all users.
-
-To generate this, the brooklyn CLI can be used:
-{% highlight bash %}
-brooklyn generate-password --user admin
-
-Enter password: 
-Re-enter password: 
-
-Please add the following to your brooklyn.properies:
-
-brooklyn.webconsole.security.users=admin
-brooklyn.webconsole.security.user.admin.salt=OHDf
-brooklyn.webconsole.security.user.admin.sha256=91e16f94509fa8e3dd21c43d69cadfd7da6e7384051b18f168390fe378bb36f9
-{% endhighlight %}
-
-For legacy and dev purposes, the password can also be stored in plain text:
-
-{% highlight properties %}
-brooklyn.webconsole.security.users=admin
-brooklyn.webconsole.security.user.admin.password=mypassword
-{% endhighlight %}
-
-If not using the web console, you can specify
-`brooklyn.webconsole.security.provider=brooklyn.rest.security.provider.BlackholeSecurityProvider` to prevent inadvertant logins.
-During dev/test you can specify `brooklyn.webconsole.security.provider=brooklyn.rest.security.provider.AnyoneSecurityProvider`
-to allow logins with no credentials. 
-
-To enable https, you will need a server certificate in a java keystore. To create a self-signed certificate, you can use the
-following command:
-
-`keytool -genkey -keyalg RSA -alias brooklyn -keystore <path-to-keystore-directory>/server.key -storepass mypassword -validity 360 -keysize 2048`
-
-You will then be prompted to enter you name and organization details. This will create a keystore with the password `mypassword`
-- you should use your own secure password, which will be the same password used in your brooklyn.properties (below). 
-You will also need to replace `<path-to-keystore-directory>` with the full path of the folder where you wish to store your
-keystore. 
-
-The certificate generated will be a self-signed certificate and will not have a CN field identifying the website server 
-name, which will cause a warning to be displayed by the browser when viewing the page. For production servers, a valid signed 
-certificate from a trusted certifying authority should be used instead
-
-To enable HTTPS in Brooklyn, add the following to your brooklyn.properties:
-
-```
-# HTTPS
-brooklyn.webconsole.security.https.required=true
-brooklyn.webconsole.security.keystore.url=<path-to-keystore-directory>/server.key
-brooklyn.webconsole.security.keystore.password=mypassword
-brooklyn.webconsole.security.keystore.certificate.alias=brooklyn
-```
-
-In order to access the Brooklyn console, you will also need to enable security, and setup a user as described above
-
-Other Ways to Observe Activity
-------------------------------
-
-### Java API
-
-``ManagementContext`` provides a Java programmatic API. 
-
-More information can be found in the javadoc for ``ManagementContext``.
-
-### Command-line Console
-
-*Not available yet.*
-
-### Management REST API
-
-Brooklyn does not yet expose a REST API. This was to allow the APi to be designed to align with emerging standards.
-
-Selected management operations are possible remotely using links exposed by the GUI (after authenticating with the GUI).
-
-### Logging
-
-Brooklyn uses the SLF4J logging facade,  which allows use of many popular frameworks including java.util.logging, log4j, and logback.
-
-The convention for log levels is as follows:
-* ERROR and above:  exceptional situations which indicate that something has unexpectedly failed or
-some other problem has occured which the user is expected to attend to
-* WARN:  exceptional situations which the user may which to know about but which do not necessarily indicate failure or require a response
-* INFO:  a synopsis of activity, but which should not generate large volumes of events nor overwhelm a human observer
-* DEBUG and lower:  detail of activity which is not normally of interest, but which might merit closer inspection under certain circumstances.
-
-Loggers follow the ``package.ClassName`` naming standard.  
-
-It is possible for entities to emit logging activity sensors so that an operator can observe what is occurring within their application through the web console or via programmatic means.
-
-Examples for testing can be found in some of the poms.
-
-
-<!---
-
-<a name="distributed-management"></a>
-Distributed Management
-----------------------
-
-TODO Describe how and when objects become "live", pushed out to other nodes.
--->
-
-<!---
-
-<a name="resilience"></a>
-Resilience
-----------
-TODO
-*This section still needs to be written. Feel free to [fork]({{site.path.guide}}/dev/code) the docs and lend a hand.*
--->
-
-
-Key APIs
---------
-<!---
-TODO - brief overview of key APIs
--->
-*This section still needs to be written. Feel free to [fork]({{site.path.guide}}/dev/code) the docs and lend a hand.*
-
-- ``ManagementContext`` (Java management API)
-- ``EntityLocal`` (used by policies)
-
-
-<!---
-TODO - describe how to simply configure logging slf4j
--->
-
-Sensors and Effectors
----------------------
-
-### Sensors
-
-Sensors are typically defined as static named fields on the Entity subclass. These define the channels of events and activity that interested parties can track remotely. For example:
-{% highlight java %}
-/** a sensor for saying hi (illustrative), carrying a String value 
-	which is typically the name of the person to whom we are saying hi */
-public static final Sensor<String> HELLO_SENSOR = ...
-
-{% endhighlight %}
-
-If the entity is local (e.g. to a policy) these can be looked up using ``get(Sensor)``. If it may be remote, you can subscribe to it through various APIs.
-
-<!---
-TODO probably say about events now, quick reference about SubscriptionManager (either here or in next section on management context)
-TODO remaining section on Sensors perhaps should be moved to Writing Entities section? as reader won't need to know too much detail of sensor types to understand policies... though perhaps saying some is right. (Talking about JSON is almost certainly overkill...)
--->
-
-Sensors are used by operators and policies to monitor health and know when to invoke the effectors. The sensor data forms a nested map (i.e. JSON), which can be subscribed to through the ``ManagementContext``.
-
-Often ``Policy`` instances will subscribe to sensor events on their associated entity or its children; these events might be an ``AttributeValueEvent`` – an attribute value being reported on change or periodically – or something transient such as ``LogMessage`` or a custom ``Event`` such as "TOO_HOT".
-
-<!---
-TODO check classes above; is this much detail needed here?
--->
-
-Sensor values form a map-of-maps. An example of some simple sensor information is shown below in JSON:
-		
-	{
-	  config : {
-		url : "jdbc:mysql://ec2-50-17-19-65.compute-1.amazonaws.com:3306/mysql"
-		status : "running"
-	  }
-	  workrate : {
-		msgsPerSec : 432
-	  }
-	}
-
-Sensor values are defined as statics, which can be used to programmatically drive the subscription.
-<!---
-TODO , etc., example
--->
-
-### SubscriptionManager
-
-*This section is not complete. Feel free to [fork]({{site.path.guide}}/dev/code) the docs and lend a hand.*
-
-*See the* ``SubscriptionManager`` *class.*
-<!---
-TODO
--->
-
-### Effectors
-
-Like sensors and config info, effectors are also static fields on the Entity class. These describe actions available on the entity, similar to methods. Their implementation includes details of how to invoke them, typically this is done by calling a method on the entity. Effectors are typically defined as follows:
-
-{% highlight java %}
-/** an effector which returns no value,
-	but which causes the entity to emit a HELLO sensor event */
-public static Effector<Void> SAY_HI = ...
-
-{% endhighlight %}
-
-Effectors are invoked by calling ``invoke(SAY_HI, name:"Bob")`` or similar. The method may take an entity if context is not clear, and it takes parameters as named parameters or a Map.
-
-Invocation returns a ``Task`` object (extending ``Future``). This allows the caller to understand progress and errors on the task, as well as ``Task.get()`` the return value. Be aware that ``task.get()`` is a blocking function that will wait until a value is available before returning.
-
-The management framework ensures that execution occurs on the machine where the ``Entity`` is mastered, with progress, result, and/or any errors reported back to the caller. It does this through the ``ExecutionManager`` which, where necessary, creates proxy ``Task`` instances. The ``ExecutionManager`` associates ``Tasks`` with the corresponding ``Entity`` so that these can be tracked externally (and relocated if the Entity is remastered to a different location).
-
-It is worth noting that where a method corresponds to an effector, direct invocation of that method on an ``Entity`` will implicitly generate the ``Task`` object as though the effector had been invoked. For example, invoking ``Cluster.resize(int)``, where ``resize`` provides an ``Effector RESIZE``, will generate a ``Task`` which can be observed remotely.
-
-### ExecutionManager
-
-The ``ExecutionManager`` is responsible for tracking simultaneous executing tasks and associating these with given **tags**.
-Arbitrary tasks can be run by calling ``Task submit(Runnable)`` (similarly to the standard ``Executor``, although it also supports ``Callable`` arguments including Groovy closures, and can even be passed ``Task`` instances which have not been started). ``submit`` also accepts a few other named parameters, including ``description``, which allow additional metadata to be kept on the ``Task``. The main benefit then is to have rich metadata for executing tasks, which can be inspected through methods on the ``Task`` interface.
-
-By using the ``tag`` or ``tags`` named parameters on ``submit`` (or setting ``tags`` in a ``Task`` that is submitted), execution can be associated with various categories. This allows easy viewing can be examined by calling
-``ExecutionManager.getTasksWithTag(...)``.
-
-The following example uses Groovy, with time delays abused for readability. brooklyn's test cases check this using mutexes, which is recommended.
-	
-	ExecutionManager em = []
-	em.submit(tag:"a", description:"One Mississippi", { Thread.sleep(1000) })
-	em.submit(tags:["a","b"], description:"Two Mississippi", { Thread.sleep(1000) })
-	assert em.getTasksWithTag("a").size()==2
-	assert em.getTasksWithTag("a").every { Task t -> !t.isDone() }
-	Thread.sleep(1500)
-	assert em.getTasksWithTag("a").size()==2
-	assert em.getTasksWithTag("a").every { Task t -> t.isDone() }
-
-It is possible to define ParallelTasks and SequentialTasks and to specify inter-task relationships with TaskPreprocessors. This allows building quite sophisticated workflows relatively easily. 
-
-Continuing the example above, submitting a SequentialTasks or specifying ``em.setTaskPreprocessorForTag("a", SingleThreadedExecution.class)`` will cause ``Two Mississippi`` to run after ``One Mississippi`` completes.
-
-For more information consult the javadoc on these classes and associated tests.
-
-Note that it is currently necessary to prune dead tasks, either periodically or by the caller. By default they are kept around for reference. It is expected that an enhancement in a future release will allow pruning completed and failed tasks after a specified amount of time.

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/aed2f1c8/docs/guide/ops/webconsole/webconsole-dashboard-w400.png
----------------------------------------------------------------------
diff --git a/docs/guide/ops/webconsole/webconsole-dashboard-w400.png b/docs/guide/ops/webconsole/webconsole-dashboard-w400.png
deleted file mode 100644
index 6364dc5..0000000
Binary files a/docs/guide/ops/webconsole/webconsole-dashboard-w400.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/aed2f1c8/docs/guide/ops/webconsole/webconsole-dashboard.png
----------------------------------------------------------------------
diff --git a/docs/guide/ops/webconsole/webconsole-dashboard.png b/docs/guide/ops/webconsole/webconsole-dashboard.png
deleted file mode 100644
index cac5567..0000000
Binary files a/docs/guide/ops/webconsole/webconsole-dashboard.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/aed2f1c8/docs/guide/ops/webconsole/webconsole-detail-w400.png
----------------------------------------------------------------------
diff --git a/docs/guide/ops/webconsole/webconsole-detail-w400.png b/docs/guide/ops/webconsole/webconsole-detail-w400.png
deleted file mode 100644
index b372e55..0000000
Binary files a/docs/guide/ops/webconsole/webconsole-detail-w400.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/aed2f1c8/docs/guide/ops/webconsole/webconsole-detail.png
----------------------------------------------------------------------
diff --git a/docs/guide/ops/webconsole/webconsole-detail.png b/docs/guide/ops/webconsole/webconsole-detail.png
deleted file mode 100644
index 17829cd..0000000
Binary files a/docs/guide/ops/webconsole/webconsole-detail.png and /dev/null differ