brooklyn-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From henev...@apache.org
Subject [11/13] incubator-brooklyn git commit: wholesale replacement by docs folder from master
Date Fri, 09 Jan 2015 16:09:39 GMT
    wholesale replacement by docs folder from master

    cherrypicking is too conflicted; it now points to wrong version but i'm about to fix that


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

Branch: refs/heads/0.7.0-M2-incubating-docs
Commit: a7a317bf51d181749fa1fe196155c3a18d0b29ed
Parents: f31c828
Author: Alex Heneveld <alex.heneveld@cloudsoftcorp.com>
Authored: Fri Jan 9 16:01:06 2015 +0000
Committer: Alex Heneveld <alex.heneveld@cloudsoftcorp.com>
Committed: Fri Jan 9 16:01:06 2015 +0000

----------------------------------------------------------------------
 docs/README.md                                  |  19 +-
 docs/_build/build.sh                            |  25 +-
 docs/_build/config-exclude-all-but-guide.yml    |   2 +-
 docs/_build/config-exclude-guide.yml            |   2 +-
 docs/_build/make-javadoc.sh                     |  19 +-
 docs/_build/quick-make-few-javadoc.sh           |   2 +-
 docs/_config.yml                                |   6 +-
 .../_extra/big_examples/before-begin.include.md |  56 +++
 .../console-geoscaling-details-w700.png         | Bin 0 -> 167441 bytes
 .../console-geoscaling-details.png              | Bin 0 -> 176651 bytes
 .../global-web-fabric/console-map-w700.png      | Bin 0 -> 201060 bytes
 .../global-web-fabric/console-map.png           | Bin 0 -> 331520 bytes
 .../geopaas-deployed-app-w700.png               | Bin 0 -> 153738 bytes
 .../global-web-fabric/geopaas-deployed-app.png  | Bin 0 -> 114615 bytes
 .../big_examples/global-web-fabric/index.md     | 378 +++++++++++++++++
 docs/_extra/big_examples/index.md               |  18 +
 docs/_extra/big_examples/messaging/index.md     | 181 ++++++++
 .../nosql-cassandra/cassandra.include.md        | 282 +++++++++++++
 .../big_examples/nosql-cassandra/index.md       |   7 +
 docs/_extra/big_examples/simple-web-cluster.md  |   9 +
 docs/_extra/big_examples/toc.json               |  13 +
 docs/_extra/big_examples/webcluster.md          |   9 +
 docs/_extra/big_examples/webcluster/index.md    |   7 +
 .../webcluster/webcluster.include.md            | 124 ++++++
 docs/_extra/highlevel1.md                       |  50 +++
 docs/_extra/list-of-blueprints.md               | 160 +++++++
 docs/_extra/local-artifact-repo.md              |  32 ++
 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/release.md                          | 288 +++++++++++++
 .../example_files/tomcat_multi-location.java    |  15 +
 .../example_files/tomcat_nginx.java             |  17 +
 .../example_files/tomcat_simple.java            |   9 +
 docs/_extra/simple_java_examples/examples.md    | 121 ++++++
 docs/_extra/standards.md                        |  15 +
 docs/_extra/update-docs.md                      |  14 +
 docs/_includes/list-children.html               |   7 +
 docs/_includes/topmenu.html                     |  38 +-
 docs/_layouts/guide-normal.html                 |  44 +-
 docs/_layouts/guide-old.html                    |  65 +++
 docs/_layouts/website-normal.html               |  62 ++-
 docs/_plugins/read.rb                           |   4 +-
 docs/_plugins/site_structure.rb                 | 322 +++++++++++---
 docs/guide/concepts/advanced-concepts.md        |  14 +
 .../concepts/application-parent-membership.md   |  25 ++
 .../concepts/configuration-sensor-effectors.md  |  43 ++
 docs/guide/concepts/dependent-configuration.md  |  34 ++
 docs/guide/concepts/entities.md                 |  23 +
 docs/guide/concepts/execution.md                |  36 ++
 docs/guide/concepts/index.md                    |  21 +
 .../concepts/lifecycle-managementcontext.md     |  44 ++
 docs/guide/concepts/location.md                 |  22 +
 docs/guide/concepts/policies.md                 |  11 +
 docs/guide/dev/build/developers-catalog.xml     |  87 ----
 docs/guide/dev/build/eclipse.include.md         |  15 -
 docs/guide/dev/build/ide.md                     | 123 ------
 docs/guide/dev/build/index.md                   | 184 --------
 docs/guide/dev/build/tests.md                   |  26 --
 docs/guide/dev/build/toc.json                   |   8 -
 docs/guide/dev/code/entity.md                   |  91 ----
 docs/guide/dev/code/index.include.md            |  96 -----
 docs/guide/dev/code/index.md                    |  95 ++++-
 docs/guide/dev/code/policy.md                   |  47 ---
 docs/guide/dev/code/tests.md                    |  26 ++
 docs/guide/dev/code/toc.json                    |  10 -
 docs/guide/dev/env/ide/eclipse.include.md       |  15 +
 docs/guide/dev/env/ide/index.md                 | 123 ++++++
 docs/guide/dev/env/index.md                     |  13 +
 docs/guide/dev/env/maven-build.md               | 184 ++++++++
 docs/guide/dev/how-to-contrib.md                |  38 --
 docs/guide/dev/index.md                         |  31 +-
 docs/guide/dev/links.md                         |  22 -
 .../guide/dev/tips/debugging-remote-brooklyn.md | 140 +++++++
 docs/guide/dev/tips/index.md                    |   1 -
 docs/guide/dev/tips/local-artifact-repo.md      |  32 --
 docs/guide/dev/tips/logging.md                  |   7 +-
 docs/guide/dev/tips/release.md                  | 288 -------------
 docs/guide/dev/tips/standards.md                |  15 -
 docs/guide/dev/tips/toc.json                    |  14 -
 docs/guide/dev/tips/update-docs.md              |  14 -
 docs/guide/dev/toc.json                         |  26 --
 docs/guide/index.md                             |  22 +-
 docs/guide/java/archetype.md                    |  64 +++
 docs/guide/java/common-usage.md                 |  42 ++
 docs/guide/java/defining-and-deploying.md       | 123 ++++++
 docs/guide/java/entities.md                     | 126 ++++++
 docs/guide/java/entity.md                       |  90 ++++
 docs/guide/java/index.md                        |  22 +
 docs/guide/java/policies.md                     | 123 ++++++
 docs/guide/java/policy.md                       |  46 ++
 docs/guide/java/service-state.md                |  73 ++++
 ...topology-dependencies-management-policies.md |  69 +++
 docs/guide/java/wt-deployed-application-700.png | Bin 0 -> 176494 bytes
 docs/guide/java/wt-deployed-application.png     | Bin 0 -> 127347 bytes
 docs/guide/java/wt-starting-700.png             | Bin 0 -> 303892 bytes
 docs/guide/java/wt-starting.png                 | Bin 0 -> 332710 bytes
 docs/guide/java/wt-tree-jboss-sensors-700.png   | Bin 0 -> 268853 bytes
 docs/guide/java/wt-tree-jboss-sensors.png       | Bin 0 -> 169929 bytes
 docs/guide/license/index.md                     |  18 -
 docs/guide/license/license.md                   | 194 ---------
 docs/guide/license/toc.json                     |   4 -
 docs/guide/meta/brooklyn-gpg-public-key.asc     |  21 -
 docs/guide/meta/contact.include.md              |   9 -
 docs/guide/meta/contact.md                      |   7 -
 docs/guide/meta/irc.md                          |  31 --
 docs/guide/meta/toc.json                        |   8 -
 docs/guide/meta/versions.md                     | 113 -----
 docs/guide/misc/download.md                     | 170 ++++++++
 docs/guide/misc/index.md                        |  20 +
 docs/guide/misc/javadoc/index.md                |  11 +
 docs/guide/misc/known-issues.md                 |  27 ++
 docs/guide/misc/release-notes.md                |  52 +++
 docs/guide/ops/index.md                         |  11 +
 docs/guide/ops/locations/configuring.md         | 105 +++++
 docs/guide/ops/locations/index.md               | 101 +++++
 docs/guide/ops/persistence/index.md             | 274 ++++++++++++
 docs/guide/ops/webconsole/index.md              | 399 ++++++++++++++++++
 .../webconsole/webconsole-dashboard-w400.png    | Bin 0 -> 137463 bytes
 .../ops/webconsole/webconsole-dashboard.png     | Bin 0 -> 214723 bytes
 .../ops/webconsole/webconsole-detail-w400.png   | Bin 0 -> 111993 bytes
 docs/guide/ops/webconsole/webconsole-detail.png | Bin 0 -> 165359 bytes
 docs/guide/start/_my-web-cluster.yaml           |  19 +
 docs/guide/start/blueprints.md                  |  57 +++
 docs/guide/start/brooklyn.properties            | 324 ++++++++++++++
 docs/guide/start/catalog.xml                    |  22 +
 docs/guide/start/config.md                      |  50 +++
 docs/guide/start/docs-summary.include.md        |   7 -
 docs/guide/start/docs-summary.md                |   9 -
 docs/guide/start/download.md                    | 171 --------
 ...cation-catalog-web-cluster-with-db-large.png | Bin 0 -> 131618 bytes
 ...talog-web-cluster-with-db-location-large.png | Bin 0 -> 152721 bytes
 ...ion-catalog-web-cluster-with-db-location.png | Bin 0 -> 86425 bytes
 ...-application-catalog-web-cluster-with-db.png | Bin 0 -> 76065 bytes
 .../start/images/add-application-modal-yaml.png | Bin 0 -> 68401 bytes
 .../images/jboss7-cluster-policies-large.png    | Bin 0 -> 157883 bytes
 .../start/images/jboss7-cluster-policies.png    | Bin 0 -> 94056 bytes
 .../start/images/my-db-activities-large.png     | Bin 0 -> 208313 bytes
 docs/guide/start/images/my-db-activities.png    | Bin 0 -> 130262 bytes
 .../start/images/my-web-cluster-starting.png    | Bin 0 -> 32948 bytes
 .../my-web-cluster-stop-confirm-large.png       | Bin 0 -> 148155 bytes
 .../images/my-web-cluster-stop-confirm.png      | Bin 0 -> 79280 bytes
 .../guide/start/images/my-web-summary-large.png | Bin 0 -> 178785 bytes
 docs/guide/start/images/my-web-summary.png      | Bin 0 -> 80583 bytes
 docs/guide/start/images/my-web.png              | Bin 0 -> 83081 bytes
 docs/guide/start/index.include.md               |  50 ---
 docs/guide/start/index.md                       |  13 +-
 docs/guide/start/known-issues.md                |  28 --
 docs/guide/start/managing.md                    |  40 ++
 docs/guide/start/policies.md                    |  36 ++
 docs/guide/start/release-notes.md               |  51 ---
 docs/guide/start/running.md                     | 104 +++++
 docs/guide/start/toc.json                       |  10 -
 docs/guide/start/video.md                       |   7 -
 docs/guide/start/walkthrough/index.md           | 240 -----------
 .../walkthrough/wt-deployed-application-700.png | Bin 176494 -> 0 bytes
 .../walkthrough/wt-deployed-application.png     | Bin 127347 -> 0 bytes
 .../guide/start/walkthrough/wt-starting-700.png | Bin 303892 -> 0 bytes
 docs/guide/start/walkthrough/wt-starting.png    | Bin 332710 -> 0 bytes
 .../walkthrough/wt-tree-jboss-sensors-700.png   | Bin 268853 -> 0 bytes
 .../start/walkthrough/wt-tree-jboss-sensors.png | Bin 169929 -> 0 bytes
 docs/guide/toc-menu.json                        |  20 -
 docs/guide/toc.json                             |  21 -
 docs/guide/use/api/index.md                     |  11 -
 docs/guide/use/contact.md                       |   7 -
 docs/guide/use/examples/before-begin.include.md |  56 ---
 .../console-geoscaling-details-w700.png         | Bin 167441 -> 0 bytes
 .../console-geoscaling-details.png              | Bin 176651 -> 0 bytes
 .../global-web-fabric/console-map-w700.png      | Bin 201060 -> 0 bytes
 .../examples/global-web-fabric/console-map.png  | Bin 331520 -> 0 bytes
 .../geopaas-deployed-app-w700.png               | Bin 153738 -> 0 bytes
 .../global-web-fabric/geopaas-deployed-app.png  | Bin 114615 -> 0 bytes
 .../use/examples/global-web-fabric/index.md     | 378 -----------------
 docs/guide/use/examples/index.md                |  18 -
 docs/guide/use/examples/messaging/index.md      | 181 --------
 .../nosql-cassandra/cassandra.include.md        | 282 -------------
 .../guide/use/examples/nosql-cassandra/index.md |   7 -
 docs/guide/use/examples/simple-web-cluster.md   |   9 -
 docs/guide/use/examples/toc.json                |  13 -
 docs/guide/use/examples/webcluster.md           |   9 -
 docs/guide/use/examples/webcluster/index.md     |   7 -
 .../examples/webcluster/webcluster.include.md   | 124 ------
 .../use/guide/defining-applications/Chef.png    | Bin 36222 -> 0 bytes
 .../defining-applications/advanced-concepts.md  | 137 ------
 .../guide/defining-applications/archetype.md    |  64 ---
 .../defining-applications/basic-concepts.md     |  95 -----
 ...ooklyn-flow-websequencediagrams.com-w400.png | Bin 58518 -> 0 bytes
 .../brooklyn-flow-websequencediagrams.com.png   | Bin 106928 -> 0 bytes
 .../defining-applications/chef-blueprints.md    | 277 ------------
 .../guide/defining-applications/common-usage.md | 145 -------
 .../defining-applications/creating-yaml.md      | 417 -------------------
 .../defining-applications/deploying-yaml.md     |  37 --
 .../example_files/tomcat_multi-location.java    |  15 -
 .../example_files/tomcat_nginx.java             |  17 -
 .../example_files/tomcat_simple.java            |   9 -
 .../appserver-clustered-w-db-concise.yaml       |  15 -
 .../example_yaml/appserver-clustered-w-db.yaml  |  18 -
 .../appserver-configured-in-config.yaml         |   6 -
 .../example_yaml/appserver-configured.yaml      |   5 -
 .../appserver-w-db-other-flavor.yaml            |  17 -
 .../example_yaml/appserver-w-db.yaml            |  15 -
 .../example_yaml/appserver-w-policy.yaml        |  26 --
 .../example_yaml/cluster-vm.yaml                |  12 -
 .../example_yaml/mysql-chef-1.yaml              |  24 --
 .../example_yaml/mysql-chef-2.yaml              |  28 --
 .../simple-appserver-with-location-byon.yaml    |  12 -
 .../simple-appserver-with-location.yaml         |   8 -
 .../example_yaml/simple-appserver.yaml          |   4 -
 .../example_yaml/simple-vm.yaml                 |   8 -
 .../example_yaml/vanilla-bash-netcat-file.yaml  |   6 -
 .../vanilla-bash-netcat-restarter.yaml          |  20 -
 .../vanilla-bash-netcat-w-client.yaml           |  72 ----
 .../example_yaml/vanilla-bash-netcat.yaml       |  18 -
 .../use/guide/defining-applications/examples.md | 121 ------
 .../defining-applications/service-state.md      |  73 ----
 .../use/guide/defining-applications/toc.json    |  19 -
 .../web-console-yaml-700.png                    | Bin 138229 -> 0 bytes
 .../defining-applications/web-console-yaml.png  | Bin 661136 -> 0 bytes
 .../defining-applications/yaml-reference.md     | 183 --------
 docs/guide/use/guide/entities/index.md          | 133 ------
 docs/guide/use/guide/entities/toc.json          |  12 -
 docs/guide/use/guide/extras/index.md            | 160 -------
 docs/guide/use/guide/extras/toc.json            |  11 -
 docs/guide/use/guide/guide_toc.json             |  25 --
 docs/guide/use/guide/index.md                   |  33 --
 docs/guide/use/guide/locations/index.md         | 104 -----
 docs/guide/use/guide/locations/toc.json         |   1 -
 docs/guide/use/guide/management/index.md        | 383 -----------------
 docs/guide/use/guide/management/toc.json        |  18 -
 .../management/webconsole-dashboard-w400.png    | Bin 137463 -> 0 bytes
 .../guide/management/webconsole-dashboard.png   | Bin 214723 -> 0 bytes
 .../guide/management/webconsole-detail-w400.png | Bin 111993 -> 0 bytes
 .../use/guide/management/webconsole-detail.png  | Bin 165359 -> 0 bytes
 docs/guide/use/guide/persistence/index.md       | 260 ------------
 docs/guide/use/guide/persistence/toc.json       |  16 -
 docs/guide/use/guide/policies/index.md          | 129 ------
 docs/guide/use/guide/policies/toc.json          |   8 -
 .../use/guide/quickstart/brooklyn.properties    | 324 --------------
 docs/guide/use/guide/quickstart/catalog.xml     |  23 -
 ...cation-catalog-web-cluster-with-db-large.png | Bin 131618 -> 0 bytes
 ...talog-web-cluster-with-db-location-large.png | Bin 152721 -> 0 bytes
 ...ion-catalog-web-cluster-with-db-location.png | Bin 86425 -> 0 bytes
 ...-application-catalog-web-cluster-with-db.png | Bin 76065 -> 0 bytes
 .../images/add-application-modal-yaml.png       | Bin 68401 -> 0 bytes
 .../images/jboss7-cluster-policies-large.png    | Bin 157883 -> 0 bytes
 .../images/jboss7-cluster-policies.png          | Bin 94056 -> 0 bytes
 .../images/my-db-activities-large.png           | Bin 208313 -> 0 bytes
 .../quickstart/images/my-db-activities.png      | Bin 130262 -> 0 bytes
 .../images/my-web-cluster-starting.png          | Bin 32948 -> 0 bytes
 .../my-web-cluster-stop-confirm-large.png       | Bin 148155 -> 0 bytes
 .../images/my-web-cluster-stop-confirm.png      | Bin 79280 -> 0 bytes
 .../quickstart/images/my-web-summary-large.png  | Bin 178785 -> 0 bytes
 .../guide/quickstart/images/my-web-summary.png  | Bin 80583 -> 0 bytes
 .../use/guide/quickstart/images/my-web.png      | Bin 83081 -> 0 bytes
 docs/guide/use/guide/quickstart/index.md        | 221 ----------
 .../use/guide/quickstart/my-web-cluster.yaml    |  19 -
 .../guide/quickstart/policies-and-catalogs.md   |  66 ---
 docs/guide/use/guide/quickstart/toc.json        |   4 -
 docs/guide/use/guide/toc.json                   |  25 --
 docs/guide/use/index.md                         |   9 -
 docs/guide/use/toc.json                         |  12 -
 ...ooklyn-flow-websequencediagrams.com-w400.png | Bin 0 -> 58518 bytes
 .../brooklyn-flow-websequencediagrams.com.png   | Bin 0 -> 106928 bytes
 docs/guide/yaml/catalog-maintenance.md          | 115 +++++
 docs/guide/yaml/chef/about-chef.md              |  50 +++
 .../yaml/chef/advanced-chef-integration.md      |  48 +++
 docs/guide/yaml/chef/chef-call-flow.png         | Bin 0 -> 36222 bytes
 docs/guide/yaml/chef/creating-blueprints.md     | 103 +++++
 .../yaml/chef/example_yaml/mysql-chef-1.yaml    |  24 ++
 .../yaml/chef/example_yaml/mysql-chef-2.yaml    |  28 ++
 docs/guide/yaml/chef/index.md                   |  18 +
 docs/guide/yaml/chef/writing-chef.md            |  79 ++++
 docs/guide/yaml/clusters-and-policies.md        |  42 ++
 docs/guide/yaml/clusters.md                     |  34 ++
 docs/guide/yaml/configuring-vms.md              |  31 ++
 docs/guide/yaml/creating-yaml.md                |  75 ++++
 docs/guide/yaml/custom-entities.md              | 107 +++++
 .../appserver-clustered-w-db-concise.yaml       |  15 +
 .../example_yaml/appserver-clustered-w-db.yaml  |  18 +
 .../appserver-configured-in-config.yaml         |   6 +
 .../yaml/example_yaml/appserver-configured.yaml |   5 +
 .../appserver-w-db-other-flavor.yaml            |  17 +
 .../guide/yaml/example_yaml/appserver-w-db.yaml |  15 +
 .../yaml/example_yaml/appserver-w-policy.yaml   |  26 ++
 docs/guide/yaml/example_yaml/cluster-vm.yaml    |  12 +
 .../simple-appserver-with-location-byon.yaml    |  12 +
 .../simple-appserver-with-location.yaml         |   8 +
 .../yaml/example_yaml/simple-appserver.yaml     |   4 +
 docs/guide/yaml/example_yaml/simple-vm.yaml     |   8 +
 .../example_yaml/vanilla-bash-netcat-file.yaml  |   6 +
 .../vanilla-bash-netcat-restarter.yaml          |  20 +
 .../vanilla-bash-netcat-w-client.yaml           |  72 ++++
 .../yaml/example_yaml/vanilla-bash-netcat.yaml  |  18 +
 docs/guide/yaml/index.md                        |  18 +
 docs/guide/yaml/multiple-services.md            |  64 +++
 docs/guide/yaml/mutlitple-services.md           | 100 +++++
 docs/guide/yaml/mysql-in-catalog-w700.png       | Bin 0 -> 92767 bytes
 docs/guide/yaml/mysql-in-catalog.png            | Bin 0 -> 168831 bytes
 docs/guide/yaml/setting-locations.md            |  44 ++
 docs/guide/yaml/web-console-yaml-700.png        | Bin 0 -> 138229 bytes
 docs/guide/yaml/web-console-yaml.png            | Bin 0 -> 661136 bytes
 docs/guide/yaml/yaml-reference.md               | 181 ++++++++
 docs/style/css/base.scss                        |  79 +++-
 .../website/community/how-to-contribute-docs.md |   4 +-
 docs/website/community/how-to-contribute.md     |   7 +-
 docs/website/community/links.md                 |  22 +
 docs/website/documentation.md                   |  19 -
 docs/website/documentation/faq.md               |  22 +
 docs/website/documentation/glossary.md          |  92 ++++
 docs/website/documentation/index.md             |  31 ++
 docs/website/documentation/other-docs.md        |  11 +
 docs/website/documentation/todo.md              |   7 +
 docs/website/download.md                        |  40 --
 docs/website/download/index.md                  |  40 ++
 docs/website/glossary.md                        |  92 ----
 docs/website/index.md                           |  31 +-
 docs/website/learnmore/index.md                 |   5 +-
 docs/website/learnmore/theory.md                |   1 -
 docs/website/meta/license.md                    | 205 +++++++++
 docs/website/meta/sitemap.md                    |  19 +
 docs/website/meta/versions.md                   |  71 ++++
 docs/website/quickstart/_my-web-cluster.yaml    |  19 -
 docs/website/quickstart/catalog.xml             |  22 -
 ...cation-catalog-web-cluster-with-db-large.png | Bin 131618 -> 0 bytes
 ...talog-web-cluster-with-db-location-large.png | Bin 152721 -> 0 bytes
 ...ion-catalog-web-cluster-with-db-location.png | Bin 86425 -> 0 bytes
 ...-application-catalog-web-cluster-with-db.png | Bin 76065 -> 0 bytes
 .../images/add-application-modal-yaml.png       | Bin 68401 -> 0 bytes
 .../images/jboss7-cluster-policies-large.png    | Bin 157883 -> 0 bytes
 .../images/jboss7-cluster-policies.png          | Bin 94056 -> 0 bytes
 .../images/my-db-activities-large.png           | Bin 208313 -> 0 bytes
 .../quickstart/images/my-db-activities.png      | Bin 130262 -> 0 bytes
 .../images/my-web-cluster-starting.png          | Bin 32948 -> 0 bytes
 .../my-web-cluster-stop-confirm-large.png       | Bin 148155 -> 0 bytes
 .../images/my-web-cluster-stop-confirm.png      | Bin 79280 -> 0 bytes
 .../quickstart/images/my-web-summary-large.png  | Bin 178785 -> 0 bytes
 .../quickstart/images/my-web-summary.png        | Bin 80583 -> 0 bytes
 docs/website/quickstart/images/my-web.png       | Bin 83081 -> 0 bytes
 docs/website/quickstart/index.md                | 217 ----------
 .../website/quickstart/policies-and-catalogs.md |  67 ---
 343 files changed, 8021 insertions(+), 7852 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/README.md
----------------------------------------------------------------------
diff --git a/docs/README.md b/docs/README.md
index 4fb6b5d..4d7c6d5 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -160,6 +160,22 @@ but with the correct file structure, is:
     _build/build.sh test-both --skip-javadoc --serve
 
 
+Preparing for a Release
+-----------------------
+
+When doing a release and changing versions:
+
+* Before branching:
+  * Change the `brooklyn-stable-version` variable in `_config.yml`
+  * Update `website/meta/versions.md` with a bit of info on this release
+*  In the branch, with `change-version.sh` run (e.g. from `N.SNAPSHOT` to `N`)
+  * Ensure the `guide/start/release-notes.md` file is current
+  * Build and publish `website-root`, `guide-latest`, and `guide-version`
+* In master, with `change-version.sh` run (e.g. to `N+1-SNAPSHOT`)
+  * Clear old stuff in the `guide/start/release-notes.md` file
+  * Optionally build and public `guide-version`
+ 
+
 Publishing the Website and Guide
 --------------------------------
 
@@ -266,5 +282,4 @@ Archived versions are kept under `/v/` in the website.  New versions should be a
 the appropriate directory (`guide-version` above will do this).  These versions take their
 own copy of the `style` files so that changes there will not affect future versions.
 
-A list of available versions also needs to be updated.  This is referenced from the `website`.
-<!-- TODO: where -->
+A list of available versions is in `website/meta/versions.md`.

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/_build/build.sh
----------------------------------------------------------------------
diff --git a/docs/_build/build.sh b/docs/_build/build.sh
index a56f4c3..69b2bfa 100755
--- a/docs/_build/build.sh
+++ b/docs/_build/build.sh
@@ -1,8 +1,11 @@
-#!/bin/bash
+#!/usr/bin/env bash
 #
 # this generates the site in _site
 # override --url /myMountPoint  (as an argument to this script) if you don't like the default set in /_config.yml
 
+export JAVADOC_SUBPATH=misc/javadoc
+export JAVADOC_BUILD_TARGET_SUBPATH=javadoc
+
 if [ ! -x _build/build.sh ] ; then
   echo ERROR: script must be run in root of docs dir
   exit 1
@@ -54,7 +57,7 @@ function parse_mode() {
     DIRS_TO_MOVE_TARGET[1]=v/latest/style
     INSTALL_RSYNC_OPTIONS=""
     INSTALL_RSYNC_SUBDIR=${DIRS_TO_MOVE_TARGET[0]}/
-    JAVADOC_TARGET=${DIRS_TO_MOVE_TARGET[0]}/use/api/
+    JAVADOC_TARGET=${DIRS_TO_MOVE_TARGET[0]}/$JAVADOC_SUBPATH/
     SUMMARY="user guide files in /${DIRS_TO_MOVE_TARGET[0]}"
     ;;
   guide-version)
@@ -67,14 +70,14 @@ function parse_mode() {
     DIRS_TO_MOVE_TARGET[1]=${DIRS_TO_MOVE_TARGET[0]}/style
     INSTALL_RSYNC_OPTIONS=""
     INSTALL_RSYNC_SUBDIR=${DIRS_TO_MOVE_TARGET[0]}/
-    JAVADOC_TARGET=${DIRS_TO_MOVE_TARGET[0]}/use/api/
+    JAVADOC_TARGET=${DIRS_TO_MOVE_TARGET[0]}/$JAVADOC_SUBPATH/
     SUMMARY="user guide files in /${DIRS_TO_MOVE_TARGET[0]}"
     ;;
   test-guide-root)
     JEKYLL_CONFIG=_config.yml,_build/config-production.yml,_build/config-exclude-all-but-guide.yml,_build/config-guide-root.yml
     DIRS_TO_MOVE[0]=guide
     DIRS_TO_MOVE_TARGET[0]=""
-    JAVADOC_TARGET=use/api/
+    JAVADOC_TARGET=$JAVADOC_SUBPATH/
     SUMMARY="user guide files in the root"
     ;;
   test-both)
@@ -83,7 +86,7 @@ function parse_mode() {
     DIRS_TO_MOVE_TARGET[0]=v/latest
     DIRS_TO_MOVE[1]=website
     DIRS_TO_MOVE_TARGET[1]=""
-    JAVADOC_TARGET=${DIRS_TO_MOVE_TARGET[0]}/use/api/
+    JAVADOC_TARGET=${DIRS_TO_MOVE_TARGET[0]}/$JAVADOC_SUBPATH/
     SUMMARY="all files, website in root and guide in /${DIRS_TO_MOVE_TARGET[0]}"
     ;;
   test-both-sub)
@@ -94,7 +97,7 @@ function parse_mode() {
     DIRS_TO_MOVE_TARGET[1]=brooklyn
     DIRS_TO_MOVE[2]=style
     DIRS_TO_MOVE_TARGET[2]=brooklyn/style
-    JAVADOC_TARGET=${DIRS_TO_MOVE_TARGET[0]}/use/api/
+    JAVADOC_TARGET=${DIRS_TO_MOVE_TARGET[0]}/$JAVADOC_SUBPATH/
     SUMMARY="all files in /brooklyn"
     ;;
   original)
@@ -160,7 +163,7 @@ function make_javadoc() {
     return
   fi
   pushd _build > /dev/null
-  rm -rf target/apidocs
+  rm -rf target/$JAVADOC_BUILD_TARGET_SUBPATH
   if [ "$QUICK_JAVADOC" == "true" ]; then
     ./quick-make-few-javadoc.sh || { echo ERROR: failed javadoc build ; exit 1 ; }
   else
@@ -172,7 +175,7 @@ function make_javadoc() {
       echo "ERROR: javadoc target directory _site/$JAVADOC_TARGET gone; is there a jekyll already watching?"
       return 1
     fi
-    mv _build/target/apidocs/* _site/$JAVADOC_TARGET
+    mv _build/target/$JAVADOC_BUILD_TARGET_SUBPATH/* _site/$JAVADOC_TARGET
   fi
 }
 
@@ -199,14 +202,14 @@ function make_install() {
   
   if [ ! -z ${JAVADOC_TARGET+SET} ]; then
     if [ ! -z ${SKIP_JAVADOC+SET} ]; then
-      echo 'grep "Generated by javadoc" '$SITE_DIR/$INSTALL_RSYNC_SUBDIR/use/api/index.html
-      export JAVADOC_LAST_DATE=`grep "Generated by javadoc" $SITE_DIR/$INSTALL_RSYNC_SUBDIR/use/api/index.html`
+      echo 'grep "Generated by javadoc" '$SITE_DIR/$INSTALL_RSYNC_SUBDIR/$JAVADOC_SUBPATH/index.html
+      export JAVADOC_LAST_DATE=`grep "Generated by javadoc" $SITE_DIR/$INSTALL_RSYNC_SUBDIR/$JAVADOC_SUBPATH/index.html`
       if [ -z "$JAVADOC_LAST_DATE" ]; then
         echo "ERROR: installing with skipped javadoc, but no previous javadoc exists"
         return 1
       fi
       echo "Installing with skipped javadoc, reusing old: $JAVADOC_LAST_DATE"
-      RSYNC_COMMAND_BASE="$RSYNC_COMMAND_BASE --exclude use/api"
+      RSYNC_COMMAND_BASE="$RSYNC_COMMAND_BASE --exclude $JAVADOC_SUBPATH"
     fi
   fi
   

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/_build/config-exclude-all-but-guide.yml
----------------------------------------------------------------------
diff --git a/docs/_build/config-exclude-all-but-guide.yml b/docs/_build/config-exclude-all-but-guide.yml
index 8acf536..08e4d78 100644
--- a/docs/_build/config-exclude-all-but-guide.yml
+++ b/docs/_build/config-exclude-all-but-guide.yml
@@ -1 +1 @@
-exclude: ['/Gemfile*','/README.md','/index.md','/website']
+exclude: ['/Gemfile*','/README.md','/index.md','/website/']

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/_build/config-exclude-guide.yml
----------------------------------------------------------------------
diff --git a/docs/_build/config-exclude-guide.yml b/docs/_build/config-exclude-guide.yml
index 7f61a6d..984cd5d 100644
--- a/docs/_build/config-exclude-guide.yml
+++ b/docs/_build/config-exclude-guide.yml
@@ -1 +1 @@
-exclude: ['/Gemfile*','/README.md','/index.md','/guide']
+exclude: ['/Gemfile*','/README.md','/index.md','/guide/']

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/_build/make-javadoc.sh
----------------------------------------------------------------------
diff --git a/docs/_build/make-javadoc.sh b/docs/_build/make-javadoc.sh
index d7f862c..ccc1772 100755
--- a/docs/_build/make-javadoc.sh
+++ b/docs/_build/make-javadoc.sh
@@ -1,4 +1,7 @@
-#!/bin/bash
+#!/usr/bin/env bash
+
+JAVADOC_TARGET1_SUBPATH=javadoc
+JAVADOC_TARGET2_SUBPATH=misc/javadoc
 
 if [ ! -x make-javadoc.sh ]; then
   echo This command must be run from the _build directory, not its parent.
@@ -13,17 +16,19 @@ else
   export SOURCE_PATHS=$BROOKLYN_JAVADOC_SOURCE_PATHS
 fi
 
-rm -rf target/apidocs/
+rm -rf target/$JAVADOC_TARGET1_SUBPATH/
 
 export DATESTAMP=`date "+%Y-%m-%d"`
+# BROOKLYN_VERSION_BELOW
+export BROOKLYN_JAVADOC_CLASSPATH=../../usage/all/target/brooklyn-all-0.7.0-SNAPSHOT-with-dependencies.jar
 echo "building javadoc at $DATESTAMP from:
 $SOURCE_PATHS"
 
 javadoc -sourcepath $SOURCE_PATHS \
   -public \
-  -d target/apidocs/ \
+  -d target/$JAVADOC_TARGET1_SUBPATH/ \
   -subpackages "org.apache.brooklyn:io.brooklyn:brooklyn" \
-  -classpath ../../usage/all/target/brooklyn-all-0.7.0-SNAPSHOT-with-dependencies.jar \
+  -classpath "$BROOKLYN_JAVADOC_CLASSPATH" \
   -doctitle "Apache Brooklyn" \
   -windowtitle "Apache Brooklyn" \
   -header "Apache Brooklyn" \
@@ -33,12 +38,12 @@ javadoc -sourcepath $SOURCE_PATHS \
 if ((${PIPESTATUS[0]})) ; then echo ; echo ; echo "ERROR: javadoc process exited non-zero" ; exit 1 ; fi
 echo ; echo
 
-if [ ! -f target/apidocs/brooklyn/entity/Entity.html ]; then echo "ERROR: missing expected content. Are the paths right?" ; exit 1 ; fi
+if [ ! -f target/$JAVADOC_TARGET1_SUBPATH/brooklyn/entity/Entity.html ]; then echo "ERROR: missing expected content. Are the paths right?" ; exit 1 ; fi
 
 if [ ! -z "`grep warnings target/javadoc.log`" ] ; then echo "WARNINGs occurred during javadoc build. See target/javadoc.log for more information." ; fi
 
-if [ -d ../_site/guide/use/api/ ] ; then
+if [ -d ../_site/guide/$$JAVADOC_TARGET2_SUBPATH/ ] ; then
   echo "API directory detected in test structure _site, copying docs there so they can be served with serve-site.sh"
-  cp -r target/apidocs/* ../_site/guide/use/api/
+  cp -r target/$JAVADOC_TARGET1_SUBPATH/* ../_site/guide/$JAVADOC_TARGET2_SUBPATH/
 fi
 

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/_build/quick-make-few-javadoc.sh
----------------------------------------------------------------------
diff --git a/docs/_build/quick-make-few-javadoc.sh b/docs/_build/quick-make-few-javadoc.sh
index db228df..e78d79b 100755
--- a/docs/_build/quick-make-few-javadoc.sh
+++ b/docs/_build/quick-make-few-javadoc.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
 
 export BROOKLYN_JAVADOC_SOURCE_PATHS="../../api/src/main/java"
 echo LIMITING build to $BROOKLYN_JAVADOC_SOURCE_PATHS for speed

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/_config.yml
----------------------------------------------------------------------
diff --git a/docs/_config.yml b/docs/_config.yml
index ac3c342..8e36167 100644
--- a/docs/_config.yml
+++ b/docs/_config.yml
@@ -36,10 +36,14 @@ dependency_urls:
   bootstrap.js: https://netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js
   jquery.js: https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js
 
+root_menu_page: /website/index.md
+
 # These files should not be included in the final build (in addition to _* contents)
 exclude: ['/Gemfile*','/README.md']
 
-brooklyn-version: 0.7.0-M2-incubating # BROOKLYN_VERSION
+brooklyn-stable-version: 0.7.0-M2
+
+brooklyn-version: 0.7.0-SNAPSHOT # BROOKLYN_VERSION
 brooklyn-snapshot-git-branch: master   # if line above is SNAPSHOT this should point to corresponding git branch (e.g. master, 0.4)
 
 # This is auto-detected, but you can override it if needed.

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/_extra/big_examples/before-begin.include.md
----------------------------------------------------------------------
diff --git a/docs/_extra/big_examples/before-begin.include.md b/docs/_extra/big_examples/before-begin.include.md
new file mode 100644
index 0000000..e05f9f1
--- /dev/null
+++ b/docs/_extra/big_examples/before-begin.include.md
@@ -0,0 +1,56 @@
+{% include fields.md %}
+
+## Before You Begin
+
+To use the examples, you'll need ``curl``, ``git``, ``java`` (1.6+), and ``maven`` (v3) installed.
+
+### Installing Brooklyn
+
+(If you followed the [Getting Started](/use/guide/quickstart/index.html) instructions, you can skip to Installing the Examples.)
+
+{% if SNAPSHOT %}
+
+First, grab a copy of the Brooklyn snapshot distribution you wish to use from 
+[the Sonatype snapshot repo]({{ sonatype_repo_groupid_url }}brooklyn-dist/)
+(or build it yourself following instructions [here]({{ site.path.guide }}/dev/build/)),
+unpack it to your favourite location (e.g. `$(pwd)`), 
+and export `BROOKLYN_HOME`:
+
+{% highlight bash %}
+% curl -L -o brooklyn-dist-{{ site.brooklyn-version }}-dist.tar.gz "{{ this_dist_url_tgz }}"
+% tar xvzf brooklyn-dist-{{ site.brooklyn-version }}-dist.tar.gz
+% export BROOKLYN_HOME=$(pwd)/brooklyn-{{ site.brooklyn-version }}/
+{% endhighlight %}
+
+{% else %}
+
+Grab a copy of the Brooklyn distribution and set up `BROOKLYN_HOME`:
+
+{% highlight bash %}
+% curl -LO "{{ this_dist_url_tgz }}"
+% tar xvzf brooklyn-dist-{{ site.brooklyn-version }}-dist.tar.gz
+% export BROOKLYN_HOME=$(pwd)/brooklyn-{{ site.brooklyn-version }}/
+{% endhighlight %}
+
+{% endif %}
+
+### Installing the Examples 
+
+Grab a copy of the brooklyn-examples source code and build it with Maven:
+
+{% highlight bash %}
+% git clone https://github.com/apache/incubator-brooklyn.git
+% cd incubator-brooklyn/examples
+% mvn clean install
+{% endhighlight %}
+
+{% if SNAPSHOT %}
+Please note, these instructions are for a SNAPSHOT release of Brooklyn,
+so proceed with caution. 
+For the latest stable version, go [here](/meta/versions.html). 
+{% endif %}
+
+For more information on ways to download Brooklyn please
+see the [download page]({{site.path.guide}}/start/download.html).
+For more information on the Brooklyn CLI and launching apps,
+please visit [this section of the user guide]({{site.path.guide}}/use/guide/management/index.html#cli).

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/_extra/big_examples/global-web-fabric/console-geoscaling-details-w700.png
----------------------------------------------------------------------
diff --git a/docs/_extra/big_examples/global-web-fabric/console-geoscaling-details-w700.png b/docs/_extra/big_examples/global-web-fabric/console-geoscaling-details-w700.png
new file mode 100644
index 0000000..c34217f
Binary files /dev/null and b/docs/_extra/big_examples/global-web-fabric/console-geoscaling-details-w700.png differ

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/_extra/big_examples/global-web-fabric/console-geoscaling-details.png
----------------------------------------------------------------------
diff --git a/docs/_extra/big_examples/global-web-fabric/console-geoscaling-details.png b/docs/_extra/big_examples/global-web-fabric/console-geoscaling-details.png
new file mode 100644
index 0000000..f47226a
Binary files /dev/null and b/docs/_extra/big_examples/global-web-fabric/console-geoscaling-details.png differ

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/_extra/big_examples/global-web-fabric/console-map-w700.png
----------------------------------------------------------------------
diff --git a/docs/_extra/big_examples/global-web-fabric/console-map-w700.png b/docs/_extra/big_examples/global-web-fabric/console-map-w700.png
new file mode 100644
index 0000000..af353a9
Binary files /dev/null and b/docs/_extra/big_examples/global-web-fabric/console-map-w700.png differ

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/_extra/big_examples/global-web-fabric/console-map.png
----------------------------------------------------------------------
diff --git a/docs/_extra/big_examples/global-web-fabric/console-map.png b/docs/_extra/big_examples/global-web-fabric/console-map.png
new file mode 100644
index 0000000..cd0f811
Binary files /dev/null and b/docs/_extra/big_examples/global-web-fabric/console-map.png differ

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/_extra/big_examples/global-web-fabric/geopaas-deployed-app-w700.png
----------------------------------------------------------------------
diff --git a/docs/_extra/big_examples/global-web-fabric/geopaas-deployed-app-w700.png b/docs/_extra/big_examples/global-web-fabric/geopaas-deployed-app-w700.png
new file mode 100644
index 0000000..33c811d
Binary files /dev/null and b/docs/_extra/big_examples/global-web-fabric/geopaas-deployed-app-w700.png differ

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/_extra/big_examples/global-web-fabric/geopaas-deployed-app.png
----------------------------------------------------------------------
diff --git a/docs/_extra/big_examples/global-web-fabric/geopaas-deployed-app.png b/docs/_extra/big_examples/global-web-fabric/geopaas-deployed-app.png
new file mode 100644
index 0000000..4e743e3
Binary files /dev/null and b/docs/_extra/big_examples/global-web-fabric/geopaas-deployed-app.png differ

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/_extra/big_examples/global-web-fabric/index.md
----------------------------------------------------------------------
diff --git a/docs/_extra/big_examples/global-web-fabric/index.md b/docs/_extra/big_examples/global-web-fabric/index.md
new file mode 100644
index 0000000..b59eae0
--- /dev/null
+++ b/docs/_extra/big_examples/global-web-fabric/index.md
@@ -0,0 +1,378 @@
+---
+layout: guide-normal
+title: Global Web Fabric
+toc: /guide/toc.json
+---
+
+This example shows how to build a multi-site web application *fabric*
+with DNS configured on the front-end to combine the sites,
+routing users to the location closest to them.
+
+It can combine with the [Simple Web Cluster](../webcluster) example
+or the [Portable Cloud Foundry](https://github.com/cloudsoft/brooklyn-cloudfoundry) example,
+but does not assume knowledge of either of these.
+
+{% readj ../before-begin.include.md %}
+
+Now, go to this particular example's directory:
+
+{% highlight bash %}
+% cd global-web-fabric
+{% endhighlight %}
+
+The CLI needs to know where to find your compiled examples. You can set this up by exporting
+the ``BROOKLYN_CLASSPATH`` environment variable in the following way:
+
+{% highlight bash %}
+% export BROOKLYN_CLASSPATH=$(pwd)/target/classes
+{% endhighlight %}
+
+The project ``global-web-fabric`` contains the code used
+in this example under ``src/main/java``.
+
+
+### Setting Up Geographic DNS
+
+This example uses [geoscaling.com](http://www.geoscaling.com) to provide **free** geographic-dependent DNS services.
+This will forward a domain name of your choice to various IPs depending on a script,
+e.g. computing the nearest IP based on latitude and longitude of the requester and the targets.
+Brooklyn will automatically generate and update this script, but you do need to 
+create and configure a Geoscaling account:
+
+ 1. Create the free account [here](https://www.geoscaling.com/dns2/?module=register).
+ 1. Click the link in the email you receive.
+ 1. Enter the domain name you wish to use into geoscaling (see below).
+
+The simplest domain name to choose is something unique under `geopaas.org`, e.g. `yourname.geopaas.org`,
+which we have already configured for Geoscaling to manage.
+If you are using your own domain name, 
+set its nameservers as advised by geoscaling (e.g. `ns{1,2,3,4}.geoscaling.com`).
+
+Next we need to supply this information to Brooklyn at runtime.
+The simplest way is to create or add the following fields to `~/.brooklyn/brooklyn.properties`:
+
+{% highlight bash %}
+brooklyn.geoscaling.username=yourname
+brooklyn.geoscaling.password=s3cr3t
+brooklyn.geoscaling.primaryDomain=yourname.geopaas.org
+{% endhighlight %}
+
+Replace the values of these fields as appropriate, of course!
+You can, if you prefer, supply (or override) these values in your Brooklyn application.
+
+
+### Setting Up the Locations Database
+
+In order to generate the "closest-IP" script,
+Brooklyn needs a way to find out the latitude and longitude of the
+servers you are using.
+The simplest way to do this is do download the free GeoCityLite binary flatfile 
+from [MaxMind](http://dev.maxmind.com/geoip/geoip2/geolite2/#Downloads),
+unpack it, and copy it to `~/.brooklyn/GeoLite2-City.mmdb`.
+
+This will be picked up automatically if it is installed.
+You can instead specify to use an online lookup service, such as 
+[utrace.de](http://www.utrace.de) by specifying
+`-Dbrooklyn.location.geo.HostGeoLookup=brooklyn.location.geo.UtraceHostGeoLookup`;
+but note this has a cap of 100 per day.
+
+This information is also used to display locations on the map
+in the Brooklyn dashboard.
+Note however that these free services are not 100% accurate;
+they are handy for dev/test but in a production system
+you may wish to specify the geographical information manually in your application,
+or purchase a commercial locations-database subscription.
+
+
+## The Code
+
+Now let's start writing our application.
+The heavy lifting will be done by off-the-shelf Brooklyn classes:
+
+ * `DynamicFabric` will create the entity specified by `factory` in each location it is given
+ * `GeoscalingDnsService` monitors children of a specified entity (the `DynamicFabric`) 
+   and adds them as DNS targets for the region they are in  
+
+First, however, let's create the Java class -- call it `GlobalWebFabricExample`.
+This will extend the Brooklyn `AbstractApplication`:
+
+{% highlight java %}
+package brooklyn.demo;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+import brooklyn.entity.basic.AbstractApplication;
+
+public class GlobalWebFabricExample extends AbstractApplication {
+    @Override
+    public void init() {
+         // TODO create our app!
+    }
+}
+{% endhighlight %}
+
+### The Fabric
+
+The `DynamicFabric` by default has no knowledge of what it will build,
+other than the `factory` it is given to create an entity in each region.
+We'll use the class `ElasticJavaWebAppService.Factory` which creates
+an elastic Java Web App service,
+such as the `ControlledDynamicWebAppCluster` used in the
+[Simple Web Cluster](../webcluster) example, if deploying to VMs,
+or perhaps a `CloudFoundryJavaWebAppCluster` if deploying to a Cloud Foundry location
+(see [brooklyn-cloudfoundry repo](https://github.com/cloudsoft/brooklyn-cloudfoundry)).
+
+{% highlight java %}
+        DynamicFabric webFabric = addChild(EntitySpec.create(DynamicFabric.class)
+                .displayName("Web Fabric")
+                .configure(DynamicFabric.FACTORY, new ElasticJavaWebAppService.Factory())
+                .configure(ElasticJavaWebAppService.ROOT_WAR, WAR_PATH));
+{% endhighlight %}
+
+Here we have specified the WAR to use with `configure(ElasticJavaWebAppService.ROOT_WAR, WAR_PATH)`.
+The war configuration used in the previous example is only available on web-aware entities;
+configuration specified with a ConfigKey can be done on any entity,
+and is inherited at runtime, so this provides a useful way to specify the WAR to use
+even though the web-aware entities are only constructed at runtime.
+
+
+### Stitching the Fabric together with DNS
+
+To stitch these together seamlessly, another entity will run a policy
+which collects the public-facing IP address of each cluster created by the fabric,
+as it comes online, by watching for `SERVICE_UP` sensors.
+First, however, let's make sure any load-balancer proxies (e.g. nginx) in these clusters
+are listening on port 80:
+
+{% highlight java %}
+        DynamicFabric webFabric = addChild(EntitySpec.create(DynamicFabric.class)
+                .displayName("Web Fabric")
+                .configure(DynamicFabric.FACTORY, new ElasticJavaWebAppService.Factory())
+                .configure(ElasticJavaWebAppService.ROOT_WAR, WAR_PATH)
+                .configure(AbstractController.PROXY_HTTP_PORT, PortRanges.fromInteger(80)));
+{% endhighlight %}
+
+Let's now define the Geoscaling entity which does the stitching.
+We need to supply the username, password, and primaryDomainName for Geoscaling;
+we'll take this from the `brooklyn.properties` file mentioned above.
+We'll also specify a `smartSubdomainName`, to use Geoscaling's facility for
+lightweight sub-domains to prevent DNS caching and multiple instances of our application
+from confusing us -- e.g. `brooklyn-1234.yourname.geopaas.org`.
+
+{% highlight java %}
+        StringConfigMap config = getManagementContext().getConfig();
+        
+        GeoscalingDnsService geoDns = addChild(EntitySpec.create(GeoscalingDnsService.class)
+                .displayName("GeoScaling DNS")
+                .configure("username", checkNotNull(config.getFirst("brooklyn.geoscaling.username"), "username"))
+                .configure("password", checkNotNull(config.getFirst("brooklyn.geoscaling.password"), "password"))
+                .configure("primaryDomainName", checkNotNull(config.getFirst("brooklyn.geoscaling.primaryDomain"), "primaryDomain")) 
+                .configure("smartSubdomainName", "brooklyn"));
+{% endhighlight %}
+
+Lastly we need to tell this instance what entity it should monitor
+for children to include as targets:
+
+{% highlight java %}
+        geoDns.setTargetEntityProvider(webFabric);
+{% endhighlight %}
+
+
+
+### Cloud Foundry and other PaaS Targets
+
+At this point our core application is ready, and can be deployed to AWS or another VM cloud.
+This may take between 15 and 30 minutes to run,
+mainly spent downloading software
+(unless of course you specify a pre-configured `imageId` which contains the software).
+
+A quicker alternative is to deploy to a Java Web App platform-as-a-service
+such as Cloud Foundry.  A major advantage here is that they can provision very quickly,
+in a matter of seconds.  Code for this can be found in the 
+[brooklyn-cloudfoundry repo](https://github.com/cloudsoft/brooklyn-cloudfoundry), 
+along with an example global-web-fabric app.
+
+
+### Imports
+
+Your imports should look as follows:
+
+{% highlight java %}
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import brooklyn.config.StringConfigMap;
+import brooklyn.entity.basic.AbstractApplication;
+import brooklyn.entity.basic.Attributes;
+import brooklyn.entity.dns.geoscaling.GeoscalingDnsService;
+import brooklyn.entity.group.DynamicFabric;
+import brooklyn.entity.proxy.AbstractController;
+import brooklyn.entity.proxying.EntitySpec;
+import brooklyn.entity.webapp.ElasticJavaWebAppService;
+import brooklyn.location.basic.PortRanges;
+{% endhighlight %}
+
+
+### Use of main method (optional)
+
+In this example, we will use the brooklyn CLI launcher. However, it is possible to write your own main method.
+
+The following static constants are assumed (most of these as in the [Simple Web Cluster](../webcluster) example and others): 
+
+ * `WAR_PATH`, pointing to the webapp to deploy (a default supplied as part of the Brooklyn examples is used here)
+ * `DEFAULT_LOCATIONS`, containing a string spec of the locations to deploy to if none are supplied on the command-line;
+   for this example `localhost` will frequently not work unless Geoscaling can see it 
+   (i.e. it has a public IP and appropriate firewall settings)
+
+The code (which can safely be omitted) is as follows:
+
+{% highlight java %}
+import brooklyn.launcher.BrooklynLauncher;
+import brooklyn.util.CommandLineUtil;
+
+import com.google.common.base.Joiner;
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.Lists;
+
+// class definition, and rest of class goes here...
+
+    public static final Logger log = LoggerFactory.getLogger(GlobalWebFabricExample.class);
+    
+    // points to the webapp to deploy (a default supplied as part of the Brooklyn examples is used here)
+    public static final String WAR_PATH = "classpath://hello-world-webapp.war";
+    
+    // locations to deploy to if none are supplied on the command-line; for this example `localhost` will 
+    // frequently not work unless Geoscaling can see it (i.e. it has a public IP and appropriate firewall settings)
+    static final List<String> DEFAULT_LOCATIONS = ImmutableList.of(
+            "aws-ec2:eu-west-1",
+            "aws-ec2:ap-southeast-1",
+            "aws-ec2:us-west-1" );
+        
+    public static void main(String[] argv) {
+        List<String> args = Lists.newArrayList(argv);
+        String port =  CommandLineUtil.getCommandLineOption(args, "--port", "8081+");
+        String locations = CommandLineUtil.getCommandLineOption(args, "--locations", Joiner.on(",").join(DEFAULT_LOCATIONS));
+
+        BrooklynLauncher launcher = BrooklynLauncher.newInstance()
+                .application(EntitySpec.create(StartableApplication.class, GlobalWebFabricExample.class).displayName("Brooklyn Global Web Fabric Example"))
+                .webconsolePort(port)
+                .locations(Arrays.asList(locations))
+                .start();
+        
+        Entities.dumpInfo(app);
+    }
+{% endhighlight %}
+
+
+
+## Running the Example
+
+Now let's run this example.
+
+{% highlight bash %}
+${BROOKLYN_HOME}/bin/brooklyn launch --app brooklyn.demo.GlobalWebFabricExample \
+--location jclouds:aws-ec2:eu-west-1,jclouds:aws-ec2:ap-southeast-1,jclouds:aws-ec2:us-west-1 
+{% endhighlight %}
+
+The management web console will start,
+followed by the web-app services in the locations specified
+creating the VM's as needed.
+Let's look at the management web console, on port 8081:
+
+[![Web Console Map](console-map-w700.png "Web Console Map")](console-map.png) 
+
+This shows the targets (e.g. Ireland (AWS eu-west-1),  Singapore (AWS ap-southeast-1),  and California (AWS us-west-1)).
+This also shows the current status of the application.
+
+Navigating to the "applications" tab, we can view sensors, invoke effectors, control policies,
+and track activity, 
+for instance if a cluster is slow to start and you want to find out what is going on
+(you'll find additional information in the `brooklyn.log` file).
+Let's drill down on the Geoscaling DNS entity's sensors:
+
+[![Web Console Geoscaling Details](console-geoscaling-details-w700.png "Web Console Geoscaling Details")](console-geoscaling-details.png)
+
+Here we see it has chosen `brooklyn-vOZ7b4BL.martincloudsoft.geopaas.org` as the geo-load-balanced domain name.
+(Yours will be under `yourname.geopaas.org`, unless you chose a different domain earlier.)
+We can also see the hosts it is forwarding to, one for each cluster, corresponding to the
+children of the Web Fabric (propagated from the nginx hostnames, in the case of the ControlledDynamicWebAppCluster instances).
+
+
+### Checking the Web App
+
+Once Geoscaling reports at least one target, you should be able to access it on the geo-load-balanced domain name:
+
+[![Our Deployed Application](geopaas-deployed-app-w700.png "Our Deployed Application")](geopaas-deployed-app.png)
+
+Under the covers you are being routed to one of the clusters that has been deployed --
+whichever one is closest to you.
+(Due to DNS caching, at your machine or your ISP, clusters which come online after your first lookup
+will not be picked up until TTL expires, typically 10m, although often more if DNS services don't respect TTL.)
+
+
+### Checking DNS Information
+
+Let's find out exactly where we were routed:
+
+{% highlight bash %}
+% dig brooklyn-csgFCzTm.geopaas.org
+
+; <<>> DiG 9.4.3-P3 <<>> brooklyn-csgFCzTm.geopaas.org
+
+;; QUESTION SECTION:
+;brooklyn-csgFCzTm.geopaas.org. IN      A
+
+;; ANSWER SECTION:
+brooklyn-csgFCzTm.geopaas.org. 120 IN   CNAME   ec2-46-137-138-4.eu-west-1.compute.amazonaws.com.
+ec2-46-137-138-4.eu-west-1.compute.amazonaws.com. 215 IN A 46.137.138.4
+{% endhighlight %}
+
+This was run from Scotland so it seems a sensible choice.
+(Some portions of the output from `dig` have been removed for readability.)
+
+We can get more information by looking at the TXT records: 
+
+{% highlight bash %}
+% dig +trace @ns1.geoscaling.com TXT brooklyn-csgFCzTm.geopaas.org
+
+; <<>> DiG 9.4.3-P3 <<>> +trace @ns1.geoscaling.com TXT brooklyn-csgFCzTm.geopaas.org
+
+...
+
+geopaas.org.            86400   IN      NS      ns1.geoscaling.com.
+geopaas.org.            86400   IN      NS      ns2.geoscaling.com.
+geopaas.org.            86400   IN      NS      ns3.geoscaling.com.
+geopaas.org.            86400   IN      NS      ns4.geoscaling.com.
+;; Received 133 bytes from 199.249.112.1#53(a2.org.afilias-nst.info) in 45 ms
+
+brooklyn-csgFCzTm.geopaas.org. 300 IN   TXT     "Request from [54,-2]-(GB) directed to Ireland (IE)"
+brooklyn-csgFCzTm.geopaas.org. 300 IN   TXT     "GeoScaling config auto-updated by Brooklyn 2012-04-26 12:27:25 UTC"
+;; Received 189 bytes from 80.87.128.195#53(ns3.geoscaling.com) in 60 ms
+{% endhighlight %}
+
+
+## Next Steps
+
+This example has shown how to create a multi-region fabric, using the abstractions from
+[jclouds](http://jclouds.org) under the covers to make it easy to access different hosting providers
+simultaneously, and using higher-level abstractions in Brooklyn to mix PaaS systems with
+bare-VM (or even bare-metal, if you specify fixed IPs).
+
+This is meant as just the beginning however.  
+Here are some questions to think about and code challenges to give you a steer for what to explore next.
+
+
+ 1. The routines used at Geoscaling optimize for latency between the user and the location of the web-cluster.
+    What other strategies might be used?  Cost?  Compliance?  How would you code these?
+    
+ 2. This example ignores data, but you clearly can't do that in the real world.
+    When big-data is involved, does this introduce other considerations for optimizing geo-location?
+    
+ 3. Add a data tier to this system, such as MySQL or Mongo, or even Hadoop.
+    You might start with a single instance or cluster,
+    but the real fun starts with a fabric, and defining the synchronization/replication strategies
+    between the different clusters.
+    This isn't for the faint-hearted, but whatever you create will certainly be of interest
+    to people in the Brooklyn community.
+    Please [let us know]({{ site.path.guide }}/meta/contact.html) what you've built!

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/_extra/big_examples/index.md
----------------------------------------------------------------------
diff --git a/docs/_extra/big_examples/index.md b/docs/_extra/big_examples/index.md
new file mode 100644
index 0000000..f55643f
--- /dev/null
+++ b/docs/_extra/big_examples/index.md
@@ -0,0 +1,18 @@
+---
+layout: guide-normal
+title: Examples
+toc: /guide/toc.json
+---
+
+We currently have the following examples on the site:
+
+{% capture ltocs %}{% readj toc.json %}{% endcapture %}
+{% jsonball ltoc from var ltocs %}
+
+{% for x in ltoc %}
+* <a href="{{ x.file }}">{{ x.title }}</a>
+{% endfor %} 
+
+There are examples in the code also, just check out the examples/ project.
+
+**Have one of your own?**  [Add it here!]({{site.path.guide}}/dev/tips/update-docs.html)

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/_extra/big_examples/messaging/index.md
----------------------------------------------------------------------
diff --git a/docs/_extra/big_examples/messaging/index.md b/docs/_extra/big_examples/messaging/index.md
new file mode 100644
index 0000000..c3c2254
--- /dev/null
+++ b/docs/_extra/big_examples/messaging/index.md
@@ -0,0 +1,181 @@
+---
+layout: guide-normal
+title: Publish-Subscribe Messagiung
+toc: /guide/toc.json
+---
+
+This example shows how a simple messaging application can be build
+in brooklyn, starting with configuring and launching a broker. For
+these examples we will use the Apache [Qpid](http://qpid.apache.org/)
+Java AMQP message broker and clients using the
+[JMS](http://docs.oracle.com/javaee/6/tutorial/doc/bnceh.html) API.
+
+{% readj ../before-begin.include.md %}
+
+Now, go to this particular example's directory:
+
+{% highlight bash %}
+% cd simple-messaging-pubsub
+{% endhighlight %}
+
+The CLI needs to know where to find your compiled examples. You can set this up by exporting
+the ``BROOKLYN_CLASSPATH`` environment variable in the following way:
+
+{% highlight bash %}
+% export BROOKLYN_CLASSPATH=$(pwd)/target/classes
+{% endhighlight %}
+
+The project ``simple-messaging-pubsub`` includes a deployment
+descriptor for our example messaging application and simple _Publish_
+and _Subscribe_ JMS test client scripts.
+
+## Single Broker
+
+The first example will include a Qpid broker, which we will customize
+to use the Oracle [BDB](http://www.oracle.com/technetwork/products/berkeleydb/overview/index.html)
+message store as an example of a typical production setup. We will
+also create a queue for use by a pair of test clients.
+
+The ``QpidBroker`` entity is created like this, which uses the
+default configuration, specifying only the AMQP port and creates
+no queues or topics:
+
+{% highlight java %}
+public class StandaloneQpidBrokerExample extends AbstractApplication {
+    @Override
+    public void init() {
+        // Configure the Qpid broker entity
+    	QpidBroker broker = addChild(EntitySpec.create(QpidBroker.class)
+    	        .configure("amqpPort", 5672));
+    }
+}
+{% endhighlight %}
+
+To install the custom configuration files and extra libraries for
+BDB, we specify some files to copy to the broker installation, using
+the ``runtimeFiles`` property. These files should be available in
+the classpath of the application when it is running, usually by
+copying them to the ``src/main/resources`` directory. For example,
+here we copy a custom XML configuration file and a new password
+file:
+
+{% highlight java %}
+        final String CUSTOM_CONFIG_PATH = "classpath://custom-config.xml";
+        final String PASSWD_PATH = "classpath://passwd";
+
+    	QpidBroker broker = addChild(EntitySpec.create(QpidBroker.class)
+    	        .configure("amqpPort", 5672)
+    	        .configure("amqpVersion", AmqpServer.AMQP_0_10)
+    	        .configure("runtimeFiles", ImmutableMap.builder()
+    	                .put(QpidBroker.CONFIG_XML, CUSTOM_CONFIG_PATH)
+    	                .put(QpidBroker.PASSWD, PASSWD_PATH)
+    	                .build()));
+{% endhighlight %}
+
+Finally, we come to the complete configuration of our ``QpidBroker``
+entity using the BDB store. The additional properties here specify
+the AMQP version and that a queue named _testQueue_ should be created
+on startup.
+
+{% highlight java %}
+        final String CUSTOM_CONFIG_PATH = "classpath://custom-config.xml";
+        final String PASSWD_PATH = "classpath://passwd";
+        final String QPID_BDBSTORE_JAR_PATH = "classpath://qpid-bdbstore-0.14.jar";
+        final String BDBSTORE_JAR_PATH = "classpath://je-5.0.34.jar";
+
+    	QpidBroker broker = addChild(EntitySpec.create(QpidBroker.class)
+    	        .configure("amqpPort", 5672)
+    	        .configure("amqpVersion", AmqpServer.AMQP_0_10)
+    	        .configure("runtimeFiles", ImmutableMap.builder()
+    	                .put(QpidBroker.CONFIG_XML, CUSTOM_CONFIG_PATH)
+    	                .put(QpidBroker.PASSWD, PASSWD_PATH)
+    	                .put("lib/opt/qpid-bdbstore-0.14.jar", QPID_BDBSTORE_JAR_PATH)
+    	                .put("lib/opt/je-5.0.34.jar", BDBSTORE_JAR_PATH)
+    	                .build())
+    	        .configure("queue", "testQueue"));
+{% endhighlight %}
+
+
+### Running the Example
+
+You can run the example as follows:
+
+{% highlight bash %}
+% ${BROOKLYN_HOME}/bin/brooklyn -v launch --app brooklyn.demo.StandaloneQpidBrokerExample --location localhost
+{% endhighlight %}
+
+Now, visit the Brooklyn web console on port 8081 (for pre 0.6 releases,
+use the credentials admin/password). This allows you to view the Brooklyn 
+entities and their current state for debugging.
+
+Note that the installation may take some time, because the default
+deployment downloads the software from the official repos.  You can
+monitor start-up activity for each entity in the ``Activity`` pane
+in the management console, and see more detail by tailing the log
+file (``tail -f brooklyn.log``).
+
+After starting up, the demo script should display a summary of all
+the Brooklyn managed entities and their attributes. This will show
+both the Qpid broker and its child entity, the queue _testQueue_
+which was created at startup. The queue entity has sensors that
+monitor the depth of unread messages, which you can check while
+running the test client scripts later.
+
+If the ``-v`` flag is passed to the startup command, all configured
+entity and sensor details will be output. This includes the broker URL,
+which is used to configure JMS clients to connect to this broker.
+This URL can also be viewed as a sensor attribute in the web console,
+named _broker.url_.
+
+This sensor is common to _all_ messaging brokers that Brooklyn
+provides, and is usually accessed by applications to allow them to
+provide it as a parameter to other entities, as shown in the code
+fragment below.
+
+{% highlight java %}
+String url = broker.getAttribute(MessageBroker.BROKER_URL)
+{% endhighlight %}
+
+Using the URL the demo script printed, you can run the test ``Subscribe``
+and then ``Publish`` classes, to send messages using the broker. Simply
+run the commands in another window, with the provided URL as the
+only argument. Note that the URLs may be different to those printed
+below, and that any unquoted ``&`` characters *must* be escaped,
+if present.
+
+{% highlight bash %}
+% URL="amqp://guest:guest@/localhost?brokerlist='tcp://localhost:5672'"
+% java -cp "./resources/lib/*:./target/classes" brooklyn.demo.Subscribe ${URL}
+% java -cp "./resources/lib/*:./target/classes" brooklyn.demo.Publish ${URL}
+{% endhighlight %}
+
+In the _Publish_ window you should see a log message every time a
+message is sent, like this:
+
+{% highlight bash %}
+2012-05-02 14:04:38,521 INFO  Sent message 65
+2012-05-02 14:04:39,522 INFO  Sent message 66
+{% endhighlight %}
+
+Similarly, the _Subscribe_ windows should log on reciept of these
+messages, as follows:
+
+{% highlight bash %}
+2012-05-02 14:04:32,522 INFO  got message 41 test message 41
+2012-05-02 14:04:33,523 INFO  got message 42 test message 42
+{% endhighlight %}
+
+### Cloud Deployment
+
+With appropriate setup (as described
+[here]({{ site.path.guide }}/use/guide/management/index.html#startup-config))
+this can also be deployed to your favourite cloud, let's pretend
+it's Amazon Ireland, as follows:
+
+{% highlight bash %}
+% ${BROOKLYN_HOME}/bin/brooklyn launch --app brooklyn.demo.StandaloneQpidBrokerExample --location aws-ec2:eu-west-1
+{% endhighlight %}
+
+If you encounter any difficulties, please
+[tell us]({{ site.path.guide }}/meta/contact.html) and we'll do our best
+to help.

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/_extra/big_examples/nosql-cassandra/cassandra.include.md
----------------------------------------------------------------------
diff --git a/docs/_extra/big_examples/nosql-cassandra/cassandra.include.md b/docs/_extra/big_examples/nosql-cassandra/cassandra.include.md
new file mode 100644
index 0000000..56319f8
--- /dev/null
+++ b/docs/_extra/big_examples/nosql-cassandra/cassandra.include.md
@@ -0,0 +1,282 @@
+      
+{% readj ../before-begin.include.md %}
+
+## Simple Cassandra Cluster
+
+Go to this particular example's directory:
+
+{% highlight bash %}
+% cd simple-nosql-cluster
+{% endhighlight %}
+
+The CLI needs to know where to find your compiled examples. You can set this up by exporting
+the ``BROOKLYN_CLASSPATH`` environment variable in the following way:
+
+{% highlight bash %}
+% export BROOKLYN_CLASSPATH=$(pwd)/target/classes
+{% endhighlight %}
+
+The project ``simple-nosql-cluster`` includes several deployment descriptors
+for deploying and managing Cassandra, under ``src/main/java``.
+
+The simplest of these, ``SimpleCassandraCluster``, will start a Cassandra cluster. The code is:
+
+{% highlight java %}
+public class SimpleCassandraCluster extends AbstractApplication {
+  public void init() {
+    addChild(EntitySpec.create(CassandraCluster.class)
+        .configure(CassandraCluster.INITIAL_SIZE, 1)
+        .configure(CassandraCluster.CLUSTER_NAME, "Brooklyn"));
+  }
+}
+{% endhighlight %}
+
+To run that example on localhost (on *nix or Mac, assuming `ssh localhost` requires no password or passphrase):
+
+{% highlight bash %}
+% ${BROOKLYN_HOME}/bin/brooklyn launch --app brooklyn.demo.SimpleCassandraCluster \
+  --location localhost
+{% endhighlight %}
+
+Then visit the Brooklyn console on ``localhost:8081``.
+Note that the installation may take some time, because the default deployment downloads the software from
+the official repos.  You can monitor start-up activity for each entity in the ``Activity`` pane in the management console,
+and see more detail by tailing the log file (``tail -f brooklyn.log``).
+
+This example runs successfully on a local machine because ``INITIAL_SIZE`` is configured to just one node
+(a limitation of Cassandra is that every node must be on a different machine/VM).
+If you want to run with more than one node in the cluster, you'll need to use a location 
+that either points to multiple existing machines or to a cloud provider where you can 
+provision new machines.
+
+With appropriate setup of credentials (as described [here]({{ site.path.guide }}/use/guide/management/index.html#startup-config)) 
+this example can also be deployed to your favourite cloud. Let's pretend it's Amazon US East, as follows: 
+
+{% highlight bash %}
+% ${BROOKLYN_HOME}/bin/brooklyn launch --app brooklyn.demo.SimpleCassandraCluster \
+  --location aws-ec2:us-east-1
+{% endhighlight %}
+
+If you want more nodes in your cluster, you can either modify the deployment descriptor (i.e. change the ``INITIAL_SIZE`` value),
+or dynamically add more nodes by calling the ``resize`` effector through the web-console. 
+To do the latter, select cluster entity in the tree on the left, then click on the "effectors" tab, and invoke ``resize`` 
+with the desired number of nodes.
+
+
+### Testing your Cluster
+
+An easy way to test your cluster is to use the ``cassandra-stress`` command line tool.
+For example, run:
+
+{% highlight bash %}
+# Substitute the id below for your VM
+NODE_IDS=ec2-54-221-69-95.compute-1.amazonaws.com
+/tmp/brooklyn-aled/installs/CassandraNode/1.2.9/apache-cassandra-1.2.9/tools/bin/cassandra-stress \
+	--nodes ${NODE_IDS} \
+    --replication-factor 1 \
+    --progress-interval 1 \
+    --num-keys 10000 \
+    --operation INSERT
+{% endhighlight %}
+
+This command will fire 10000 inserts at the cluster, via the nodes specified in the comma-separated node list. 
+If you change ``INSERT`` to ``READ``, it will read each of those 10000 values.
+
+
+## High Availability Cassandra Cluster
+
+Ready for something more interesting?  Try this:
+
+{% highlight bash %}
+% ${BROOKLYN_HOME}/bin/brooklyn launch --app brooklyn.demo.HighAvailabilityCassandraCluster \
+  --location aws-ec2:us-east-1
+{% endhighlight %}
+
+This launches the class ``HighAvailabilityCassandraCluster``,
+which launches a Cassandra cluster configured to replicate across availability zones.
+
+To give some background for that statement, in 
+[AWS](http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html)
+(and various other clouds), a region is a 
+separate geographic area, consisting of multiple isolated locations known as availability zones.
+To ensure high availability, the Cassandra cluster and thus the data should be spread across the 
+availability zones. Cassandra should be configured to ensure there is at least one replica in
+each availability zone. In 
+[Cassandra terminology](http://www.datastax.com/docs/1.1/cluster_architecture/replication)
+a region is normally mapped to a "datacenter" and an availability zone to a "rack".
+
+To be properly highly available, we need some automated policies to restart failed servers 
+and to replace unhealthy nodes. Brooklyn has these policies available out-of-the-box.
+To wire them up, the essential code fragment looks like this:
+
+{% highlight java %}
+public class HighAvailabilityCassandraCluster extends AbstractApplication {
+  public void init() {
+    addChild(EntitySpec.create(CassandraCluster.class)
+        .configure(CassandraCluster.CLUSTER_NAME, "Brooklyn")
+        .configure(CassandraCluster.INITIAL_SIZE, 1)
+        .configure(CassandraCluster.ENABLE_AVAILABILITY_ZONES, true)
+        .configure(CassandraCluster.NUM_AVAILABILITY_ZONES, 3)
+        .configure(CassandraCluster.ENDPOINT_SNITCH_NAME, "GossipingPropertyFileSnitch")
+        .configure(CassandraCluster.MEMBER_SPEC, EntitySpec.create(CassandraNode.class)
+            .policy(PolicySpec.create(ServiceFailureDetector.class))
+            .policy(PolicySpec.create(ServiceRestarter.class)
+                .configure(ServiceRestarter.FAILURE_SENSOR_TO_MONITOR, ServiceFailureDetector.ENTITY_FAILED)))
+        .policy(PolicySpec.create(ServiceReplacer.class)
+            .configure(ServiceReplacer.FAILURE_SENSOR_TO_MONITOR, ServiceRestarter.ENTITY_RESTART_FAILED)));
+  }
+}
+{% endhighlight %}
+
+This code is doing a lot and deserves some more detailed explanation:
+
+* The ``MEMBER_SPEC`` describes the configuration of the Cassandra nodes to be created in the cluster.
+  Assuming you're happy to use all the default thrift port etc, then the only configuration to add is
+  a couple of policies.
+* The ``ServiceFailureDetector`` policy watches the node's sensors, and generates
+  an ``ENTITY_FAILED`` event if the node goes down.
+* The ``ServiceRestarter`` policy responds to this failure-event
+  by restarting the node. Its default configuration is that: if a node does not come back up, or if it 
+  fails again within three minutes, then it will emit an ``ENTITY_RESTART_FAILED`` event.
+* Finally, the ``SERVICE_REPLACER`` policy on the cluster responds to this event by replacing the
+  entire VM. It sets up a new VM in the same location, and then tears down the faulty node.
+
+> *Troubleshooting:*
+
+> *In AWS, some availability zones can be constrained for particular instance sizes (see
+  [this bug report](https://github.com/brooklyncentral/brooklyn/issues/973)
+  If you get this error, the workaround is to specify explicitly the availability zones to use. 
+  This requires an additional line of code such as:*
+
+{% highlight java %}
+  .configure(AVAILABILITY_ZONE_NAMES, ImmutableList.of("us-east-1b", "us-east-1c", "us-east-1e"))
+{% endhighlight %}
+
+> *However, this prevents the blueprint from being truly portable. We're looking at fixing this issue.*
+
+
+## Wide Area Cassandra Cluster
+
+For critical enterprise use-cases, you'll want to run your Cassandra cluster across multiple regions, 
+or better yet across multiple cloud providers. This gives the highest level of availability for 
+the service.
+
+Try running:
+
+{% highlight bash %}
+% ${BROOKLYN_HOME}/bin/brooklyn launch --app brooklyn.demo.WideAreaCassandraCluster \
+  --location "aws-ec2:us-east-1,aws-ec2:us-west-2"
+{% endhighlight %}
+
+This launches the class ``WideAreaCassandraCluster`` across two AWS regions.
+
+Cassandra provides some great support for this with the 
+[EC2MultiRegionSnitch](http://www.datastax.com/docs/1.1/cluster_architecture/replication)
+The 
+[snitch](http://www.datastax.com/docs/1.1/cluster_architecture/replication#snitches)
+maps IPs to racks and data centers; it defines how the nodes are grouped together within the overall 
+network topology. For wide-area deployments, it must also deal with when to use the private IPs 
+(within a region) and the public IPs (between regions).
+You'll need a more generic snitch if you're going to span different cloud providers.
+Brooklyn has a custom MultiCloudSnitch that we're looking to contribute back to Cassandra.
+
+The important piece of code in ``WideAreaCassandraCluster`` is:
+
+{% highlight java %}
+public class WideAreaCassandraCluster extends AbstractApplication {
+  public void init() {
+    addChild(EntitySpec.create(CassandraFabric.class)
+        .configure(CassandraCluster.CLUSTER_NAME, "Brooklyn")
+        .configure(CassandraCluster.INITIAL_SIZE, 2) // per location
+        .configure(CassandraCluster.ENDPOINT_SNITCH_NAME, "brooklyn.entity.nosql.cassandra.customsnitch.MultiCloudSnitch")
+        .configure(CassandraNode.CUSTOM_SNITCH_JAR_URL, "classpath://brooklyn/entity/nosql/cassandra/cassandra-multicloud-snitch.jar"));
+  }
+}
+{% endhighlight %}
+
+The code below shows the wide-area example with the high-availability policies from the previous section also configured:
+
+{% highlight java %}
+public class WideAreaCassandraCluster extends AbstractApplication {
+  public void init() {
+    addChild(EntitySpec.create(CassandraFabric.class)
+        .configure(CassandraCluster.CLUSTER_NAME, "Brooklyn")
+        .configure(CassandraCluster.INITIAL_SIZE, 2) // per location
+        .configure(CassandraCluster.ENDPOINT_SNITCH_NAME, "brooklyn.entity.nosql.cassandra.customsnitch.MultiCloudSnitch")
+        .configure(CassandraNode.CUSTOM_SNITCH_JAR_URL, "classpath://brooklyn/entity/nosql/cassandra/cassandra-multicloud-snitch.jar")
+        .configure(CassandraFabric.MEMBER_SPEC, EntitySpec.create(CassandraCluster.class)
+            .configure(CassandraCluster.MEMBER_SPEC, EntitySpec.create(CassandraNode.class)
+                .policy(PolicySpec.create(ServiceFailureDetector.class))
+                .policy(PolicySpec.create(ServiceRestarter.class)
+                    .configure(ServiceRestarter.FAILURE_SENSOR_TO_MONITOR, ServiceFailureDetector.ENTITY_FAILED)))
+            .policy(PolicySpec.create(ServiceReplacer.class)
+                 .configure(ServiceReplacer.FAILURE_SENSOR_TO_MONITOR, ServiceRestarter.ENTITY_RESTART_FAILED))));
+  }
+}
+{% endhighlight %}
+
+To run Cassandra across multiple clouds, try running:
+
+{% highlight bash %}
+% ${BROOKLYN_HOME}/bin/brooklyn launch --app brooklyn.demo.WideAreaCassandraCluster \
+  --location "aws-ec2:us-east-1,google-compute-engine,rackspace-cloudservers-uk"
+{% endhighlight %}
+
+
+### Testing your Wide-Area Cluster
+
+You can again use the ``cassandra-stress`` command line tool to test the wide-area cluster.
+
+Note that the replication strategy (such as 
+[NetworkTopologyStrategy](http://www.datastax.com/docs/1.0/cluster_architecture/replication#networktopologystrategy)
+is specified when creating a 
+[keyspace](http://www.datastax.com/documentation/cassandra/1.2/webhelp/index.html#cassandra/configuration/configStorage_r.html).
+The example below specifies a minimum of 1 replica in each datacenter.
+
+To do updates against a node in a given availability zone:
+
+{% highlight bash %}
+NODE_IDS=<your node hostname>
+/tmp/brooklyn-aled/installs/CassandraNode/1.2.9/apache-cassandra-1.2.9/tools/bin/cassandra-stress \
+    --nodes ${NODE_IDS} \
+    --replication-strategy NetworkTopologyStrategy \
+    --strategy-properties=us-east-1:1,us-west-2:1 \
+    --progress-interval 1 \
+    --num-keys 10000 \
+    --operation INSERT
+{% endhighlight %}
+
+To check that the same data is available from a different region, target the reads
+against an appropriate node:
+
+{% highlight bash %}
+NODE_IDS=<your node hostname>
+/tmp/brooklyn-aled/installs/CassandraNode/1.2.9/apache-cassandra-1.2.9/tools/bin/cassandra-stress \
+    --nodes ${NODE_IDS} \
+    --replication-strategy NetworkTopologyStrategy \
+    --strategy-properties=us-east-1:1,us-west-2:1 \
+    --progress-interval 1 \
+    --num-keys 10000 \
+    --operation READ
+{% endhighlight %}
+
+To really test this, you may want to simulate the failure of a region first.
+You can kill the VMs or ``kill -9`` the processes. But remember that if Brooklyn policies are configured
+they will by default restart the processes automatically! You can disable the Brooklyn policies through 
+the brooklyn web-console (select the entity, go the policies tab, select the policy, and click "disable").
+
+
+## Putting it all together: CumulusRDF
+
+If you want to try this with a real example application using the Cassandra cluster, take a look at
+[CumulusRDF](https://code.google.com/p/cumulusrdf). There is an example Brooklyn application at:
+
+{% highlight bash %}
+% ${BROOKLYN_HOME}/bin/brooklyn launch --app brooklyn.demo.CumulusRDFApplication \
+  --location "aws-ec2:us-east-1"
+{% endhighlight %}
+
+
+## Contact us!
+
+If you encounter any difficulties or have any comments, please [tell us]({{ site.path.guide }}/meta/contact.html) and we'll do our best to help.

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/_extra/big_examples/nosql-cassandra/index.md
----------------------------------------------------------------------
diff --git a/docs/_extra/big_examples/nosql-cassandra/index.md b/docs/_extra/big_examples/nosql-cassandra/index.md
new file mode 100644
index 0000000..88c1dce
--- /dev/null
+++ b/docs/_extra/big_examples/nosql-cassandra/index.md
@@ -0,0 +1,7 @@
+---
+layout: guide-normal
+title: Cassandra Clusters
+toc: /guide/toc.json
+---
+
+{% readj cassandra.include.md %}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/_extra/big_examples/simple-web-cluster.md
----------------------------------------------------------------------
diff --git a/docs/_extra/big_examples/simple-web-cluster.md b/docs/_extra/big_examples/simple-web-cluster.md
new file mode 100644
index 0000000..cd2b659
--- /dev/null
+++ b/docs/_extra/big_examples/simple-web-cluster.md
@@ -0,0 +1,9 @@
+---
+layout: guide-normal
+title: Elastic Web Cluster
+toc: /guide/toc.json
+---
+
+<!-- file kept to preserve old links; remove when link not used -->
+
+{% readj webcluster/webcluster.include.md %}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/_extra/big_examples/toc.json
----------------------------------------------------------------------
diff --git a/docs/_extra/big_examples/toc.json b/docs/_extra/big_examples/toc.json
new file mode 100644
index 0000000..4bca3a1
--- /dev/null
+++ b/docs/_extra/big_examples/toc.json
@@ -0,0 +1,13 @@
+[
+{ "title": "Elastic Web Cluster",
+  "file":  "{{ site.path.guide }}/use/examples/webcluster/index.html" },
+{ "title": "Global Web Fabric",
+  "file":  "{{ site.path.guide }}/use/examples/global-web-fabric/index.html" },
+{ "title": "Whirr Hadoop Cluster",
+  "file":  "{{ site.path.guide }}/use/examples/whirrhadoop/index.html" },
+{ "title": "Publish-Subscribe Messaging",
+  "file":  "{{ site.path.guide }}/use/examples/messaging/index.html" },
+{ "title": "Cassandra Cluster",
+  "file":  "{{ site.path.guide }}/use/examples/nosql-cassandra/index.html" }
+
+]

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/_extra/big_examples/webcluster.md
----------------------------------------------------------------------
diff --git a/docs/_extra/big_examples/webcluster.md b/docs/_extra/big_examples/webcluster.md
new file mode 100644
index 0000000..cd2b659
--- /dev/null
+++ b/docs/_extra/big_examples/webcluster.md
@@ -0,0 +1,9 @@
+---
+layout: guide-normal
+title: Elastic Web Cluster
+toc: /guide/toc.json
+---
+
+<!-- file kept to preserve old links; remove when link not used -->
+
+{% readj webcluster/webcluster.include.md %}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/_extra/big_examples/webcluster/index.md
----------------------------------------------------------------------
diff --git a/docs/_extra/big_examples/webcluster/index.md b/docs/_extra/big_examples/webcluster/index.md
new file mode 100644
index 0000000..1fd80dd
--- /dev/null
+++ b/docs/_extra/big_examples/webcluster/index.md
@@ -0,0 +1,7 @@
+---
+layout: guide-normal
+title: Elastic Web Cluster
+toc: /guide/toc.json
+---
+
+{% readj webcluster.include.md %}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a7a317bf/docs/_extra/big_examples/webcluster/webcluster.include.md
----------------------------------------------------------------------
diff --git a/docs/_extra/big_examples/webcluster/webcluster.include.md b/docs/_extra/big_examples/webcluster/webcluster.include.md
new file mode 100644
index 0000000..e135998
--- /dev/null
+++ b/docs/_extra/big_examples/webcluster/webcluster.include.md
@@ -0,0 +1,124 @@
+      
+{% readj ../before-begin.include.md %}
+
+## Simple Web Server
+
+Go to this particular example's directory:
+
+{% highlight bash %}
+% cd simple-web-cluster
+{% endhighlight %}
+
+The CLI needs to know where to find your compiled examples. You can set this up by exporting
+the ``BROOKLYN_CLASSPATH`` environment variable in the following way:
+
+{% highlight bash %}
+% export BROOKLYN_CLASSPATH=$(pwd)/target/classes
+{% endhighlight %}
+
+The project ``simple-web-cluster`` includes several deployment descriptors
+for rolling out a web application, under ``src/main/java``.
+
+
+
+The simplest of these, ``SingleWebServerExample``, starts JBoss on a single machine with a "Hello World" war deployed,
+with a single line:
+
+{% highlight java %}
+public class SingleWebServerExample extends AbstractApplication {
+    private static final String WAR_PATH = "classpath://hello-world-webapp.war";
+
+    @Override
+    public void init() {
+        addChild(EntitySpec.create(JBoss7Server.class)
+                .configure("war", WAR_PATH)
+                .configure("httpPort", 8080));
+    }
+}
+{% endhighlight %}
+
+You can run this as follows (on *nix or Mac, assuming `ssh localhost` requires no password or passphrase):
+
+{% highlight bash %}
+% ${BROOKLYN_HOME}/bin/brooklyn launch --app brooklyn.demo.SingleWebServerExample \
+  --location localhost
+{% endhighlight %}
+
+
+Then visit the webapp on port 8080, or the Brooklyn console on localhost:8081.
+Note that the installation may take some time, because the default deployment downloads the software from
+the official repos.  You can monitor start-up activity for each entity in the ``Activity`` pane in the management console,
+and see more detail by tailing the log file (``tail -f brooklyn.log``).
+
+With appropriate setup (as described [here]({{ site.path.guide }}/use/guide/management/index.html#startup-config)) 
+this can also be deployed to your favourite cloud, let's pretend it's Amazon Ireland, as follows: 
+
+{% highlight bash %}
+% ${BROOKLYN_HOME}/bin/brooklyn launch --app brooklyn.demo.SingleWebServerExample \
+  --location aws-ec2:eu-west-1
+{% endhighlight %}
+
+
+## Elastic Three-Tier
+
+Ready for something more interesting?  Try this:
+
+{% highlight bash %}
+% ${BROOKLYN_HOME}/bin/brooklyn launch --app brooklyn.demo.WebClusterDatabaseExample \
+  --location localhost
+{% endhighlight %}
+
+This launches the class ``WebClusterDatabaseExample`` (also described in the [walkthrough]({{ site.path.guide }}/start/walkthrough/index.html))
+which launches a pool of web-servers -- of size 1 initially,
+but manually configurable (if you stop the policy first, in the GUI, then use the ``resize`` effector) --
+with an Nginx load-balancer set up in front of them, and backed by a MySQL database.
+
+The essential code fragment looks like this:
+
+{% highlight java %}
+public class WebClusterDatabaseExample extends AbstractApplication {
+    public static final String WAR_PATH = "classpath://hello-world-sql-webapp.war";
+    
+    public static final String DB_SETUP_SQL_URL = "classpath://visitors-creation-script.sql";
+    
+    public static final String DB_TABLE = "visitors";
+    public static final String DB_USERNAME = "brooklyn";
+    public static final String DB_PASSWORD = "br00k11n";
+
+    @Override
+    public void init() {
+        MySqlNode mysql = addChild(EntitySpec.create(MySqlNode.class)
+                .configure("creationScriptUrl", DB_SETUP_SQL_URL));
+        
+        ControlledDynamicWebAppCluster web = addChild(EntitySpec.create(ControlledDynamicWebAppCluster.class)
+                .configure("memberSpec", EntitySpec.create(JBoss7Server.class)
+                        .configure("httpPort", "8080+")
+                        .configure("war", WAR_PATH)
+                        .configure(javaSysProp("brooklyn.example.db.url"), 
+                                formatString("jdbc:%s%s?user=%s\\&password=%s", 
+                                        attributeWhenReady(mysql, MySqlNode.MYSQL_URL), DB_TABLE, DB_USERNAME, DB_PASSWORD))));
+        
+        web.getCluster().addPolicy(AutoScalerPolicy.builder().
+                        metric(DynamicWebAppCluster.AVERAGE_REQUESTS_PER_SECOND).
+                        sizeRange(1, 5).
+                        metricRange(10, 100).
+                        build());
+    }
+}
+{% endhighlight %}
+
+You can, of course, try this with your favourite cloud, 
+tweak the database start script, or drop in your favourite WAR.
+
+
+## A Few Other Things
+
+The project includes variants of the examples shown here, 
+including alternative syntax (the `*Alt*` files), 
+and a web-only cluster (no database) in `WebClusterExample``.
+
+The webapp that is used is included under ``examples/hello-world-webapp``.
+
+You may wish to check out the [Global Web Fabric example]({{ site.path.guide }}/use/examples/global-web-fabric/) next.
+
+If you encounter any difficulties, please [tell us]({{ site.path.guide }}/meta/contact.html) and we'll do our best to help.


Mime
View raw message