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/04/08 11:20:17 UTC

[01/19] incubator-brooklyn git commit: - Catalog rearrangement so it work with jekyll serve without moving files - Include the Navigation menu in the catalog

Repository: incubator-brooklyn
Updated Branches:
  refs/heads/master cf4276396 -> a9e6fc8e6


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/671fda38/docs/website/learnmore/catalog/items.js
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/items.js b/docs/website/learnmore/catalog/items.js
deleted file mode 100644
index 814636a..0000000
--- a/docs/website/learnmore/catalog/items.js
+++ /dev/null
@@ -1,24674 +0,0 @@
-var items = {
-  "entities" : [ {
-    "type" : "brooklyn.entity.messaging.activemq.ActiveMQBroker",
-    "defaultVersion" : "5.7.0",
-    "name" : "ActiveMQ Broker",
-    "description" : "ActiveMQ is an open source message broker which fully implements the Java Message Service 1.1 (JMS)",
-    "iconUrl" : "classpath:///activemq-logo.png",
-    "config" : [ {
-      "name" : "activemq.install.mirror.url",
-      "type" : "java.lang.String",
-      "defaultValue" : "http://www.mirrorservice.org/sites/ftp.apache.org/activemq/apache-activemq",
-      "description" : "URL of mirror",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "activemq.jetty.port",
-      "type" : "brooklyn.location.PortRange",
-      "defaultValue" : "8161-65535",
-      "description" : "jetty port",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "activemq.templateConfigurationUrl",
-      "type" : "java.lang.String",
-      "defaultValue" : "classpath://brooklyn/entity/messaging/activemq/activemq.xml",
-      "description" : "Template file (in freemarker format) for the conf/activemq.xml file",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "children.startable.mode",
-      "type" : "java.lang.Enum",
-      "defaultValue" : null,
-      "description" : "children.startable.mode",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : [ {
-        "value" : "NONE",
-        "description" : "NONE"
-      }, {
-        "value" : "FOREGROUND",
-        "description" : "FOREGROUND"
-      }, {
-        "value" : "FOREGROUND_LATE",
-        "description" : "FOREGROUND_LATE"
-      }, {
-        "value" : "BACKGROUND",
-        "description" : "BACKGROUND"
-      }, {
-        "value" : "BACKGROUND_LATE",
-        "description" : "BACKGROUND_LATE"
-      } ],
-      "links" : null
-    }, {
-      "name" : "customize.latch",
-      "type" : "java.lang.Boolean",
-      "defaultValue" : null,
-      "description" : "Latch for blocking customize until ready",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "download.addon.urls",
-      "type" : "java.util.Map",
-      "defaultValue" : null,
-      "description" : "URL patterns for downloading named add-ons (will substitute things like ${version} automatically)",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "download.url",
-      "type" : "java.lang.String",
-      "defaultValue" : "${driver.mirrorUrl}/${version}/apache-activemq-${version}-bin.tar.gz",
-      "description" : "URL pattern for downloading the installer (will substitute things like ${version} automatically)",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "expandedinstall.dir",
-      "type" : "java.lang.String",
-      "defaultValue" : null,
-      "description" : "Directory for installed artifacts (e.g. expanded dir after unpacking .tgz)",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "files.runtime",
-      "type" : "java.util.Map",
-      "defaultValue" : null,
-      "description" : "Map of files to be copied, keyed by destination name relative to runDir",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "install.dir",
-      "type" : "java.lang.String",
-      "defaultValue" : "${config['onbox.base.dir']!config['brooklyn.datadir']!'/<ERROR>-ONBOX_BASE_DIR-not-set'}/installs/${(config['install.unique_label']??)?string(config['install.unique_label']!'X',(entity.entityType.simpleName)+((config['install.version']??)?string('_'+(config['install.version']!'X'),'')))}",
-      "description" : "Directory for this software to be installed in",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "install.latch",
-      "type" : "java.lang.Boolean",
-      "defaultValue" : null,
-      "description" : "Latch for blocking install until ready",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "install.skip",
-      "type" : "java.lang.Boolean",
-      "defaultValue" : false,
-      "description" : "Skip the driver install commands entirely, for pre-installed software",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "install.unique_label",
-      "type" : "java.lang.String",
-      "defaultValue" : null,
-      "description" : "Provides a label which uniquely identifies an installation, used in the computation of the install dir; this should include something readable, and must include a hash of all data which differentiates an installation (e.g. version, plugins, etc), but should be the same where install dirs can be shared to allow for re-use",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "install.version",
-      "type" : "java.lang.String",
-      "defaultValue" : "5.7.0",
-      "description" : "Suggested version",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "java.check.hostname.bug",
-      "type" : "java.lang.Boolean",
-      "defaultValue" : true,
-      "description" : "Check whether hostname is too long and will likely crash Javadue to bug 7089443",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "java.opts",
-      "type" : "java.util.Set",
-      "defaultValue" : [ ],
-      "description" : "Java command line options",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "java.sysprops",
-      "type" : "java.util.Map",
-      "defaultValue" : { },
-      "description" : "Java command line system properties",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "jmx.agent.mode",
-      "type" : "java.lang.Enum",
-      "defaultValue" : "AUTODETECT",
-      "description" : "What type of JMX agent to use; defaults to null (autodetect) which means JMXMP_AND_RMI allowing firewall access through a single port as well as local access supporting jconsole (unless JMX_SSL_ENABLED is set, in which case it is JMXMP only)",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : [ {
-        "value" : "AUTODETECT",
-        "description" : "AUTODETECT"
-      }, {
-        "value" : "JMXMP",
-        "description" : "JMXMP"
-      }, {
-        "value" : "JMXMP_AND_RMI",
-        "description" : "JMXMP_AND_RMI"
-      }, {
-        "value" : "JMX_RMI_CUSTOM_AGENT",
-        "description" : "JMX_RMI_CUSTOM_AGENT"
-      }, {
-        "value" : "JMX_RMI",
-        "description" : "JMX_RMI"
-      }, {
-        "value" : "NONE",
-        "description" : "NONE"
-      } ],
-      "links" : null
-    }, {
-      "name" : "jmx.context",
-      "type" : "java.lang.String",
-      "defaultValue" : "jmxrmi",
-      "description" : "JMX context path",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "jmx.direct.port",
-      "type" : "brooklyn.location.PortRange",
-      "defaultValue" : "31001-65535",
-      "description" : "JMX direct/private port (e.g. JMX RMI server port, or JMXMP port, but not RMI registry port)",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "jmx.enabled",
-      "type" : "java.lang.Boolean",
-      "defaultValue" : true,
-      "description" : "JMX enabled",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "jmx.password",
-      "type" : "java.lang.String",
-      "defaultValue" : "admin",
-      "description" : "JMX password",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "jmx.ssl.access.cert",
-      "type" : "java.security.cert.Certificate",
-      "defaultValue" : null,
-      "description" : "certificate of key used to access a JMX agent",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "jmx.ssl.access.key",
-      "type" : "java.security.PrivateKey",
-      "defaultValue" : null,
-      "description" : "key used to access a JMX agent (typically per entity, embedded in the managed JVM)",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "jmx.ssl.enabled",
-      "type" : "java.lang.Boolean",
-      "defaultValue" : false,
-      "description" : "JMX over JMXMP enabled with SSL/TLS",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "jmx.user",
-      "type" : "java.lang.String",
-      "defaultValue" : "admin",
-      "description" : "JMX username",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "launch.latch",
-      "type" : "java.lang.Boolean",
-      "defaultValue" : null,
-      "description" : "Latch for blocking launch until ready",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "openwire.port",
-      "type" : "brooklyn.location.PortRange",
-      "defaultValue" : "61616-65535",
-      "description" : "OpenWire port",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "post.install.command",
-      "type" : "java.lang.String",
-      "defaultValue" : null,
-      "description" : "Command to be run after the install method being called on the driver",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "post.launch.command",
-      "type" : "java.lang.String",
-      "defaultValue" : null,
-      "description" : "Command to be run after the launch method being called on the driver",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "pre.install.command",
-      "type" : "java.lang.String",
-      "defaultValue" : null,
-      "description" : "Command to be run prior to the install method being called on the driver",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "pre.launch.command",
-      "type" : "java.lang.String",
-      "defaultValue" : null,
-      "description" : "Command to be run prior to the launch method being called on the driver",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "provisioning.properties",
-      "type" : "java.util.Map",
-      "defaultValue" : { },
-      "description" : "Custom properties to be passed in when provisioning a new machine",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "resources.latch",
-      "type" : "java.lang.Boolean",
-      "defaultValue" : null,
-      "description" : "Latch for blocking resources until ready",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "rmi.registry.port",
-      "type" : "brooklyn.location.PortRange",
-      "defaultValue" : "1099,19099-65535",
-      "description" : "RMI registry port, used for discovering JMX (private) port",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "run.dir",
-      "type" : "java.lang.String",
-      "defaultValue" : "${config['onbox.base.dir']!config['brooklyn.datadir']!'/<ERROR>-ONBOX_BASE_DIR-not-set'}/apps/${entity.applicationId}/entities/${entity.entityType.simpleName}_${entity.id}",
-      "description" : "Directory for this software to be run from",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "setup.latch",
-      "type" : "java.lang.Boolean",
-      "defaultValue" : null,
-      "description" : "Latch for blocking setup until ready",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "shell.env",
-      "type" : "java.util.Map",
-      "defaultValue" : { },
-      "description" : "Map of environment variables to pass to the runtime shell",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "softwareProcess.maxSensorRebindDelay",
-      "type" : "brooklyn.util.time.Duration",
-      "defaultValue" : "10s",
-      "description" : "The maximum delay to apply when reconnecting sensors when rebinding to this entity. Brooklyn will wait a random amount of time, up to the value of this config key, to avoid a thundering herd problem when the entity shares its machine with several others. Set to null or to 0 to disable any delay.",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "start.latch",
-      "type" : "java.lang.Boolean",
-      "defaultValue" : null,
-      "description" : "Latch for blocking start until ready",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "start.timeout",
-      "type" : "brooklyn.util.time.Duration",
-      "defaultValue" : "2m",
-      "description" : "Time to wait for process and for SERVICE_UP before failing (in seconds, default 2m)",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "templates.runtime",
-      "type" : "java.util.Map",
-      "defaultValue" : null,
-      "description" : "Map of templates to be filled in and copied, keyed by destination name relative to runDir",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    } ],
-    "sensors" : [ {
-      "name" : "activemq.jetty.port",
-      "type" : "java.lang.Integer",
-      "description" : "jetty port",
-      "links" : null
-    }, {
-      "name" : "activemq.templateConfigurationUrl",
-      "type" : "java.lang.String",
-      "description" : "Template file (in freemarker format) for the conf/activemq.xml file",
-      "links" : null
-    }, {
-      "name" : "broker.url",
-      "type" : "java.lang.String",
-      "description" : "Broker Connection URL",
-      "links" : null
-    }, {
-      "name" : "download.addon.urls",
-      "type" : "java.util.Map",
-      "description" : "URL patterns for downloading named add-ons (will substitute things like ${version} automatically)",
-      "links" : null
-    }, {
-      "name" : "download.url",
-      "type" : "java.lang.String",
-      "description" : "URL pattern for downloading the installer (will substitute things like ${version} automatically)",
-      "links" : null
-    }, {
-      "name" : "expandedinstall.dir",
-      "type" : "java.lang.String",
-      "description" : "Directory for installed artifacts (e.g. expanded dir after unpacking .tgz)",
-      "links" : null
-    }, {
-      "name" : "host.address",
-      "type" : "java.lang.String",
-      "description" : "Host IP address",
-      "links" : null
-    }, {
-      "name" : "host.name",
-      "type" : "java.lang.String",
-      "description" : "Host name",
-      "links" : null
-    }, {
-      "name" : "host.subnet.address",
-      "type" : "java.lang.String",
-      "description" : "Host address as known internally in the subnet where it is running (if different to host.name)",
-      "links" : null
-    }, {
-      "name" : "host.subnet.hostname",
-      "type" : "java.lang.String",
-      "description" : "Host name as known internally in the subnet where it is running (if different to host.name)",
-      "links" : null
-    }, {
-      "name" : "install.dir",
-      "type" : "java.lang.String",
-      "description" : "Directory for this software to be installed in",
-      "links" : null
-    }, {
-      "name" : "jmx.context",
-      "type" : "java.lang.String",
-      "description" : "JMX context path",
-      "links" : null
-    }, {
-      "name" : "jmx.direct.port",
-      "type" : "java.lang.Integer",
-      "description" : "JMX direct/private port (e.g. JMX RMI server port, or JMXMP port, but not RMI registry port)",
-      "links" : null
-    }, {
-      "name" : "jmx.password",
-      "type" : "java.lang.String",
-      "description" : "JMX password",
-      "links" : null
-    }, {
-      "name" : "jmx.service.url",
-      "type" : "java.lang.String",
-      "description" : "The URL for connecting to the MBean Server",
-      "links" : null
-    }, {
-      "name" : "jmx.user",
-      "type" : "java.lang.String",
-      "description" : "JMX username",
-      "links" : null
-    }, {
-      "name" : "openwire.port",
-      "type" : "java.lang.Integer",
-      "description" : "OpenWire port",
-      "links" : null
-    }, {
-      "name" : "rmi.registry.port",
-      "type" : "java.lang.Integer",
-      "description" : "RMI registry port, used for discovering JMX (private) port",
-      "links" : null
-    }, {
-      "name" : "run.dir",
-      "type" : "java.lang.String",
-      "description" : "Directory for this software to be run from",
-      "links" : null
-    }, {
-      "name" : "service.isUp",
-      "type" : "java.lang.Boolean",
-      "description" : "Whether the service is active and availability (confirmed and monitored)",
-      "links" : null
-    }, {
-      "name" : "service.process.isRunning",
-      "type" : "java.lang.Boolean",
-      "description" : "Whether the process for the service is confirmed as running",
-      "links" : null
-    }, {
-      "name" : "service.state",
-      "type" : "brooklyn.entity.basic.Lifecycle",
-      "description" : "Actual lifecycle state of the service",
-      "links" : null
-    }, {
-      "name" : "softwareprocess.pid.file",
-      "type" : "java.lang.String",
-      "description" : "PID file",
-      "links" : null
-    }, {
-      "name" : "softwareservice.provisioningLocation",
-      "type" : "brooklyn.location.MachineProvisioningLocation",
-      "description" : "Location used to provision a machine where this is running",
-      "links" : null
-    } ],
-    "effectors" : [ {
-      "name" : "restart",
-      "returnType" : "void",
-      "parameters" : [ ],
-      "description" : "Restart the process/service represented by an entity",
-      "links" : null
-    }, {
-      "name" : "start",
-      "returnType" : "void",
-      "parameters" : [ {
-        "name" : "locations",
-        "type" : "java.lang.Object",
-        "description" : "The location or locations to start in, as a string, a location object, a list of strings, or a list of location objects",
-        "defaultValue" : null
-      } ],
-      "description" : "Start the process/service represented by an entity",
-      "links" : null
-    }, {
-      "name" : "stop",
-      "returnType" : "void",
-      "parameters" : [ ],
-      "description" : "Stop the process/service represented by an entity",
-      "links" : null
-    } ]
-  }, {
-    "type" : "brooklyn.entity.nosql.cassandra.CassandraFabric",
-    "name" : "Apache Cassandra Database Fabric",
-    "description" : "Cassandra is a highly scalable, eventually consistent, distributed, structured key-value store which provides a ColumnFamily-based data model richer than typical key/value systems",
-    "iconUrl" : "classpath:///cassandra-logo.jpeg",
-    "config" : [ {
-      "name" : "cassandra.fabric.datacenter.namer",
-      "type" : "com.google.common.base.Function",
-      "defaultValue" : null,
-      "description" : "Function used to provide the cassandra.replication.datacenterName for a given location",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "dynamiccfabric.memberspec",
-      "type" : "brooklyn.entity.proxying.EntitySpec",
-      "defaultValue" : null,
-      "description" : "entity spec for creating new cluster members",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "dynamicfabric.customChildFlags",
-      "type" : "java.util.Map",
-      "defaultValue" : { },
-      "description" : "Additional flags to be passed to children when they are being created",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "dynamicfabric.displayNamePrefix",
-      "type" : "java.lang.String",
-      "defaultValue" : null,
-      "description" : "Display name prefix, for created children",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "dynamicfabric.displayNameSuffix",
-      "type" : "java.lang.String",
-      "defaultValue" : null,
-      "description" : "Display name suffix, for created children",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "dynamicfabric.factory",
-      "type" : "brooklyn.entity.basic.EntityFactory",
-      "defaultValue" : null,
-      "description" : "factory for creating new cluster members",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "enricher.service_state.children_and_members.quorum.running",
-      "type" : "brooklyn.entity.basic.QuorumCheck",
-      "defaultValue" : "QuorumCheck[require=0,100.0%]",
-      "description" : "Problems check from children actual states (lifecycle), applied by default to members and children, not checking upness, but requiring by default that none are on-fire",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "enricher.service_state.children_and_members.quorum.up",
-      "type" : "brooklyn.entity.basic.QuorumCheck",
-      "defaultValue" : "QuorumCheck[require=1,0.0%]",
-      "description" : "Up check, applied by default to members, requiring at least one present and up",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "fabric.initial.quorumSize",
-      "type" : "java.lang.Integer",
-      "defaultValue" : -1,
-      "description" : "Initial fabric quorum size - number of initial nodes that must have been successfully started to report success (if less than 0, then use a value based on INITIAL_SIZE of clusters)",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "group.members.delegate",
-      "type" : "java.lang.Boolean",
-      "defaultValue" : false,
-      "description" : "Add delegate child entities for members of the group",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "group.members.delegate.nameFormat",
-      "type" : "java.lang.String",
-      "defaultValue" : "%s",
-      "description" : "Delegate members name format string (Use %s for the original entity display name)",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    } ],
-    "sensors" : [ {
-      "name" : "cassandra.cluster.datacenterUsages",
-      "type" : "com.google.common.collect.Multimap",
-      "description" : "Current set of datacenters in use, with nodes in each",
-      "links" : null
-    }, {
-      "name" : "cassandra.cluster.datacenters",
-      "type" : "java.util.Set",
-      "description" : "Current set of datacenters in use",
-      "links" : null
-    }, {
-      "name" : "cassandra.cluster.hostname",
-      "type" : "java.lang.String",
-      "description" : "Hostname to connect to cluster with",
-      "links" : null
-    }, {
-      "name" : "cassandra.cluster.seeds.current",
-      "type" : "java.util.Set",
-      "description" : "Current set of seeds to use to bootstrap the cluster",
-      "links" : null
-    }, {
-      "name" : "cassandra.cluster.seeds.hasPublished",
-      "type" : "java.lang.Boolean",
-      "description" : "Whether we have published any seeds",
-      "links" : null
-    }, {
-      "name" : "cassandra.cluster.thrift.port",
-      "type" : "java.lang.Integer",
-      "description" : "Cassandra Thrift RPC port to connect to cluster with",
-      "links" : null
-    }, {
-      "name" : "fabric.size",
-      "type" : "java.lang.Integer",
-      "description" : "Fabric size",
-      "links" : null
-    }, {
-      "name" : "group.members",
-      "type" : "java.util.Collection",
-      "description" : "Members of the group",
-      "links" : null
-    }, {
-      "name" : "group.members.added",
-      "type" : "brooklyn.entity.Entity",
-      "description" : "Entity added to group members",
-      "links" : null
-    }, {
-      "name" : "group.members.count",
-      "type" : "java.lang.Integer",
-      "description" : "Number of members",
-      "links" : null
-    }, {
-      "name" : "group.members.removed",
-      "type" : "brooklyn.entity.Entity",
-      "description" : "Entity removed from group members",
-      "links" : null
-    }, {
-      "name" : "service.isUp",
-      "type" : "java.lang.Boolean",
-      "description" : "Whether the service is active and availability (confirmed and monitored)",
-      "links" : null
-    }, {
-      "name" : "service.state",
-      "type" : "brooklyn.entity.basic.Lifecycle",
-      "description" : "Actual lifecycle state of the service",
-      "links" : null
-    } ],
-    "effectors" : [ {
-      "name" : "restart",
-      "returnType" : "void",
-      "parameters" : [ ],
-      "description" : "Restart the process/service represented by an entity",
-      "links" : null
-    }, {
-      "name" : "start",
-      "returnType" : "void",
-      "parameters" : [ {
-        "name" : "locations",
-        "type" : "java.lang.Object",
-        "description" : "The location or locations to start in, as a string, a location object, a list of strings, or a list of location objects",
-        "defaultValue" : null
-      } ],
-      "description" : "Start the process/service represented by an entity",
-      "links" : null
-    }, {
-      "name" : "stop",
-      "returnType" : "void",
-      "parameters" : [ ],
-      "description" : "Stop the process/service represented by an entity",
-      "links" : null
-    }, {
-      "name" : "update",
-      "returnType" : "void",
-      "parameters" : [ ],
-      "description" : "Updates the cluster members",
-      "links" : null
-    } ]
-  }, {
-    "type" : "brooklyn.entity.nosql.cassandra.CassandraDatacenter",
-    "name" : "Apache Cassandra Datacenter Cluster",
-    "description" : "Cassandra is a highly scalable, eventually consistent, distributed, structured key-value store which provides a ColumnFamily-based data model richer than typical key/value systems",
-    "iconUrl" : "classpath:///cassandra-logo.jpeg",
-    "config" : [ {
-      "name" : "cassandra.cluster.delayBeforeAdvertisingCluster",
-      "type" : "brooklyn.util.time.Duration",
-      "defaultValue" : "10s",
-      "description" : "Delay after cluster is started before checking and advertising its availability",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "cassandra.cluster.name",
-      "type" : "java.lang.String",
-      "defaultValue" : "BrooklynCluster",
-      "description" : "Name of the Cassandra cluster",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "cassandra.cluster.seedSupplier",
-      "type" : "com.google.common.base.Supplier",
-      "defaultValue" : null,
-      "description" : "For determining the seed nodes",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "cassandra.cluster.snitchName",
-      "type" : "java.lang.String",
-      "defaultValue" : "SimpleSnitch",
-      "description" : "Type of the Cassandra snitch",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "cassandra.cluster.tokenGenerator.class",
-      "type" : "java.lang.Class",
-      "defaultValue" : "class brooklyn.entity.nosql.cassandra.TokenGenerators$PosNeg63TokenGenerator",
-      "description" : "For determining the tokens of nodes",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "cassandra.cluster.tokenShift",
-      "type" : "java.math.BigInteger",
-      "defaultValue" : null,
-      "description" : "Delta applied to all tokens generated for this Cassandra datacenter, useful when configuring multiple datacenters which should be shifted; if not set, a random shift is applied. (Pass 0 to prevent any shift.)",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "cassandra.cluster.useVnodes",
-      "type" : "java.lang.Boolean",
-      "defaultValue" : false,
-      "description" : "Determines whether to use vnodes; if doing so, tokens will not be explicitly assigned to nodes in the cluster",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "cassandra.numTokensPerNode",
-      "type" : "java.lang.Integer",
-      "defaultValue" : 256,
-      "description" : "Number of tokens per node; if using vnodes, should set this to a value like 256; will be overridden to 1 if USE_VNODES==false",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "cluster.initial.quorumSize",
-      "type" : "java.lang.Integer",
-      "defaultValue" : -1,
-      "description" : "Initial cluster quorum size - number of initial nodes that must have been successfully started to report success (if < 0, then use value of INITIAL_SIZE)",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "cluster.initial.size",
-      "type" : "java.lang.Integer",
-      "defaultValue" : 1,
-      "description" : "Initial cluster size",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "dynamiccluster.availabilityZones",
-      "type" : "java.util.Collection",
-      "defaultValue" : null,
-      "description" : "availability zones to use (if non-null, overrides other configuration)",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "dynamiccluster.customChildFlags",
-      "type" : "java.util.Map",
-      "defaultValue" : { },
-      "description" : "Additional flags to be passed to children when they are being created",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "dynamiccluster.factory",
-      "type" : "brooklyn.entity.basic.EntityFactory",
-      "defaultValue" : null,
-      "description" : "factory for creating new cluster members",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "dynamiccluster.memberspec",
-      "type" : "brooklyn.entity.proxying.EntitySpec",
-      "defaultValue" : null,
-      "description" : "entity spec for creating new cluster members",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "dynamiccluster.numAvailabilityZones",
-      "type" : "java.lang.Integer",
-      "defaultValue" : null,
-      "description" : "number of availability zones to use (will attempt to auto-discover this number)",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "dynamiccluster.quarantineFailedEntities",
-      "type" : "java.lang.Boolean",
-      "defaultValue" : true,
-      "description" : "If true, will quarantine entities that fail to start; if false, will get rid of them (i.e. delete them)",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "dynamiccluster.removalstrategy",
-      "type" : "com.google.common.base.Function",
-      "defaultValue" : null,
-      "description" : "strategy for deciding what to remove when down-sizing",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "dynamiccluster.zone.enable",
-      "type" : "java.lang.Boolean",
-      "defaultValue" : false,
-      "description" : "Whether to use availability zones, or just deploy everything into the generic location",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "dynamiccluster.zone.failureDetector",
-      "type" : "brooklyn.entity.group.DynamicCluster$ZoneFailureDetector",
-      "defaultValue" : "brooklyn.entity.group.zoneaware.ProportionalZoneFailureDetector@b7193fc",
-      "description" : "Zone failure detector",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "dynamiccluster.zone.placementStrategy",
-      "type" : "brooklyn.entity.group.DynamicCluster$NodePlacementStrategy",
-      "defaultValue" : "brooklyn.entity.group.zoneaware.BalancingNodePlacementStrategy@37f02eaa",
-      "description" : "Node placement strategy",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "enricher.service_state.children_and_members.quorum.running",
-      "type" : "brooklyn.entity.basic.QuorumCheck",
-      "defaultValue" : "QuorumCheck[require=0,100.0%]",
-      "description" : "Problems check from children actual states (lifecycle), applied by default to members and children, not checking upness, but requiring by default that none are on-fire",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "enricher.service_state.children_and_members.quorum.up",
-      "type" : "brooklyn.entity.basic.QuorumCheck",
-      "defaultValue" : "QuorumCheck[require=1,0.0%]",
-      "description" : "Up check, applied by default to members, requiring at least one present and up",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "group.members.delegate",
-      "type" : "java.lang.Boolean",
-      "defaultValue" : false,
-      "description" : "Add delegate child entities for members of the group",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "group.members.delegate.nameFormat",
-      "type" : "java.lang.String",
-      "defaultValue" : "%s",
-      "description" : "Delegate members name format string (Use %s for the original entity display name)",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    } ],
-    "sensors" : [ {
-      "name" : "cassandra.cluster.datacenterUsages",
-      "type" : "com.google.common.collect.Multimap",
-      "description" : "Current set of datacenters in use, with nodes in each",
-      "links" : null
-    }, {
-      "name" : "cassandra.cluster.datacenters",
-      "type" : "java.util.Set",
-      "description" : "Current set of datacenters in use",
-      "links" : null
-    }, {
-      "name" : "cassandra.cluster.first.node.started.utc",
-      "type" : "java.lang.Long",
-      "description" : "Time (UTC) when the first node was started",
-      "links" : null
-    }, {
-      "name" : "cassandra.cluster.hostname",
-      "type" : "java.lang.String",
-      "description" : "Hostname to connect to cluster with",
-      "links" : null
-    }, {
-      "name" : "cassandra.cluster.metrics.processCpuTime.fraction.perNode",
-      "type" : "java.lang.Double",
-      "description" : "Fraction of CPU time used (percentage reported by JMX), averaged over all nodes",
-      "links" : null
-    }, {
-      "name" : "cassandra.cluster.metrics.processCpuTime.fraction.windowed",
-      "type" : "java.lang.Double",
-      "description" : "Fraction of CPU time used (percentage, over time window), averaged over all nodes",
-      "links" : null
-    }, {
-      "name" : "cassandra.cluster.name",
-      "type" : "java.lang.String",
-      "description" : "Name of the Cassandra cluster",
-      "links" : null
-    }, {
-      "name" : "cassandra.cluster.nodes",
-      "type" : "java.util.List",
-      "description" : "List of host:port of all active nodes in the cluster (thrift port, and public hostname/IP)",
-      "links" : null
-    }, {
-      "name" : "cassandra.cluster.read.active",
-      "type" : "java.lang.Integer",
-      "description" : "Current active ReadStage tasks",
-      "links" : null
-    }, {
-      "name" : "cassandra.cluster.read.pending",
-      "type" : "java.lang.Long",
-      "description" : "Current pending ReadStage tasks",
-      "links" : null
-    }, {
-      "name" : "cassandra.cluster.schema.versions.count",
-      "type" : "java.lang.Integer",
-      "description" : "Number of different schema versions in the cluster; should be 1 for a healthy cluster, 0 when off; 2 and above indicats a Schema Disagreement Error (and keyspace access may fail)",
-      "links" : null
-    }, {
-      "name" : "cassandra.cluster.seeds.current",
-      "type" : "java.util.Set",
-      "description" : "Current set of seeds to use to bootstrap the cluster",
-      "links" : null
-    }, {
-      "name" : "cassandra.cluster.seeds.hasPublished",
-      "type" : "java.lang.Boolean",
-      "description" : "Whether we have published any seeds",
-      "links" : null
-    }, {
-      "name" : "cassandra.cluster.start.nodes.queued",
-      "type" : "java.util.List",
-      "description" : "Nodes queued for starting (for sequential start)",
-      "links" : null
-    }, {
-      "name" : "cassandra.cluster.thrift.latency.perNode",
-      "type" : "java.lang.Long",
-      "description" : "Latency for thrift port connection  averaged over all nodes (ms)",
-      "links" : null
-    }, {
-      "name" : "cassandra.cluster.thrift.port",
-      "type" : "java.lang.Integer",
-      "description" : "Cassandra Thrift RPC port to connect to cluster with",
-      "links" : null
-    }, {
-      "name" : "cassandra.cluster.write.active",
-      "type" : "java.lang.Integer",
-      "description" : "Current active MutationStage tasks",
-      "links" : null
-    }, {
-      "name" : "cassandra.cluster.write.pending",
-      "type" : "java.lang.Long",
-      "description" : "Current pending MutationStage tasks",
-      "links" : null
-    }, {
-      "name" : "cassandra.reads.perSec.last.perNode",
-      "type" : "java.lang.Double",
-      "description" : "Reads/sec (last datapoint) averaged over all nodes",
-      "links" : null
-    }, {
-      "name" : "cassandra.reads.perSec.windowed.perNode",
-      "type" : "java.lang.Double",
-      "description" : "Reads/sec (over time window) averaged over all nodes",
-      "links" : null
-    }, {
-      "name" : "cassandra.thrift.latency.windowed.perNode",
-      "type" : "java.lang.Double",
-      "description" : "Latency for thrift port (ms, over time window) averaged over all nodes",
-      "links" : null
-    }, {
-      "name" : "cassandra.write.perSec.last.perNode",
-      "type" : "java.lang.Double",
-      "description" : "Writes/sec (last datapoint) averaged over all nodes",
-      "links" : null
-    }, {
-      "name" : "cassandra.writes.perSec.windowed.perNode",
-      "type" : "java.lang.Double",
-      "description" : "Writes/sec (over time window) averaged over all nodes",
-      "links" : null
-    }, {
-      "name" : "cluster.entity",
-      "type" : "brooklyn.entity.Entity",
-      "description" : "The cluster an entity is a member of",
-      "links" : null
-    }, {
-      "name" : "cluster.first",
-      "type" : "java.lang.Boolean",
-      "description" : "Set on an entity if it is the first member of a cluster",
-      "links" : null
-    }, {
-      "name" : "cluster.first.entity",
-      "type" : "brooklyn.entity.Entity",
-      "description" : "The first member of the cluster",
-      "links" : null
-    }, {
-      "name" : "cluster.member",
-      "type" : "java.lang.Boolean",
-      "description" : "Set on an entity if it is a member of a cluster",
-      "links" : null
-    }, {
-      "name" : "datastore.url",
-      "type" : "java.lang.String",
-      "description" : "Primary contact URL for a datastore (e.g. mysql://localhost:3306/)",
-      "links" : null
-    }, {
-      "name" : "dynamiccluster.entityQuarantined",
-      "type" : "brooklyn.entity.Entity",
-      "description" : "Entity failed to start, and has been quarantined",
-      "links" : null
-    }, {
-      "name" : "dynamiccluster.failedSubLocations",
-      "type" : "java.util.Set",
-      "description" : "Sub locations that seem to have failed",
-      "links" : null
-    }, {
-      "name" : "dynamiccluster.quarantineGroup",
-      "type" : "brooklyn.entity.group.QuarantineGroup",
-      "description" : "Group of quarantined entities that failed to start",
-      "links" : null
-    }, {
-      "name" : "dynamiccluster.subLocations",
-      "type" : "java.util.List",
-      "description" : "Locations for each availability zone to use",
-      "links" : null
-    }, {
-      "name" : "group.members",
-      "type" : "java.util.Collection",
-      "description" : "Members of the group",
-      "links" : null
-    }, {
-      "name" : "group.members.added",
-      "type" : "brooklyn.entity.Entity",
-      "description" : "Entity added to group members",
-      "links" : null
-    }, {
-      "name" : "group.members.count",
-      "type" : "java.lang.Integer",
-      "description" : "Number of members",
-      "links" : null
-    }, {
-      "name" : "group.members.removed",
-      "type" : "brooklyn.entity.Entity",
-      "description" : "Entity removed from group members",
-      "links" : null
-    }, {
-      "name" : "service.isUp",
-      "type" : "java.lang.Boolean",
-      "description" : "Whether the service is active and availability (confirmed and monitored)",
-      "links" : null
-    }, {
-      "name" : "service.state",
-      "type" : "brooklyn.entity.basic.Lifecycle",
-      "description" : "Actual lifecycle state of the service",
-      "links" : null
-    } ],
-    "effectors" : [ {
-      "name" : "executeScript",
-      "returnType" : "java.lang.String",
-      "parameters" : [ {
-        "name" : "commands",
-        "type" : "java.lang.String",
-        "description" : null,
-        "defaultValue" : null
-      } ],
-      "description" : "executes the given script contents using cassandra-cli",
-      "links" : null
-    }, {
-      "name" : "replaceMember",
-      "returnType" : "java.lang.String",
-      "parameters" : [ {
-        "name" : "memberId",
-        "type" : "java.lang.String",
-        "description" : "The entity id of a member to be replaced",
-        "defaultValue" : null
-      } ],
-      "description" : "Replaces the entity with the given ID, if it is a member; first adds a new member, then removes this one. Returns id of the new entity; or throws exception if couldn't be replaced.",
-      "links" : null
-    }, {
-      "name" : "resize",
-      "returnType" : "java.lang.Integer",
-      "parameters" : [ {
-        "name" : "desiredSize",
-        "type" : "java.lang.Integer",
-        "description" : "The new size of the cluster",
-        "defaultValue" : null
-      } ],
-      "description" : "Changes the size of the entity (e.g. the number of nodes in a cluster)",
-      "links" : null
-    }, {
-      "name" : "resizeByDelta",
-      "returnType" : "java.util.Collection",
-      "parameters" : [ {
-        "name" : "delta",
-        "type" : "int",
-        "description" : "The change in number of nodes",
-        "defaultValue" : null
-      } ],
-      "description" : "Changes the size of the cluster.",
-      "links" : null
-    }, {
-      "name" : "restart",
-      "returnType" : "void",
-      "parameters" : [ ],
-      "description" : "Restart the process/service represented by an entity",
-      "links" : null
-    }, {
-      "name" : "start",
-      "returnType" : "void",
-      "parameters" : [ {
-        "name" : "locations",
-        "type" : "java.lang.Object",
-        "description" : "The location or locations to start in, as a string, a location object, a list of strings, or a list of location objects",
-        "defaultValue" : null
-      } ],
-      "description" : "Start the process/service represented by an entity",
-      "links" : null
-    }, {
-      "name" : "stop",
-      "returnType" : "void",
-      "parameters" : [ ],
-      "description" : "Stop the process/service represented by an entity",
-      "links" : null
-    }, {
-      "name" : "update",
-      "returnType" : "void",
-      "parameters" : [ ],
-      "description" : "Updates the cluster members",
-      "links" : null
-    } ]
-  }, {
-    "type" : "brooklyn.entity.nosql.cassandra.CassandraNode",
-    "defaultVersion" : "1.2.16",
-    "name" : "Apache Cassandra Node",
-    "description" : "Cassandra is a highly scalable, eventually consistent, distributed, structured key-value store which provides a ColumnFamily-based data model richer than typical key/value systems",
-    "iconUrl" : "classpath:///cassandra-logo.jpeg",
-    "config" : [ {
-      "name" : "cassandra.broadcastAddressSensor",
-      "type" : "java.lang.String",
-      "defaultValue" : null,
-      "description" : "sensor name from which to take the broadcast address; default (null) is a smart lookup",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "cassandra.cluster.name",
-      "type" : "java.lang.String",
-      "defaultValue" : "BrooklynCluster",
-      "description" : "Name of the Cassandra cluster",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "cassandra.cluster.seeds.initial",
-      "type" : "java.util.Set",
-      "defaultValue" : null,
-      "description" : "List of cluster nodes to seed this node",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "cassandra.cluster.snitchName",
-      "type" : "java.lang.String",
-      "defaultValue" : "SimpleSnitch",
-      "description" : "Type of the Cassandra snitch",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "cassandra.config.customSnitchUrl",
-      "type" : "java.lang.String",
-      "defaultValue" : null,
-      "description" : "URL for a jar file to be uploaded (e.g. \"classpath://brooklyn/entity/nosql/cassandra/cassandra-multicloud-snitch.jar\"); defaults to null which means nothing to upload",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "cassandra.config.fileName",
-      "type" : "java.lang.String",
-      "defaultValue" : "cassandra.yaml",
-      "description" : "Name for the copied config file",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "cassandra.config.rackdc.fileName",
-      "type" : "java.lang.String",
-      "defaultValue" : "cassandra-rackdc.properties",
-      "description" : "Name for the copied rackdc config file (used for configuring replication, when a suitable snitch is used)",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "cassandra.config.rackdc.templateUrl",
-      "type" : "java.lang.String",
-      "defaultValue" : "classpath://brooklyn/entity/nosql/cassandra/cassandra-rackdc.properties",
-      "description" : "Template file (in freemarker format) for the cassandra-rackdc.properties config file",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "cassandra.config.templateUrl",
-      "type" : "java.lang.String",
-      "defaultValue" : "classpath://brooklyn/entity/nosql/cassandra/cassandra-${entity.majorMinorVersion}.yaml",
-      "description" : "A URL (in freemarker format) for a cassandra.yaml config file (in freemarker format)",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "cassandra.gossip.port",
-      "type" : "brooklyn.location.PortRange",
-      "defaultValue" : "7000-65535",
-      "description" : "Cassandra Gossip communications port",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "cassandra.install.mirror.url",
-      "type" : "java.lang.String",
-      "defaultValue" : "http://www.mirrorservice.org/sites/ftp.apache.org/cassandra",
-      "description" : "URL of mirror",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "cassandra.install.tgzUrl",
-      "type" : "java.lang.String",
-      "defaultValue" : null,
-      "description" : "URL of TGZ download file",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "cassandra.listenAddressSensor",
-      "type" : "java.lang.String",
-      "defaultValue" : null,
-      "description" : "sensor name from which to take the listen address; default (null) is a smart lookup",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "cassandra.native.port",
-      "type" : "brooklyn.location.PortRange",
-      "defaultValue" : "9042-65535",
-      "description" : "Cassandra Native Transport port",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "cassandra.numTokensPerNode",
-      "type" : "java.lang.Integer",
-      "defaultValue" : 1,
-      "description" : "Number of tokens per node; if using vnodes, should set this to a value like 256",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "cassandra.replication.datacenterName",
-      "type" : "java.lang.String",
-      "defaultValue" : null,
-      "description" : "Datacenter name (used for configuring replication, when a suitable snitch is used)",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "cassandra.replication.rackName",
-      "type" : "java.lang.String",
-      "defaultValue" : null,
-      "description" : "Rack name (used for configuring replication, when a suitable snitch is used)",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "cassandra.rpcAddressSensor",
-      "type" : "java.lang.String",
-      "defaultValue" : null,
-      "description" : "sensor name from which to take the RPC address; default (null) is 0.0.0.0",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "cassandra.ssl-gossip.port",
-      "type" : "brooklyn.location.PortRange",
-      "defaultValue" : "7001-65535",
-      "description" : "Cassandra Gossip SSL communications port",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "cassandra.thrift.port",
-      "type" : "brooklyn.location.PortRange",
-      "defaultValue" : "9160-65535",
-      "description" : "Cassandra Thrift RPC port",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "cassandra.token",
-      "type" : "java.math.BigInteger",
-      "defaultValue" : null,
-      "description" : "Cassandra Token",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "cassandra.tokens",
-      "type" : "java.util.Set",
-      "defaultValue" : null,
-      "description" : "Cassandra Tokens",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "children.startable.mode",
-      "type" : "java.lang.Enum",
-      "defaultValue" : null,
-      "description" : "children.startable.mode",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : [ {
-        "value" : "NONE",
-        "description" : "NONE"
-      }, {
-        "value" : "FOREGROUND",
-        "description" : "FOREGROUND"
-      }, {
-        "value" : "FOREGROUND_LATE",
-        "description" : "FOREGROUND_LATE"
-      }, {
-        "value" : "BACKGROUND",
-        "description" : "BACKGROUND"
-      }, {
-        "value" : "BACKGROUND_LATE",
-        "description" : "BACKGROUND_LATE"
-      } ],
-      "links" : null
-    }, {
-      "name" : "customize.latch",
-      "type" : "java.lang.Boolean",
-      "defaultValue" : null,
-      "description" : "Latch for blocking customize until ready",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "datastore.creation.script.contents",
-      "type" : "java.lang.String",
-      "defaultValue" : "",
-      "description" : "Contensts of creation script to initialize the datastore",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "datastore.creation.script.url",
-      "type" : "java.lang.String",
-      "defaultValue" : "",
-      "description" : "URL of creation script to use to initialize the datastore (ignored if contents are specified)",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "download.addon.urls",
-      "type" : "java.util.Map",
-      "defaultValue" : null,
-      "description" : "URL patterns for downloading named add-ons (will substitute things like ${version} automatically)",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "download.url",
-      "type" : "java.lang.String",
-      "defaultValue" : "${driver.mirrorUrl}/${version}/apache-cassandra-${version}-bin.tar.gz",
-      "description" : "URL pattern for downloading the installer (will substitute things like ${version} automatically)",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "expandedinstall.dir",
-      "type" : "java.lang.String",
-      "defaultValue" : null,
-      "description" : "Directory for installed artifacts (e.g. expanded dir after unpacking .tgz)",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "files.runtime",
-      "type" : "java.util.Map",
-      "defaultValue" : null,
-      "description" : "Map of files to be copied, keyed by destination name relative to runDir",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "install.dir",
-      "type" : "java.lang.String",
-      "defaultValue" : "${config['onbox.base.dir']!config['brooklyn.datadir']!'/<ERROR>-ONBOX_BASE_DIR-not-set'}/installs/${(config['install.unique_label']??)?string(config['install.unique_label']!'X',(entity.entityType.simpleName)+((config['install.version']??)?string('_'+(config['install.version']!'X'),'')))}",
-      "description" : "Directory for this software to be installed in",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "install.latch",
-      "type" : "java.lang.Boolean",
-      "defaultValue" : null,
-      "description" : "Latch for blocking install until ready",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "install.skip",
-      "type" : "java.lang.Boolean",
-      "defaultValue" : false,
-      "description" : "Skip the driver install commands entirely, for pre-installed software",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "install.unique_label",
-      "type" : "java.lang.String",
-      "defaultValue" : null,
-      "description" : "Provides a label which uniquely identifies an installation, used in the computation of the install dir; this should include something readable, and must include a hash of all data which differentiates an installation (e.g. version, plugins, etc), but should be the same where install dirs can be shared to allow for re-use",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "install.version",
-      "type" : "java.lang.String",
-      "defaultValue" : "1.2.16",
-      "description" : "Suggested version",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "java.check.hostname.bug",
-      "type" : "java.lang.Boolean",
-      "defaultValue" : true,
-      "description" : "Check whether hostname is too long and will likely crash Javadue to bug 7089443",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "java.metrics.mxbeanStatsEnabled",
-      "type" : "java.lang.Boolean",
-      "defaultValue" : true,
-      "description" : "Enables collection of JVM stats from the MXBeans, such as memory and thread usage (default is true)",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "java.opts",
-      "type" : "java.util.Set",
-      "defaultValue" : [ ],
-      "description" : "Java command line options",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "java.sysprops",
-      "type" : "java.util.Map",
-      "defaultValue" : { },
-      "description" : "Java command line system properties",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "jmx.agent.mode",
-      "type" : "java.lang.Enum",
-      "defaultValue" : "JMXMP_AND_RMI",
-      "description" : "What type of JMX agent to use; defaults to null (autodetect) which means JMXMP_AND_RMI allowing firewall access through a single port as well as local access supporting jconsole (unless JMX_SSL_ENABLED is set, in which case it is JMXMP only)",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : [ {
-        "value" : "AUTODETECT",
-        "description" : "AUTODETECT"
-      }, {
-        "value" : "JMXMP",
-        "description" : "JMXMP"
-      }, {
-        "value" : "JMXMP_AND_RMI",
-        "description" : "JMXMP_AND_RMI"
-      }, {
-        "value" : "JMX_RMI_CUSTOM_AGENT",
-        "description" : "JMX_RMI_CUSTOM_AGENT"
-      }, {
-        "value" : "JMX_RMI",
-        "description" : "JMX_RMI"
-      }, {
-        "value" : "NONE",
-        "description" : "NONE"
-      } ],
-      "links" : null
-    }, {
-      "name" : "jmx.context",
-      "type" : "java.lang.String",
-      "defaultValue" : "jmxrmi",
-      "description" : "JMX context path",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "jmx.direct.port",
-      "type" : "brooklyn.location.PortRange",
-      "defaultValue" : "31001-65535",
-      "description" : "JMX direct/private port (e.g. JMX RMI server port, or JMXMP port, but not RMI registry port)",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "jmx.enabled",
-      "type" : "java.lang.Boolean",
-      "defaultValue" : true,
-      "description" : "JMX enabled",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "jmx.password",
-      "type" : "java.lang.String",
-      "defaultValue" : null,
-      "description" : "JMX password",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "jmx.ssl.access.cert",
-      "type" : "java.security.cert.Certificate",
-      "defaultValue" : null,
-      "description" : "certificate of key used to access a JMX agent",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "jmx.ssl.access.key",
-      "type" : "java.security.PrivateKey",
-      "defaultValue" : null,
-      "description" : "key used to access a JMX agent (typically per entity, embedded in the managed JVM)",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "jmx.ssl.enabled",
-      "type" : "java.lang.Boolean",
-      "defaultValue" : false,
-      "description" : "JMX over JMXMP enabled with SSL/TLS",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "jmx.user",
-      "type" : "java.lang.String",
-      "defaultValue" : null,
-      "description" : "JMX username",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "launch.latch",
-      "type" : "java.lang.Boolean",
-      "defaultValue" : null,
-      "description" : "Latch for blocking launch until ready",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "post.install.command",
-      "type" : "java.lang.String",
-      "defaultValue" : null,
-      "description" : "Command to be run after the install method being called on the driver",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "post.launch.command",
-      "type" : "java.lang.String",
-      "defaultValue" : null,
-      "description" : "Command to be run after the launch method being called on the driver",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "pre.install.command",
-      "type" : "java.lang.String",
-      "defaultValue" : null,
-      "description" : "Command to be run prior to the install method being called on the driver",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "pre.launch.command",
-      "type" : "java.lang.String",
-      "defaultValue" : null,
-      "description" : "Command to be run prior to the launch method being called on the driver",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "provisioning.properties",
-      "type" : "java.util.Map",
-      "defaultValue" : { },
-      "description" : "Custom properties to be passed in when provisioning a new machine",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "resources.latch",
-      "type" : "java.lang.Boolean",
-      "defaultValue" : null,
-      "description" : "Latch for blocking resources until ready",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "rmi.registry.port",
-      "type" : "brooklyn.location.PortRange",
-      "defaultValue" : "7199",
-      "description" : "RMI registry port, used for discovering JMX (private) port",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "run.dir",
-      "type" : "java.lang.String",
-      "defaultValue" : "${config['onbox.base.dir']!config['brooklyn.datadir']!'/<ERROR>-ONBOX_BASE_DIR-not-set'}/apps/${entity.applicationId}/entities/${entity.entityType.simpleName}_${entity.id}",
-      "description" : "Directory for this software to be run from",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "setup.latch",
-      "type" : "java.lang.Boolean",
-      "defaultValue" : null,
-      "description" : "Latch for blocking setup until ready",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "shell.env",
-      "type" : "java.util.Map",
-      "defaultValue" : { },
-      "description" : "Map of environment variables to pass to the runtime shell",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "softwareProcess.maxSensorRebindDelay",
-      "type" : "brooklyn.util.time.Duration",
-      "defaultValue" : "10s",
-      "description" : "The maximum delay to apply when reconnecting sensors when rebinding to this entity. Brooklyn will wait a random amount of time, up to the value of this config key, to avoid a thundering herd problem when the entity shares its machine with several others. Set to null or to 0 to disable any delay.",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "start.latch",
-      "type" : "java.lang.Boolean",
-      "defaultValue" : null,
-      "description" : "Latch for blocking start until ready",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "start.timeout",
-      "type" : "brooklyn.util.time.Duration",
-      "defaultValue" : "5m",
-      "description" : "Time to wait for process and for SERVICE_UP before failing (in seconds, default 2m)",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "templates.runtime",
-      "type" : "java.util.Map",
-      "defaultValue" : null,
-      "description" : "Map of templates to be filled in and copied, keyed by destination name relative to runDir",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    } ],
-    "sensors" : [ {
-      "name" : "cassandra.cluster.name",
-      "type" : "java.lang.String",
-      "description" : "Name of the Cassandra cluster",
-      "links" : null
-    }, {
-      "name" : "cassandra.gossip.port",
-      "type" : "java.lang.Integer",
-      "description" : "Cassandra Gossip communications port",
-      "links" : null
-    }, {
-      "name" : "cassandra.liveNodeCount",
-      "type" : "java.lang.Integer",
-      "description" : "Number of live nodes in cluster",
-      "links" : null
-    }, {
-      "name" : "cassandra.native.port",
-      "type" : "java.lang.Integer",
-      "description" : "Cassandra Native Transport port",
-      "links" : null
-    }, {
-      "name" : "cassandra.peers",
-      "type" : "java.lang.Integer",
-      "description" : "Number of peers in cluster",
-      "links" : null
-    }, {
-      "name" : "cassandra.read.active",
-      "type" : "java.lang.Integer",
-      "description" : "Current active ReadStage tasks",
-      "links" : null
-    }, {
-      "name" : "cassandra.read.completed",
-      "type" : "java.lang.Long",
-      "description" : "Total completed ReadStage tasks",
-      "links" : null
-    }, {
-      "name" : "cassandra.read.pending",
-      "type" : "java.lang.Long",
-      "description" : "Current pending ReadStage tasks",
-      "links" : null
-    }, {
-      "name" : "cassandra.reads.perSec.last",
-      "type" : "java.lang.Double",
-      "description" : "Reads/sec (last datapoint)",
-      "links" : null
-    }, {
-      "name" : "cassandra.reads.perSec.windowed",
-      "type" : "java.lang.Double",
-      "description" : "Reads/sec (over time window)",
-      "links" : null
-    }, {
-      "name" : "cassandra.replication.datacenterName",
-      "type" : "java.lang.String",
-      "description" : "Datacenter name (used for configuring replication, when a suitable snitch is used)",
-      "links" : null
-    }, {
-      "name" : "cassandra.replication.rackName",
-      "type" : "java.lang.String",
-      "description" : "Rack name (used for configuring replication, when a suitable snitch is used)",
-      "links" : null
-    }, {
-      "name" : "cassandra.service.jmx.up",
-      "type" : "java.lang.Boolean",
-      "description" : "Whether JMX is up for this service",
-      "links" : null
-    }, {
-      "name" : "cassandra.ssl-gossip.port",
-      "type" : "java.lang.Integer",
-      "description" : "Cassandra Gossip SSL communications port",
-      "links" : null
-    }, {
-      "name" : "cassandra.thrift.latency",
-      "type" : "java.lang.Long",
-      "description" : "Latency for thrift port connection (ms) or null if down",
-      "links" : null
-    }, {
-      "name" : "cassandra.thrift.latency.windowed",
-      "type" : "java.lang.Double",
-      "description" : "Latency for thrift port (ms, averaged over time window)",
-      "links" : null
-    }, {
-      "name" : "cassandra.thrift.port",
-      "type" : "java.lang.Integer",
-      "description" : "Cassandra Thrift RPC port",
-      "links" : null
-    }, {
-      "name" : "cassandra.token",
-      "type" : "java.math.BigInteger",
-      "description" : "Cassandra Token",
-      "links" : null
-    }, {
-      "name" : "cassandra.tokens",
-      "type" : "java.util.Set",
-      "description" : "Cassandra Tokens",
-      "links" : null
-    }, {
-      "name" : "cassandra.write.active",
-      "type" : "java.lang.Integer",
-      "description" : "Current active MutationStage tasks",
-      "links" : null
-    }, {
-      "name" : "cassandra.write.completed",
-      "type" : "java.lang.Long",
-      "description" : "Total completed MutationStage tasks",
-      "links" : null
-    }, {
-      "name" : "cassandra.write.pending",
-      "type" : "java.lang.Long",
-      "description" : "Current pending MutationStage tasks",
-      "links" : null
-    }, {
-      "name" : "cassandra.write.perSec.last",
-      "type" : "java.lang.Double",
-      "description" : "Writes/sec (last datapoint)",
-      "links" : null
-    }, {
-      "name" : "cassandra.writes.perSec.windowed",
-      "type" : "java.lang.Double",
-      "description" : "Writes/sec (over time window)",
-      "links" : null
-    }, {
-      "name" : "datastore.url",
-      "type" : "java.lang.String",
-      "description" : "Primary contact URL for a datastore (e.g. mysql://localhost:3306/)",
-      "links" : null
-    }, {
-      "name" : "download.addon.urls",
-      "type" : "java.util.Map",
-      "description" : "URL patterns for downloading named add-ons (will substitute things like ${version} automatically)",
-      "links" : null
-    }, {
-      "name" : "download.url",
-      "type" : "java.lang.String",
-      "description" : "URL pattern for downloading the installer (will substitute things like ${version} automatically)",
-      "links" : null
-    }, {
-      "name" : "expandedinstall.dir",
-      "type" : "java.lang.String",
-      "description" : "Directory for installed artifacts (e.g. expanded dir after unpacking .tgz)",
-      "links" : null
-    }, {
-      "name" : "host.address",
-      "type" : "java.lang.String",
-      "description" : "Host IP address",
-      "links" : null
-    }, {
-      "name" : "host.name",
-      "type" : "java.lang.String",
-      "description" : "Host name",
-      "links" : null
-    }, {
-      "name" : "host.subnet.address",
-      "type" : "java.lang.String",
-      "description" : "Host address as known internally in the subnet where it is running (if different to host.name)",
-      "links" : null
-    }, {
-      "name" : "host.subnet.hostname",
-      "type" : "java.lang.String",
-      "description" : "Host name as known internally in the subnet where it is running (if different to host.name)",
-      "links" : null
-    }, {
-      "name" : "install.dir",
-      "type" : "java.lang.String",
-      "description" : "Directory for this software to be installed in",
-      "links" : null
-    }, {
-      "name" : "java.metrics.gc.time",
-      "type" : "java.util.Map",
-      "description" : "garbage collection time",
-      "links" : null
-    }, {
-      "name" : "java.metrics.heap.committed",
-      "type" : "java.lang.Long",
-      "description" : "Commited heap size (bytes)",
-      "links" : null
-    }, {
-      "name" : "java.metrics.heap.init",
-      "type" : "java.lang.Long",
-      "description" : "Initial heap size (bytes)",
-      "links" : null
-    }, {
-      "name" : "java.metrics.heap.max",
-      "type" : "java.lang.Long",
-      "description" : "Max heap size (bytes)",
-      "links" : null
-    }, {
-      "name" : "java.metrics.heap.used",
-      "type" : "java.lang.Long",
-      "description" : "Current heap size (bytes)",
-      "links" : null
-    }, {
-      "name" : "java.metrics.nonheap.used",
-      "type" : "java.lang.Long",
-      "description" : "Current non-heap size (bytes)",
-      "links" : null
-    }, {
-      "name" : "java.metrics.physicalmemory.free",
-      "type" : "java.lang.Long",
-      "description" : "The free memory available to the operating system",
-      "links" : null
-    }, {
-      "name" : "java.metrics.physicalmemory.total",
-      "type" : "java.lang.Long",
-      "description" : "The physical memory available to the operating system",
-      "links" : null
-    }, {
-      "name" : "java.metrics.processCpuTime.fraction.last",
-      "type" : "java.lang.Double",
-      "description" : "Fraction of CPU time used, reported by JVM (percentage, last datapoint)",
-      "links" : null
-    }, {
-      "name" : "java.metrics.processCpuTime.fraction.windowed",
-      "type" : "java.lang.Double",
-      "description" : "Fraction of CPU time used, reported by JVM (percentage, over time window)",
-      "links" : null
-    }, {
-      "name" : "java.metrics.processCpuTime.total",
-      "type" : "java.lang.Double",
-      "description" : "Process CPU time (total millis since start)",
-      "links" : null
-    }, {
-      "name" : "java.metrics.processors.available",
-      "type" : "java.lang.Integer",
-      "description" : "number of processors available to the Java virtual machine",
-      "links" : null
-    }, {
-      "name" : "java.metrics.starttime",
-      "type" : "java.lang.Long",
-      "description" : "Start time of Java process (UTC)",
-      "links" : null
-    }, {
-      "name" : "java.metrics.systemload.average",
-      "type" : "java.lang.Double",
-      "description" : "average system load",
-      "links" : null
-    }, {
-      "name" : "java.metrics.threads.current",
-      "type" : "java.lang.Integer",
-      "description" : "Current number of threads",
-      "links" : null
-    }, {
-      "name" : "java.metrics.threads.max",
-      "type" : "java.lang.Integer",
-      "description" : "Peak number of threads",
-      "links" : null
-    }, {
-      "name" : "java.metrics.uptime",
-      "type" : "java.lang.Long",
-      "description" : "Uptime of Java process (millis, elapsed since start)",
-      "links" : null
-    }, {
-      "name" : "jmx.context",
-      "type" : "java.lang.String",
-      "description" : "JMX context path",
-      "links" : null
-    }, {
-      "name" : "jmx.direct.port",
-      "type" : "java.lang.Integer",
-      "description" : "JMX direct/private port (e.g. JMX RMI server port, or JMXMP port, but not RMI registry port)",
-      "links" : null
-    }, {
-      "name" : "jmx.password",
-      "type" : "java.lang.String",
-      "description" : "JMX password",
-      "links" : null
-    }, {
-      "name" : "jmx.service.url",
-      "type" : "java.lang.String",
-      "description" : "The URL for connecting to the MBean Server",
-      "links" : null
-    }, {
-      "name" : "jmx.user",
-      "type" : "java.lang.String",
-      "description" : "JMX username",
-      "links" : null
-    }, {
-      "name" : "rmi.registry.port",
-      "type" : "java.lang.Integer",
-      "description" : "RMI registry port, used for discovering JMX (private) port",
-      "links" : null
-    }, {
-      "name" : "run.dir",
-      "type" : "java.lang.String",
-      "description" : "Directory for this software to be run from",
-      "links" : null
-    }, {
-      "name" : "service.isUp",
-      "type" : "java.lang.Boolean",
-      "description" : "Whether the service is active and availability (confirmed and monitored)",
-      "links" : null
-    }, {
-      "name" : "service.process.isRunning",
-      "type" : "java.lang.Boolean",
-      "description" : "Whether the process for the service is confirmed as running",
-      "links" : null
-    }, {
-      "name" : "service.state",
-      "type" : "brooklyn.entity.basic.Lifecycle",
-      "description" : "Actual lifecycle state of the service",
-      "links" : null
-    }, {
-      "name" : "softwareprocess.pid.file",
-      "type" : "java.lang.String",
-      "description" : "PID file",
-      "links" : null
-    }, {
-      "name" : "softwareservice.provisioningLocation",
-      "type" : "brooklyn.location.MachineProvisioningLocation",
-      "description" : "Location used to provision a machine where this is running",
-      "links" : null
-    } ],
-    "effectors" : [ {
-      "name" : "executeScript",
-      "returnType" : "java.lang.String",
-      "parameters" : [ {
-        "name" : "commands",
-        "type" : "java.lang.String",
-        "description" : null,
-        "defaultValue" : null
-      } ],
-      "description" : "executes the given script contents using cassandra-cli",
-      "links" : null
-    }, {
-      "name" : "restart",
-      "returnType" : "void",
-      "parameters" : [ ],
-      "description" : "Restart the process/service represented by an entity",
-      "links" : null
-    }, {
-      "name" : "start",
-      "returnType" : "void",
-      "parameters" : [ {
-        "name" : "locations",
-        "type" : "java.lang.Object",
-        "description" : "The location or locations to start in, as a string, a location object, a list of strings, or a list of location objects",
-        "defaultValue" : null
-      } ],
-      "description" : "Start the process/service represented by an entity",
-      "links" : null
-    }, {
-      "name" : "stop",
-      "returnType" : "void",
-      "parameters" : [ ],
-      "description" : "Stop the process/service represented by an entity",
-      "links" : null
-    } ]
-  }, {
-    "type" : "brooklyn.entity.nosql.solr.SolrServer",
-    "defaultVersion" : "4.7.0",
-    "name" : "Apache Solr Node",
-    "description" : "Solr is the popular, blazing fast open source enterprise search platform from the Apache Lucene project.",
-    "iconUrl" : "classpath:///solr-logo.jpeg",
-    "config" : [ {
-      "name" : "children.startable.mode",
-      "type" : "java.lang.Enum",
-      "defaultValue" : null,
-      "description" : "children.startable.mode",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : [ {
-        "value" : "NONE",
-        "description" : "NONE"
-      }, {
-        "value" : "FOREGROUND",
-        "description" : "FOREGROUND"
-      }, {
-        "value" : "FOREGROUND_LATE",
-        "description" : "FOREGROUND_LATE"
-      }, {
-        "value" : "BACKGROUND",
-        "description" : "BACKGROUND"
-      }, {
-        "value" : "BACKGROUND_LATE",
-        "description" : "BACKGROUND_LATE"
-      } ],
-      "links" : null
-    }, {
-      "name" : "customize.latch",
-      "type" : "java.lang.Boolean",
-      "defaultValue" : null,
-      "description" : "Latch for blocking customize until ready",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "download.addon.urls",
-      "type" : "java.util.Map",
-      "defaultValue" : null,
-      "description" : "URL patterns for downloading named add-ons (will substitute things like ${version} automatically)",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "download.url",
-      "type" : "java.lang.String",
-      "defaultValue" : "${driver.mirrorUrl}/${version}/solr-${version}.tgz",
-      "description" : "URL pattern for downloading the installer (will substitute things like ${version} automatically)",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "expandedinstall.dir",
-      "type" : "java.lang.String",
-      "defaultValue" : null,
-      "description" : "Directory for installed artifacts (e.g. expanded dir after unpacking .tgz)",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "files.runtime",
-      "type" : "java.util.Map",
-      "defaultValue" : null,
-      "description" : "Map of files to be copied, keyed by destination name relative to runDir",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "install.dir",
-      "type" : "java.lang.String",
-      "defaultValue" : "${config['onbox.base.dir']!config['brooklyn.datadir']!'/<ERROR>-ONBOX_BASE_DIR-not-set'}/installs/${(config['install.unique_label']??)?string(config['install.unique_label']!'X',(entity.entityType.simpleName)+((config['install.version']??)?string('_'+(config['install.version']!'X'),'')))}",
-      "description" : "Direc

<TRUNCATED>

[18/19] incubator-brooklyn git commit: This closes #524

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


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

Branch: refs/heads/master
Commit: 237c7e6baa5411cd44143d506f3135d17aa05261
Parents: cf42763 29326f9
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Wed Apr 8 10:17:31 2015 +0100
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Wed Apr 8 10:17:31 2015 +0100

----------------------------------------------------------------------
 docs/_plugins/site_structure.rb                 |    16 +-
 docs/index.md                                   |    19 -
 docs/style/css/catalog_items.css                |   153 +
 docs/style/js/catalog/bloodhound.js             |   727 +
 docs/style/js/catalog/common.js                 |    94 +
 docs/style/js/catalog/items.json                | 24674 +++++++++++++++++
 .../website/learnmore/catalog/catalog-item.html |   136 +
 docs/website/learnmore/catalog/common.js        |    94 -
 .../brooklyn.enricher.DeltaEnricher.html        |    59 -
 .../brooklyn.enricher.HttpLatencyDetector.html  |    59 -
 .../brooklyn.enricher.RollingMeanEnricher.html  |    59 -
 ....enricher.RollingTimeWindowMeanEnricher.html |    59 -
 ...klyn.enricher.TimeFractionDeltaEnricher.html |    59 -
 ...klyn.enricher.TimeWeightedDeltaEnricher.html |    59 -
 .../brooklyn.enricher.basic.Aggregator.html     |    59 -
 .../brooklyn.enricher.basic.Combiner.html       |    59 -
 .../brooklyn.enricher.basic.Propagator.html     |    59 -
 .../brooklyn.enricher.basic.Transformer.html    |    59 -
 ...ooklyn.policy.ha.ServiceFailureDetector.html |    59 -
 ...lyn.entity.basic.VanillaSoftwareProcess.html |    66 -
 ...ntity.brooklynnode.BrooklynEntityMirror.html |    66 -
 ...ooklyn.entity.brooklynnode.BrooklynNode.html |    66 -
 ...lyn.entity.database.mariadb.MariaDbNode.html |    66 -
 ...rooklyn.entity.database.mysql.MySqlNode.html |    66 -
 ...tity.database.postgresql.PostgreSqlNode.html |    66 -
 ...lyn.entity.database.rubyrep.RubyRepNode.html |    66 -
 .../brooklyn.entity.machine.MachineEntity.html  |    66 -
 ...ntity.messaging.activemq.ActiveMQBroker.html |    66 -
 ...lyn.entity.messaging.kafka.KafkaCluster.html |    66 -
 ...ooklyn.entity.messaging.qpid.QpidBroker.html |    66 -
 ...yn.entity.messaging.rabbit.RabbitBroker.html |    66 -
 .../brooklyn.entity.messaging.storm.Storm.html  |    66 -
 ....entity.messaging.storm.StormDeployment.html |    66 -
 ...oklyn.entity.monitoring.monit.MonitNode.html |    66 -
 ...oklyn.entity.network.bind.BindDnsServer.html |    66 -
 ...ity.nosql.cassandra.CassandraDatacenter.html |    66 -
 ....entity.nosql.cassandra.CassandraFabric.html |    66 -
 ...yn.entity.nosql.cassandra.CassandraNode.html |    66 -
 ...entity.nosql.couchbase.CouchbaseCluster.html |    66 -
 ...yn.entity.nosql.couchbase.CouchbaseNode.html |    66 -
 ...ooklyn.entity.nosql.couchdb.CouchDBNode.html |    66 -
 ...osql.elasticsearch.ElasticSearchCluster.html |    66 -
 ...y.nosql.elasticsearch.ElasticSearchNode.html |    66 -
 ...klyn.entity.nosql.mongodb.MongoDBServer.html |    66 -
 ...ty.nosql.mongodb.sharding.MongoDBRouter.html |    66 -
 ...ngodb.sharding.MongoDBShardedDeployment.html |    66 -
 ...rooklyn.entity.nosql.redis.RedisCluster.html |    66 -
 .../brooklyn.entity.nosql.redis.RedisStore.html |    66 -
 .../brooklyn.entity.nosql.riak.RiakCluster.html |    66 -
 .../brooklyn.entity.nosql.riak.RiakNode.html    |    66 -
 .../brooklyn.entity.nosql.solr.SolrServer.html  |    66 -
 ...ooklyn.entity.osgi.karaf.KarafContainer.html |    66 -
 .../brooklyn.entity.pool.ServerPool.html        |    66 -
 ...klyn.entity.proxy.nginx.NginxController.html |    66 -
 ...y.webapp.ControlledDynamicWebAppCluster.html |    66 -
 ...klyn.entity.webapp.DynamicWebAppCluster.html |    66 -
 ...ooklyn.entity.webapp.jboss.JBoss6Server.html |    66 -
 ...ooklyn.entity.webapp.jboss.JBoss7Server.html |    66 -
 ...ooklyn.entity.webapp.jetty.Jetty6Server.html |    66 -
 ...ntity.webapp.nodejs.NodeJsWebAppService.html |    66 -
 ...oklyn.entity.webapp.tomcat.TomcatServer.html |    66 -
 ...klyn.entity.zookeeper.ZooKeeperEnsemble.html |    66 -
 ...brooklyn.entity.zookeeper.ZooKeeperNode.html |    66 -
 docs/website/learnmore/catalog/index.html       |   163 +
 docs/website/learnmore/catalog/index.md         |   131 -
 docs/website/learnmore/catalog/items.css        |   153 -
 docs/website/learnmore/catalog/items.js         | 24674 -----------------
 .../learnmore/catalog/libs/js/bloodhound.js     |   727 -
 ...lyn.policy.autoscaling.AutoScalerPolicy.html |    59 -
 ....policy.followthesun.FollowTheSunPolicy.html |    59 -
 ...lyn.policy.ha.ConnectionFailureDetector.html |    59 -
 .../brooklyn.policy.ha.ServiceReplacer.html     |    59 -
 .../brooklyn.policy.ha.ServiceRestarter.html    |    59 -
 ...olicy.loadbalancing.LoadBalancingPolicy.html |    59 -
 74 files changed, 25960 insertions(+), 29708 deletions(-)
----------------------------------------------------------------------



[05/19] incubator-brooklyn git commit: Catalog items Load an entity using one html file

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cbe6f8e6/docs/website/learnmore/catalog/entities/brooklyn.entity.webapp.DynamicWebAppCluster.html
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/entities/brooklyn.entity.webapp.DynamicWebAppCluster.html b/docs/website/learnmore/catalog/entities/brooklyn.entity.webapp.DynamicWebAppCluster.html
deleted file mode 100644
index 046604f..0000000
--- a/docs/website/learnmore/catalog/entities/brooklyn.entity.webapp.DynamicWebAppCluster.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-  <head>
-    <title>Brooklyn Entity - Dynamic Web-app Cluster</title>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
-    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
-    <link rel="stylesheet" href="../items.css" type="text/css" media="screen"/>
-  </head>
-  <body>
-    <div id="container">
-      <div id="header">
-        <div id="identity">
-          <a href="http://brooklyncentral.github.com/" rel="home">Brooklyn</a>
-        </div>
-      </div>
-
-      <div id="summary"></div>
-
-      <ul class="nav nav-tabs">
-        <li class="active"><a href="#configKeys" data-toggle="tab">Config Keys</a></li>
-        <li><a href="#sensors" data-toggle="tab">Sensors</a></li>
-        <li><a href="#effectors" data-toggle="tab">Effectors</a></li>
-      </ul>
-
-      <div class="tab-content">
-        <div class="tab-pane active" id="configKeys"></div>
-        <div class="tab-pane" id="sensors"></div>
-        <div class="tab-pane" id="effectors"></div>
-      </div>
-    </div>
-
-    <script src="../../../style/js/underscore-min.js" type="text/javascript"></script>
-    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
-    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
-    <script src="../common.js" type="text/javascript"></script>
-    <script src="../items.js" type="text/javascript"></script>
-    <script type="text/javascript">
-        $(document).ready(function () {
-            var item = brooklyn.findItemOfType(items.entities, "brooklyn.entity.webapp.DynamicWebAppCluster");
-            $("#summary").html(brooklyn.typeSummary(item));
-            item.config.forEach(function (element) { $("#configKeys").append(brooklyn.configKeyCard(element)); });
-            item.sensors.forEach(function (element) { $("#sensors").append(brooklyn.sensorCard(element)); });
-            if (item.effectors != undefined) {
-                item.effectors.forEach(function (element) { $("#effectors").append(brooklyn.effectorCard(element)); });
-            }
-        });
-    </script>
-  </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cbe6f8e6/docs/website/learnmore/catalog/entities/brooklyn.entity.webapp.jboss.JBoss6Server.html
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/entities/brooklyn.entity.webapp.jboss.JBoss6Server.html b/docs/website/learnmore/catalog/entities/brooklyn.entity.webapp.jboss.JBoss6Server.html
deleted file mode 100644
index 668ce5a..0000000
--- a/docs/website/learnmore/catalog/entities/brooklyn.entity.webapp.jboss.JBoss6Server.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-  <head>
-    <title>Brooklyn Entity - JBoss Application Server 6</title>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
-    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
-    <link rel="stylesheet" href="../items.css" type="text/css" media="screen"/>
-  </head>
-  <body>
-    <div id="container">
-      <div id="header">
-        <div id="identity">
-          <a href="http://brooklyncentral.github.com/" rel="home">Brooklyn</a>
-        </div>
-      </div>
-
-      <div id="summary"></div>
-
-      <ul class="nav nav-tabs">
-        <li class="active"><a href="#configKeys" data-toggle="tab">Config Keys</a></li>
-        <li><a href="#sensors" data-toggle="tab">Sensors</a></li>
-        <li><a href="#effectors" data-toggle="tab">Effectors</a></li>
-      </ul>
-
-      <div class="tab-content">
-        <div class="tab-pane active" id="configKeys"></div>
-        <div class="tab-pane" id="sensors"></div>
-        <div class="tab-pane" id="effectors"></div>
-      </div>
-    </div>
-
-    <script src="../../../style/js/underscore-min.js" type="text/javascript"></script>
-    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
-    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
-    <script src="../common.js" type="text/javascript"></script>
-    <script src="../items.js" type="text/javascript"></script>
-    <script type="text/javascript">
-        $(document).ready(function () {
-            var item = brooklyn.findItemOfType(items.entities, "brooklyn.entity.webapp.jboss.JBoss6Server");
-            $("#summary").html(brooklyn.typeSummary(item));
-            item.config.forEach(function (element) { $("#configKeys").append(brooklyn.configKeyCard(element)); });
-            item.sensors.forEach(function (element) { $("#sensors").append(brooklyn.sensorCard(element)); });
-            if (item.effectors != undefined) {
-                item.effectors.forEach(function (element) { $("#effectors").append(brooklyn.effectorCard(element)); });
-            }
-        });
-    </script>
-  </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cbe6f8e6/docs/website/learnmore/catalog/entities/brooklyn.entity.webapp.jboss.JBoss7Server.html
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/entities/brooklyn.entity.webapp.jboss.JBoss7Server.html b/docs/website/learnmore/catalog/entities/brooklyn.entity.webapp.jboss.JBoss7Server.html
deleted file mode 100644
index 7b2c3f5..0000000
--- a/docs/website/learnmore/catalog/entities/brooklyn.entity.webapp.jboss.JBoss7Server.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-  <head>
-    <title>Brooklyn Entity - JBoss Application Server 7</title>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
-    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
-    <link rel="stylesheet" href="../items.css" type="text/css" media="screen"/>
-  </head>
-  <body>
-    <div id="container">
-      <div id="header">
-        <div id="identity">
-          <a href="http://brooklyncentral.github.com/" rel="home">Brooklyn</a>
-        </div>
-      </div>
-
-      <div id="summary"></div>
-
-      <ul class="nav nav-tabs">
-        <li class="active"><a href="#configKeys" data-toggle="tab">Config Keys</a></li>
-        <li><a href="#sensors" data-toggle="tab">Sensors</a></li>
-        <li><a href="#effectors" data-toggle="tab">Effectors</a></li>
-      </ul>
-
-      <div class="tab-content">
-        <div class="tab-pane active" id="configKeys"></div>
-        <div class="tab-pane" id="sensors"></div>
-        <div class="tab-pane" id="effectors"></div>
-      </div>
-    </div>
-
-    <script src="../../../style/js/underscore-min.js" type="text/javascript"></script>
-    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
-    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
-    <script src="../common.js" type="text/javascript"></script>
-    <script src="../items.js" type="text/javascript"></script>
-    <script type="text/javascript">
-        $(document).ready(function () {
-            var item = brooklyn.findItemOfType(items.entities, "brooklyn.entity.webapp.jboss.JBoss7Server");
-            $("#summary").html(brooklyn.typeSummary(item));
-            item.config.forEach(function (element) { $("#configKeys").append(brooklyn.configKeyCard(element)); });
-            item.sensors.forEach(function (element) { $("#sensors").append(brooklyn.sensorCard(element)); });
-            if (item.effectors != undefined) {
-                item.effectors.forEach(function (element) { $("#effectors").append(brooklyn.effectorCard(element)); });
-            }
-        });
-    </script>
-  </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cbe6f8e6/docs/website/learnmore/catalog/entities/brooklyn.entity.webapp.jetty.Jetty6Server.html
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/entities/brooklyn.entity.webapp.jetty.Jetty6Server.html b/docs/website/learnmore/catalog/entities/brooklyn.entity.webapp.jetty.Jetty6Server.html
deleted file mode 100644
index 1d0cbd5..0000000
--- a/docs/website/learnmore/catalog/entities/brooklyn.entity.webapp.jetty.Jetty6Server.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-  <head>
-    <title>Brooklyn Entity - Jetty6 Server</title>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
-    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
-    <link rel="stylesheet" href="../items.css" type="text/css" media="screen"/>
-  </head>
-  <body>
-    <div id="container">
-      <div id="header">
-        <div id="identity">
-          <a href="http://brooklyncentral.github.com/" rel="home">Brooklyn</a>
-        </div>
-      </div>
-
-      <div id="summary"></div>
-
-      <ul class="nav nav-tabs">
-        <li class="active"><a href="#configKeys" data-toggle="tab">Config Keys</a></li>
-        <li><a href="#sensors" data-toggle="tab">Sensors</a></li>
-        <li><a href="#effectors" data-toggle="tab">Effectors</a></li>
-      </ul>
-
-      <div class="tab-content">
-        <div class="tab-pane active" id="configKeys"></div>
-        <div class="tab-pane" id="sensors"></div>
-        <div class="tab-pane" id="effectors"></div>
-      </div>
-    </div>
-
-    <script src="../../../style/js/underscore-min.js" type="text/javascript"></script>
-    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
-    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
-    <script src="../common.js" type="text/javascript"></script>
-    <script src="../items.js" type="text/javascript"></script>
-    <script type="text/javascript">
-        $(document).ready(function () {
-            var item = brooklyn.findItemOfType(items.entities, "brooklyn.entity.webapp.jetty.Jetty6Server");
-            $("#summary").html(brooklyn.typeSummary(item));
-            item.config.forEach(function (element) { $("#configKeys").append(brooklyn.configKeyCard(element)); });
-            item.sensors.forEach(function (element) { $("#sensors").append(brooklyn.sensorCard(element)); });
-            if (item.effectors != undefined) {
-                item.effectors.forEach(function (element) { $("#effectors").append(brooklyn.effectorCard(element)); });
-            }
-        });
-    </script>
-  </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cbe6f8e6/docs/website/learnmore/catalog/entities/brooklyn.entity.webapp.nodejs.NodeJsWebAppService.html
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/entities/brooklyn.entity.webapp.nodejs.NodeJsWebAppService.html b/docs/website/learnmore/catalog/entities/brooklyn.entity.webapp.nodejs.NodeJsWebAppService.html
deleted file mode 100644
index 1ea921b..0000000
--- a/docs/website/learnmore/catalog/entities/brooklyn.entity.webapp.nodejs.NodeJsWebAppService.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-  <head>
-    <title>Brooklyn Entity - Node.JS Application</title>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
-    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
-    <link rel="stylesheet" href="../items.css" type="text/css" media="screen"/>
-  </head>
-  <body>
-    <div id="container">
-      <div id="header">
-        <div id="identity">
-          <a href="http://brooklyncentral.github.com/" rel="home">Brooklyn</a>
-        </div>
-      </div>
-
-      <div id="summary"></div>
-
-      <ul class="nav nav-tabs">
-        <li class="active"><a href="#configKeys" data-toggle="tab">Config Keys</a></li>
-        <li><a href="#sensors" data-toggle="tab">Sensors</a></li>
-        <li><a href="#effectors" data-toggle="tab">Effectors</a></li>
-      </ul>
-
-      <div class="tab-content">
-        <div class="tab-pane active" id="configKeys"></div>
-        <div class="tab-pane" id="sensors"></div>
-        <div class="tab-pane" id="effectors"></div>
-      </div>
-    </div>
-
-    <script src="../../../style/js/underscore-min.js" type="text/javascript"></script>
-    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
-    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
-    <script src="../common.js" type="text/javascript"></script>
-    <script src="../items.js" type="text/javascript"></script>
-    <script type="text/javascript">
-        $(document).ready(function () {
-            var item = brooklyn.findItemOfType(items.entities, "brooklyn.entity.webapp.nodejs.NodeJsWebAppService");
-            $("#summary").html(brooklyn.typeSummary(item));
-            item.config.forEach(function (element) { $("#configKeys").append(brooklyn.configKeyCard(element)); });
-            item.sensors.forEach(function (element) { $("#sensors").append(brooklyn.sensorCard(element)); });
-            if (item.effectors != undefined) {
-                item.effectors.forEach(function (element) { $("#effectors").append(brooklyn.effectorCard(element)); });
-            }
-        });
-    </script>
-  </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cbe6f8e6/docs/website/learnmore/catalog/entities/brooklyn.entity.webapp.tomcat.TomcatServer.html
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/entities/brooklyn.entity.webapp.tomcat.TomcatServer.html b/docs/website/learnmore/catalog/entities/brooklyn.entity.webapp.tomcat.TomcatServer.html
deleted file mode 100644
index a18368c..0000000
--- a/docs/website/learnmore/catalog/entities/brooklyn.entity.webapp.tomcat.TomcatServer.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-  <head>
-    <title>Brooklyn Entity - Tomcat Server</title>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
-    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
-    <link rel="stylesheet" href="../items.css" type="text/css" media="screen"/>
-  </head>
-  <body>
-    <div id="container">
-      <div id="header">
-        <div id="identity">
-          <a href="http://brooklyncentral.github.com/" rel="home">Brooklyn</a>
-        </div>
-      </div>
-
-      <div id="summary"></div>
-
-      <ul class="nav nav-tabs">
-        <li class="active"><a href="#configKeys" data-toggle="tab">Config Keys</a></li>
-        <li><a href="#sensors" data-toggle="tab">Sensors</a></li>
-        <li><a href="#effectors" data-toggle="tab">Effectors</a></li>
-      </ul>
-
-      <div class="tab-content">
-        <div class="tab-pane active" id="configKeys"></div>
-        <div class="tab-pane" id="sensors"></div>
-        <div class="tab-pane" id="effectors"></div>
-      </div>
-    </div>
-
-    <script src="../../../style/js/underscore-min.js" type="text/javascript"></script>
-    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
-    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
-    <script src="../common.js" type="text/javascript"></script>
-    <script src="../items.js" type="text/javascript"></script>
-    <script type="text/javascript">
-        $(document).ready(function () {
-            var item = brooklyn.findItemOfType(items.entities, "brooklyn.entity.webapp.tomcat.TomcatServer");
-            $("#summary").html(brooklyn.typeSummary(item));
-            item.config.forEach(function (element) { $("#configKeys").append(brooklyn.configKeyCard(element)); });
-            item.sensors.forEach(function (element) { $("#sensors").append(brooklyn.sensorCard(element)); });
-            if (item.effectors != undefined) {
-                item.effectors.forEach(function (element) { $("#effectors").append(brooklyn.effectorCard(element)); });
-            }
-        });
-    </script>
-  </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cbe6f8e6/docs/website/learnmore/catalog/entities/brooklyn.entity.zookeeper.ZooKeeperEnsemble.html
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/entities/brooklyn.entity.zookeeper.ZooKeeperEnsemble.html b/docs/website/learnmore/catalog/entities/brooklyn.entity.zookeeper.ZooKeeperEnsemble.html
deleted file mode 100644
index 527805d..0000000
--- a/docs/website/learnmore/catalog/entities/brooklyn.entity.zookeeper.ZooKeeperEnsemble.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-  <head>
-    <title>Brooklyn Entity - ZooKeeper ensemble</title>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
-    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
-    <link rel="stylesheet" href="../items.css" type="text/css" media="screen"/>
-  </head>
-  <body>
-    <div id="container">
-      <div id="header">
-        <div id="identity">
-          <a href="http://brooklyncentral.github.com/" rel="home">Brooklyn</a>
-        </div>
-      </div>
-
-      <div id="summary"></div>
-
-      <ul class="nav nav-tabs">
-        <li class="active"><a href="#configKeys" data-toggle="tab">Config Keys</a></li>
-        <li><a href="#sensors" data-toggle="tab">Sensors</a></li>
-        <li><a href="#effectors" data-toggle="tab">Effectors</a></li>
-      </ul>
-
-      <div class="tab-content">
-        <div class="tab-pane active" id="configKeys"></div>
-        <div class="tab-pane" id="sensors"></div>
-        <div class="tab-pane" id="effectors"></div>
-      </div>
-    </div>
-
-    <script src="../../../style/js/underscore-min.js" type="text/javascript"></script>
-    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
-    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
-    <script src="../common.js" type="text/javascript"></script>
-    <script src="../items.js" type="text/javascript"></script>
-    <script type="text/javascript">
-        $(document).ready(function () {
-            var item = brooklyn.findItemOfType(items.entities, "brooklyn.entity.zookeeper.ZooKeeperEnsemble");
-            $("#summary").html(brooklyn.typeSummary(item));
-            item.config.forEach(function (element) { $("#configKeys").append(brooklyn.configKeyCard(element)); });
-            item.sensors.forEach(function (element) { $("#sensors").append(brooklyn.sensorCard(element)); });
-            if (item.effectors != undefined) {
-                item.effectors.forEach(function (element) { $("#effectors").append(brooklyn.effectorCard(element)); });
-            }
-        });
-    </script>
-  </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cbe6f8e6/docs/website/learnmore/catalog/entities/brooklyn.entity.zookeeper.ZooKeeperNode.html
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/entities/brooklyn.entity.zookeeper.ZooKeeperNode.html b/docs/website/learnmore/catalog/entities/brooklyn.entity.zookeeper.ZooKeeperNode.html
deleted file mode 100644
index 054d806..0000000
--- a/docs/website/learnmore/catalog/entities/brooklyn.entity.zookeeper.ZooKeeperNode.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-  <head>
-    <title>Brooklyn Entity - ZooKeeper Node</title>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
-    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
-    <link rel="stylesheet" href="../items.css" type="text/css" media="screen"/>
-  </head>
-  <body>
-    <div id="container">
-      <div id="header">
-        <div id="identity">
-          <a href="http://brooklyncentral.github.com/" rel="home">Brooklyn</a>
-        </div>
-      </div>
-
-      <div id="summary"></div>
-
-      <ul class="nav nav-tabs">
-        <li class="active"><a href="#configKeys" data-toggle="tab">Config Keys</a></li>
-        <li><a href="#sensors" data-toggle="tab">Sensors</a></li>
-        <li><a href="#effectors" data-toggle="tab">Effectors</a></li>
-      </ul>
-
-      <div class="tab-content">
-        <div class="tab-pane active" id="configKeys"></div>
-        <div class="tab-pane" id="sensors"></div>
-        <div class="tab-pane" id="effectors"></div>
-      </div>
-    </div>
-
-    <script src="../../../style/js/underscore-min.js" type="text/javascript"></script>
-    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
-    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
-    <script src="../common.js" type="text/javascript"></script>
-    <script src="../items.js" type="text/javascript"></script>
-    <script type="text/javascript">
-        $(document).ready(function () {
-            var item = brooklyn.findItemOfType(items.entities, "brooklyn.entity.zookeeper.ZooKeeperNode");
-            $("#summary").html(brooklyn.typeSummary(item));
-            item.config.forEach(function (element) { $("#configKeys").append(brooklyn.configKeyCard(element)); });
-            item.sensors.forEach(function (element) { $("#sensors").append(brooklyn.sensorCard(element)); });
-            if (item.effectors != undefined) {
-                item.effectors.forEach(function (element) { $("#effectors").append(brooklyn.effectorCard(element)); });
-            }
-        });
-    </script>
-  </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cbe6f8e6/docs/website/learnmore/catalog/policies/brooklyn.policy.autoscaling.AutoScalerPolicy.html
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/policies/brooklyn.policy.autoscaling.AutoScalerPolicy.html b/docs/website/learnmore/catalog/policies/brooklyn.policy.autoscaling.AutoScalerPolicy.html
deleted file mode 100644
index 78a2cb5..0000000
--- a/docs/website/learnmore/catalog/policies/brooklyn.policy.autoscaling.AutoScalerPolicy.html
+++ /dev/null
@@ -1,59 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-  <head>
-    <title>Brooklyn Policy - Auto-scaler</title>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
-    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
-    <link rel="stylesheet" href="../items.css" type="text/css" media="screen"/>
-  </head>
-  <body>
-    <div id="container">
-      <div id="header">
-        <div id="identity">
-          <a href="http://brooklyncentral.github.com/" rel="home">Brooklyn</a>
-        </div>
-      </div>
-
-      <div id="summary"></div>
-
-      <ul class="nav nav-tabs">
-        <li class="active"><a href="#configKeys" data-toggle="tab">Config Keys</a></li>
-      </ul>
-
-      <div class="tab-content">
-        <div id="configKeys"></div>
-      </div>
-
-    </div>
-
-    <script src="../../../style/js/underscore-min.js" type="text/javascript"></script>
-    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
-    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
-    <script src="../common.js" type="text/javascript"></script>
-    <script src="../items.js" type="text/javascript"></script>
-    <script type="text/javascript">
-        $(document).ready(function () {
-            var item = brooklyn.findItemOfType(items.policies, "brooklyn.policy.autoscaling.AutoScalerPolicy");
-            $("#summary").html(brooklyn.typeSummary(item));
-            item.config.forEach(function (element) { $("#configKeys").append(brooklyn.configKeyCard(element)); });
-        });
-    </script>
-  </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cbe6f8e6/docs/website/learnmore/catalog/policies/brooklyn.policy.followthesun.FollowTheSunPolicy.html
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/policies/brooklyn.policy.followthesun.FollowTheSunPolicy.html b/docs/website/learnmore/catalog/policies/brooklyn.policy.followthesun.FollowTheSunPolicy.html
deleted file mode 100644
index b080d7b..0000000
--- a/docs/website/learnmore/catalog/policies/brooklyn.policy.followthesun.FollowTheSunPolicy.html
+++ /dev/null
@@ -1,59 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-  <head>
-    <title>Brooklyn Policy - Follow the Sun</title>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
-    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
-    <link rel="stylesheet" href="../items.css" type="text/css" media="screen"/>
-  </head>
-  <body>
-    <div id="container">
-      <div id="header">
-        <div id="identity">
-          <a href="http://brooklyncentral.github.com/" rel="home">Brooklyn</a>
-        </div>
-      </div>
-
-      <div id="summary"></div>
-
-      <ul class="nav nav-tabs">
-        <li class="active"><a href="#configKeys" data-toggle="tab">Config Keys</a></li>
-      </ul>
-
-      <div class="tab-content">
-        <div id="configKeys"></div>
-      </div>
-
-    </div>
-
-    <script src="../../../style/js/underscore-min.js" type="text/javascript"></script>
-    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
-    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
-    <script src="../common.js" type="text/javascript"></script>
-    <script src="../items.js" type="text/javascript"></script>
-    <script type="text/javascript">
-        $(document).ready(function () {
-            var item = brooklyn.findItemOfType(items.policies, "brooklyn.policy.followthesun.FollowTheSunPolicy");
-            $("#summary").html(brooklyn.typeSummary(item));
-            item.config.forEach(function (element) { $("#configKeys").append(brooklyn.configKeyCard(element)); });
-        });
-    </script>
-  </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cbe6f8e6/docs/website/learnmore/catalog/policies/brooklyn.policy.ha.ConnectionFailureDetector.html
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/policies/brooklyn.policy.ha.ConnectionFailureDetector.html b/docs/website/learnmore/catalog/policies/brooklyn.policy.ha.ConnectionFailureDetector.html
deleted file mode 100644
index 11ca8de..0000000
--- a/docs/website/learnmore/catalog/policies/brooklyn.policy.ha.ConnectionFailureDetector.html
+++ /dev/null
@@ -1,59 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-  <head>
-    <title>Brooklyn Policy - Connection Failure Detector</title>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
-    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
-    <link rel="stylesheet" href="../items.css" type="text/css" media="screen"/>
-  </head>
-  <body>
-    <div id="container">
-      <div id="header">
-        <div id="identity">
-          <a href="http://brooklyncentral.github.com/" rel="home">Brooklyn</a>
-        </div>
-      </div>
-
-      <div id="summary"></div>
-
-      <ul class="nav nav-tabs">
-        <li class="active"><a href="#configKeys" data-toggle="tab">Config Keys</a></li>
-      </ul>
-
-      <div class="tab-content">
-        <div id="configKeys"></div>
-      </div>
-
-    </div>
-
-    <script src="../../../style/js/underscore-min.js" type="text/javascript"></script>
-    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
-    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
-    <script src="../common.js" type="text/javascript"></script>
-    <script src="../items.js" type="text/javascript"></script>
-    <script type="text/javascript">
-        $(document).ready(function () {
-            var item = brooklyn.findItemOfType(items.policies, "brooklyn.policy.ha.ConnectionFailureDetector");
-            $("#summary").html(brooklyn.typeSummary(item));
-            item.config.forEach(function (element) { $("#configKeys").append(brooklyn.configKeyCard(element)); });
-        });
-    </script>
-  </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cbe6f8e6/docs/website/learnmore/catalog/policies/brooklyn.policy.ha.ServiceReplacer.html
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/policies/brooklyn.policy.ha.ServiceReplacer.html b/docs/website/learnmore/catalog/policies/brooklyn.policy.ha.ServiceReplacer.html
deleted file mode 100644
index f7f696a..0000000
--- a/docs/website/learnmore/catalog/policies/brooklyn.policy.ha.ServiceReplacer.html
+++ /dev/null
@@ -1,59 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-  <head>
-    <title>Brooklyn Policy - Service Replacer</title>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
-    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
-    <link rel="stylesheet" href="../items.css" type="text/css" media="screen"/>
-  </head>
-  <body>
-    <div id="container">
-      <div id="header">
-        <div id="identity">
-          <a href="http://brooklyncentral.github.com/" rel="home">Brooklyn</a>
-        </div>
-      </div>
-
-      <div id="summary"></div>
-
-      <ul class="nav nav-tabs">
-        <li class="active"><a href="#configKeys" data-toggle="tab">Config Keys</a></li>
-      </ul>
-
-      <div class="tab-content">
-        <div id="configKeys"></div>
-      </div>
-
-    </div>
-
-    <script src="../../../style/js/underscore-min.js" type="text/javascript"></script>
-    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
-    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
-    <script src="../common.js" type="text/javascript"></script>
-    <script src="../items.js" type="text/javascript"></script>
-    <script type="text/javascript">
-        $(document).ready(function () {
-            var item = brooklyn.findItemOfType(items.policies, "brooklyn.policy.ha.ServiceReplacer");
-            $("#summary").html(brooklyn.typeSummary(item));
-            item.config.forEach(function (element) { $("#configKeys").append(brooklyn.configKeyCard(element)); });
-        });
-    </script>
-  </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cbe6f8e6/docs/website/learnmore/catalog/policies/brooklyn.policy.ha.ServiceRestarter.html
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/policies/brooklyn.policy.ha.ServiceRestarter.html b/docs/website/learnmore/catalog/policies/brooklyn.policy.ha.ServiceRestarter.html
deleted file mode 100644
index e27c023..0000000
--- a/docs/website/learnmore/catalog/policies/brooklyn.policy.ha.ServiceRestarter.html
+++ /dev/null
@@ -1,59 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-  <head>
-    <title>Brooklyn Policy - Service Restarter</title>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
-    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
-    <link rel="stylesheet" href="../items.css" type="text/css" media="screen"/>
-  </head>
-  <body>
-    <div id="container">
-      <div id="header">
-        <div id="identity">
-          <a href="http://brooklyncentral.github.com/" rel="home">Brooklyn</a>
-        </div>
-      </div>
-
-      <div id="summary"></div>
-
-      <ul class="nav nav-tabs">
-        <li class="active"><a href="#configKeys" data-toggle="tab">Config Keys</a></li>
-      </ul>
-
-      <div class="tab-content">
-        <div id="configKeys"></div>
-      </div>
-
-    </div>
-
-    <script src="../../../style/js/underscore-min.js" type="text/javascript"></script>
-    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
-    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
-    <script src="../common.js" type="text/javascript"></script>
-    <script src="../items.js" type="text/javascript"></script>
-    <script type="text/javascript">
-        $(document).ready(function () {
-            var item = brooklyn.findItemOfType(items.policies, "brooklyn.policy.ha.ServiceRestarter");
-            $("#summary").html(brooklyn.typeSummary(item));
-            item.config.forEach(function (element) { $("#configKeys").append(brooklyn.configKeyCard(element)); });
-        });
-    </script>
-  </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cbe6f8e6/docs/website/learnmore/catalog/policies/brooklyn.policy.loadbalancing.LoadBalancingPolicy.html
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/policies/brooklyn.policy.loadbalancing.LoadBalancingPolicy.html b/docs/website/learnmore/catalog/policies/brooklyn.policy.loadbalancing.LoadBalancingPolicy.html
deleted file mode 100644
index 84df363..0000000
--- a/docs/website/learnmore/catalog/policies/brooklyn.policy.loadbalancing.LoadBalancingPolicy.html
+++ /dev/null
@@ -1,59 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-  <head>
-    <title>Brooklyn Policy - Load Balancer</title>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
-    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
-    <link rel="stylesheet" href="../items.css" type="text/css" media="screen"/>
-  </head>
-  <body>
-    <div id="container">
-      <div id="header">
-        <div id="identity">
-          <a href="http://brooklyncentral.github.com/" rel="home">Brooklyn</a>
-        </div>
-      </div>
-
-      <div id="summary"></div>
-
-      <ul class="nav nav-tabs">
-        <li class="active"><a href="#configKeys" data-toggle="tab">Config Keys</a></li>
-      </ul>
-
-      <div class="tab-content">
-        <div id="configKeys"></div>
-      </div>
-
-    </div>
-
-    <script src="../../../style/js/underscore-min.js" type="text/javascript"></script>
-    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
-    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
-    <script src="../common.js" type="text/javascript"></script>
-    <script src="../items.js" type="text/javascript"></script>
-    <script type="text/javascript">
-        $(document).ready(function () {
-            var item = brooklyn.findItemOfType(items.policies, "brooklyn.policy.loadbalancing.LoadBalancingPolicy");
-            $("#summary").html(brooklyn.typeSummary(item));
-            item.config.forEach(function (element) { $("#configKeys").append(brooklyn.configKeyCard(element)); });
-        });
-    </script>
-  </body>
-</html>


[19/19] incubator-brooklyn git commit: reinstate root index.md in docs, following #524

Posted by he...@apache.org.
reinstate root index.md in docs, following #524


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

Branch: refs/heads/master
Commit: a9e6fc8e6e36bcacf6bd8a017443ca919bcf9840
Parents: 237c7e6
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Wed Apr 8 10:18:25 2015 +0100
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Wed Apr 8 10:18:25 2015 +0100

----------------------------------------------------------------------
 docs/index.md | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a9e6fc8e/docs/index.md
----------------------------------------------------------------------
diff --git a/docs/index.md b/docs/index.md
new file mode 100644
index 0000000..5d2c44b
--- /dev/null
+++ b/docs/index.md
@@ -0,0 +1,19 @@
+---
+layout: website-normal
+title: Brooklyn Website and Docs (dev build)
+---
+
+<i>This page is not copied into release builds. It is here as a convenience when doing dev builds.</i>
+
+Consider looking at:
+
+* <a href="{{ site.path.website }}/">the brooklyn website</a>
+* <a href="{{ site.path.guide }}/">the brooklyn user guide (version 0.7.0-SNAPSHOT) <!-- BROOKLYN_VERSION --></a>
+
+Also see the file <code>README.md</code> in this directory.
+
+For reference, this build uses the following variables:
+
+* url root:  `{{ site.url_root }}`
+* path map: `{{ site.path }}`
+


[12/19] incubator-brooklyn git commit: Load the catalog items as json resource

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/c7900364/docs/style/js/catalog/items.json
----------------------------------------------------------------------
diff --git a/docs/style/js/catalog/items.json b/docs/style/js/catalog/items.json
new file mode 100644
index 0000000..8d29f32
--- /dev/null
+++ b/docs/style/js/catalog/items.json
@@ -0,0 +1,24674 @@
+{
+  "entities" : [ {
+    "type" : "brooklyn.entity.messaging.activemq.ActiveMQBroker",
+    "defaultVersion" : "5.7.0",
+    "name" : "ActiveMQ Broker",
+    "description" : "ActiveMQ is an open source message broker which fully implements the Java Message Service 1.1 (JMS)",
+    "iconUrl" : "classpath:///activemq-logo.png",
+    "config" : [ {
+      "name" : "activemq.install.mirror.url",
+      "type" : "java.lang.String",
+      "defaultValue" : "http://www.mirrorservice.org/sites/ftp.apache.org/activemq/apache-activemq",
+      "description" : "URL of mirror",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "activemq.jetty.port",
+      "type" : "brooklyn.location.PortRange",
+      "defaultValue" : "8161-65535",
+      "description" : "jetty port",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "activemq.templateConfigurationUrl",
+      "type" : "java.lang.String",
+      "defaultValue" : "classpath://brooklyn/entity/messaging/activemq/activemq.xml",
+      "description" : "Template file (in freemarker format) for the conf/activemq.xml file",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "children.startable.mode",
+      "type" : "java.lang.Enum",
+      "defaultValue" : null,
+      "description" : "children.startable.mode",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : [ {
+        "value" : "NONE",
+        "description" : "NONE"
+      }, {
+        "value" : "FOREGROUND",
+        "description" : "FOREGROUND"
+      }, {
+        "value" : "FOREGROUND_LATE",
+        "description" : "FOREGROUND_LATE"
+      }, {
+        "value" : "BACKGROUND",
+        "description" : "BACKGROUND"
+      }, {
+        "value" : "BACKGROUND_LATE",
+        "description" : "BACKGROUND_LATE"
+      } ],
+      "links" : null
+    }, {
+      "name" : "customize.latch",
+      "type" : "java.lang.Boolean",
+      "defaultValue" : null,
+      "description" : "Latch for blocking customize until ready",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "download.addon.urls",
+      "type" : "java.util.Map",
+      "defaultValue" : null,
+      "description" : "URL patterns for downloading named add-ons (will substitute things like ${version} automatically)",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "download.url",
+      "type" : "java.lang.String",
+      "defaultValue" : "${driver.mirrorUrl}/${version}/apache-activemq-${version}-bin.tar.gz",
+      "description" : "URL pattern for downloading the installer (will substitute things like ${version} automatically)",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "expandedinstall.dir",
+      "type" : "java.lang.String",
+      "defaultValue" : null,
+      "description" : "Directory for installed artifacts (e.g. expanded dir after unpacking .tgz)",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "files.runtime",
+      "type" : "java.util.Map",
+      "defaultValue" : null,
+      "description" : "Map of files to be copied, keyed by destination name relative to runDir",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "install.dir",
+      "type" : "java.lang.String",
+      "defaultValue" : "${config['onbox.base.dir']!config['brooklyn.datadir']!'/<ERROR>-ONBOX_BASE_DIR-not-set'}/installs/${(config['install.unique_label']??)?string(config['install.unique_label']!'X',(entity.entityType.simpleName)+((config['install.version']??)?string('_'+(config['install.version']!'X'),'')))}",
+      "description" : "Directory for this software to be installed in",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "install.latch",
+      "type" : "java.lang.Boolean",
+      "defaultValue" : null,
+      "description" : "Latch for blocking install until ready",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "install.skip",
+      "type" : "java.lang.Boolean",
+      "defaultValue" : false,
+      "description" : "Skip the driver install commands entirely, for pre-installed software",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "install.unique_label",
+      "type" : "java.lang.String",
+      "defaultValue" : null,
+      "description" : "Provides a label which uniquely identifies an installation, used in the computation of the install dir; this should include something readable, and must include a hash of all data which differentiates an installation (e.g. version, plugins, etc), but should be the same where install dirs can be shared to allow for re-use",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "install.version",
+      "type" : "java.lang.String",
+      "defaultValue" : "5.7.0",
+      "description" : "Suggested version",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "java.check.hostname.bug",
+      "type" : "java.lang.Boolean",
+      "defaultValue" : true,
+      "description" : "Check whether hostname is too long and will likely crash Javadue to bug 7089443",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "java.opts",
+      "type" : "java.util.Set",
+      "defaultValue" : [ ],
+      "description" : "Java command line options",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "java.sysprops",
+      "type" : "java.util.Map",
+      "defaultValue" : { },
+      "description" : "Java command line system properties",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "jmx.agent.mode",
+      "type" : "java.lang.Enum",
+      "defaultValue" : "AUTODETECT",
+      "description" : "What type of JMX agent to use; defaults to null (autodetect) which means JMXMP_AND_RMI allowing firewall access through a single port as well as local access supporting jconsole (unless JMX_SSL_ENABLED is set, in which case it is JMXMP only)",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : [ {
+        "value" : "AUTODETECT",
+        "description" : "AUTODETECT"
+      }, {
+        "value" : "JMXMP",
+        "description" : "JMXMP"
+      }, {
+        "value" : "JMXMP_AND_RMI",
+        "description" : "JMXMP_AND_RMI"
+      }, {
+        "value" : "JMX_RMI_CUSTOM_AGENT",
+        "description" : "JMX_RMI_CUSTOM_AGENT"
+      }, {
+        "value" : "JMX_RMI",
+        "description" : "JMX_RMI"
+      }, {
+        "value" : "NONE",
+        "description" : "NONE"
+      } ],
+      "links" : null
+    }, {
+      "name" : "jmx.context",
+      "type" : "java.lang.String",
+      "defaultValue" : "jmxrmi",
+      "description" : "JMX context path",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "jmx.direct.port",
+      "type" : "brooklyn.location.PortRange",
+      "defaultValue" : "31001-65535",
+      "description" : "JMX direct/private port (e.g. JMX RMI server port, or JMXMP port, but not RMI registry port)",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "jmx.enabled",
+      "type" : "java.lang.Boolean",
+      "defaultValue" : true,
+      "description" : "JMX enabled",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "jmx.password",
+      "type" : "java.lang.String",
+      "defaultValue" : "admin",
+      "description" : "JMX password",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "jmx.ssl.access.cert",
+      "type" : "java.security.cert.Certificate",
+      "defaultValue" : null,
+      "description" : "certificate of key used to access a JMX agent",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "jmx.ssl.access.key",
+      "type" : "java.security.PrivateKey",
+      "defaultValue" : null,
+      "description" : "key used to access a JMX agent (typically per entity, embedded in the managed JVM)",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "jmx.ssl.enabled",
+      "type" : "java.lang.Boolean",
+      "defaultValue" : false,
+      "description" : "JMX over JMXMP enabled with SSL/TLS",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "jmx.user",
+      "type" : "java.lang.String",
+      "defaultValue" : "admin",
+      "description" : "JMX username",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "launch.latch",
+      "type" : "java.lang.Boolean",
+      "defaultValue" : null,
+      "description" : "Latch for blocking launch until ready",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "openwire.port",
+      "type" : "brooklyn.location.PortRange",
+      "defaultValue" : "61616-65535",
+      "description" : "OpenWire port",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "post.install.command",
+      "type" : "java.lang.String",
+      "defaultValue" : null,
+      "description" : "Command to be run after the install method being called on the driver",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "post.launch.command",
+      "type" : "java.lang.String",
+      "defaultValue" : null,
+      "description" : "Command to be run after the launch method being called on the driver",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "pre.install.command",
+      "type" : "java.lang.String",
+      "defaultValue" : null,
+      "description" : "Command to be run prior to the install method being called on the driver",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "pre.launch.command",
+      "type" : "java.lang.String",
+      "defaultValue" : null,
+      "description" : "Command to be run prior to the launch method being called on the driver",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "provisioning.properties",
+      "type" : "java.util.Map",
+      "defaultValue" : { },
+      "description" : "Custom properties to be passed in when provisioning a new machine",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "resources.latch",
+      "type" : "java.lang.Boolean",
+      "defaultValue" : null,
+      "description" : "Latch for blocking resources until ready",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "rmi.registry.port",
+      "type" : "brooklyn.location.PortRange",
+      "defaultValue" : "1099,19099-65535",
+      "description" : "RMI registry port, used for discovering JMX (private) port",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "run.dir",
+      "type" : "java.lang.String",
+      "defaultValue" : "${config['onbox.base.dir']!config['brooklyn.datadir']!'/<ERROR>-ONBOX_BASE_DIR-not-set'}/apps/${entity.applicationId}/entities/${entity.entityType.simpleName}_${entity.id}",
+      "description" : "Directory for this software to be run from",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "setup.latch",
+      "type" : "java.lang.Boolean",
+      "defaultValue" : null,
+      "description" : "Latch for blocking setup until ready",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "shell.env",
+      "type" : "java.util.Map",
+      "defaultValue" : { },
+      "description" : "Map of environment variables to pass to the runtime shell",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "softwareProcess.maxSensorRebindDelay",
+      "type" : "brooklyn.util.time.Duration",
+      "defaultValue" : "10s",
+      "description" : "The maximum delay to apply when reconnecting sensors when rebinding to this entity. Brooklyn will wait a random amount of time, up to the value of this config key, to avoid a thundering herd problem when the entity shares its machine with several others. Set to null or to 0 to disable any delay.",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "start.latch",
+      "type" : "java.lang.Boolean",
+      "defaultValue" : null,
+      "description" : "Latch for blocking start until ready",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "start.timeout",
+      "type" : "brooklyn.util.time.Duration",
+      "defaultValue" : "2m",
+      "description" : "Time to wait for process and for SERVICE_UP before failing (in seconds, default 2m)",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "templates.runtime",
+      "type" : "java.util.Map",
+      "defaultValue" : null,
+      "description" : "Map of templates to be filled in and copied, keyed by destination name relative to runDir",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    } ],
+    "sensors" : [ {
+      "name" : "activemq.jetty.port",
+      "type" : "java.lang.Integer",
+      "description" : "jetty port",
+      "links" : null
+    }, {
+      "name" : "activemq.templateConfigurationUrl",
+      "type" : "java.lang.String",
+      "description" : "Template file (in freemarker format) for the conf/activemq.xml file",
+      "links" : null
+    }, {
+      "name" : "broker.url",
+      "type" : "java.lang.String",
+      "description" : "Broker Connection URL",
+      "links" : null
+    }, {
+      "name" : "download.addon.urls",
+      "type" : "java.util.Map",
+      "description" : "URL patterns for downloading named add-ons (will substitute things like ${version} automatically)",
+      "links" : null
+    }, {
+      "name" : "download.url",
+      "type" : "java.lang.String",
+      "description" : "URL pattern for downloading the installer (will substitute things like ${version} automatically)",
+      "links" : null
+    }, {
+      "name" : "expandedinstall.dir",
+      "type" : "java.lang.String",
+      "description" : "Directory for installed artifacts (e.g. expanded dir after unpacking .tgz)",
+      "links" : null
+    }, {
+      "name" : "host.address",
+      "type" : "java.lang.String",
+      "description" : "Host IP address",
+      "links" : null
+    }, {
+      "name" : "host.name",
+      "type" : "java.lang.String",
+      "description" : "Host name",
+      "links" : null
+    }, {
+      "name" : "host.subnet.address",
+      "type" : "java.lang.String",
+      "description" : "Host address as known internally in the subnet where it is running (if different to host.name)",
+      "links" : null
+    }, {
+      "name" : "host.subnet.hostname",
+      "type" : "java.lang.String",
+      "description" : "Host name as known internally in the subnet where it is running (if different to host.name)",
+      "links" : null
+    }, {
+      "name" : "install.dir",
+      "type" : "java.lang.String",
+      "description" : "Directory for this software to be installed in",
+      "links" : null
+    }, {
+      "name" : "jmx.context",
+      "type" : "java.lang.String",
+      "description" : "JMX context path",
+      "links" : null
+    }, {
+      "name" : "jmx.direct.port",
+      "type" : "java.lang.Integer",
+      "description" : "JMX direct/private port (e.g. JMX RMI server port, or JMXMP port, but not RMI registry port)",
+      "links" : null
+    }, {
+      "name" : "jmx.password",
+      "type" : "java.lang.String",
+      "description" : "JMX password",
+      "links" : null
+    }, {
+      "name" : "jmx.service.url",
+      "type" : "java.lang.String",
+      "description" : "The URL for connecting to the MBean Server",
+      "links" : null
+    }, {
+      "name" : "jmx.user",
+      "type" : "java.lang.String",
+      "description" : "JMX username",
+      "links" : null
+    }, {
+      "name" : "openwire.port",
+      "type" : "java.lang.Integer",
+      "description" : "OpenWire port",
+      "links" : null
+    }, {
+      "name" : "rmi.registry.port",
+      "type" : "java.lang.Integer",
+      "description" : "RMI registry port, used for discovering JMX (private) port",
+      "links" : null
+    }, {
+      "name" : "run.dir",
+      "type" : "java.lang.String",
+      "description" : "Directory for this software to be run from",
+      "links" : null
+    }, {
+      "name" : "service.isUp",
+      "type" : "java.lang.Boolean",
+      "description" : "Whether the service is active and availability (confirmed and monitored)",
+      "links" : null
+    }, {
+      "name" : "service.process.isRunning",
+      "type" : "java.lang.Boolean",
+      "description" : "Whether the process for the service is confirmed as running",
+      "links" : null
+    }, {
+      "name" : "service.state",
+      "type" : "brooklyn.entity.basic.Lifecycle",
+      "description" : "Actual lifecycle state of the service",
+      "links" : null
+    }, {
+      "name" : "softwareprocess.pid.file",
+      "type" : "java.lang.String",
+      "description" : "PID file",
+      "links" : null
+    }, {
+      "name" : "softwareservice.provisioningLocation",
+      "type" : "brooklyn.location.MachineProvisioningLocation",
+      "description" : "Location used to provision a machine where this is running",
+      "links" : null
+    } ],
+    "effectors" : [ {
+      "name" : "restart",
+      "returnType" : "void",
+      "parameters" : [ ],
+      "description" : "Restart the process/service represented by an entity",
+      "links" : null
+    }, {
+      "name" : "start",
+      "returnType" : "void",
+      "parameters" : [ {
+        "name" : "locations",
+        "type" : "java.lang.Object",
+        "description" : "The location or locations to start in, as a string, a location object, a list of strings, or a list of location objects",
+        "defaultValue" : null
+      } ],
+      "description" : "Start the process/service represented by an entity",
+      "links" : null
+    }, {
+      "name" : "stop",
+      "returnType" : "void",
+      "parameters" : [ ],
+      "description" : "Stop the process/service represented by an entity",
+      "links" : null
+    } ]
+  }, {
+    "type" : "brooklyn.entity.nosql.cassandra.CassandraFabric",
+    "name" : "Apache Cassandra Database Fabric",
+    "description" : "Cassandra is a highly scalable, eventually consistent, distributed, structured key-value store which provides a ColumnFamily-based data model richer than typical key/value systems",
+    "iconUrl" : "classpath:///cassandra-logo.jpeg",
+    "config" : [ {
+      "name" : "cassandra.fabric.datacenter.namer",
+      "type" : "com.google.common.base.Function",
+      "defaultValue" : null,
+      "description" : "Function used to provide the cassandra.replication.datacenterName for a given location",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "dynamiccfabric.memberspec",
+      "type" : "brooklyn.entity.proxying.EntitySpec",
+      "defaultValue" : null,
+      "description" : "entity spec for creating new cluster members",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "dynamicfabric.customChildFlags",
+      "type" : "java.util.Map",
+      "defaultValue" : { },
+      "description" : "Additional flags to be passed to children when they are being created",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "dynamicfabric.displayNamePrefix",
+      "type" : "java.lang.String",
+      "defaultValue" : null,
+      "description" : "Display name prefix, for created children",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "dynamicfabric.displayNameSuffix",
+      "type" : "java.lang.String",
+      "defaultValue" : null,
+      "description" : "Display name suffix, for created children",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "dynamicfabric.factory",
+      "type" : "brooklyn.entity.basic.EntityFactory",
+      "defaultValue" : null,
+      "description" : "factory for creating new cluster members",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "enricher.service_state.children_and_members.quorum.running",
+      "type" : "brooklyn.entity.basic.QuorumCheck",
+      "defaultValue" : "QuorumCheck[require=0,100.0%]",
+      "description" : "Problems check from children actual states (lifecycle), applied by default to members and children, not checking upness, but requiring by default that none are on-fire",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "enricher.service_state.children_and_members.quorum.up",
+      "type" : "brooklyn.entity.basic.QuorumCheck",
+      "defaultValue" : "QuorumCheck[require=1,0.0%]",
+      "description" : "Up check, applied by default to members, requiring at least one present and up",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "fabric.initial.quorumSize",
+      "type" : "java.lang.Integer",
+      "defaultValue" : -1,
+      "description" : "Initial fabric quorum size - number of initial nodes that must have been successfully started to report success (if less than 0, then use a value based on INITIAL_SIZE of clusters)",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "group.members.delegate",
+      "type" : "java.lang.Boolean",
+      "defaultValue" : false,
+      "description" : "Add delegate child entities for members of the group",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "group.members.delegate.nameFormat",
+      "type" : "java.lang.String",
+      "defaultValue" : "%s",
+      "description" : "Delegate members name format string (Use %s for the original entity display name)",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    } ],
+    "sensors" : [ {
+      "name" : "cassandra.cluster.datacenterUsages",
+      "type" : "com.google.common.collect.Multimap",
+      "description" : "Current set of datacenters in use, with nodes in each",
+      "links" : null
+    }, {
+      "name" : "cassandra.cluster.datacenters",
+      "type" : "java.util.Set",
+      "description" : "Current set of datacenters in use",
+      "links" : null
+    }, {
+      "name" : "cassandra.cluster.hostname",
+      "type" : "java.lang.String",
+      "description" : "Hostname to connect to cluster with",
+      "links" : null
+    }, {
+      "name" : "cassandra.cluster.seeds.current",
+      "type" : "java.util.Set",
+      "description" : "Current set of seeds to use to bootstrap the cluster",
+      "links" : null
+    }, {
+      "name" : "cassandra.cluster.seeds.hasPublished",
+      "type" : "java.lang.Boolean",
+      "description" : "Whether we have published any seeds",
+      "links" : null
+    }, {
+      "name" : "cassandra.cluster.thrift.port",
+      "type" : "java.lang.Integer",
+      "description" : "Cassandra Thrift RPC port to connect to cluster with",
+      "links" : null
+    }, {
+      "name" : "fabric.size",
+      "type" : "java.lang.Integer",
+      "description" : "Fabric size",
+      "links" : null
+    }, {
+      "name" : "group.members",
+      "type" : "java.util.Collection",
+      "description" : "Members of the group",
+      "links" : null
+    }, {
+      "name" : "group.members.added",
+      "type" : "brooklyn.entity.Entity",
+      "description" : "Entity added to group members",
+      "links" : null
+    }, {
+      "name" : "group.members.count",
+      "type" : "java.lang.Integer",
+      "description" : "Number of members",
+      "links" : null
+    }, {
+      "name" : "group.members.removed",
+      "type" : "brooklyn.entity.Entity",
+      "description" : "Entity removed from group members",
+      "links" : null
+    }, {
+      "name" : "service.isUp",
+      "type" : "java.lang.Boolean",
+      "description" : "Whether the service is active and availability (confirmed and monitored)",
+      "links" : null
+    }, {
+      "name" : "service.state",
+      "type" : "brooklyn.entity.basic.Lifecycle",
+      "description" : "Actual lifecycle state of the service",
+      "links" : null
+    } ],
+    "effectors" : [ {
+      "name" : "restart",
+      "returnType" : "void",
+      "parameters" : [ ],
+      "description" : "Restart the process/service represented by an entity",
+      "links" : null
+    }, {
+      "name" : "start",
+      "returnType" : "void",
+      "parameters" : [ {
+        "name" : "locations",
+        "type" : "java.lang.Object",
+        "description" : "The location or locations to start in, as a string, a location object, a list of strings, or a list of location objects",
+        "defaultValue" : null
+      } ],
+      "description" : "Start the process/service represented by an entity",
+      "links" : null
+    }, {
+      "name" : "stop",
+      "returnType" : "void",
+      "parameters" : [ ],
+      "description" : "Stop the process/service represented by an entity",
+      "links" : null
+    }, {
+      "name" : "update",
+      "returnType" : "void",
+      "parameters" : [ ],
+      "description" : "Updates the cluster members",
+      "links" : null
+    } ]
+  }, {
+    "type" : "brooklyn.entity.nosql.cassandra.CassandraDatacenter",
+    "name" : "Apache Cassandra Datacenter Cluster",
+    "description" : "Cassandra is a highly scalable, eventually consistent, distributed, structured key-value store which provides a ColumnFamily-based data model richer than typical key/value systems",
+    "iconUrl" : "classpath:///cassandra-logo.jpeg",
+    "config" : [ {
+      "name" : "cassandra.cluster.delayBeforeAdvertisingCluster",
+      "type" : "brooklyn.util.time.Duration",
+      "defaultValue" : "10s",
+      "description" : "Delay after cluster is started before checking and advertising its availability",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "cassandra.cluster.name",
+      "type" : "java.lang.String",
+      "defaultValue" : "BrooklynCluster",
+      "description" : "Name of the Cassandra cluster",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "cassandra.cluster.seedSupplier",
+      "type" : "com.google.common.base.Supplier",
+      "defaultValue" : null,
+      "description" : "For determining the seed nodes",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "cassandra.cluster.snitchName",
+      "type" : "java.lang.String",
+      "defaultValue" : "SimpleSnitch",
+      "description" : "Type of the Cassandra snitch",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "cassandra.cluster.tokenGenerator.class",
+      "type" : "java.lang.Class",
+      "defaultValue" : "class brooklyn.entity.nosql.cassandra.TokenGenerators$PosNeg63TokenGenerator",
+      "description" : "For determining the tokens of nodes",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "cassandra.cluster.tokenShift",
+      "type" : "java.math.BigInteger",
+      "defaultValue" : null,
+      "description" : "Delta applied to all tokens generated for this Cassandra datacenter, useful when configuring multiple datacenters which should be shifted; if not set, a random shift is applied. (Pass 0 to prevent any shift.)",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "cassandra.cluster.useVnodes",
+      "type" : "java.lang.Boolean",
+      "defaultValue" : false,
+      "description" : "Determines whether to use vnodes; if doing so, tokens will not be explicitly assigned to nodes in the cluster",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "cassandra.numTokensPerNode",
+      "type" : "java.lang.Integer",
+      "defaultValue" : 256,
+      "description" : "Number of tokens per node; if using vnodes, should set this to a value like 256; will be overridden to 1 if USE_VNODES==false",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "cluster.initial.quorumSize",
+      "type" : "java.lang.Integer",
+      "defaultValue" : -1,
+      "description" : "Initial cluster quorum size - number of initial nodes that must have been successfully started to report success (if < 0, then use value of INITIAL_SIZE)",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "cluster.initial.size",
+      "type" : "java.lang.Integer",
+      "defaultValue" : 1,
+      "description" : "Initial cluster size",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "dynamiccluster.availabilityZones",
+      "type" : "java.util.Collection",
+      "defaultValue" : null,
+      "description" : "availability zones to use (if non-null, overrides other configuration)",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "dynamiccluster.customChildFlags",
+      "type" : "java.util.Map",
+      "defaultValue" : { },
+      "description" : "Additional flags to be passed to children when they are being created",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "dynamiccluster.factory",
+      "type" : "brooklyn.entity.basic.EntityFactory",
+      "defaultValue" : null,
+      "description" : "factory for creating new cluster members",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "dynamiccluster.memberspec",
+      "type" : "brooklyn.entity.proxying.EntitySpec",
+      "defaultValue" : null,
+      "description" : "entity spec for creating new cluster members",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "dynamiccluster.numAvailabilityZones",
+      "type" : "java.lang.Integer",
+      "defaultValue" : null,
+      "description" : "number of availability zones to use (will attempt to auto-discover this number)",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "dynamiccluster.quarantineFailedEntities",
+      "type" : "java.lang.Boolean",
+      "defaultValue" : true,
+      "description" : "If true, will quarantine entities that fail to start; if false, will get rid of them (i.e. delete them)",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "dynamiccluster.removalstrategy",
+      "type" : "com.google.common.base.Function",
+      "defaultValue" : null,
+      "description" : "strategy for deciding what to remove when down-sizing",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "dynamiccluster.zone.enable",
+      "type" : "java.lang.Boolean",
+      "defaultValue" : false,
+      "description" : "Whether to use availability zones, or just deploy everything into the generic location",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "dynamiccluster.zone.failureDetector",
+      "type" : "brooklyn.entity.group.DynamicCluster$ZoneFailureDetector",
+      "defaultValue" : "brooklyn.entity.group.zoneaware.ProportionalZoneFailureDetector@b7193fc",
+      "description" : "Zone failure detector",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "dynamiccluster.zone.placementStrategy",
+      "type" : "brooklyn.entity.group.DynamicCluster$NodePlacementStrategy",
+      "defaultValue" : "brooklyn.entity.group.zoneaware.BalancingNodePlacementStrategy@37f02eaa",
+      "description" : "Node placement strategy",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "enricher.service_state.children_and_members.quorum.running",
+      "type" : "brooklyn.entity.basic.QuorumCheck",
+      "defaultValue" : "QuorumCheck[require=0,100.0%]",
+      "description" : "Problems check from children actual states (lifecycle), applied by default to members and children, not checking upness, but requiring by default that none are on-fire",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "enricher.service_state.children_and_members.quorum.up",
+      "type" : "brooklyn.entity.basic.QuorumCheck",
+      "defaultValue" : "QuorumCheck[require=1,0.0%]",
+      "description" : "Up check, applied by default to members, requiring at least one present and up",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "group.members.delegate",
+      "type" : "java.lang.Boolean",
+      "defaultValue" : false,
+      "description" : "Add delegate child entities for members of the group",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "group.members.delegate.nameFormat",
+      "type" : "java.lang.String",
+      "defaultValue" : "%s",
+      "description" : "Delegate members name format string (Use %s for the original entity display name)",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    } ],
+    "sensors" : [ {
+      "name" : "cassandra.cluster.datacenterUsages",
+      "type" : "com.google.common.collect.Multimap",
+      "description" : "Current set of datacenters in use, with nodes in each",
+      "links" : null
+    }, {
+      "name" : "cassandra.cluster.datacenters",
+      "type" : "java.util.Set",
+      "description" : "Current set of datacenters in use",
+      "links" : null
+    }, {
+      "name" : "cassandra.cluster.first.node.started.utc",
+      "type" : "java.lang.Long",
+      "description" : "Time (UTC) when the first node was started",
+      "links" : null
+    }, {
+      "name" : "cassandra.cluster.hostname",
+      "type" : "java.lang.String",
+      "description" : "Hostname to connect to cluster with",
+      "links" : null
+    }, {
+      "name" : "cassandra.cluster.metrics.processCpuTime.fraction.perNode",
+      "type" : "java.lang.Double",
+      "description" : "Fraction of CPU time used (percentage reported by JMX), averaged over all nodes",
+      "links" : null
+    }, {
+      "name" : "cassandra.cluster.metrics.processCpuTime.fraction.windowed",
+      "type" : "java.lang.Double",
+      "description" : "Fraction of CPU time used (percentage, over time window), averaged over all nodes",
+      "links" : null
+    }, {
+      "name" : "cassandra.cluster.name",
+      "type" : "java.lang.String",
+      "description" : "Name of the Cassandra cluster",
+      "links" : null
+    }, {
+      "name" : "cassandra.cluster.nodes",
+      "type" : "java.util.List",
+      "description" : "List of host:port of all active nodes in the cluster (thrift port, and public hostname/IP)",
+      "links" : null
+    }, {
+      "name" : "cassandra.cluster.read.active",
+      "type" : "java.lang.Integer",
+      "description" : "Current active ReadStage tasks",
+      "links" : null
+    }, {
+      "name" : "cassandra.cluster.read.pending",
+      "type" : "java.lang.Long",
+      "description" : "Current pending ReadStage tasks",
+      "links" : null
+    }, {
+      "name" : "cassandra.cluster.schema.versions.count",
+      "type" : "java.lang.Integer",
+      "description" : "Number of different schema versions in the cluster; should be 1 for a healthy cluster, 0 when off; 2 and above indicats a Schema Disagreement Error (and keyspace access may fail)",
+      "links" : null
+    }, {
+      "name" : "cassandra.cluster.seeds.current",
+      "type" : "java.util.Set",
+      "description" : "Current set of seeds to use to bootstrap the cluster",
+      "links" : null
+    }, {
+      "name" : "cassandra.cluster.seeds.hasPublished",
+      "type" : "java.lang.Boolean",
+      "description" : "Whether we have published any seeds",
+      "links" : null
+    }, {
+      "name" : "cassandra.cluster.start.nodes.queued",
+      "type" : "java.util.List",
+      "description" : "Nodes queued for starting (for sequential start)",
+      "links" : null
+    }, {
+      "name" : "cassandra.cluster.thrift.latency.perNode",
+      "type" : "java.lang.Long",
+      "description" : "Latency for thrift port connection  averaged over all nodes (ms)",
+      "links" : null
+    }, {
+      "name" : "cassandra.cluster.thrift.port",
+      "type" : "java.lang.Integer",
+      "description" : "Cassandra Thrift RPC port to connect to cluster with",
+      "links" : null
+    }, {
+      "name" : "cassandra.cluster.write.active",
+      "type" : "java.lang.Integer",
+      "description" : "Current active MutationStage tasks",
+      "links" : null
+    }, {
+      "name" : "cassandra.cluster.write.pending",
+      "type" : "java.lang.Long",
+      "description" : "Current pending MutationStage tasks",
+      "links" : null
+    }, {
+      "name" : "cassandra.reads.perSec.last.perNode",
+      "type" : "java.lang.Double",
+      "description" : "Reads/sec (last datapoint) averaged over all nodes",
+      "links" : null
+    }, {
+      "name" : "cassandra.reads.perSec.windowed.perNode",
+      "type" : "java.lang.Double",
+      "description" : "Reads/sec (over time window) averaged over all nodes",
+      "links" : null
+    }, {
+      "name" : "cassandra.thrift.latency.windowed.perNode",
+      "type" : "java.lang.Double",
+      "description" : "Latency for thrift port (ms, over time window) averaged over all nodes",
+      "links" : null
+    }, {
+      "name" : "cassandra.write.perSec.last.perNode",
+      "type" : "java.lang.Double",
+      "description" : "Writes/sec (last datapoint) averaged over all nodes",
+      "links" : null
+    }, {
+      "name" : "cassandra.writes.perSec.windowed.perNode",
+      "type" : "java.lang.Double",
+      "description" : "Writes/sec (over time window) averaged over all nodes",
+      "links" : null
+    }, {
+      "name" : "cluster.entity",
+      "type" : "brooklyn.entity.Entity",
+      "description" : "The cluster an entity is a member of",
+      "links" : null
+    }, {
+      "name" : "cluster.first",
+      "type" : "java.lang.Boolean",
+      "description" : "Set on an entity if it is the first member of a cluster",
+      "links" : null
+    }, {
+      "name" : "cluster.first.entity",
+      "type" : "brooklyn.entity.Entity",
+      "description" : "The first member of the cluster",
+      "links" : null
+    }, {
+      "name" : "cluster.member",
+      "type" : "java.lang.Boolean",
+      "description" : "Set on an entity if it is a member of a cluster",
+      "links" : null
+    }, {
+      "name" : "datastore.url",
+      "type" : "java.lang.String",
+      "description" : "Primary contact URL for a datastore (e.g. mysql://localhost:3306/)",
+      "links" : null
+    }, {
+      "name" : "dynamiccluster.entityQuarantined",
+      "type" : "brooklyn.entity.Entity",
+      "description" : "Entity failed to start, and has been quarantined",
+      "links" : null
+    }, {
+      "name" : "dynamiccluster.failedSubLocations",
+      "type" : "java.util.Set",
+      "description" : "Sub locations that seem to have failed",
+      "links" : null
+    }, {
+      "name" : "dynamiccluster.quarantineGroup",
+      "type" : "brooklyn.entity.group.QuarantineGroup",
+      "description" : "Group of quarantined entities that failed to start",
+      "links" : null
+    }, {
+      "name" : "dynamiccluster.subLocations",
+      "type" : "java.util.List",
+      "description" : "Locations for each availability zone to use",
+      "links" : null
+    }, {
+      "name" : "group.members",
+      "type" : "java.util.Collection",
+      "description" : "Members of the group",
+      "links" : null
+    }, {
+      "name" : "group.members.added",
+      "type" : "brooklyn.entity.Entity",
+      "description" : "Entity added to group members",
+      "links" : null
+    }, {
+      "name" : "group.members.count",
+      "type" : "java.lang.Integer",
+      "description" : "Number of members",
+      "links" : null
+    }, {
+      "name" : "group.members.removed",
+      "type" : "brooklyn.entity.Entity",
+      "description" : "Entity removed from group members",
+      "links" : null
+    }, {
+      "name" : "service.isUp",
+      "type" : "java.lang.Boolean",
+      "description" : "Whether the service is active and availability (confirmed and monitored)",
+      "links" : null
+    }, {
+      "name" : "service.state",
+      "type" : "brooklyn.entity.basic.Lifecycle",
+      "description" : "Actual lifecycle state of the service",
+      "links" : null
+    } ],
+    "effectors" : [ {
+      "name" : "executeScript",
+      "returnType" : "java.lang.String",
+      "parameters" : [ {
+        "name" : "commands",
+        "type" : "java.lang.String",
+        "description" : null,
+        "defaultValue" : null
+      } ],
+      "description" : "executes the given script contents using cassandra-cli",
+      "links" : null
+    }, {
+      "name" : "replaceMember",
+      "returnType" : "java.lang.String",
+      "parameters" : [ {
+        "name" : "memberId",
+        "type" : "java.lang.String",
+        "description" : "The entity id of a member to be replaced",
+        "defaultValue" : null
+      } ],
+      "description" : "Replaces the entity with the given ID, if it is a member; first adds a new member, then removes this one. Returns id of the new entity; or throws exception if couldn't be replaced.",
+      "links" : null
+    }, {
+      "name" : "resize",
+      "returnType" : "java.lang.Integer",
+      "parameters" : [ {
+        "name" : "desiredSize",
+        "type" : "java.lang.Integer",
+        "description" : "The new size of the cluster",
+        "defaultValue" : null
+      } ],
+      "description" : "Changes the size of the entity (e.g. the number of nodes in a cluster)",
+      "links" : null
+    }, {
+      "name" : "resizeByDelta",
+      "returnType" : "java.util.Collection",
+      "parameters" : [ {
+        "name" : "delta",
+        "type" : "int",
+        "description" : "The change in number of nodes",
+        "defaultValue" : null
+      } ],
+      "description" : "Changes the size of the cluster.",
+      "links" : null
+    }, {
+      "name" : "restart",
+      "returnType" : "void",
+      "parameters" : [ ],
+      "description" : "Restart the process/service represented by an entity",
+      "links" : null
+    }, {
+      "name" : "start",
+      "returnType" : "void",
+      "parameters" : [ {
+        "name" : "locations",
+        "type" : "java.lang.Object",
+        "description" : "The location or locations to start in, as a string, a location object, a list of strings, or a list of location objects",
+        "defaultValue" : null
+      } ],
+      "description" : "Start the process/service represented by an entity",
+      "links" : null
+    }, {
+      "name" : "stop",
+      "returnType" : "void",
+      "parameters" : [ ],
+      "description" : "Stop the process/service represented by an entity",
+      "links" : null
+    }, {
+      "name" : "update",
+      "returnType" : "void",
+      "parameters" : [ ],
+      "description" : "Updates the cluster members",
+      "links" : null
+    } ]
+  }, {
+    "type" : "brooklyn.entity.nosql.cassandra.CassandraNode",
+    "defaultVersion" : "1.2.16",
+    "name" : "Apache Cassandra Node",
+    "description" : "Cassandra is a highly scalable, eventually consistent, distributed, structured key-value store which provides a ColumnFamily-based data model richer than typical key/value systems",
+    "iconUrl" : "classpath:///cassandra-logo.jpeg",
+    "config" : [ {
+      "name" : "cassandra.broadcastAddressSensor",
+      "type" : "java.lang.String",
+      "defaultValue" : null,
+      "description" : "sensor name from which to take the broadcast address; default (null) is a smart lookup",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "cassandra.cluster.name",
+      "type" : "java.lang.String",
+      "defaultValue" : "BrooklynCluster",
+      "description" : "Name of the Cassandra cluster",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "cassandra.cluster.seeds.initial",
+      "type" : "java.util.Set",
+      "defaultValue" : null,
+      "description" : "List of cluster nodes to seed this node",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "cassandra.cluster.snitchName",
+      "type" : "java.lang.String",
+      "defaultValue" : "SimpleSnitch",
+      "description" : "Type of the Cassandra snitch",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "cassandra.config.customSnitchUrl",
+      "type" : "java.lang.String",
+      "defaultValue" : null,
+      "description" : "URL for a jar file to be uploaded (e.g. \"classpath://brooklyn/entity/nosql/cassandra/cassandra-multicloud-snitch.jar\"); defaults to null which means nothing to upload",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "cassandra.config.fileName",
+      "type" : "java.lang.String",
+      "defaultValue" : "cassandra.yaml",
+      "description" : "Name for the copied config file",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "cassandra.config.rackdc.fileName",
+      "type" : "java.lang.String",
+      "defaultValue" : "cassandra-rackdc.properties",
+      "description" : "Name for the copied rackdc config file (used for configuring replication, when a suitable snitch is used)",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "cassandra.config.rackdc.templateUrl",
+      "type" : "java.lang.String",
+      "defaultValue" : "classpath://brooklyn/entity/nosql/cassandra/cassandra-rackdc.properties",
+      "description" : "Template file (in freemarker format) for the cassandra-rackdc.properties config file",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "cassandra.config.templateUrl",
+      "type" : "java.lang.String",
+      "defaultValue" : "classpath://brooklyn/entity/nosql/cassandra/cassandra-${entity.majorMinorVersion}.yaml",
+      "description" : "A URL (in freemarker format) for a cassandra.yaml config file (in freemarker format)",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "cassandra.gossip.port",
+      "type" : "brooklyn.location.PortRange",
+      "defaultValue" : "7000-65535",
+      "description" : "Cassandra Gossip communications port",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "cassandra.install.mirror.url",
+      "type" : "java.lang.String",
+      "defaultValue" : "http://www.mirrorservice.org/sites/ftp.apache.org/cassandra",
+      "description" : "URL of mirror",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "cassandra.install.tgzUrl",
+      "type" : "java.lang.String",
+      "defaultValue" : null,
+      "description" : "URL of TGZ download file",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "cassandra.listenAddressSensor",
+      "type" : "java.lang.String",
+      "defaultValue" : null,
+      "description" : "sensor name from which to take the listen address; default (null) is a smart lookup",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "cassandra.native.port",
+      "type" : "brooklyn.location.PortRange",
+      "defaultValue" : "9042-65535",
+      "description" : "Cassandra Native Transport port",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "cassandra.numTokensPerNode",
+      "type" : "java.lang.Integer",
+      "defaultValue" : 1,
+      "description" : "Number of tokens per node; if using vnodes, should set this to a value like 256",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "cassandra.replication.datacenterName",
+      "type" : "java.lang.String",
+      "defaultValue" : null,
+      "description" : "Datacenter name (used for configuring replication, when a suitable snitch is used)",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "cassandra.replication.rackName",
+      "type" : "java.lang.String",
+      "defaultValue" : null,
+      "description" : "Rack name (used for configuring replication, when a suitable snitch is used)",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "cassandra.rpcAddressSensor",
+      "type" : "java.lang.String",
+      "defaultValue" : null,
+      "description" : "sensor name from which to take the RPC address; default (null) is 0.0.0.0",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "cassandra.ssl-gossip.port",
+      "type" : "brooklyn.location.PortRange",
+      "defaultValue" : "7001-65535",
+      "description" : "Cassandra Gossip SSL communications port",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "cassandra.thrift.port",
+      "type" : "brooklyn.location.PortRange",
+      "defaultValue" : "9160-65535",
+      "description" : "Cassandra Thrift RPC port",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "cassandra.token",
+      "type" : "java.math.BigInteger",
+      "defaultValue" : null,
+      "description" : "Cassandra Token",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "cassandra.tokens",
+      "type" : "java.util.Set",
+      "defaultValue" : null,
+      "description" : "Cassandra Tokens",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "children.startable.mode",
+      "type" : "java.lang.Enum",
+      "defaultValue" : null,
+      "description" : "children.startable.mode",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : [ {
+        "value" : "NONE",
+        "description" : "NONE"
+      }, {
+        "value" : "FOREGROUND",
+        "description" : "FOREGROUND"
+      }, {
+        "value" : "FOREGROUND_LATE",
+        "description" : "FOREGROUND_LATE"
+      }, {
+        "value" : "BACKGROUND",
+        "description" : "BACKGROUND"
+      }, {
+        "value" : "BACKGROUND_LATE",
+        "description" : "BACKGROUND_LATE"
+      } ],
+      "links" : null
+    }, {
+      "name" : "customize.latch",
+      "type" : "java.lang.Boolean",
+      "defaultValue" : null,
+      "description" : "Latch for blocking customize until ready",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "datastore.creation.script.contents",
+      "type" : "java.lang.String",
+      "defaultValue" : "",
+      "description" : "Contensts of creation script to initialize the datastore",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "datastore.creation.script.url",
+      "type" : "java.lang.String",
+      "defaultValue" : "",
+      "description" : "URL of creation script to use to initialize the datastore (ignored if contents are specified)",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "download.addon.urls",
+      "type" : "java.util.Map",
+      "defaultValue" : null,
+      "description" : "URL patterns for downloading named add-ons (will substitute things like ${version} automatically)",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "download.url",
+      "type" : "java.lang.String",
+      "defaultValue" : "${driver.mirrorUrl}/${version}/apache-cassandra-${version}-bin.tar.gz",
+      "description" : "URL pattern for downloading the installer (will substitute things like ${version} automatically)",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "expandedinstall.dir",
+      "type" : "java.lang.String",
+      "defaultValue" : null,
+      "description" : "Directory for installed artifacts (e.g. expanded dir after unpacking .tgz)",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "files.runtime",
+      "type" : "java.util.Map",
+      "defaultValue" : null,
+      "description" : "Map of files to be copied, keyed by destination name relative to runDir",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "install.dir",
+      "type" : "java.lang.String",
+      "defaultValue" : "${config['onbox.base.dir']!config['brooklyn.datadir']!'/<ERROR>-ONBOX_BASE_DIR-not-set'}/installs/${(config['install.unique_label']??)?string(config['install.unique_label']!'X',(entity.entityType.simpleName)+((config['install.version']??)?string('_'+(config['install.version']!'X'),'')))}",
+      "description" : "Directory for this software to be installed in",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "install.latch",
+      "type" : "java.lang.Boolean",
+      "defaultValue" : null,
+      "description" : "Latch for blocking install until ready",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "install.skip",
+      "type" : "java.lang.Boolean",
+      "defaultValue" : false,
+      "description" : "Skip the driver install commands entirely, for pre-installed software",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "install.unique_label",
+      "type" : "java.lang.String",
+      "defaultValue" : null,
+      "description" : "Provides a label which uniquely identifies an installation, used in the computation of the install dir; this should include something readable, and must include a hash of all data which differentiates an installation (e.g. version, plugins, etc), but should be the same where install dirs can be shared to allow for re-use",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "install.version",
+      "type" : "java.lang.String",
+      "defaultValue" : "1.2.16",
+      "description" : "Suggested version",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "java.check.hostname.bug",
+      "type" : "java.lang.Boolean",
+      "defaultValue" : true,
+      "description" : "Check whether hostname is too long and will likely crash Javadue to bug 7089443",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "java.metrics.mxbeanStatsEnabled",
+      "type" : "java.lang.Boolean",
+      "defaultValue" : true,
+      "description" : "Enables collection of JVM stats from the MXBeans, such as memory and thread usage (default is true)",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "java.opts",
+      "type" : "java.util.Set",
+      "defaultValue" : [ ],
+      "description" : "Java command line options",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "java.sysprops",
+      "type" : "java.util.Map",
+      "defaultValue" : { },
+      "description" : "Java command line system properties",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "jmx.agent.mode",
+      "type" : "java.lang.Enum",
+      "defaultValue" : "JMXMP_AND_RMI",
+      "description" : "What type of JMX agent to use; defaults to null (autodetect) which means JMXMP_AND_RMI allowing firewall access through a single port as well as local access supporting jconsole (unless JMX_SSL_ENABLED is set, in which case it is JMXMP only)",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : [ {
+        "value" : "AUTODETECT",
+        "description" : "AUTODETECT"
+      }, {
+        "value" : "JMXMP",
+        "description" : "JMXMP"
+      }, {
+        "value" : "JMXMP_AND_RMI",
+        "description" : "JMXMP_AND_RMI"
+      }, {
+        "value" : "JMX_RMI_CUSTOM_AGENT",
+        "description" : "JMX_RMI_CUSTOM_AGENT"
+      }, {
+        "value" : "JMX_RMI",
+        "description" : "JMX_RMI"
+      }, {
+        "value" : "NONE",
+        "description" : "NONE"
+      } ],
+      "links" : null
+    }, {
+      "name" : "jmx.context",
+      "type" : "java.lang.String",
+      "defaultValue" : "jmxrmi",
+      "description" : "JMX context path",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "jmx.direct.port",
+      "type" : "brooklyn.location.PortRange",
+      "defaultValue" : "31001-65535",
+      "description" : "JMX direct/private port (e.g. JMX RMI server port, or JMXMP port, but not RMI registry port)",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "jmx.enabled",
+      "type" : "java.lang.Boolean",
+      "defaultValue" : true,
+      "description" : "JMX enabled",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "jmx.password",
+      "type" : "java.lang.String",
+      "defaultValue" : null,
+      "description" : "JMX password",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "jmx.ssl.access.cert",
+      "type" : "java.security.cert.Certificate",
+      "defaultValue" : null,
+      "description" : "certificate of key used to access a JMX agent",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "jmx.ssl.access.key",
+      "type" : "java.security.PrivateKey",
+      "defaultValue" : null,
+      "description" : "key used to access a JMX agent (typically per entity, embedded in the managed JVM)",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "jmx.ssl.enabled",
+      "type" : "java.lang.Boolean",
+      "defaultValue" : false,
+      "description" : "JMX over JMXMP enabled with SSL/TLS",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "jmx.user",
+      "type" : "java.lang.String",
+      "defaultValue" : null,
+      "description" : "JMX username",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "launch.latch",
+      "type" : "java.lang.Boolean",
+      "defaultValue" : null,
+      "description" : "Latch for blocking launch until ready",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "post.install.command",
+      "type" : "java.lang.String",
+      "defaultValue" : null,
+      "description" : "Command to be run after the install method being called on the driver",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "post.launch.command",
+      "type" : "java.lang.String",
+      "defaultValue" : null,
+      "description" : "Command to be run after the launch method being called on the driver",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "pre.install.command",
+      "type" : "java.lang.String",
+      "defaultValue" : null,
+      "description" : "Command to be run prior to the install method being called on the driver",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "pre.launch.command",
+      "type" : "java.lang.String",
+      "defaultValue" : null,
+      "description" : "Command to be run prior to the launch method being called on the driver",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "provisioning.properties",
+      "type" : "java.util.Map",
+      "defaultValue" : { },
+      "description" : "Custom properties to be passed in when provisioning a new machine",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "resources.latch",
+      "type" : "java.lang.Boolean",
+      "defaultValue" : null,
+      "description" : "Latch for blocking resources until ready",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "rmi.registry.port",
+      "type" : "brooklyn.location.PortRange",
+      "defaultValue" : "7199",
+      "description" : "RMI registry port, used for discovering JMX (private) port",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "run.dir",
+      "type" : "java.lang.String",
+      "defaultValue" : "${config['onbox.base.dir']!config['brooklyn.datadir']!'/<ERROR>-ONBOX_BASE_DIR-not-set'}/apps/${entity.applicationId}/entities/${entity.entityType.simpleName}_${entity.id}",
+      "description" : "Directory for this software to be run from",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "setup.latch",
+      "type" : "java.lang.Boolean",
+      "defaultValue" : null,
+      "description" : "Latch for blocking setup until ready",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "shell.env",
+      "type" : "java.util.Map",
+      "defaultValue" : { },
+      "description" : "Map of environment variables to pass to the runtime shell",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "softwareProcess.maxSensorRebindDelay",
+      "type" : "brooklyn.util.time.Duration",
+      "defaultValue" : "10s",
+      "description" : "The maximum delay to apply when reconnecting sensors when rebinding to this entity. Brooklyn will wait a random amount of time, up to the value of this config key, to avoid a thundering herd problem when the entity shares its machine with several others. Set to null or to 0 to disable any delay.",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "start.latch",
+      "type" : "java.lang.Boolean",
+      "defaultValue" : null,
+      "description" : "Latch for blocking start until ready",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "start.timeout",
+      "type" : "brooklyn.util.time.Duration",
+      "defaultValue" : "5m",
+      "description" : "Time to wait for process and for SERVICE_UP before failing (in seconds, default 2m)",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "templates.runtime",
+      "type" : "java.util.Map",
+      "defaultValue" : null,
+      "description" : "Map of templates to be filled in and copied, keyed by destination name relative to runDir",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    } ],
+    "sensors" : [ {
+      "name" : "cassandra.cluster.name",
+      "type" : "java.lang.String",
+      "description" : "Name of the Cassandra cluster",
+      "links" : null
+    }, {
+      "name" : "cassandra.gossip.port",
+      "type" : "java.lang.Integer",
+      "description" : "Cassandra Gossip communications port",
+      "links" : null
+    }, {
+      "name" : "cassandra.liveNodeCount",
+      "type" : "java.lang.Integer",
+      "description" : "Number of live nodes in cluster",
+      "links" : null
+    }, {
+      "name" : "cassandra.native.port",
+      "type" : "java.lang.Integer",
+      "description" : "Cassandra Native Transport port",
+      "links" : null
+    }, {
+      "name" : "cassandra.peers",
+      "type" : "java.lang.Integer",
+      "description" : "Number of peers in cluster",
+      "links" : null
+    }, {
+      "name" : "cassandra.read.active",
+      "type" : "java.lang.Integer",
+      "description" : "Current active ReadStage tasks",
+      "links" : null
+    }, {
+      "name" : "cassandra.read.completed",
+      "type" : "java.lang.Long",
+      "description" : "Total completed ReadStage tasks",
+      "links" : null
+    }, {
+      "name" : "cassandra.read.pending",
+      "type" : "java.lang.Long",
+      "description" : "Current pending ReadStage tasks",
+      "links" : null
+    }, {
+      "name" : "cassandra.reads.perSec.last",
+      "type" : "java.lang.Double",
+      "description" : "Reads/sec (last datapoint)",
+      "links" : null
+    }, {
+      "name" : "cassandra.reads.perSec.windowed",
+      "type" : "java.lang.Double",
+      "description" : "Reads/sec (over time window)",
+      "links" : null
+    }, {
+      "name" : "cassandra.replication.datacenterName",
+      "type" : "java.lang.String",
+      "description" : "Datacenter name (used for configuring replication, when a suitable snitch is used)",
+      "links" : null
+    }, {
+      "name" : "cassandra.replication.rackName",
+      "type" : "java.lang.String",
+      "description" : "Rack name (used for configuring replication, when a suitable snitch is used)",
+      "links" : null
+    }, {
+      "name" : "cassandra.service.jmx.up",
+      "type" : "java.lang.Boolean",
+      "description" : "Whether JMX is up for this service",
+      "links" : null
+    }, {
+      "name" : "cassandra.ssl-gossip.port",
+      "type" : "java.lang.Integer",
+      "description" : "Cassandra Gossip SSL communications port",
+      "links" : null
+    }, {
+      "name" : "cassandra.thrift.latency",
+      "type" : "java.lang.Long",
+      "description" : "Latency for thrift port connection (ms) or null if down",
+      "links" : null
+    }, {
+      "name" : "cassandra.thrift.latency.windowed",
+      "type" : "java.lang.Double",
+      "description" : "Latency for thrift port (ms, averaged over time window)",
+      "links" : null
+    }, {
+      "name" : "cassandra.thrift.port",
+      "type" : "java.lang.Integer",
+      "description" : "Cassandra Thrift RPC port",
+      "links" : null
+    }, {
+      "name" : "cassandra.token",
+      "type" : "java.math.BigInteger",
+      "description" : "Cassandra Token",
+      "links" : null
+    }, {
+      "name" : "cassandra.tokens",
+      "type" : "java.util.Set",
+      "description" : "Cassandra Tokens",
+      "links" : null
+    }, {
+      "name" : "cassandra.write.active",
+      "type" : "java.lang.Integer",
+      "description" : "Current active MutationStage tasks",
+      "links" : null
+    }, {
+      "name" : "cassandra.write.completed",
+      "type" : "java.lang.Long",
+      "description" : "Total completed MutationStage tasks",
+      "links" : null
+    }, {
+      "name" : "cassandra.write.pending",
+      "type" : "java.lang.Long",
+      "description" : "Current pending MutationStage tasks",
+      "links" : null
+    }, {
+      "name" : "cassandra.write.perSec.last",
+      "type" : "java.lang.Double",
+      "description" : "Writes/sec (last datapoint)",
+      "links" : null
+    }, {
+      "name" : "cassandra.writes.perSec.windowed",
+      "type" : "java.lang.Double",
+      "description" : "Writes/sec (over time window)",
+      "links" : null
+    }, {
+      "name" : "datastore.url",
+      "type" : "java.lang.String",
+      "description" : "Primary contact URL for a datastore (e.g. mysql://localhost:3306/)",
+      "links" : null
+    }, {
+      "name" : "download.addon.urls",
+      "type" : "java.util.Map",
+      "description" : "URL patterns for downloading named add-ons (will substitute things like ${version} automatically)",
+      "links" : null
+    }, {
+      "name" : "download.url",
+      "type" : "java.lang.String",
+      "description" : "URL pattern for downloading the installer (will substitute things like ${version} automatically)",
+      "links" : null
+    }, {
+      "name" : "expandedinstall.dir",
+      "type" : "java.lang.String",
+      "description" : "Directory for installed artifacts (e.g. expanded dir after unpacking .tgz)",
+      "links" : null
+    }, {
+      "name" : "host.address",
+      "type" : "java.lang.String",
+      "description" : "Host IP address",
+      "links" : null
+    }, {
+      "name" : "host.name",
+      "type" : "java.lang.String",
+      "description" : "Host name",
+      "links" : null
+    }, {
+      "name" : "host.subnet.address",
+      "type" : "java.lang.String",
+      "description" : "Host address as known internally in the subnet where it is running (if different to host.name)",
+      "links" : null
+    }, {
+      "name" : "host.subnet.hostname",
+      "type" : "java.lang.String",
+      "description" : "Host name as known internally in the subnet where it is running (if different to host.name)",
+      "links" : null
+    }, {
+      "name" : "install.dir",
+      "type" : "java.lang.String",
+      "description" : "Directory for this software to be installed in",
+      "links" : null
+    }, {
+      "name" : "java.metrics.gc.time",
+      "type" : "java.util.Map",
+      "description" : "garbage collection time",
+      "links" : null
+    }, {
+      "name" : "java.metrics.heap.committed",
+      "type" : "java.lang.Long",
+      "description" : "Commited heap size (bytes)",
+      "links" : null
+    }, {
+      "name" : "java.metrics.heap.init",
+      "type" : "java.lang.Long",
+      "description" : "Initial heap size (bytes)",
+      "links" : null
+    }, {
+      "name" : "java.metrics.heap.max",
+      "type" : "java.lang.Long",
+      "description" : "Max heap size (bytes)",
+      "links" : null
+    }, {
+      "name" : "java.metrics.heap.used",
+      "type" : "java.lang.Long",
+      "description" : "Current heap size (bytes)",
+      "links" : null
+    }, {
+      "name" : "java.metrics.nonheap.used",
+      "type" : "java.lang.Long",
+      "description" : "Current non-heap size (bytes)",
+      "links" : null
+    }, {
+      "name" : "java.metrics.physicalmemory.free",
+      "type" : "java.lang.Long",
+      "description" : "The free memory available to the operating system",
+      "links" : null
+    }, {
+      "name" : "java.metrics.physicalmemory.total",
+      "type" : "java.lang.Long",
+      "description" : "The physical memory available to the operating system",
+      "links" : null
+    }, {
+      "name" : "java.metrics.processCpuTime.fraction.last",
+      "type" : "java.lang.Double",
+      "description" : "Fraction of CPU time used, reported by JVM (percentage, last datapoint)",
+      "links" : null
+    }, {
+      "name" : "java.metrics.processCpuTime.fraction.windowed",
+      "type" : "java.lang.Double",
+      "description" : "Fraction of CPU time used, reported by JVM (percentage, over time window)",
+      "links" : null
+    }, {
+      "name" : "java.metrics.processCpuTime.total",
+      "type" : "java.lang.Double",
+      "description" : "Process CPU time (total millis since start)",
+      "links" : null
+    }, {
+      "name" : "java.metrics.processors.available",
+      "type" : "java.lang.Integer",
+      "description" : "number of processors available to the Java virtual machine",
+      "links" : null
+    }, {
+      "name" : "java.metrics.starttime",
+      "type" : "java.lang.Long",
+      "description" : "Start time of Java process (UTC)",
+      "links" : null
+    }, {
+      "name" : "java.metrics.systemload.average",
+      "type" : "java.lang.Double",
+      "description" : "average system load",
+      "links" : null
+    }, {
+      "name" : "java.metrics.threads.current",
+      "type" : "java.lang.Integer",
+      "description" : "Current number of threads",
+      "links" : null
+    }, {
+      "name" : "java.metrics.threads.max",
+      "type" : "java.lang.Integer",
+      "description" : "Peak number of threads",
+      "links" : null
+    }, {
+      "name" : "java.metrics.uptime",
+      "type" : "java.lang.Long",
+      "description" : "Uptime of Java process (millis, elapsed since start)",
+      "links" : null
+    }, {
+      "name" : "jmx.context",
+      "type" : "java.lang.String",
+      "description" : "JMX context path",
+      "links" : null
+    }, {
+      "name" : "jmx.direct.port",
+      "type" : "java.lang.Integer",
+      "description" : "JMX direct/private port (e.g. JMX RMI server port, or JMXMP port, but not RMI registry port)",
+      "links" : null
+    }, {
+      "name" : "jmx.password",
+      "type" : "java.lang.String",
+      "description" : "JMX password",
+      "links" : null
+    }, {
+      "name" : "jmx.service.url",
+      "type" : "java.lang.String",
+      "description" : "The URL for connecting to the MBean Server",
+      "links" : null
+    }, {
+      "name" : "jmx.user",
+      "type" : "java.lang.String",
+      "description" : "JMX username",
+      "links" : null
+    }, {
+      "name" : "rmi.registry.port",
+      "type" : "java.lang.Integer",
+      "description" : "RMI registry port, used for discovering JMX (private) port",
+      "links" : null
+    }, {
+      "name" : "run.dir",
+      "type" : "java.lang.String",
+      "description" : "Directory for this software to be run from",
+      "links" : null
+    }, {
+      "name" : "service.isUp",
+      "type" : "java.lang.Boolean",
+      "description" : "Whether the service is active and availability (confirmed and monitored)",
+      "links" : null
+    }, {
+      "name" : "service.process.isRunning",
+      "type" : "java.lang.Boolean",
+      "description" : "Whether the process for the service is confirmed as running",
+      "links" : null
+    }, {
+      "name" : "service.state",
+      "type" : "brooklyn.entity.basic.Lifecycle",
+      "description" : "Actual lifecycle state of the service",
+      "links" : null
+    }, {
+      "name" : "softwareprocess.pid.file",
+      "type" : "java.lang.String",
+      "description" : "PID file",
+      "links" : null
+    }, {
+      "name" : "softwareservice.provisioningLocation",
+      "type" : "brooklyn.location.MachineProvisioningLocation",
+      "description" : "Location used to provision a machine where this is running",
+      "links" : null
+    } ],
+    "effectors" : [ {
+      "name" : "executeScript",
+      "returnType" : "java.lang.String",
+      "parameters" : [ {
+        "name" : "commands",
+        "type" : "java.lang.String",
+        "description" : null,
+        "defaultValue" : null
+      } ],
+      "description" : "executes the given script contents using cassandra-cli",
+      "links" : null
+    }, {
+      "name" : "restart",
+      "returnType" : "void",
+      "parameters" : [ ],
+      "description" : "Restart the process/service represented by an entity",
+      "links" : null
+    }, {
+      "name" : "start",
+      "returnType" : "void",
+      "parameters" : [ {
+        "name" : "locations",
+        "type" : "java.lang.Object",
+        "description" : "The location or locations to start in, as a string, a location object, a list of strings, or a list of location objects",
+        "defaultValue" : null
+      } ],
+      "description" : "Start the process/service represented by an entity",
+      "links" : null
+    }, {
+      "name" : "stop",
+      "returnType" : "void",
+      "parameters" : [ ],
+      "description" : "Stop the process/service represented by an entity",
+      "links" : null
+    } ]
+  }, {
+    "type" : "brooklyn.entity.nosql.solr.SolrServer",
+    "defaultVersion" : "4.7.0",
+    "name" : "Apache Solr Node",
+    "description" : "Solr is the popular, blazing fast open source enterprise search platform from the Apache Lucene project.",
+    "iconUrl" : "classpath:///solr-logo.jpeg",
+    "config" : [ {
+      "name" : "children.startable.mode",
+      "type" : "java.lang.Enum",
+      "defaultValue" : null,
+      "description" : "children.startable.mode",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : [ {
+        "value" : "NONE",
+        "description" : "NONE"
+      }, {
+        "value" : "FOREGROUND",
+        "description" : "FOREGROUND"
+      }, {
+        "value" : "FOREGROUND_LATE",
+        "description" : "FOREGROUND_LATE"
+      }, {
+        "value" : "BACKGROUND",
+        "description" : "BACKGROUND"
+      }, {
+        "value" : "BACKGROUND_LATE",
+        "description" : "BACKGROUND_LATE"
+      } ],
+      "links" : null
+    }, {
+      "name" : "customize.latch",
+      "type" : "java.lang.Boolean",
+      "defaultValue" : null,
+      "description" : "Latch for blocking customize until ready",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "download.addon.urls",
+      "type" : "java.util.Map",
+      "defaultValue" : null,
+      "description" : "URL patterns for downloading named add-ons (will substitute things like ${version} automatically)",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "download.url",
+      "type" : "java.lang.String",
+      "defaultValue" : "${driver.mirrorUrl}/${version}/solr-${version}.tgz",
+      "description" : "URL pattern for downloading the installer (will substitute things like ${version} automatically)",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "expandedinstall.dir",
+      "type" : "java.lang.String",
+      "defaultValue" : null,
+      "description" : "Directory for installed artifacts (e.g. expanded dir after unpacking .tgz)",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "files.runtime",
+      "type" : "java.util.Map",
+      "defaultValue" : null,
+      "description" : "Map of files to be copied, keyed by destination name relative to runDir",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "install.dir",
+      "type" : "java.lang.String",
+      "defaultValue" : "${config['onbox.base.dir']!config['brooklyn.datadir']!'/<ERROR>-ONBOX_BASE_DIR-not-set'}/installs/${(config['install.unique_label']??)?string(config['install.unique_label']!'X',(entity.entityType.simpleName)+((config['install.version']??)?string('_'+(config['install.version']!'X'),'')))}",
+      "description" : "Directory for this software to be installed in",


<TRUNCATED>

[14/19] incubator-brooklyn git commit: Load the catalog items as json resource

Posted by he...@apache.org.
Load the catalog items as json resource


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

Branch: refs/heads/master
Commit: c7900364165b1edde3dc28e787e16226cf4dd685
Parents: 26e63ad
Author: Valentin Aitken <bo...@gmail.com>
Authored: Mon Feb 23 19:52:35 2015 +0200
Committer: Valentin Aitken <bo...@gmail.com>
Committed: Mon Feb 23 19:52:35 2015 +0200

----------------------------------------------------------------------
 docs/style/js/catalog/items.js                  | 24674 -----------------
 docs/style/js/catalog/items.json                | 24674 +++++++++++++++++
 .../website/learnmore/catalog/catalog-item.html |    13 +-
 3 files changed, 24684 insertions(+), 24677 deletions(-)
----------------------------------------------------------------------



[02/19] incubator-brooklyn git commit: - Catalog rearrangement so it work with jekyll serve without moving files - Include the Navigation menu in the catalog

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/671fda38/docs/website/learnmore/catalog/common.js
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/common.js b/docs/website/learnmore/catalog/common.js
deleted file mode 100644
index 8e8a45f..0000000
--- a/docs/website/learnmore/catalog/common.js
+++ /dev/null
@@ -1,94 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- * 
- *   http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-var brooklyn = (function ($, _) {
-
-    return {
-        findItemOfType: function(items, type) {
-            return _.findWhere(items, { type: type });
-        },
-
-        entityCard: _.template(
-            "<a class='plain' data-type='<%= type %>' href='entities/<%= type %>.html'>" +
-            "<div class='card'>" +
-            "<span class='glyphicon glyphicon-chevron-right'/>" +
-            "<div class='name'><%=name%></div>" +
-            "<div class='type'><%=type%></div>" +
-            "<div class='description'><%=description%></div>" +
-            "</div>" +
-            "</a>"
-        ),
-        policyCard: _.template(
-            "<a class='plain' data-type='<%= type %>' href='policies/<%= type %>.html'>" +
-            "<div class='card'>" +
-            "<span class='glyphicon glyphicon-chevron-right'/>" +
-            "<div class='name'><%=name%></div>" +
-            "<div class='type'><%=type%></div>" +
-            "<div class='description'><%=description%></div>" +
-            "</div>" +
-            "</a>"
-        ),
-        enricherCard: _.template(
-            "<a class='plain' data-type='<%= type %>' href='enrichers/<%= type %>.html'>" +
-            "<div class='card'>" +
-            "<span class='glyphicon glyphicon-chevron-right'/>" +
-            "<div class='name'><%=name%></div>" +
-            "<div class='type'><%=type%></div>" +
-            "<div class='description'><%=description%></div>" +
-            "</div>" +
-            "</a>"
-        ),
-
-        typeSummary: _.template(
-            "<div class='summaryLabel'><%=name%></div>" +
-            "<div class='summaryType'><%=type%></div>" +
-            "<div class='description'><%=description%></div>"
-        ),
-
-        configKeyCard: _.template(
-            "<div class='card configKey'>" +
-            "<div class='name'><%=name%></div>" +
-            "<dl>" +
-            "<dt>description</dt><dd><%=(description||'&nbsp;')%></dd>" +
-            "<dt>value type</dt><dd class='java'><%=(type||'&nbsp;')%></dd>" +
-            "<dt>default value</dt><dd><%=(defaultValue||'&nbsp;')%></dd>" +
-            "</dl>" +
-            "</div>"
-        ),
-        sensorCard: _.template(
-            "<div class='card sensor'>" +
-            "<div class='name'><%=name%></div>" +
-            "<dl>" +
-            "<dt>description</dt><dd><%=(description||'&nbsp;')%></dd>" +
-            "<dt>value type</dt><dd class='java'><%=(type||'&nbsp;')%></dd>" +
-            "</dl>" +
-            "</div>"
-        ),
-        effectorCard: _.template(
-            "<div class='card effector'>" +
-            "<div class='name'><%=name%></div>" +
-            "<dl>" +
-            "<dt>description</dt><dd><%=(description||'&nbsp;')%></dd>" +
-            "<dt>return type</dt><dd class='java'><%=(returnType||'&nbsp;')%></dd>" +
-            "</dl>" +
-            "</div>"
-        )
-    };
-
-}(jQuery, _));

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/671fda38/docs/website/learnmore/catalog/index.html
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/index.html b/docs/website/learnmore/catalog/index.html
new file mode 100644
index 0000000..87b8723
--- /dev/null
+++ b/docs/website/learnmore/catalog/index.html
@@ -0,0 +1,150 @@
+---
+layout: base
+title: Catalog
+---
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<head>
+
+  {% include base-head.html %}
+  <link rel="stylesheet" href="{{site.path.style}}/css/catalog_items.css" type="text/css" media="screen"/>
+</head>
+
+
+<body>
+
+{% include topmenu.html %}
+
+
+
+<div id="container">
+  <div id="header">
+    <div id="identity">
+      <a href="https://brooklyn.incubator.apache.org/" rel="home">Brooklyn</a>
+    </div>
+  </div>
+
+  <ul class="nav nav-tabs">
+    <li class="active"><a href="#entities" data-toggle="tab">Entities</a></li>
+    <li><a href="#policies" data-toggle="tab">Policies</a></li>
+    <li><a href="#enrichers" data-toggle="tab">Enrichers</a></li>
+  </ul>
+
+  <div class="tab-content">
+    <div class="tab-pane active" id="entities">
+      <input class="filter form-control" type="text" placeholder="Filter by type, e.g. webapp or nosql">
+    </div>
+    <div class="tab-pane" id="policies">
+      <input class="filter form-control" type="text" placeholder="Filter by type, e.g. ha">
+    </div>
+    <div class="tab-pane" id="enrichers">
+      <input class="filter form-control" type="text" placeholder="Filter by type, e.g. http">
+    </div>
+    <div class="tab-pane" id="locations"></div>
+    <div class="tab-pane" id="locationResolvers"></div>
+  </div>
+</div>
+
+<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
+<script src="{{site.path.style}}/js/underscore-min.js" type="text/javascript"></script>
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
+<script src="libs/js/bloodhound.js" type="text/javascript"></script>
+<script src="{{site.path.style}}/js/catalog/common.js" type="text/javascript"></script>
+<script src="{{site.path.style}}/js/catalog/items.js" type="text/javascript"></script>
+<script type="text/javascript">
+  if (!String.prototype.trim) {
+    String.prototype.trim = function () {
+      return this.replace(/^\s+|\s+$/g, '');
+    };
+  }
+  var card = function (collection, cardFunction, target) {
+    var cards = _.map(collection, cardFunction);
+    $(target).append(cards.join(""));
+  };
+  var ESCAPE_KEY = 27;
+
+  var filter = function (element) {
+    var $element = $(element),
+            $tab = $element.parent(),
+            kind = $tab.attr("id"),
+            collection = items[kind];
+    if (!collection) {
+      console.warn("Unable to determine type for input", element);
+      return;
+    }
+
+    // Number.MAX_VALUE configures Bloodhound to return all matches.
+    var bloodhound = new Bloodhound({
+      name: kind,
+      local: collection,
+      limit: Number.MAX_VALUE,
+      datumTokenizer: function (d) {
+        return Bloodhound.tokenizers.nonword(d.type);
+      },
+      queryTokenizer: Bloodhound.tokenizers.nonword
+    });
+    bloodhound.initialize();
+
+    // Filter items as input changes
+    var allAnchors = $tab.find("a").map(function (index, a) { return $(a); });
+    var hideAnchorsNotMatchingQuery = function () {
+      var query = $element.val();
+      query = query.trim();
+      if (!query) {
+        $tab.find("a").removeClass("hide");
+      } else {
+        var matchedTypes = {};
+        bloodhound.get(query, function (suggestions) {
+          _.each(suggestions, function (s) {
+            // approximate a set!
+            matchedTypes[s.type] = true;
+          });
+        });
+        _.each(allAnchors, function (a) {
+          if (_.has(matchedTypes, a.data("type"))) {
+            a.removeClass("hide");
+          } else {
+            a.addClass("hide");
+          }
+        });
+      }
+    };
+    $element.on("input", hideAnchorsNotMatchingQuery);
+    // In case page is loaded with text in input, e.g. from back button.
+    hideAnchorsNotMatchingQuery();
+
+    $element.on("keydown", function (e) {
+      if (e.keyCode == ESCAPE_KEY) {
+        $element.val("");
+        hideAnchorsNotMatchingQuery();
+      }
+    });
+  };
+
+  $(document).ready(function () {
+    card(items.entities, brooklyn.entityCard, "#entities");
+    card(items.policies, brooklyn.policyCard, "#policies");
+    card(items.enrichers, brooklyn.enricherCard, "#enrichers");
+    //transformItemAndAddToElement(items.locations, brooklyn.locationCard, "#locations");
+    //items.locationResolvers.forEach(function (element) { $("#locationResolvers").append("<tr><td>" + element + "</td></tr>"); });
+    $("input.filter").each(function (index, element) {
+      filter(element);
+    });
+  });
+</script>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/671fda38/docs/website/learnmore/catalog/index.md
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/index.md b/docs/website/learnmore/catalog/index.md
deleted file mode 100644
index 98f8a96..0000000
--- a/docs/website/learnmore/catalog/index.md
+++ /dev/null
@@ -1,131 +0,0 @@
----
-title: Catalog
----
-<html lang="en">
-  <head>
-    <meta charset="utf-8">
-    <meta http-equiv="X-UA-Compatible" content="IE=edge">
-    <meta name="viewport" content="width=device-width, initial-scale=1">
-    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
-    <link rel="stylesheet" href="items.css" type="text/css" media="screen"/>
-    <title>Brooklyn Objects</title>
-  </head>
-
-  <body>
-    <div id="container">
-      <div id="header">
-        <div id="identity">
-          <a href="https://brooklyn.incubator.apache.org/" rel="home">Brooklyn</a>
-        </div>
-      </div>
-
-      <ul class="nav nav-tabs">
-        <li class="active"><a href="#entities" data-toggle="tab">Entities</a></li>
-        <li><a href="#policies" data-toggle="tab">Policies</a></li>
-        <li><a href="#enrichers" data-toggle="tab">Enrichers</a></li>
-      </ul>
-
-      <div class="tab-content">
-        <div class="tab-pane active" id="entities">
-          <input class="filter form-control" type="text" placeholder="Filter by type, e.g. webapp or nosql">
-        </div>
-        <div class="tab-pane" id="policies">
-          <input class="filter form-control" type="text" placeholder="Filter by type, e.g. ha">
-        </div>
-        <div class="tab-pane" id="enrichers">
-          <input class="filter form-control" type="text" placeholder="Filter by type, e.g. http">
-        </div>
-        <div class="tab-pane" id="locations"></div>
-        <div class="tab-pane" id="locationResolvers"></div>
-      </div>
-    </div>
-
-    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
-    <script src="../../style/js/underscore-min.js" type="text/javascript"></script>
-    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
-    <script src="libs/js/bloodhound.js" type="text/javascript"></script>
-    <script src="common.js" type="text/javascript"></script>
-    <script src="items.js" type="text/javascript"></script>
-    <script type="text/javascript">
-        if (!String.prototype.trim) {
-            String.prototype.trim = function () {
-                return this.replace(/^\s+|\s+$/g, '');
-            };
-        }
-        var card = function (collection, cardFunction, target) {
-            var cards = _.map(collection, cardFunction);
-            $(target).append(cards.join(""));
-        };
-        var ESCAPE_KEY = 27;
-
-        var filter = function (element) {
-            var $element = $(element),
-                $tab = $element.parent(),
-                kind = $tab.attr("id"),
-                collection = items[kind];
-            if (!collection) {
-                console.warn("Unable to determine type for input", element);
-                return;
-            }
-
-            // Number.MAX_VALUE configures Bloodhound to return all matches.
-            var bloodhound = new Bloodhound({
-                name: kind,
-                local: collection,
-                limit: Number.MAX_VALUE,
-                datumTokenizer: function (d) {
-                    return Bloodhound.tokenizers.nonword(d.type);
-                },
-                queryTokenizer: Bloodhound.tokenizers.nonword
-            });
-            bloodhound.initialize();
-
-            // Filter items as input changes
-            var allAnchors = $tab.find("a").map(function (index, a) { return $(a); });
-            var hideAnchorsNotMatchingQuery = function () {
-                var query = $element.val();
-                query = query.trim();
-                if (!query) {
-                    $tab.find("a").removeClass("hide");
-                } else {
-                    var matchedTypes = {};
-                    bloodhound.get(query, function (suggestions) {
-                        _.each(suggestions, function (s) {
-                            // approximate a set!
-                            matchedTypes[s.type] = true;
-                        });
-                    });
-                    _.each(allAnchors, function (a) {
-                        if (_.has(matchedTypes, a.data("type"))) {
-                            a.removeClass("hide");
-                        } else {
-                            a.addClass("hide");
-                        }
-                    });
-                }
-            };
-            $element.on("input", hideAnchorsNotMatchingQuery);
-            // In case page is loaded with text in input, e.g. from back button.
-            hideAnchorsNotMatchingQuery();
-
-            $element.on("keydown", function (e) {
-                if (e.keyCode == ESCAPE_KEY) {
-                    $element.val("");
-                    hideAnchorsNotMatchingQuery();
-                }
-            });
-        };
-
-        $(document).ready(function () {
-            card(items.entities, brooklyn.entityCard, "#entities");
-            card(items.policies, brooklyn.policyCard, "#policies");
-            card(items.enrichers, brooklyn.enricherCard, "#enrichers");
-            //transformItemAndAddToElement(items.locations, brooklyn.locationCard, "#locations");
-            //items.locationResolvers.forEach(function (element) { $("#locationResolvers").append("<tr><td>" + element + "</td></tr>"); });
-            $("input.filter").each(function (index, element) {
-                filter(element);
-            });
-        });
-    </script>
-  </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/671fda38/docs/website/learnmore/catalog/items.css
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/items.css b/docs/website/learnmore/catalog/items.css
deleted file mode 100644
index a0bf0f0..0000000
--- a/docs/website/learnmore/catalog/items.css
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
-*/
-/* landing page */
-body {
-  margin: 0px;
-  padding: 10px 0px 20px 0px;
-  font-family: arial, helvetica, sans-serif;
-  background-color: #ffffff;
-  color: #393939;
-  font-size: 15px;
-}
-
-.nav-tabs {
-  clear: both;
-  font-weight: bold;
-  font-size: 12pt;
-}
-.nav-tabs a {
-  color: #4d9d3a;
-}
-.nav-tabs a:hover {
-  color: #4d9d3a;
-}
-
-.tab-content {
-  padding: 20px;
-  padding-bottom: 10px;
-  border: 1px solid #ddd;
-  border-top: none;
-}
-
-a:hover > .card {
-  top: -2px;
-  background-color: #f4f4f4;
-  box-shadow: 0px 2px 2px 0px rgba(0, 0, 0, 0.2);
-}
-.card {
-  position: relative;
-  padding: 12px;
-  background-color: #f8f8f8;
-  color: #333;
-  border: 1px solid #E1E1E8;
-  border-radius: 6px;
-  font-size: 11pt;
-}
-.card,
-.filter {
-    margin-bottom: 10px;
-}
-a .glyphicon {
-  display: block;
-  position: absolute;
-  right: 0;
-  top: 0;
-  padding: 8px;
-  font-size: 16pt;
-  color: #aaa;
-}
-a:hover .glyphicon {
-  color: #888;
-}
-a.plain {
-  text-decoration: none !important;
-}
-.name {
-  font-size: 12pt;
-  font-weight: bold;
-}
-.type {
-  font-family: monospace;
-  color: #888;
-  margin-top: 2px;
-}
-#summary .description {
-  margin: 15px 0 25px 0;
-}
-.card .description {
-  margin: 10px 40px 0 20px;
-}
-
-#summary {
-  clear: both;
-  margin: 10px 0 20px 0;
-}
-.summaryLabel {
-  font-size: 20px;
-  font-weight: bold;
-}
-.summaryType {
-  font-family: monospace;
-  font-size: 12pt;
-  color: #888;
-}
-.java {
-  font-family: monospace;
-}
-
-.card dl {
-  margin-bottom: 0;
-  margin-top: 5px;
-}
-dt {
-  clear: both;
-  float: left;
-  width: 8em;
-  text-align: right;
-  font-weight: normal;
-}
-dd {
-  margin-left: 9em;
-}
-
-#container {
-  width: 980px;
-  padding: 0;
-  margin: 0 auto;
-}
-
-#identity {
-  float: left;
-  margin: 0;
-  padding: 30px 0 15px 10px;
-}
-
-#identity a {
-  text-decoration: none;
-  display: block;
-  margin: 0;
-  color: #4d9d3a;
-  font-size: 2.5em;
-  padding: 0;
-  background: transparent url(images/brooklyn.gif) no-repeat 0 0;
-  width: 206px;
-  height: 44px;
-  text-indent: -1000px;
-  overflow: hidden;
-}


[11/19] incubator-brooklyn git commit: Load the catalog items as json resource

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/c7900364/docs/website/learnmore/catalog/catalog-item.html
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/catalog-item.html b/docs/website/learnmore/catalog/catalog-item.html
index 2eaf96b..8eb333f 100644
--- a/docs/website/learnmore/catalog/catalog-item.html
+++ b/docs/website/learnmore/catalog/catalog-item.html
@@ -57,15 +57,22 @@ under the License.
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
 <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
 <script src="{{site.path.style}}/js/catalog/common.js" type="text/javascript"></script>
-<script src="{{site.path.style}}/js/catalog/items.js" type="text/javascript"></script>
 <script type="text/javascript">
   $(document).ready(function () {
-    updateItem();
+    var items_loaded;
 
     $(window).on('hashchange', updateItem);
 
-    function updateItem() {
+    $.getJSON( "{{site.path.style}}/js/catalog/items.json", function( data ) {
+      items_loaded = data;
+      updateItem(data);
+    });
+
+    function updateItem(items) {
       var args, catalog_type;
+      if(!items) {
+        items = items_loaded;
+      }
       args = getArgs();
       if(args.length!=2) {
         alert('bad entity format')


[17/19] incubator-brooklyn git commit: Revert the docs build changes

Posted by he...@apache.org.
Revert the docs build changes


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

Branch: refs/heads/master
Commit: 29326f9d42c324e1b5773c11a15dc338edc1082e
Parents: 29a989c
Author: Valentin Aitken <bo...@gmail.com>
Authored: Sun Mar 29 15:20:55 2015 +0300
Committer: Valentin Aitken <bo...@gmail.com>
Committed: Sun Mar 29 15:21:07 2015 +0300

----------------------------------------------------------------------
 docs/_build/build.sh                | 4 ++--
 docs/_build/config-website-root.yml | 3 +++
 docs/_config.yml                    | 3 +--
 3 files changed, 6 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/29326f9d/docs/_build/build.sh
----------------------------------------------------------------------
diff --git a/docs/_build/build.sh b/docs/_build/build.sh
index 562e531..40f826c 100755
--- a/docs/_build/build.sh
+++ b/docs/_build/build.sh
@@ -43,7 +43,7 @@ function parse_mode() {
     help
     exit 0 ;;
   website-root)
-    JEKYLL_CONFIG=_config.yml,_build/config-production.yml,_build/config-exclude-guide.yml
+    JEKYLL_CONFIG=_config.yml,_build/config-production.yml,_build/config-exclude-guide.yml,_build/config-website-root.yml
     STYLE_SUBDIR=style
     DIRS_TO_MOVE[0]=website
     DIRS_TO_MOVE_TARGET[0]=""
@@ -90,7 +90,7 @@ function parse_mode() {
     SUMMARY="user guide files in the root"
     ;;
   test-both)
-    JEKYLL_CONFIG=_config.yml,_build/config-production.yml,_build/config-exclude-root-index.yml,_build/config-guide-latest.yml
+    JEKYLL_CONFIG=_config.yml,_build/config-production.yml,_build/config-exclude-root-index.yml,_build/config-website-root.yml,_build/config-guide-latest.yml
     DIRS_TO_MOVE[0]=guide
     DIRS_TO_MOVE_TARGET[0]=v/latest
     DIRS_TO_MOVE[1]=website

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/29326f9d/docs/_build/config-website-root.yml
----------------------------------------------------------------------
diff --git a/docs/_build/config-website-root.yml b/docs/_build/config-website-root.yml
new file mode 100644
index 0000000..e5e4b07
--- /dev/null
+++ b/docs/_build/config-website-root.yml
@@ -0,0 +1,3 @@
+path:
+  website: ""
+  guide: "/v/latest"

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/29326f9d/docs/_config.yml
----------------------------------------------------------------------
diff --git a/docs/_config.yml b/docs/_config.yml
index 3bc42e9..10a5d5a 100644
--- a/docs/_config.yml
+++ b/docs/_config.yml
@@ -26,8 +26,7 @@ url_root: http://0.0.0.0:4000
 path:
   style: /style
   guide: /guide
-  #guide: "/v/latest"
-  website: ""
+  website: /website
   v: /v
 
 # Use local copies of dependencies in dev build (switched to remote using URLs for prod build)


[10/19] incubator-brooklyn git commit: Improve the SEO for the catalog

Posted by he...@apache.org.
Improve the SEO for the catalog

- support hashbang tag
  https://developers.google.com/webmasters/ajax-crawling/docs/getting-started


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

Branch: refs/heads/master
Commit: 26e63add205ce15ea86b42e5c632522609ec6afa
Parents: ab6abfa
Author: Valentin Aitken <bo...@gmail.com>
Authored: Mon Feb 23 19:37:27 2015 +0200
Committer: Valentin Aitken <bo...@gmail.com>
Committed: Mon Feb 23 19:37:27 2015 +0200

----------------------------------------------------------------------
 .../website/learnmore/catalog/catalog-item.html | 65 ++++++++++++++++----
 1 file changed, 52 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/26e63add/docs/website/learnmore/catalog/catalog-item.html
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/catalog-item.html b/docs/website/learnmore/catalog/catalog-item.html
index 82512a9..2eaf96b 100644
--- a/docs/website/learnmore/catalog/catalog-item.html
+++ b/docs/website/learnmore/catalog/catalog-item.html
@@ -22,6 +22,8 @@ under the License.
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
 <head>
   <title>Brooklyn Entity - Brooklyn Node</title>
+  <meta name="fragment" content="!">
+
   {% include base-head.html %}
   <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
   <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
@@ -58,18 +60,13 @@ under the License.
 <script src="{{site.path.style}}/js/catalog/items.js" type="text/javascript"></script>
 <script type="text/javascript">
   $(document).ready(function () {
-    updateItems();
+    updateItem();
 
-    $(window).on('hashchange', updateItems);
+    $(window).on('hashchange', updateItem);
 
-    function updateItems() {
-      var args;
-      var hash = window.location.hash;
-      if(!hash || hash.length <= 2) {
-        alert('No such catalog item');
-        return;
-      }
-      args = hash.substring(2).split('/');
+    function updateItem() {
+      var args, catalog_type;
+      args = getArgs();
       if(args.length!=2) {
         alert('bad entity format')
         return;
@@ -77,11 +74,53 @@ under the License.
 
       // entities/brooklyn.entity.brooklynnode.BrooklynNode
       var item = brooklyn.findItemOfType(items[args[0]], args[1]);
+
       $("#summary").html(brooklyn.typeSummary(item));
+      if(args[0] == 'entities') {
+        catalog_type = 'Entity';
+      } else if(args[0] == 'policies') {
+        catalog_type = 'Policy';
+      } else if(args[0] == 'enrichers') {
+        catalog_type = 'Enricher'
+      }
+
+      document.title = 'Brooklyn ' + catalog_type + ' - ' + item.name;
+
       item.config.forEach(function (element) { $("#configKeys").append(brooklyn.configKeyCard(element)); });
-      item.sensors.forEach(function (element) { $("#sensors").append(brooklyn.sensorCard(element)); });
-      if (item.effectors != undefined) {
-        item.effectors.forEach(function (element) { $("#effectors").append(brooklyn.effectorCard(element)); });
+
+      if(args[0] == 'entities') {
+        item.sensors.forEach(function (element) { $("#sensors").append(brooklyn.sensorCard(element)); });
+        if (item.effectors != undefined) {
+          item.effectors.forEach(function (element) { $("#effectors").append(brooklyn.effectorCard(element)); });
+        }
+      }
+    }
+
+    function getArgs() {
+      var args;
+      var params = window.location.hash;
+      if(params) {
+        if(params.length <= 2) {
+          alert('No such catalog item');
+        }
+        args = params.substring(2).split('/');
+      } else {
+        params = getParameterByName('_escaped_fragment_');
+        args = params.split('/');
+      }
+
+      return args;
+
+      function getParameterByName(name) {
+        var search = window.location.search || document.location.search;
+        if(search === undefined) {
+          alert('No get parameter specified for a catalog item')
+        }
+
+        name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
+        var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
+                results = regex.exec(search);
+        return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
       }
     }
   });


[08/19] incubator-brooklyn git commit: Remove obsolete page

Posted by he...@apache.org.
Remove obsolete page


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

Branch: refs/heads/master
Commit: 192601b28821789ad0a66bb2c41098b3e78912cb
Parents: cbe6f8e
Author: Valentin Aitken <bo...@gmail.com>
Authored: Sun Feb 22 01:20:28 2015 +0200
Committer: Valentin Aitken <bo...@gmail.com>
Committed: Sun Feb 22 01:20:28 2015 +0200

----------------------------------------------------------------------
 docs/index.md | 19 -------------------
 1 file changed, 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/192601b2/docs/index.md
----------------------------------------------------------------------
diff --git a/docs/index.md b/docs/index.md
deleted file mode 100644
index 5d2c44b..0000000
--- a/docs/index.md
+++ /dev/null
@@ -1,19 +0,0 @@
----
-layout: website-normal
-title: Brooklyn Website and Docs (dev build)
----
-
-<i>This page is not copied into release builds. It is here as a convenience when doing dev builds.</i>
-
-Consider looking at:
-
-* <a href="{{ site.path.website }}/">the brooklyn website</a>
-* <a href="{{ site.path.guide }}/">the brooklyn user guide (version 0.7.0-SNAPSHOT) <!-- BROOKLYN_VERSION --></a>
-
-Also see the file <code>README.md</code> in this directory.
-
-For reference, this build uses the following variables:
-
-* url root:  `{{ site.url_root }}`
-* path map: `{{ site.path }}`
-


[06/19] incubator-brooklyn git commit: Catalog items Load an entity using one html file

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cbe6f8e6/docs/website/learnmore/catalog/entities/brooklyn.entity.messaging.storm.Storm.html
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/entities/brooklyn.entity.messaging.storm.Storm.html b/docs/website/learnmore/catalog/entities/brooklyn.entity.messaging.storm.Storm.html
deleted file mode 100644
index 06d71a1..0000000
--- a/docs/website/learnmore/catalog/entities/brooklyn.entity.messaging.storm.Storm.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-  <head>
-    <title>Brooklyn Entity - Storm Node</title>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
-    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
-    <link rel="stylesheet" href="../items.css" type="text/css" media="screen"/>
-  </head>
-  <body>
-    <div id="container">
-      <div id="header">
-        <div id="identity">
-          <a href="http://brooklyncentral.github.com/" rel="home">Brooklyn</a>
-        </div>
-      </div>
-
-      <div id="summary"></div>
-
-      <ul class="nav nav-tabs">
-        <li class="active"><a href="#configKeys" data-toggle="tab">Config Keys</a></li>
-        <li><a href="#sensors" data-toggle="tab">Sensors</a></li>
-        <li><a href="#effectors" data-toggle="tab">Effectors</a></li>
-      </ul>
-
-      <div class="tab-content">
-        <div class="tab-pane active" id="configKeys"></div>
-        <div class="tab-pane" id="sensors"></div>
-        <div class="tab-pane" id="effectors"></div>
-      </div>
-    </div>
-
-    <script src="../../../style/js/underscore-min.js" type="text/javascript"></script>
-    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
-    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
-    <script src="../common.js" type="text/javascript"></script>
-    <script src="../items.js" type="text/javascript"></script>
-    <script type="text/javascript">
-        $(document).ready(function () {
-            var item = brooklyn.findItemOfType(items.entities, "brooklyn.entity.messaging.storm.Storm");
-            $("#summary").html(brooklyn.typeSummary(item));
-            item.config.forEach(function (element) { $("#configKeys").append(brooklyn.configKeyCard(element)); });
-            item.sensors.forEach(function (element) { $("#sensors").append(brooklyn.sensorCard(element)); });
-            if (item.effectors != undefined) {
-                item.effectors.forEach(function (element) { $("#effectors").append(brooklyn.effectorCard(element)); });
-            }
-        });
-    </script>
-  </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cbe6f8e6/docs/website/learnmore/catalog/entities/brooklyn.entity.messaging.storm.StormDeployment.html
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/entities/brooklyn.entity.messaging.storm.StormDeployment.html b/docs/website/learnmore/catalog/entities/brooklyn.entity.messaging.storm.StormDeployment.html
deleted file mode 100644
index 8a5c329..0000000
--- a/docs/website/learnmore/catalog/entities/brooklyn.entity.messaging.storm.StormDeployment.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-  <head>
-    <title>Brooklyn Entity - Storm Deployment</title>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
-    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
-    <link rel="stylesheet" href="../items.css" type="text/css" media="screen"/>
-  </head>
-  <body>
-    <div id="container">
-      <div id="header">
-        <div id="identity">
-          <a href="http://brooklyncentral.github.com/" rel="home">Brooklyn</a>
-        </div>
-      </div>
-
-      <div id="summary"></div>
-
-      <ul class="nav nav-tabs">
-        <li class="active"><a href="#configKeys" data-toggle="tab">Config Keys</a></li>
-        <li><a href="#sensors" data-toggle="tab">Sensors</a></li>
-        <li><a href="#effectors" data-toggle="tab">Effectors</a></li>
-      </ul>
-
-      <div class="tab-content">
-        <div class="tab-pane active" id="configKeys"></div>
-        <div class="tab-pane" id="sensors"></div>
-        <div class="tab-pane" id="effectors"></div>
-      </div>
-    </div>
-
-    <script src="../../../style/js/underscore-min.js" type="text/javascript"></script>
-    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
-    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
-    <script src="../common.js" type="text/javascript"></script>
-    <script src="../items.js" type="text/javascript"></script>
-    <script type="text/javascript">
-        $(document).ready(function () {
-            var item = brooklyn.findItemOfType(items.entities, "brooklyn.entity.messaging.storm.StormDeployment");
-            $("#summary").html(brooklyn.typeSummary(item));
-            item.config.forEach(function (element) { $("#configKeys").append(brooklyn.configKeyCard(element)); });
-            item.sensors.forEach(function (element) { $("#sensors").append(brooklyn.sensorCard(element)); });
-            if (item.effectors != undefined) {
-                item.effectors.forEach(function (element) { $("#effectors").append(brooklyn.effectorCard(element)); });
-            }
-        });
-    </script>
-  </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cbe6f8e6/docs/website/learnmore/catalog/entities/brooklyn.entity.monitoring.monit.MonitNode.html
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/entities/brooklyn.entity.monitoring.monit.MonitNode.html b/docs/website/learnmore/catalog/entities/brooklyn.entity.monitoring.monit.MonitNode.html
deleted file mode 100644
index 0ec1202..0000000
--- a/docs/website/learnmore/catalog/entities/brooklyn.entity.monitoring.monit.MonitNode.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-  <head>
-    <title>Brooklyn Entity - Monit Node</title>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
-    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
-    <link rel="stylesheet" href="../items.css" type="text/css" media="screen"/>
-  </head>
-  <body>
-    <div id="container">
-      <div id="header">
-        <div id="identity">
-          <a href="http://brooklyncentral.github.com/" rel="home">Brooklyn</a>
-        </div>
-      </div>
-
-      <div id="summary"></div>
-
-      <ul class="nav nav-tabs">
-        <li class="active"><a href="#configKeys" data-toggle="tab">Config Keys</a></li>
-        <li><a href="#sensors" data-toggle="tab">Sensors</a></li>
-        <li><a href="#effectors" data-toggle="tab">Effectors</a></li>
-      </ul>
-
-      <div class="tab-content">
-        <div class="tab-pane active" id="configKeys"></div>
-        <div class="tab-pane" id="sensors"></div>
-        <div class="tab-pane" id="effectors"></div>
-      </div>
-    </div>
-
-    <script src="../../../style/js/underscore-min.js" type="text/javascript"></script>
-    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
-    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
-    <script src="../common.js" type="text/javascript"></script>
-    <script src="../items.js" type="text/javascript"></script>
-    <script type="text/javascript">
-        $(document).ready(function () {
-            var item = brooklyn.findItemOfType(items.entities, "brooklyn.entity.monitoring.monit.MonitNode");
-            $("#summary").html(brooklyn.typeSummary(item));
-            item.config.forEach(function (element) { $("#configKeys").append(brooklyn.configKeyCard(element)); });
-            item.sensors.forEach(function (element) { $("#sensors").append(brooklyn.sensorCard(element)); });
-            if (item.effectors != undefined) {
-                item.effectors.forEach(function (element) { $("#effectors").append(brooklyn.effectorCard(element)); });
-            }
-        });
-    </script>
-  </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cbe6f8e6/docs/website/learnmore/catalog/entities/brooklyn.entity.network.bind.BindDnsServer.html
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/entities/brooklyn.entity.network.bind.BindDnsServer.html b/docs/website/learnmore/catalog/entities/brooklyn.entity.network.bind.BindDnsServer.html
deleted file mode 100644
index 2e79679..0000000
--- a/docs/website/learnmore/catalog/entities/brooklyn.entity.network.bind.BindDnsServer.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-  <head>
-    <title>Brooklyn Entity - BIND</title>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
-    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
-    <link rel="stylesheet" href="../items.css" type="text/css" media="screen"/>
-  </head>
-  <body>
-    <div id="container">
-      <div id="header">
-        <div id="identity">
-          <a href="http://brooklyncentral.github.com/" rel="home">Brooklyn</a>
-        </div>
-      </div>
-
-      <div id="summary"></div>
-
-      <ul class="nav nav-tabs">
-        <li class="active"><a href="#configKeys" data-toggle="tab">Config Keys</a></li>
-        <li><a href="#sensors" data-toggle="tab">Sensors</a></li>
-        <li><a href="#effectors" data-toggle="tab">Effectors</a></li>
-      </ul>
-
-      <div class="tab-content">
-        <div class="tab-pane active" id="configKeys"></div>
-        <div class="tab-pane" id="sensors"></div>
-        <div class="tab-pane" id="effectors"></div>
-      </div>
-    </div>
-
-    <script src="../../../style/js/underscore-min.js" type="text/javascript"></script>
-    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
-    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
-    <script src="../common.js" type="text/javascript"></script>
-    <script src="../items.js" type="text/javascript"></script>
-    <script type="text/javascript">
-        $(document).ready(function () {
-            var item = brooklyn.findItemOfType(items.entities, "brooklyn.entity.network.bind.BindDnsServer");
-            $("#summary").html(brooklyn.typeSummary(item));
-            item.config.forEach(function (element) { $("#configKeys").append(brooklyn.configKeyCard(element)); });
-            item.sensors.forEach(function (element) { $("#sensors").append(brooklyn.sensorCard(element)); });
-            if (item.effectors != undefined) {
-                item.effectors.forEach(function (element) { $("#effectors").append(brooklyn.effectorCard(element)); });
-            }
-        });
-    </script>
-  </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cbe6f8e6/docs/website/learnmore/catalog/entities/brooklyn.entity.nosql.cassandra.CassandraDatacenter.html
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/entities/brooklyn.entity.nosql.cassandra.CassandraDatacenter.html b/docs/website/learnmore/catalog/entities/brooklyn.entity.nosql.cassandra.CassandraDatacenter.html
deleted file mode 100644
index 0103410..0000000
--- a/docs/website/learnmore/catalog/entities/brooklyn.entity.nosql.cassandra.CassandraDatacenter.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-  <head>
-    <title>Brooklyn Entity - Apache Cassandra Datacenter Cluster</title>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
-    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
-    <link rel="stylesheet" href="../items.css" type="text/css" media="screen"/>
-  </head>
-  <body>
-    <div id="container">
-      <div id="header">
-        <div id="identity">
-          <a href="http://brooklyncentral.github.com/" rel="home">Brooklyn</a>
-        </div>
-      </div>
-
-      <div id="summary"></div>
-
-      <ul class="nav nav-tabs">
-        <li class="active"><a href="#configKeys" data-toggle="tab">Config Keys</a></li>
-        <li><a href="#sensors" data-toggle="tab">Sensors</a></li>
-        <li><a href="#effectors" data-toggle="tab">Effectors</a></li>
-      </ul>
-
-      <div class="tab-content">
-        <div class="tab-pane active" id="configKeys"></div>
-        <div class="tab-pane" id="sensors"></div>
-        <div class="tab-pane" id="effectors"></div>
-      </div>
-    </div>
-
-    <script src="../../../style/js/underscore-min.js" type="text/javascript"></script>
-    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
-    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
-    <script src="../common.js" type="text/javascript"></script>
-    <script src="../items.js" type="text/javascript"></script>
-    <script type="text/javascript">
-        $(document).ready(function () {
-            var item = brooklyn.findItemOfType(items.entities, "brooklyn.entity.nosql.cassandra.CassandraDatacenter");
-            $("#summary").html(brooklyn.typeSummary(item));
-            item.config.forEach(function (element) { $("#configKeys").append(brooklyn.configKeyCard(element)); });
-            item.sensors.forEach(function (element) { $("#sensors").append(brooklyn.sensorCard(element)); });
-            if (item.effectors != undefined) {
-                item.effectors.forEach(function (element) { $("#effectors").append(brooklyn.effectorCard(element)); });
-            }
-        });
-    </script>
-  </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cbe6f8e6/docs/website/learnmore/catalog/entities/brooklyn.entity.nosql.cassandra.CassandraFabric.html
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/entities/brooklyn.entity.nosql.cassandra.CassandraFabric.html b/docs/website/learnmore/catalog/entities/brooklyn.entity.nosql.cassandra.CassandraFabric.html
deleted file mode 100644
index 71ee547..0000000
--- a/docs/website/learnmore/catalog/entities/brooklyn.entity.nosql.cassandra.CassandraFabric.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-  <head>
-    <title>Brooklyn Entity - Apache Cassandra Database Fabric</title>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
-    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
-    <link rel="stylesheet" href="../items.css" type="text/css" media="screen"/>
-  </head>
-  <body>
-    <div id="container">
-      <div id="header">
-        <div id="identity">
-          <a href="http://brooklyncentral.github.com/" rel="home">Brooklyn</a>
-        </div>
-      </div>
-
-      <div id="summary"></div>
-
-      <ul class="nav nav-tabs">
-        <li class="active"><a href="#configKeys" data-toggle="tab">Config Keys</a></li>
-        <li><a href="#sensors" data-toggle="tab">Sensors</a></li>
-        <li><a href="#effectors" data-toggle="tab">Effectors</a></li>
-      </ul>
-
-      <div class="tab-content">
-        <div class="tab-pane active" id="configKeys"></div>
-        <div class="tab-pane" id="sensors"></div>
-        <div class="tab-pane" id="effectors"></div>
-      </div>
-    </div>
-
-    <script src="../../../style/js/underscore-min.js" type="text/javascript"></script>
-    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
-    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
-    <script src="../common.js" type="text/javascript"></script>
-    <script src="../items.js" type="text/javascript"></script>
-    <script type="text/javascript">
-        $(document).ready(function () {
-            var item = brooklyn.findItemOfType(items.entities, "brooklyn.entity.nosql.cassandra.CassandraFabric");
-            $("#summary").html(brooklyn.typeSummary(item));
-            item.config.forEach(function (element) { $("#configKeys").append(brooklyn.configKeyCard(element)); });
-            item.sensors.forEach(function (element) { $("#sensors").append(brooklyn.sensorCard(element)); });
-            if (item.effectors != undefined) {
-                item.effectors.forEach(function (element) { $("#effectors").append(brooklyn.effectorCard(element)); });
-            }
-        });
-    </script>
-  </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cbe6f8e6/docs/website/learnmore/catalog/entities/brooklyn.entity.nosql.cassandra.CassandraNode.html
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/entities/brooklyn.entity.nosql.cassandra.CassandraNode.html b/docs/website/learnmore/catalog/entities/brooklyn.entity.nosql.cassandra.CassandraNode.html
deleted file mode 100644
index cc9496e..0000000
--- a/docs/website/learnmore/catalog/entities/brooklyn.entity.nosql.cassandra.CassandraNode.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-  <head>
-    <title>Brooklyn Entity - Apache Cassandra Node</title>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
-    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
-    <link rel="stylesheet" href="../items.css" type="text/css" media="screen"/>
-  </head>
-  <body>
-    <div id="container">
-      <div id="header">
-        <div id="identity">
-          <a href="http://brooklyncentral.github.com/" rel="home">Brooklyn</a>
-        </div>
-      </div>
-
-      <div id="summary"></div>
-
-      <ul class="nav nav-tabs">
-        <li class="active"><a href="#configKeys" data-toggle="tab">Config Keys</a></li>
-        <li><a href="#sensors" data-toggle="tab">Sensors</a></li>
-        <li><a href="#effectors" data-toggle="tab">Effectors</a></li>
-      </ul>
-
-      <div class="tab-content">
-        <div class="tab-pane active" id="configKeys"></div>
-        <div class="tab-pane" id="sensors"></div>
-        <div class="tab-pane" id="effectors"></div>
-      </div>
-    </div>
-
-    <script src="../../../style/js/underscore-min.js" type="text/javascript"></script>
-    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
-    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
-    <script src="../common.js" type="text/javascript"></script>
-    <script src="../items.js" type="text/javascript"></script>
-    <script type="text/javascript">
-        $(document).ready(function () {
-            var item = brooklyn.findItemOfType(items.entities, "brooklyn.entity.nosql.cassandra.CassandraNode");
-            $("#summary").html(brooklyn.typeSummary(item));
-            item.config.forEach(function (element) { $("#configKeys").append(brooklyn.configKeyCard(element)); });
-            item.sensors.forEach(function (element) { $("#sensors").append(brooklyn.sensorCard(element)); });
-            if (item.effectors != undefined) {
-                item.effectors.forEach(function (element) { $("#effectors").append(brooklyn.effectorCard(element)); });
-            }
-        });
-    </script>
-  </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cbe6f8e6/docs/website/learnmore/catalog/entities/brooklyn.entity.nosql.couchbase.CouchbaseCluster.html
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/entities/brooklyn.entity.nosql.couchbase.CouchbaseCluster.html b/docs/website/learnmore/catalog/entities/brooklyn.entity.nosql.couchbase.CouchbaseCluster.html
deleted file mode 100644
index 493abc7..0000000
--- a/docs/website/learnmore/catalog/entities/brooklyn.entity.nosql.couchbase.CouchbaseCluster.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-  <head>
-    <title>Brooklyn Entity - CouchBase Cluster</title>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
-    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
-    <link rel="stylesheet" href="../items.css" type="text/css" media="screen"/>
-  </head>
-  <body>
-    <div id="container">
-      <div id="header">
-        <div id="identity">
-          <a href="http://brooklyncentral.github.com/" rel="home">Brooklyn</a>
-        </div>
-      </div>
-
-      <div id="summary"></div>
-
-      <ul class="nav nav-tabs">
-        <li class="active"><a href="#configKeys" data-toggle="tab">Config Keys</a></li>
-        <li><a href="#sensors" data-toggle="tab">Sensors</a></li>
-        <li><a href="#effectors" data-toggle="tab">Effectors</a></li>
-      </ul>
-
-      <div class="tab-content">
-        <div class="tab-pane active" id="configKeys"></div>
-        <div class="tab-pane" id="sensors"></div>
-        <div class="tab-pane" id="effectors"></div>
-      </div>
-    </div>
-
-    <script src="../../../style/js/underscore-min.js" type="text/javascript"></script>
-    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
-    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
-    <script src="../common.js" type="text/javascript"></script>
-    <script src="../items.js" type="text/javascript"></script>
-    <script type="text/javascript">
-        $(document).ready(function () {
-            var item = brooklyn.findItemOfType(items.entities, "brooklyn.entity.nosql.couchbase.CouchbaseCluster");
-            $("#summary").html(brooklyn.typeSummary(item));
-            item.config.forEach(function (element) { $("#configKeys").append(brooklyn.configKeyCard(element)); });
-            item.sensors.forEach(function (element) { $("#sensors").append(brooklyn.sensorCard(element)); });
-            if (item.effectors != undefined) {
-                item.effectors.forEach(function (element) { $("#effectors").append(brooklyn.effectorCard(element)); });
-            }
-        });
-    </script>
-  </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cbe6f8e6/docs/website/learnmore/catalog/entities/brooklyn.entity.nosql.couchbase.CouchbaseNode.html
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/entities/brooklyn.entity.nosql.couchbase.CouchbaseNode.html b/docs/website/learnmore/catalog/entities/brooklyn.entity.nosql.couchbase.CouchbaseNode.html
deleted file mode 100644
index 3e42ae1..0000000
--- a/docs/website/learnmore/catalog/entities/brooklyn.entity.nosql.couchbase.CouchbaseNode.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-  <head>
-    <title>Brooklyn Entity - CouchBase Node</title>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
-    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
-    <link rel="stylesheet" href="../items.css" type="text/css" media="screen"/>
-  </head>
-  <body>
-    <div id="container">
-      <div id="header">
-        <div id="identity">
-          <a href="http://brooklyncentral.github.com/" rel="home">Brooklyn</a>
-        </div>
-      </div>
-
-      <div id="summary"></div>
-
-      <ul class="nav nav-tabs">
-        <li class="active"><a href="#configKeys" data-toggle="tab">Config Keys</a></li>
-        <li><a href="#sensors" data-toggle="tab">Sensors</a></li>
-        <li><a href="#effectors" data-toggle="tab">Effectors</a></li>
-      </ul>
-
-      <div class="tab-content">
-        <div class="tab-pane active" id="configKeys"></div>
-        <div class="tab-pane" id="sensors"></div>
-        <div class="tab-pane" id="effectors"></div>
-      </div>
-    </div>
-
-    <script src="../../../style/js/underscore-min.js" type="text/javascript"></script>
-    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
-    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
-    <script src="../common.js" type="text/javascript"></script>
-    <script src="../items.js" type="text/javascript"></script>
-    <script type="text/javascript">
-        $(document).ready(function () {
-            var item = brooklyn.findItemOfType(items.entities, "brooklyn.entity.nosql.couchbase.CouchbaseNode");
-            $("#summary").html(brooklyn.typeSummary(item));
-            item.config.forEach(function (element) { $("#configKeys").append(brooklyn.configKeyCard(element)); });
-            item.sensors.forEach(function (element) { $("#sensors").append(brooklyn.sensorCard(element)); });
-            if (item.effectors != undefined) {
-                item.effectors.forEach(function (element) { $("#effectors").append(brooklyn.effectorCard(element)); });
-            }
-        });
-    </script>
-  </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cbe6f8e6/docs/website/learnmore/catalog/entities/brooklyn.entity.nosql.couchdb.CouchDBNode.html
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/entities/brooklyn.entity.nosql.couchdb.CouchDBNode.html b/docs/website/learnmore/catalog/entities/brooklyn.entity.nosql.couchdb.CouchDBNode.html
deleted file mode 100644
index ca1ab15..0000000
--- a/docs/website/learnmore/catalog/entities/brooklyn.entity.nosql.couchdb.CouchDBNode.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-  <head>
-    <title>Brooklyn Entity - CouchDB Node</title>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
-    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
-    <link rel="stylesheet" href="../items.css" type="text/css" media="screen"/>
-  </head>
-  <body>
-    <div id="container">
-      <div id="header">
-        <div id="identity">
-          <a href="http://brooklyncentral.github.com/" rel="home">Brooklyn</a>
-        </div>
-      </div>
-
-      <div id="summary"></div>
-
-      <ul class="nav nav-tabs">
-        <li class="active"><a href="#configKeys" data-toggle="tab">Config Keys</a></li>
-        <li><a href="#sensors" data-toggle="tab">Sensors</a></li>
-        <li><a href="#effectors" data-toggle="tab">Effectors</a></li>
-      </ul>
-
-      <div class="tab-content">
-        <div class="tab-pane active" id="configKeys"></div>
-        <div class="tab-pane" id="sensors"></div>
-        <div class="tab-pane" id="effectors"></div>
-      </div>
-    </div>
-
-    <script src="../../../style/js/underscore-min.js" type="text/javascript"></script>
-    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
-    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
-    <script src="../common.js" type="text/javascript"></script>
-    <script src="../items.js" type="text/javascript"></script>
-    <script type="text/javascript">
-        $(document).ready(function () {
-            var item = brooklyn.findItemOfType(items.entities, "brooklyn.entity.nosql.couchdb.CouchDBNode");
-            $("#summary").html(brooklyn.typeSummary(item));
-            item.config.forEach(function (element) { $("#configKeys").append(brooklyn.configKeyCard(element)); });
-            item.sensors.forEach(function (element) { $("#sensors").append(brooklyn.sensorCard(element)); });
-            if (item.effectors != undefined) {
-                item.effectors.forEach(function (element) { $("#effectors").append(brooklyn.effectorCard(element)); });
-            }
-        });
-    </script>
-  </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cbe6f8e6/docs/website/learnmore/catalog/entities/brooklyn.entity.nosql.elasticsearch.ElasticSearchCluster.html
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/entities/brooklyn.entity.nosql.elasticsearch.ElasticSearchCluster.html b/docs/website/learnmore/catalog/entities/brooklyn.entity.nosql.elasticsearch.ElasticSearchCluster.html
deleted file mode 100644
index ab90e66..0000000
--- a/docs/website/learnmore/catalog/entities/brooklyn.entity.nosql.elasticsearch.ElasticSearchCluster.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-  <head>
-    <title>Brooklyn Entity - Elastic Search Cluster</title>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
-    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
-    <link rel="stylesheet" href="../items.css" type="text/css" media="screen"/>
-  </head>
-  <body>
-    <div id="container">
-      <div id="header">
-        <div id="identity">
-          <a href="http://brooklyncentral.github.com/" rel="home">Brooklyn</a>
-        </div>
-      </div>
-
-      <div id="summary"></div>
-
-      <ul class="nav nav-tabs">
-        <li class="active"><a href="#configKeys" data-toggle="tab">Config Keys</a></li>
-        <li><a href="#sensors" data-toggle="tab">Sensors</a></li>
-        <li><a href="#effectors" data-toggle="tab">Effectors</a></li>
-      </ul>
-
-      <div class="tab-content">
-        <div class="tab-pane active" id="configKeys"></div>
-        <div class="tab-pane" id="sensors"></div>
-        <div class="tab-pane" id="effectors"></div>
-      </div>
-    </div>
-
-    <script src="../../../style/js/underscore-min.js" type="text/javascript"></script>
-    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
-    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
-    <script src="../common.js" type="text/javascript"></script>
-    <script src="../items.js" type="text/javascript"></script>
-    <script type="text/javascript">
-        $(document).ready(function () {
-            var item = brooklyn.findItemOfType(items.entities, "brooklyn.entity.nosql.elasticsearch.ElasticSearchCluster");
-            $("#summary").html(brooklyn.typeSummary(item));
-            item.config.forEach(function (element) { $("#configKeys").append(brooklyn.configKeyCard(element)); });
-            item.sensors.forEach(function (element) { $("#sensors").append(brooklyn.sensorCard(element)); });
-            if (item.effectors != undefined) {
-                item.effectors.forEach(function (element) { $("#effectors").append(brooklyn.effectorCard(element)); });
-            }
-        });
-    </script>
-  </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cbe6f8e6/docs/website/learnmore/catalog/entities/brooklyn.entity.nosql.elasticsearch.ElasticSearchNode.html
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/entities/brooklyn.entity.nosql.elasticsearch.ElasticSearchNode.html b/docs/website/learnmore/catalog/entities/brooklyn.entity.nosql.elasticsearch.ElasticSearchNode.html
deleted file mode 100644
index b5e6581..0000000
--- a/docs/website/learnmore/catalog/entities/brooklyn.entity.nosql.elasticsearch.ElasticSearchNode.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-  <head>
-    <title>Brooklyn Entity - Elastic Search Node</title>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
-    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
-    <link rel="stylesheet" href="../items.css" type="text/css" media="screen"/>
-  </head>
-  <body>
-    <div id="container">
-      <div id="header">
-        <div id="identity">
-          <a href="http://brooklyncentral.github.com/" rel="home">Brooklyn</a>
-        </div>
-      </div>
-
-      <div id="summary"></div>
-
-      <ul class="nav nav-tabs">
-        <li class="active"><a href="#configKeys" data-toggle="tab">Config Keys</a></li>
-        <li><a href="#sensors" data-toggle="tab">Sensors</a></li>
-        <li><a href="#effectors" data-toggle="tab">Effectors</a></li>
-      </ul>
-
-      <div class="tab-content">
-        <div class="tab-pane active" id="configKeys"></div>
-        <div class="tab-pane" id="sensors"></div>
-        <div class="tab-pane" id="effectors"></div>
-      </div>
-    </div>
-
-    <script src="../../../style/js/underscore-min.js" type="text/javascript"></script>
-    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
-    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
-    <script src="../common.js" type="text/javascript"></script>
-    <script src="../items.js" type="text/javascript"></script>
-    <script type="text/javascript">
-        $(document).ready(function () {
-            var item = brooklyn.findItemOfType(items.entities, "brooklyn.entity.nosql.elasticsearch.ElasticSearchNode");
-            $("#summary").html(brooklyn.typeSummary(item));
-            item.config.forEach(function (element) { $("#configKeys").append(brooklyn.configKeyCard(element)); });
-            item.sensors.forEach(function (element) { $("#sensors").append(brooklyn.sensorCard(element)); });
-            if (item.effectors != undefined) {
-                item.effectors.forEach(function (element) { $("#effectors").append(brooklyn.effectorCard(element)); });
-            }
-        });
-    </script>
-  </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cbe6f8e6/docs/website/learnmore/catalog/entities/brooklyn.entity.nosql.mongodb.MongoDBServer.html
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/entities/brooklyn.entity.nosql.mongodb.MongoDBServer.html b/docs/website/learnmore/catalog/entities/brooklyn.entity.nosql.mongodb.MongoDBServer.html
deleted file mode 100644
index d66cfd4..0000000
--- a/docs/website/learnmore/catalog/entities/brooklyn.entity.nosql.mongodb.MongoDBServer.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-  <head>
-    <title>Brooklyn Entity - MongoDB Server</title>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
-    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
-    <link rel="stylesheet" href="../items.css" type="text/css" media="screen"/>
-  </head>
-  <body>
-    <div id="container">
-      <div id="header">
-        <div id="identity">
-          <a href="http://brooklyncentral.github.com/" rel="home">Brooklyn</a>
-        </div>
-      </div>
-
-      <div id="summary"></div>
-
-      <ul class="nav nav-tabs">
-        <li class="active"><a href="#configKeys" data-toggle="tab">Config Keys</a></li>
-        <li><a href="#sensors" data-toggle="tab">Sensors</a></li>
-        <li><a href="#effectors" data-toggle="tab">Effectors</a></li>
-      </ul>
-
-      <div class="tab-content">
-        <div class="tab-pane active" id="configKeys"></div>
-        <div class="tab-pane" id="sensors"></div>
-        <div class="tab-pane" id="effectors"></div>
-      </div>
-    </div>
-
-    <script src="../../../style/js/underscore-min.js" type="text/javascript"></script>
-    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
-    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
-    <script src="../common.js" type="text/javascript"></script>
-    <script src="../items.js" type="text/javascript"></script>
-    <script type="text/javascript">
-        $(document).ready(function () {
-            var item = brooklyn.findItemOfType(items.entities, "brooklyn.entity.nosql.mongodb.MongoDBServer");
-            $("#summary").html(brooklyn.typeSummary(item));
-            item.config.forEach(function (element) { $("#configKeys").append(brooklyn.configKeyCard(element)); });
-            item.sensors.forEach(function (element) { $("#sensors").append(brooklyn.sensorCard(element)); });
-            if (item.effectors != undefined) {
-                item.effectors.forEach(function (element) { $("#effectors").append(brooklyn.effectorCard(element)); });
-            }
-        });
-    </script>
-  </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cbe6f8e6/docs/website/learnmore/catalog/entities/brooklyn.entity.nosql.mongodb.sharding.MongoDBRouter.html
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/entities/brooklyn.entity.nosql.mongodb.sharding.MongoDBRouter.html b/docs/website/learnmore/catalog/entities/brooklyn.entity.nosql.mongodb.sharding.MongoDBRouter.html
deleted file mode 100644
index 4aa3d58..0000000
--- a/docs/website/learnmore/catalog/entities/brooklyn.entity.nosql.mongodb.sharding.MongoDBRouter.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-  <head>
-    <title>Brooklyn Entity - MongoDB Router</title>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
-    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
-    <link rel="stylesheet" href="../items.css" type="text/css" media="screen"/>
-  </head>
-  <body>
-    <div id="container">
-      <div id="header">
-        <div id="identity">
-          <a href="http://brooklyncentral.github.com/" rel="home">Brooklyn</a>
-        </div>
-      </div>
-
-      <div id="summary"></div>
-
-      <ul class="nav nav-tabs">
-        <li class="active"><a href="#configKeys" data-toggle="tab">Config Keys</a></li>
-        <li><a href="#sensors" data-toggle="tab">Sensors</a></li>
-        <li><a href="#effectors" data-toggle="tab">Effectors</a></li>
-      </ul>
-
-      <div class="tab-content">
-        <div class="tab-pane active" id="configKeys"></div>
-        <div class="tab-pane" id="sensors"></div>
-        <div class="tab-pane" id="effectors"></div>
-      </div>
-    </div>
-
-    <script src="../../../style/js/underscore-min.js" type="text/javascript"></script>
-    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
-    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
-    <script src="../common.js" type="text/javascript"></script>
-    <script src="../items.js" type="text/javascript"></script>
-    <script type="text/javascript">
-        $(document).ready(function () {
-            var item = brooklyn.findItemOfType(items.entities, "brooklyn.entity.nosql.mongodb.sharding.MongoDBRouter");
-            $("#summary").html(brooklyn.typeSummary(item));
-            item.config.forEach(function (element) { $("#configKeys").append(brooklyn.configKeyCard(element)); });
-            item.sensors.forEach(function (element) { $("#sensors").append(brooklyn.sensorCard(element)); });
-            if (item.effectors != undefined) {
-                item.effectors.forEach(function (element) { $("#effectors").append(brooklyn.effectorCard(element)); });
-            }
-        });
-    </script>
-  </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cbe6f8e6/docs/website/learnmore/catalog/entities/brooklyn.entity.nosql.mongodb.sharding.MongoDBShardedDeployment.html
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/entities/brooklyn.entity.nosql.mongodb.sharding.MongoDBShardedDeployment.html b/docs/website/learnmore/catalog/entities/brooklyn.entity.nosql.mongodb.sharding.MongoDBShardedDeployment.html
deleted file mode 100644
index 32407e8..0000000
--- a/docs/website/learnmore/catalog/entities/brooklyn.entity.nosql.mongodb.sharding.MongoDBShardedDeployment.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-  <head>
-    <title>Brooklyn Entity - MongoDB Sharded Deployment</title>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
-    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
-    <link rel="stylesheet" href="../items.css" type="text/css" media="screen"/>
-  </head>
-  <body>
-    <div id="container">
-      <div id="header">
-        <div id="identity">
-          <a href="http://brooklyncentral.github.com/" rel="home">Brooklyn</a>
-        </div>
-      </div>
-
-      <div id="summary"></div>
-
-      <ul class="nav nav-tabs">
-        <li class="active"><a href="#configKeys" data-toggle="tab">Config Keys</a></li>
-        <li><a href="#sensors" data-toggle="tab">Sensors</a></li>
-        <li><a href="#effectors" data-toggle="tab">Effectors</a></li>
-      </ul>
-
-      <div class="tab-content">
-        <div class="tab-pane active" id="configKeys"></div>
-        <div class="tab-pane" id="sensors"></div>
-        <div class="tab-pane" id="effectors"></div>
-      </div>
-    </div>
-
-    <script src="../../../style/js/underscore-min.js" type="text/javascript"></script>
-    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
-    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
-    <script src="../common.js" type="text/javascript"></script>
-    <script src="../items.js" type="text/javascript"></script>
-    <script type="text/javascript">
-        $(document).ready(function () {
-            var item = brooklyn.findItemOfType(items.entities, "brooklyn.entity.nosql.mongodb.sharding.MongoDBShardedDeployment");
-            $("#summary").html(brooklyn.typeSummary(item));
-            item.config.forEach(function (element) { $("#configKeys").append(brooklyn.configKeyCard(element)); });
-            item.sensors.forEach(function (element) { $("#sensors").append(brooklyn.sensorCard(element)); });
-            if (item.effectors != undefined) {
-                item.effectors.forEach(function (element) { $("#effectors").append(brooklyn.effectorCard(element)); });
-            }
-        });
-    </script>
-  </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cbe6f8e6/docs/website/learnmore/catalog/entities/brooklyn.entity.nosql.redis.RedisCluster.html
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/entities/brooklyn.entity.nosql.redis.RedisCluster.html b/docs/website/learnmore/catalog/entities/brooklyn.entity.nosql.redis.RedisCluster.html
deleted file mode 100644
index b89a515..0000000
--- a/docs/website/learnmore/catalog/entities/brooklyn.entity.nosql.redis.RedisCluster.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-  <head>
-    <title>Brooklyn Entity - Redis Cluster</title>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
-    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
-    <link rel="stylesheet" href="../items.css" type="text/css" media="screen"/>
-  </head>
-  <body>
-    <div id="container">
-      <div id="header">
-        <div id="identity">
-          <a href="http://brooklyncentral.github.com/" rel="home">Brooklyn</a>
-        </div>
-      </div>
-
-      <div id="summary"></div>
-
-      <ul class="nav nav-tabs">
-        <li class="active"><a href="#configKeys" data-toggle="tab">Config Keys</a></li>
-        <li><a href="#sensors" data-toggle="tab">Sensors</a></li>
-        <li><a href="#effectors" data-toggle="tab">Effectors</a></li>
-      </ul>
-
-      <div class="tab-content">
-        <div class="tab-pane active" id="configKeys"></div>
-        <div class="tab-pane" id="sensors"></div>
-        <div class="tab-pane" id="effectors"></div>
-      </div>
-    </div>
-
-    <script src="../../../style/js/underscore-min.js" type="text/javascript"></script>
-    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
-    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
-    <script src="../common.js" type="text/javascript"></script>
-    <script src="../items.js" type="text/javascript"></script>
-    <script type="text/javascript">
-        $(document).ready(function () {
-            var item = brooklyn.findItemOfType(items.entities, "brooklyn.entity.nosql.redis.RedisCluster");
-            $("#summary").html(brooklyn.typeSummary(item));
-            item.config.forEach(function (element) { $("#configKeys").append(brooklyn.configKeyCard(element)); });
-            item.sensors.forEach(function (element) { $("#sensors").append(brooklyn.sensorCard(element)); });
-            if (item.effectors != undefined) {
-                item.effectors.forEach(function (element) { $("#effectors").append(brooklyn.effectorCard(element)); });
-            }
-        });
-    </script>
-  </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cbe6f8e6/docs/website/learnmore/catalog/entities/brooklyn.entity.nosql.redis.RedisStore.html
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/entities/brooklyn.entity.nosql.redis.RedisStore.html b/docs/website/learnmore/catalog/entities/brooklyn.entity.nosql.redis.RedisStore.html
deleted file mode 100644
index a0a5504..0000000
--- a/docs/website/learnmore/catalog/entities/brooklyn.entity.nosql.redis.RedisStore.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-  <head>
-    <title>Brooklyn Entity - Redis Server</title>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
-    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
-    <link rel="stylesheet" href="../items.css" type="text/css" media="screen"/>
-  </head>
-  <body>
-    <div id="container">
-      <div id="header">
-        <div id="identity">
-          <a href="http://brooklyncentral.github.com/" rel="home">Brooklyn</a>
-        </div>
-      </div>
-
-      <div id="summary"></div>
-
-      <ul class="nav nav-tabs">
-        <li class="active"><a href="#configKeys" data-toggle="tab">Config Keys</a></li>
-        <li><a href="#sensors" data-toggle="tab">Sensors</a></li>
-        <li><a href="#effectors" data-toggle="tab">Effectors</a></li>
-      </ul>
-
-      <div class="tab-content">
-        <div class="tab-pane active" id="configKeys"></div>
-        <div class="tab-pane" id="sensors"></div>
-        <div class="tab-pane" id="effectors"></div>
-      </div>
-    </div>
-
-    <script src="../../../style/js/underscore-min.js" type="text/javascript"></script>
-    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
-    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
-    <script src="../common.js" type="text/javascript"></script>
-    <script src="../items.js" type="text/javascript"></script>
-    <script type="text/javascript">
-        $(document).ready(function () {
-            var item = brooklyn.findItemOfType(items.entities, "brooklyn.entity.nosql.redis.RedisStore");
-            $("#summary").html(brooklyn.typeSummary(item));
-            item.config.forEach(function (element) { $("#configKeys").append(brooklyn.configKeyCard(element)); });
-            item.sensors.forEach(function (element) { $("#sensors").append(brooklyn.sensorCard(element)); });
-            if (item.effectors != undefined) {
-                item.effectors.forEach(function (element) { $("#effectors").append(brooklyn.effectorCard(element)); });
-            }
-        });
-    </script>
-  </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cbe6f8e6/docs/website/learnmore/catalog/entities/brooklyn.entity.nosql.riak.RiakCluster.html
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/entities/brooklyn.entity.nosql.riak.RiakCluster.html b/docs/website/learnmore/catalog/entities/brooklyn.entity.nosql.riak.RiakCluster.html
deleted file mode 100644
index e588e09..0000000
--- a/docs/website/learnmore/catalog/entities/brooklyn.entity.nosql.riak.RiakCluster.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-  <head>
-    <title>Brooklyn Entity - Riak Node</title>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
-    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
-    <link rel="stylesheet" href="../items.css" type="text/css" media="screen"/>
-  </head>
-  <body>
-    <div id="container">
-      <div id="header">
-        <div id="identity">
-          <a href="http://brooklyncentral.github.com/" rel="home">Brooklyn</a>
-        </div>
-      </div>
-
-      <div id="summary"></div>
-
-      <ul class="nav nav-tabs">
-        <li class="active"><a href="#configKeys" data-toggle="tab">Config Keys</a></li>
-        <li><a href="#sensors" data-toggle="tab">Sensors</a></li>
-        <li><a href="#effectors" data-toggle="tab">Effectors</a></li>
-      </ul>
-
-      <div class="tab-content">
-        <div class="tab-pane active" id="configKeys"></div>
-        <div class="tab-pane" id="sensors"></div>
-        <div class="tab-pane" id="effectors"></div>
-      </div>
-    </div>
-
-    <script src="../../../style/js/underscore-min.js" type="text/javascript"></script>
-    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
-    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
-    <script src="../common.js" type="text/javascript"></script>
-    <script src="../items.js" type="text/javascript"></script>
-    <script type="text/javascript">
-        $(document).ready(function () {
-            var item = brooklyn.findItemOfType(items.entities, "brooklyn.entity.nosql.riak.RiakCluster");
-            $("#summary").html(brooklyn.typeSummary(item));
-            item.config.forEach(function (element) { $("#configKeys").append(brooklyn.configKeyCard(element)); });
-            item.sensors.forEach(function (element) { $("#sensors").append(brooklyn.sensorCard(element)); });
-            if (item.effectors != undefined) {
-                item.effectors.forEach(function (element) { $("#effectors").append(brooklyn.effectorCard(element)); });
-            }
-        });
-    </script>
-  </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cbe6f8e6/docs/website/learnmore/catalog/entities/brooklyn.entity.nosql.riak.RiakNode.html
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/entities/brooklyn.entity.nosql.riak.RiakNode.html b/docs/website/learnmore/catalog/entities/brooklyn.entity.nosql.riak.RiakNode.html
deleted file mode 100644
index d70b0b0..0000000
--- a/docs/website/learnmore/catalog/entities/brooklyn.entity.nosql.riak.RiakNode.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-  <head>
-    <title>Brooklyn Entity - Riak Node</title>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
-    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
-    <link rel="stylesheet" href="../items.css" type="text/css" media="screen"/>
-  </head>
-  <body>
-    <div id="container">
-      <div id="header">
-        <div id="identity">
-          <a href="http://brooklyncentral.github.com/" rel="home">Brooklyn</a>
-        </div>
-      </div>
-
-      <div id="summary"></div>
-
-      <ul class="nav nav-tabs">
-        <li class="active"><a href="#configKeys" data-toggle="tab">Config Keys</a></li>
-        <li><a href="#sensors" data-toggle="tab">Sensors</a></li>
-        <li><a href="#effectors" data-toggle="tab">Effectors</a></li>
-      </ul>
-
-      <div class="tab-content">
-        <div class="tab-pane active" id="configKeys"></div>
-        <div class="tab-pane" id="sensors"></div>
-        <div class="tab-pane" id="effectors"></div>
-      </div>
-    </div>
-
-    <script src="../../../style/js/underscore-min.js" type="text/javascript"></script>
-    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
-    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
-    <script src="../common.js" type="text/javascript"></script>
-    <script src="../items.js" type="text/javascript"></script>
-    <script type="text/javascript">
-        $(document).ready(function () {
-            var item = brooklyn.findItemOfType(items.entities, "brooklyn.entity.nosql.riak.RiakNode");
-            $("#summary").html(brooklyn.typeSummary(item));
-            item.config.forEach(function (element) { $("#configKeys").append(brooklyn.configKeyCard(element)); });
-            item.sensors.forEach(function (element) { $("#sensors").append(brooklyn.sensorCard(element)); });
-            if (item.effectors != undefined) {
-                item.effectors.forEach(function (element) { $("#effectors").append(brooklyn.effectorCard(element)); });
-            }
-        });
-    </script>
-  </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cbe6f8e6/docs/website/learnmore/catalog/entities/brooklyn.entity.nosql.solr.SolrServer.html
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/entities/brooklyn.entity.nosql.solr.SolrServer.html b/docs/website/learnmore/catalog/entities/brooklyn.entity.nosql.solr.SolrServer.html
deleted file mode 100644
index 45514a6..0000000
--- a/docs/website/learnmore/catalog/entities/brooklyn.entity.nosql.solr.SolrServer.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-  <head>
-    <title>Brooklyn Entity - Apache Solr Node</title>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
-    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
-    <link rel="stylesheet" href="../items.css" type="text/css" media="screen"/>
-  </head>
-  <body>
-    <div id="container">
-      <div id="header">
-        <div id="identity">
-          <a href="http://brooklyncentral.github.com/" rel="home">Brooklyn</a>
-        </div>
-      </div>
-
-      <div id="summary"></div>
-
-      <ul class="nav nav-tabs">
-        <li class="active"><a href="#configKeys" data-toggle="tab">Config Keys</a></li>
-        <li><a href="#sensors" data-toggle="tab">Sensors</a></li>
-        <li><a href="#effectors" data-toggle="tab">Effectors</a></li>
-      </ul>
-
-      <div class="tab-content">
-        <div class="tab-pane active" id="configKeys"></div>
-        <div class="tab-pane" id="sensors"></div>
-        <div class="tab-pane" id="effectors"></div>
-      </div>
-    </div>
-
-    <script src="../../../style/js/underscore-min.js" type="text/javascript"></script>
-    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
-    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
-    <script src="../common.js" type="text/javascript"></script>
-    <script src="../items.js" type="text/javascript"></script>
-    <script type="text/javascript">
-        $(document).ready(function () {
-            var item = brooklyn.findItemOfType(items.entities, "brooklyn.entity.nosql.solr.SolrServer");
-            $("#summary").html(brooklyn.typeSummary(item));
-            item.config.forEach(function (element) { $("#configKeys").append(brooklyn.configKeyCard(element)); });
-            item.sensors.forEach(function (element) { $("#sensors").append(brooklyn.sensorCard(element)); });
-            if (item.effectors != undefined) {
-                item.effectors.forEach(function (element) { $("#effectors").append(brooklyn.effectorCard(element)); });
-            }
-        });
-    </script>
-  </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cbe6f8e6/docs/website/learnmore/catalog/entities/brooklyn.entity.osgi.karaf.KarafContainer.html
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/entities/brooklyn.entity.osgi.karaf.KarafContainer.html b/docs/website/learnmore/catalog/entities/brooklyn.entity.osgi.karaf.KarafContainer.html
deleted file mode 100644
index 3583da1..0000000
--- a/docs/website/learnmore/catalog/entities/brooklyn.entity.osgi.karaf.KarafContainer.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-  <head>
-    <title>Brooklyn Entity - Karaf</title>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
-    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
-    <link rel="stylesheet" href="../items.css" type="text/css" media="screen"/>
-  </head>
-  <body>
-    <div id="container">
-      <div id="header">
-        <div id="identity">
-          <a href="http://brooklyncentral.github.com/" rel="home">Brooklyn</a>
-        </div>
-      </div>
-
-      <div id="summary"></div>
-
-      <ul class="nav nav-tabs">
-        <li class="active"><a href="#configKeys" data-toggle="tab">Config Keys</a></li>
-        <li><a href="#sensors" data-toggle="tab">Sensors</a></li>
-        <li><a href="#effectors" data-toggle="tab">Effectors</a></li>
-      </ul>
-
-      <div class="tab-content">
-        <div class="tab-pane active" id="configKeys"></div>
-        <div class="tab-pane" id="sensors"></div>
-        <div class="tab-pane" id="effectors"></div>
-      </div>
-    </div>
-
-    <script src="../../../style/js/underscore-min.js" type="text/javascript"></script>
-    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
-    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
-    <script src="../common.js" type="text/javascript"></script>
-    <script src="../items.js" type="text/javascript"></script>
-    <script type="text/javascript">
-        $(document).ready(function () {
-            var item = brooklyn.findItemOfType(items.entities, "brooklyn.entity.osgi.karaf.KarafContainer");
-            $("#summary").html(brooklyn.typeSummary(item));
-            item.config.forEach(function (element) { $("#configKeys").append(brooklyn.configKeyCard(element)); });
-            item.sensors.forEach(function (element) { $("#sensors").append(brooklyn.sensorCard(element)); });
-            if (item.effectors != undefined) {
-                item.effectors.forEach(function (element) { $("#effectors").append(brooklyn.effectorCard(element)); });
-            }
-        });
-    </script>
-  </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cbe6f8e6/docs/website/learnmore/catalog/entities/brooklyn.entity.pool.ServerPool.html
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/entities/brooklyn.entity.pool.ServerPool.html b/docs/website/learnmore/catalog/entities/brooklyn.entity.pool.ServerPool.html
deleted file mode 100644
index c20cdd1..0000000
--- a/docs/website/learnmore/catalog/entities/brooklyn.entity.pool.ServerPool.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-  <head>
-    <title>Brooklyn Entity - Server Pool</title>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
-    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
-    <link rel="stylesheet" href="../items.css" type="text/css" media="screen"/>
-  </head>
-  <body>
-    <div id="container">
-      <div id="header">
-        <div id="identity">
-          <a href="http://brooklyncentral.github.com/" rel="home">Brooklyn</a>
-        </div>
-      </div>
-
-      <div id="summary"></div>
-
-      <ul class="nav nav-tabs">
-        <li class="active"><a href="#configKeys" data-toggle="tab">Config Keys</a></li>
-        <li><a href="#sensors" data-toggle="tab">Sensors</a></li>
-        <li><a href="#effectors" data-toggle="tab">Effectors</a></li>
-      </ul>
-
-      <div class="tab-content">
-        <div class="tab-pane active" id="configKeys"></div>
-        <div class="tab-pane" id="sensors"></div>
-        <div class="tab-pane" id="effectors"></div>
-      </div>
-    </div>
-
-    <script src="../../../style/js/underscore-min.js" type="text/javascript"></script>
-    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
-    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
-    <script src="../common.js" type="text/javascript"></script>
-    <script src="../items.js" type="text/javascript"></script>
-    <script type="text/javascript">
-        $(document).ready(function () {
-            var item = brooklyn.findItemOfType(items.entities, "brooklyn.entity.pool.ServerPool");
-            $("#summary").html(brooklyn.typeSummary(item));
-            item.config.forEach(function (element) { $("#configKeys").append(brooklyn.configKeyCard(element)); });
-            item.sensors.forEach(function (element) { $("#sensors").append(brooklyn.sensorCard(element)); });
-            if (item.effectors != undefined) {
-                item.effectors.forEach(function (element) { $("#effectors").append(brooklyn.effectorCard(element)); });
-            }
-        });
-    </script>
-  </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cbe6f8e6/docs/website/learnmore/catalog/entities/brooklyn.entity.proxy.nginx.NginxController.html
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/entities/brooklyn.entity.proxy.nginx.NginxController.html b/docs/website/learnmore/catalog/entities/brooklyn.entity.proxy.nginx.NginxController.html
deleted file mode 100644
index d0a0c61..0000000
--- a/docs/website/learnmore/catalog/entities/brooklyn.entity.proxy.nginx.NginxController.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-  <head>
-    <title>Brooklyn Entity - Nginx Server</title>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
-    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
-    <link rel="stylesheet" href="../items.css" type="text/css" media="screen"/>
-  </head>
-  <body>
-    <div id="container">
-      <div id="header">
-        <div id="identity">
-          <a href="http://brooklyncentral.github.com/" rel="home">Brooklyn</a>
-        </div>
-      </div>
-
-      <div id="summary"></div>
-
-      <ul class="nav nav-tabs">
-        <li class="active"><a href="#configKeys" data-toggle="tab">Config Keys</a></li>
-        <li><a href="#sensors" data-toggle="tab">Sensors</a></li>
-        <li><a href="#effectors" data-toggle="tab">Effectors</a></li>
-      </ul>
-
-      <div class="tab-content">
-        <div class="tab-pane active" id="configKeys"></div>
-        <div class="tab-pane" id="sensors"></div>
-        <div class="tab-pane" id="effectors"></div>
-      </div>
-    </div>
-
-    <script src="../../../style/js/underscore-min.js" type="text/javascript"></script>
-    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
-    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
-    <script src="../common.js" type="text/javascript"></script>
-    <script src="../items.js" type="text/javascript"></script>
-    <script type="text/javascript">
-        $(document).ready(function () {
-            var item = brooklyn.findItemOfType(items.entities, "brooklyn.entity.proxy.nginx.NginxController");
-            $("#summary").html(brooklyn.typeSummary(item));
-            item.config.forEach(function (element) { $("#configKeys").append(brooklyn.configKeyCard(element)); });
-            item.sensors.forEach(function (element) { $("#sensors").append(brooklyn.sensorCard(element)); });
-            if (item.effectors != undefined) {
-                item.effectors.forEach(function (element) { $("#effectors").append(brooklyn.effectorCard(element)); });
-            }
-        });
-    </script>
-  </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cbe6f8e6/docs/website/learnmore/catalog/entities/brooklyn.entity.webapp.ControlledDynamicWebAppCluster.html
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/entities/brooklyn.entity.webapp.ControlledDynamicWebAppCluster.html b/docs/website/learnmore/catalog/entities/brooklyn.entity.webapp.ControlledDynamicWebAppCluster.html
deleted file mode 100644
index 3c8ebff..0000000
--- a/docs/website/learnmore/catalog/entities/brooklyn.entity.webapp.ControlledDynamicWebAppCluster.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-  <head>
-    <title>Brooklyn Entity - Controlled Dynamic Web-app Cluster</title>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
-    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
-    <link rel="stylesheet" href="../items.css" type="text/css" media="screen"/>
-  </head>
-  <body>
-    <div id="container">
-      <div id="header">
-        <div id="identity">
-          <a href="http://brooklyncentral.github.com/" rel="home">Brooklyn</a>
-        </div>
-      </div>
-
-      <div id="summary"></div>
-
-      <ul class="nav nav-tabs">
-        <li class="active"><a href="#configKeys" data-toggle="tab">Config Keys</a></li>
-        <li><a href="#sensors" data-toggle="tab">Sensors</a></li>
-        <li><a href="#effectors" data-toggle="tab">Effectors</a></li>
-      </ul>
-
-      <div class="tab-content">
-        <div class="tab-pane active" id="configKeys"></div>
-        <div class="tab-pane" id="sensors"></div>
-        <div class="tab-pane" id="effectors"></div>
-      </div>
-    </div>
-
-    <script src="../../../style/js/underscore-min.js" type="text/javascript"></script>
-    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
-    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
-    <script src="../common.js" type="text/javascript"></script>
-    <script src="../items.js" type="text/javascript"></script>
-    <script type="text/javascript">
-        $(document).ready(function () {
-            var item = brooklyn.findItemOfType(items.entities, "brooklyn.entity.webapp.ControlledDynamicWebAppCluster");
-            $("#summary").html(brooklyn.typeSummary(item));
-            item.config.forEach(function (element) { $("#configKeys").append(brooklyn.configKeyCard(element)); });
-            item.sensors.forEach(function (element) { $("#sensors").append(brooklyn.sensorCard(element)); });
-            if (item.effectors != undefined) {
-                item.effectors.forEach(function (element) { $("#effectors").append(brooklyn.effectorCard(element)); });
-            }
-        });
-    </script>
-  </body>
-</html>


[03/19] incubator-brooklyn git commit: - Catalog rearrangement so it work with jekyll serve without moving files - Include the Navigation menu in the catalog

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/671fda38/docs/style/js/catalog/items.js
----------------------------------------------------------------------
diff --git a/docs/style/js/catalog/items.js b/docs/style/js/catalog/items.js
new file mode 100644
index 0000000..814636a
--- /dev/null
+++ b/docs/style/js/catalog/items.js
@@ -0,0 +1,24674 @@
+var items = {
+  "entities" : [ {
+    "type" : "brooklyn.entity.messaging.activemq.ActiveMQBroker",
+    "defaultVersion" : "5.7.0",
+    "name" : "ActiveMQ Broker",
+    "description" : "ActiveMQ is an open source message broker which fully implements the Java Message Service 1.1 (JMS)",
+    "iconUrl" : "classpath:///activemq-logo.png",
+    "config" : [ {
+      "name" : "activemq.install.mirror.url",
+      "type" : "java.lang.String",
+      "defaultValue" : "http://www.mirrorservice.org/sites/ftp.apache.org/activemq/apache-activemq",
+      "description" : "URL of mirror",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "activemq.jetty.port",
+      "type" : "brooklyn.location.PortRange",
+      "defaultValue" : "8161-65535",
+      "description" : "jetty port",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "activemq.templateConfigurationUrl",
+      "type" : "java.lang.String",
+      "defaultValue" : "classpath://brooklyn/entity/messaging/activemq/activemq.xml",
+      "description" : "Template file (in freemarker format) for the conf/activemq.xml file",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "children.startable.mode",
+      "type" : "java.lang.Enum",
+      "defaultValue" : null,
+      "description" : "children.startable.mode",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : [ {
+        "value" : "NONE",
+        "description" : "NONE"
+      }, {
+        "value" : "FOREGROUND",
+        "description" : "FOREGROUND"
+      }, {
+        "value" : "FOREGROUND_LATE",
+        "description" : "FOREGROUND_LATE"
+      }, {
+        "value" : "BACKGROUND",
+        "description" : "BACKGROUND"
+      }, {
+        "value" : "BACKGROUND_LATE",
+        "description" : "BACKGROUND_LATE"
+      } ],
+      "links" : null
+    }, {
+      "name" : "customize.latch",
+      "type" : "java.lang.Boolean",
+      "defaultValue" : null,
+      "description" : "Latch for blocking customize until ready",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "download.addon.urls",
+      "type" : "java.util.Map",
+      "defaultValue" : null,
+      "description" : "URL patterns for downloading named add-ons (will substitute things like ${version} automatically)",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "download.url",
+      "type" : "java.lang.String",
+      "defaultValue" : "${driver.mirrorUrl}/${version}/apache-activemq-${version}-bin.tar.gz",
+      "description" : "URL pattern for downloading the installer (will substitute things like ${version} automatically)",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "expandedinstall.dir",
+      "type" : "java.lang.String",
+      "defaultValue" : null,
+      "description" : "Directory for installed artifacts (e.g. expanded dir after unpacking .tgz)",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "files.runtime",
+      "type" : "java.util.Map",
+      "defaultValue" : null,
+      "description" : "Map of files to be copied, keyed by destination name relative to runDir",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "install.dir",
+      "type" : "java.lang.String",
+      "defaultValue" : "${config['onbox.base.dir']!config['brooklyn.datadir']!'/<ERROR>-ONBOX_BASE_DIR-not-set'}/installs/${(config['install.unique_label']??)?string(config['install.unique_label']!'X',(entity.entityType.simpleName)+((config['install.version']??)?string('_'+(config['install.version']!'X'),'')))}",
+      "description" : "Directory for this software to be installed in",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "install.latch",
+      "type" : "java.lang.Boolean",
+      "defaultValue" : null,
+      "description" : "Latch for blocking install until ready",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "install.skip",
+      "type" : "java.lang.Boolean",
+      "defaultValue" : false,
+      "description" : "Skip the driver install commands entirely, for pre-installed software",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "install.unique_label",
+      "type" : "java.lang.String",
+      "defaultValue" : null,
+      "description" : "Provides a label which uniquely identifies an installation, used in the computation of the install dir; this should include something readable, and must include a hash of all data which differentiates an installation (e.g. version, plugins, etc), but should be the same where install dirs can be shared to allow for re-use",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "install.version",
+      "type" : "java.lang.String",
+      "defaultValue" : "5.7.0",
+      "description" : "Suggested version",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "java.check.hostname.bug",
+      "type" : "java.lang.Boolean",
+      "defaultValue" : true,
+      "description" : "Check whether hostname is too long and will likely crash Javadue to bug 7089443",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "java.opts",
+      "type" : "java.util.Set",
+      "defaultValue" : [ ],
+      "description" : "Java command line options",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "java.sysprops",
+      "type" : "java.util.Map",
+      "defaultValue" : { },
+      "description" : "Java command line system properties",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "jmx.agent.mode",
+      "type" : "java.lang.Enum",
+      "defaultValue" : "AUTODETECT",
+      "description" : "What type of JMX agent to use; defaults to null (autodetect) which means JMXMP_AND_RMI allowing firewall access through a single port as well as local access supporting jconsole (unless JMX_SSL_ENABLED is set, in which case it is JMXMP only)",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : [ {
+        "value" : "AUTODETECT",
+        "description" : "AUTODETECT"
+      }, {
+        "value" : "JMXMP",
+        "description" : "JMXMP"
+      }, {
+        "value" : "JMXMP_AND_RMI",
+        "description" : "JMXMP_AND_RMI"
+      }, {
+        "value" : "JMX_RMI_CUSTOM_AGENT",
+        "description" : "JMX_RMI_CUSTOM_AGENT"
+      }, {
+        "value" : "JMX_RMI",
+        "description" : "JMX_RMI"
+      }, {
+        "value" : "NONE",
+        "description" : "NONE"
+      } ],
+      "links" : null
+    }, {
+      "name" : "jmx.context",
+      "type" : "java.lang.String",
+      "defaultValue" : "jmxrmi",
+      "description" : "JMX context path",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "jmx.direct.port",
+      "type" : "brooklyn.location.PortRange",
+      "defaultValue" : "31001-65535",
+      "description" : "JMX direct/private port (e.g. JMX RMI server port, or JMXMP port, but not RMI registry port)",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "jmx.enabled",
+      "type" : "java.lang.Boolean",
+      "defaultValue" : true,
+      "description" : "JMX enabled",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "jmx.password",
+      "type" : "java.lang.String",
+      "defaultValue" : "admin",
+      "description" : "JMX password",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "jmx.ssl.access.cert",
+      "type" : "java.security.cert.Certificate",
+      "defaultValue" : null,
+      "description" : "certificate of key used to access a JMX agent",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "jmx.ssl.access.key",
+      "type" : "java.security.PrivateKey",
+      "defaultValue" : null,
+      "description" : "key used to access a JMX agent (typically per entity, embedded in the managed JVM)",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "jmx.ssl.enabled",
+      "type" : "java.lang.Boolean",
+      "defaultValue" : false,
+      "description" : "JMX over JMXMP enabled with SSL/TLS",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "jmx.user",
+      "type" : "java.lang.String",
+      "defaultValue" : "admin",
+      "description" : "JMX username",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "launch.latch",
+      "type" : "java.lang.Boolean",
+      "defaultValue" : null,
+      "description" : "Latch for blocking launch until ready",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "openwire.port",
+      "type" : "brooklyn.location.PortRange",
+      "defaultValue" : "61616-65535",
+      "description" : "OpenWire port",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "post.install.command",
+      "type" : "java.lang.String",
+      "defaultValue" : null,
+      "description" : "Command to be run after the install method being called on the driver",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "post.launch.command",
+      "type" : "java.lang.String",
+      "defaultValue" : null,
+      "description" : "Command to be run after the launch method being called on the driver",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "pre.install.command",
+      "type" : "java.lang.String",
+      "defaultValue" : null,
+      "description" : "Command to be run prior to the install method being called on the driver",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "pre.launch.command",
+      "type" : "java.lang.String",
+      "defaultValue" : null,
+      "description" : "Command to be run prior to the launch method being called on the driver",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "provisioning.properties",
+      "type" : "java.util.Map",
+      "defaultValue" : { },
+      "description" : "Custom properties to be passed in when provisioning a new machine",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "resources.latch",
+      "type" : "java.lang.Boolean",
+      "defaultValue" : null,
+      "description" : "Latch for blocking resources until ready",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "rmi.registry.port",
+      "type" : "brooklyn.location.PortRange",
+      "defaultValue" : "1099,19099-65535",
+      "description" : "RMI registry port, used for discovering JMX (private) port",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "run.dir",
+      "type" : "java.lang.String",
+      "defaultValue" : "${config['onbox.base.dir']!config['brooklyn.datadir']!'/<ERROR>-ONBOX_BASE_DIR-not-set'}/apps/${entity.applicationId}/entities/${entity.entityType.simpleName}_${entity.id}",
+      "description" : "Directory for this software to be run from",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "setup.latch",
+      "type" : "java.lang.Boolean",
+      "defaultValue" : null,
+      "description" : "Latch for blocking setup until ready",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "shell.env",
+      "type" : "java.util.Map",
+      "defaultValue" : { },
+      "description" : "Map of environment variables to pass to the runtime shell",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "softwareProcess.maxSensorRebindDelay",
+      "type" : "brooklyn.util.time.Duration",
+      "defaultValue" : "10s",
+      "description" : "The maximum delay to apply when reconnecting sensors when rebinding to this entity. Brooklyn will wait a random amount of time, up to the value of this config key, to avoid a thundering herd problem when the entity shares its machine with several others. Set to null or to 0 to disable any delay.",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "start.latch",
+      "type" : "java.lang.Boolean",
+      "defaultValue" : null,
+      "description" : "Latch for blocking start until ready",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "start.timeout",
+      "type" : "brooklyn.util.time.Duration",
+      "defaultValue" : "2m",
+      "description" : "Time to wait for process and for SERVICE_UP before failing (in seconds, default 2m)",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "templates.runtime",
+      "type" : "java.util.Map",
+      "defaultValue" : null,
+      "description" : "Map of templates to be filled in and copied, keyed by destination name relative to runDir",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    } ],
+    "sensors" : [ {
+      "name" : "activemq.jetty.port",
+      "type" : "java.lang.Integer",
+      "description" : "jetty port",
+      "links" : null
+    }, {
+      "name" : "activemq.templateConfigurationUrl",
+      "type" : "java.lang.String",
+      "description" : "Template file (in freemarker format) for the conf/activemq.xml file",
+      "links" : null
+    }, {
+      "name" : "broker.url",
+      "type" : "java.lang.String",
+      "description" : "Broker Connection URL",
+      "links" : null
+    }, {
+      "name" : "download.addon.urls",
+      "type" : "java.util.Map",
+      "description" : "URL patterns for downloading named add-ons (will substitute things like ${version} automatically)",
+      "links" : null
+    }, {
+      "name" : "download.url",
+      "type" : "java.lang.String",
+      "description" : "URL pattern for downloading the installer (will substitute things like ${version} automatically)",
+      "links" : null
+    }, {
+      "name" : "expandedinstall.dir",
+      "type" : "java.lang.String",
+      "description" : "Directory for installed artifacts (e.g. expanded dir after unpacking .tgz)",
+      "links" : null
+    }, {
+      "name" : "host.address",
+      "type" : "java.lang.String",
+      "description" : "Host IP address",
+      "links" : null
+    }, {
+      "name" : "host.name",
+      "type" : "java.lang.String",
+      "description" : "Host name",
+      "links" : null
+    }, {
+      "name" : "host.subnet.address",
+      "type" : "java.lang.String",
+      "description" : "Host address as known internally in the subnet where it is running (if different to host.name)",
+      "links" : null
+    }, {
+      "name" : "host.subnet.hostname",
+      "type" : "java.lang.String",
+      "description" : "Host name as known internally in the subnet where it is running (if different to host.name)",
+      "links" : null
+    }, {
+      "name" : "install.dir",
+      "type" : "java.lang.String",
+      "description" : "Directory for this software to be installed in",
+      "links" : null
+    }, {
+      "name" : "jmx.context",
+      "type" : "java.lang.String",
+      "description" : "JMX context path",
+      "links" : null
+    }, {
+      "name" : "jmx.direct.port",
+      "type" : "java.lang.Integer",
+      "description" : "JMX direct/private port (e.g. JMX RMI server port, or JMXMP port, but not RMI registry port)",
+      "links" : null
+    }, {
+      "name" : "jmx.password",
+      "type" : "java.lang.String",
+      "description" : "JMX password",
+      "links" : null
+    }, {
+      "name" : "jmx.service.url",
+      "type" : "java.lang.String",
+      "description" : "The URL for connecting to the MBean Server",
+      "links" : null
+    }, {
+      "name" : "jmx.user",
+      "type" : "java.lang.String",
+      "description" : "JMX username",
+      "links" : null
+    }, {
+      "name" : "openwire.port",
+      "type" : "java.lang.Integer",
+      "description" : "OpenWire port",
+      "links" : null
+    }, {
+      "name" : "rmi.registry.port",
+      "type" : "java.lang.Integer",
+      "description" : "RMI registry port, used for discovering JMX (private) port",
+      "links" : null
+    }, {
+      "name" : "run.dir",
+      "type" : "java.lang.String",
+      "description" : "Directory for this software to be run from",
+      "links" : null
+    }, {
+      "name" : "service.isUp",
+      "type" : "java.lang.Boolean",
+      "description" : "Whether the service is active and availability (confirmed and monitored)",
+      "links" : null
+    }, {
+      "name" : "service.process.isRunning",
+      "type" : "java.lang.Boolean",
+      "description" : "Whether the process for the service is confirmed as running",
+      "links" : null
+    }, {
+      "name" : "service.state",
+      "type" : "brooklyn.entity.basic.Lifecycle",
+      "description" : "Actual lifecycle state of the service",
+      "links" : null
+    }, {
+      "name" : "softwareprocess.pid.file",
+      "type" : "java.lang.String",
+      "description" : "PID file",
+      "links" : null
+    }, {
+      "name" : "softwareservice.provisioningLocation",
+      "type" : "brooklyn.location.MachineProvisioningLocation",
+      "description" : "Location used to provision a machine where this is running",
+      "links" : null
+    } ],
+    "effectors" : [ {
+      "name" : "restart",
+      "returnType" : "void",
+      "parameters" : [ ],
+      "description" : "Restart the process/service represented by an entity",
+      "links" : null
+    }, {
+      "name" : "start",
+      "returnType" : "void",
+      "parameters" : [ {
+        "name" : "locations",
+        "type" : "java.lang.Object",
+        "description" : "The location or locations to start in, as a string, a location object, a list of strings, or a list of location objects",
+        "defaultValue" : null
+      } ],
+      "description" : "Start the process/service represented by an entity",
+      "links" : null
+    }, {
+      "name" : "stop",
+      "returnType" : "void",
+      "parameters" : [ ],
+      "description" : "Stop the process/service represented by an entity",
+      "links" : null
+    } ]
+  }, {
+    "type" : "brooklyn.entity.nosql.cassandra.CassandraFabric",
+    "name" : "Apache Cassandra Database Fabric",
+    "description" : "Cassandra is a highly scalable, eventually consistent, distributed, structured key-value store which provides a ColumnFamily-based data model richer than typical key/value systems",
+    "iconUrl" : "classpath:///cassandra-logo.jpeg",
+    "config" : [ {
+      "name" : "cassandra.fabric.datacenter.namer",
+      "type" : "com.google.common.base.Function",
+      "defaultValue" : null,
+      "description" : "Function used to provide the cassandra.replication.datacenterName for a given location",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "dynamiccfabric.memberspec",
+      "type" : "brooklyn.entity.proxying.EntitySpec",
+      "defaultValue" : null,
+      "description" : "entity spec for creating new cluster members",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "dynamicfabric.customChildFlags",
+      "type" : "java.util.Map",
+      "defaultValue" : { },
+      "description" : "Additional flags to be passed to children when they are being created",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "dynamicfabric.displayNamePrefix",
+      "type" : "java.lang.String",
+      "defaultValue" : null,
+      "description" : "Display name prefix, for created children",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "dynamicfabric.displayNameSuffix",
+      "type" : "java.lang.String",
+      "defaultValue" : null,
+      "description" : "Display name suffix, for created children",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "dynamicfabric.factory",
+      "type" : "brooklyn.entity.basic.EntityFactory",
+      "defaultValue" : null,
+      "description" : "factory for creating new cluster members",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "enricher.service_state.children_and_members.quorum.running",
+      "type" : "brooklyn.entity.basic.QuorumCheck",
+      "defaultValue" : "QuorumCheck[require=0,100.0%]",
+      "description" : "Problems check from children actual states (lifecycle), applied by default to members and children, not checking upness, but requiring by default that none are on-fire",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "enricher.service_state.children_and_members.quorum.up",
+      "type" : "brooklyn.entity.basic.QuorumCheck",
+      "defaultValue" : "QuorumCheck[require=1,0.0%]",
+      "description" : "Up check, applied by default to members, requiring at least one present and up",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "fabric.initial.quorumSize",
+      "type" : "java.lang.Integer",
+      "defaultValue" : -1,
+      "description" : "Initial fabric quorum size - number of initial nodes that must have been successfully started to report success (if less than 0, then use a value based on INITIAL_SIZE of clusters)",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "group.members.delegate",
+      "type" : "java.lang.Boolean",
+      "defaultValue" : false,
+      "description" : "Add delegate child entities for members of the group",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "group.members.delegate.nameFormat",
+      "type" : "java.lang.String",
+      "defaultValue" : "%s",
+      "description" : "Delegate members name format string (Use %s for the original entity display name)",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    } ],
+    "sensors" : [ {
+      "name" : "cassandra.cluster.datacenterUsages",
+      "type" : "com.google.common.collect.Multimap",
+      "description" : "Current set of datacenters in use, with nodes in each",
+      "links" : null
+    }, {
+      "name" : "cassandra.cluster.datacenters",
+      "type" : "java.util.Set",
+      "description" : "Current set of datacenters in use",
+      "links" : null
+    }, {
+      "name" : "cassandra.cluster.hostname",
+      "type" : "java.lang.String",
+      "description" : "Hostname to connect to cluster with",
+      "links" : null
+    }, {
+      "name" : "cassandra.cluster.seeds.current",
+      "type" : "java.util.Set",
+      "description" : "Current set of seeds to use to bootstrap the cluster",
+      "links" : null
+    }, {
+      "name" : "cassandra.cluster.seeds.hasPublished",
+      "type" : "java.lang.Boolean",
+      "description" : "Whether we have published any seeds",
+      "links" : null
+    }, {
+      "name" : "cassandra.cluster.thrift.port",
+      "type" : "java.lang.Integer",
+      "description" : "Cassandra Thrift RPC port to connect to cluster with",
+      "links" : null
+    }, {
+      "name" : "fabric.size",
+      "type" : "java.lang.Integer",
+      "description" : "Fabric size",
+      "links" : null
+    }, {
+      "name" : "group.members",
+      "type" : "java.util.Collection",
+      "description" : "Members of the group",
+      "links" : null
+    }, {
+      "name" : "group.members.added",
+      "type" : "brooklyn.entity.Entity",
+      "description" : "Entity added to group members",
+      "links" : null
+    }, {
+      "name" : "group.members.count",
+      "type" : "java.lang.Integer",
+      "description" : "Number of members",
+      "links" : null
+    }, {
+      "name" : "group.members.removed",
+      "type" : "brooklyn.entity.Entity",
+      "description" : "Entity removed from group members",
+      "links" : null
+    }, {
+      "name" : "service.isUp",
+      "type" : "java.lang.Boolean",
+      "description" : "Whether the service is active and availability (confirmed and monitored)",
+      "links" : null
+    }, {
+      "name" : "service.state",
+      "type" : "brooklyn.entity.basic.Lifecycle",
+      "description" : "Actual lifecycle state of the service",
+      "links" : null
+    } ],
+    "effectors" : [ {
+      "name" : "restart",
+      "returnType" : "void",
+      "parameters" : [ ],
+      "description" : "Restart the process/service represented by an entity",
+      "links" : null
+    }, {
+      "name" : "start",
+      "returnType" : "void",
+      "parameters" : [ {
+        "name" : "locations",
+        "type" : "java.lang.Object",
+        "description" : "The location or locations to start in, as a string, a location object, a list of strings, or a list of location objects",
+        "defaultValue" : null
+      } ],
+      "description" : "Start the process/service represented by an entity",
+      "links" : null
+    }, {
+      "name" : "stop",
+      "returnType" : "void",
+      "parameters" : [ ],
+      "description" : "Stop the process/service represented by an entity",
+      "links" : null
+    }, {
+      "name" : "update",
+      "returnType" : "void",
+      "parameters" : [ ],
+      "description" : "Updates the cluster members",
+      "links" : null
+    } ]
+  }, {
+    "type" : "brooklyn.entity.nosql.cassandra.CassandraDatacenter",
+    "name" : "Apache Cassandra Datacenter Cluster",
+    "description" : "Cassandra is a highly scalable, eventually consistent, distributed, structured key-value store which provides a ColumnFamily-based data model richer than typical key/value systems",
+    "iconUrl" : "classpath:///cassandra-logo.jpeg",
+    "config" : [ {
+      "name" : "cassandra.cluster.delayBeforeAdvertisingCluster",
+      "type" : "brooklyn.util.time.Duration",
+      "defaultValue" : "10s",
+      "description" : "Delay after cluster is started before checking and advertising its availability",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "cassandra.cluster.name",
+      "type" : "java.lang.String",
+      "defaultValue" : "BrooklynCluster",
+      "description" : "Name of the Cassandra cluster",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "cassandra.cluster.seedSupplier",
+      "type" : "com.google.common.base.Supplier",
+      "defaultValue" : null,
+      "description" : "For determining the seed nodes",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "cassandra.cluster.snitchName",
+      "type" : "java.lang.String",
+      "defaultValue" : "SimpleSnitch",
+      "description" : "Type of the Cassandra snitch",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "cassandra.cluster.tokenGenerator.class",
+      "type" : "java.lang.Class",
+      "defaultValue" : "class brooklyn.entity.nosql.cassandra.TokenGenerators$PosNeg63TokenGenerator",
+      "description" : "For determining the tokens of nodes",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "cassandra.cluster.tokenShift",
+      "type" : "java.math.BigInteger",
+      "defaultValue" : null,
+      "description" : "Delta applied to all tokens generated for this Cassandra datacenter, useful when configuring multiple datacenters which should be shifted; if not set, a random shift is applied. (Pass 0 to prevent any shift.)",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "cassandra.cluster.useVnodes",
+      "type" : "java.lang.Boolean",
+      "defaultValue" : false,
+      "description" : "Determines whether to use vnodes; if doing so, tokens will not be explicitly assigned to nodes in the cluster",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "cassandra.numTokensPerNode",
+      "type" : "java.lang.Integer",
+      "defaultValue" : 256,
+      "description" : "Number of tokens per node; if using vnodes, should set this to a value like 256; will be overridden to 1 if USE_VNODES==false",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "cluster.initial.quorumSize",
+      "type" : "java.lang.Integer",
+      "defaultValue" : -1,
+      "description" : "Initial cluster quorum size - number of initial nodes that must have been successfully started to report success (if < 0, then use value of INITIAL_SIZE)",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "cluster.initial.size",
+      "type" : "java.lang.Integer",
+      "defaultValue" : 1,
+      "description" : "Initial cluster size",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "dynamiccluster.availabilityZones",
+      "type" : "java.util.Collection",
+      "defaultValue" : null,
+      "description" : "availability zones to use (if non-null, overrides other configuration)",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "dynamiccluster.customChildFlags",
+      "type" : "java.util.Map",
+      "defaultValue" : { },
+      "description" : "Additional flags to be passed to children when they are being created",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "dynamiccluster.factory",
+      "type" : "brooklyn.entity.basic.EntityFactory",
+      "defaultValue" : null,
+      "description" : "factory for creating new cluster members",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "dynamiccluster.memberspec",
+      "type" : "brooklyn.entity.proxying.EntitySpec",
+      "defaultValue" : null,
+      "description" : "entity spec for creating new cluster members",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "dynamiccluster.numAvailabilityZones",
+      "type" : "java.lang.Integer",
+      "defaultValue" : null,
+      "description" : "number of availability zones to use (will attempt to auto-discover this number)",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "dynamiccluster.quarantineFailedEntities",
+      "type" : "java.lang.Boolean",
+      "defaultValue" : true,
+      "description" : "If true, will quarantine entities that fail to start; if false, will get rid of them (i.e. delete them)",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "dynamiccluster.removalstrategy",
+      "type" : "com.google.common.base.Function",
+      "defaultValue" : null,
+      "description" : "strategy for deciding what to remove when down-sizing",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "dynamiccluster.zone.enable",
+      "type" : "java.lang.Boolean",
+      "defaultValue" : false,
+      "description" : "Whether to use availability zones, or just deploy everything into the generic location",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "dynamiccluster.zone.failureDetector",
+      "type" : "brooklyn.entity.group.DynamicCluster$ZoneFailureDetector",
+      "defaultValue" : "brooklyn.entity.group.zoneaware.ProportionalZoneFailureDetector@b7193fc",
+      "description" : "Zone failure detector",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "dynamiccluster.zone.placementStrategy",
+      "type" : "brooklyn.entity.group.DynamicCluster$NodePlacementStrategy",
+      "defaultValue" : "brooklyn.entity.group.zoneaware.BalancingNodePlacementStrategy@37f02eaa",
+      "description" : "Node placement strategy",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "enricher.service_state.children_and_members.quorum.running",
+      "type" : "brooklyn.entity.basic.QuorumCheck",
+      "defaultValue" : "QuorumCheck[require=0,100.0%]",
+      "description" : "Problems check from children actual states (lifecycle), applied by default to members and children, not checking upness, but requiring by default that none are on-fire",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "enricher.service_state.children_and_members.quorum.up",
+      "type" : "brooklyn.entity.basic.QuorumCheck",
+      "defaultValue" : "QuorumCheck[require=1,0.0%]",
+      "description" : "Up check, applied by default to members, requiring at least one present and up",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "group.members.delegate",
+      "type" : "java.lang.Boolean",
+      "defaultValue" : false,
+      "description" : "Add delegate child entities for members of the group",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "group.members.delegate.nameFormat",
+      "type" : "java.lang.String",
+      "defaultValue" : "%s",
+      "description" : "Delegate members name format string (Use %s for the original entity display name)",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    } ],
+    "sensors" : [ {
+      "name" : "cassandra.cluster.datacenterUsages",
+      "type" : "com.google.common.collect.Multimap",
+      "description" : "Current set of datacenters in use, with nodes in each",
+      "links" : null
+    }, {
+      "name" : "cassandra.cluster.datacenters",
+      "type" : "java.util.Set",
+      "description" : "Current set of datacenters in use",
+      "links" : null
+    }, {
+      "name" : "cassandra.cluster.first.node.started.utc",
+      "type" : "java.lang.Long",
+      "description" : "Time (UTC) when the first node was started",
+      "links" : null
+    }, {
+      "name" : "cassandra.cluster.hostname",
+      "type" : "java.lang.String",
+      "description" : "Hostname to connect to cluster with",
+      "links" : null
+    }, {
+      "name" : "cassandra.cluster.metrics.processCpuTime.fraction.perNode",
+      "type" : "java.lang.Double",
+      "description" : "Fraction of CPU time used (percentage reported by JMX), averaged over all nodes",
+      "links" : null
+    }, {
+      "name" : "cassandra.cluster.metrics.processCpuTime.fraction.windowed",
+      "type" : "java.lang.Double",
+      "description" : "Fraction of CPU time used (percentage, over time window), averaged over all nodes",
+      "links" : null
+    }, {
+      "name" : "cassandra.cluster.name",
+      "type" : "java.lang.String",
+      "description" : "Name of the Cassandra cluster",
+      "links" : null
+    }, {
+      "name" : "cassandra.cluster.nodes",
+      "type" : "java.util.List",
+      "description" : "List of host:port of all active nodes in the cluster (thrift port, and public hostname/IP)",
+      "links" : null
+    }, {
+      "name" : "cassandra.cluster.read.active",
+      "type" : "java.lang.Integer",
+      "description" : "Current active ReadStage tasks",
+      "links" : null
+    }, {
+      "name" : "cassandra.cluster.read.pending",
+      "type" : "java.lang.Long",
+      "description" : "Current pending ReadStage tasks",
+      "links" : null
+    }, {
+      "name" : "cassandra.cluster.schema.versions.count",
+      "type" : "java.lang.Integer",
+      "description" : "Number of different schema versions in the cluster; should be 1 for a healthy cluster, 0 when off; 2 and above indicats a Schema Disagreement Error (and keyspace access may fail)",
+      "links" : null
+    }, {
+      "name" : "cassandra.cluster.seeds.current",
+      "type" : "java.util.Set",
+      "description" : "Current set of seeds to use to bootstrap the cluster",
+      "links" : null
+    }, {
+      "name" : "cassandra.cluster.seeds.hasPublished",
+      "type" : "java.lang.Boolean",
+      "description" : "Whether we have published any seeds",
+      "links" : null
+    }, {
+      "name" : "cassandra.cluster.start.nodes.queued",
+      "type" : "java.util.List",
+      "description" : "Nodes queued for starting (for sequential start)",
+      "links" : null
+    }, {
+      "name" : "cassandra.cluster.thrift.latency.perNode",
+      "type" : "java.lang.Long",
+      "description" : "Latency for thrift port connection  averaged over all nodes (ms)",
+      "links" : null
+    }, {
+      "name" : "cassandra.cluster.thrift.port",
+      "type" : "java.lang.Integer",
+      "description" : "Cassandra Thrift RPC port to connect to cluster with",
+      "links" : null
+    }, {
+      "name" : "cassandra.cluster.write.active",
+      "type" : "java.lang.Integer",
+      "description" : "Current active MutationStage tasks",
+      "links" : null
+    }, {
+      "name" : "cassandra.cluster.write.pending",
+      "type" : "java.lang.Long",
+      "description" : "Current pending MutationStage tasks",
+      "links" : null
+    }, {
+      "name" : "cassandra.reads.perSec.last.perNode",
+      "type" : "java.lang.Double",
+      "description" : "Reads/sec (last datapoint) averaged over all nodes",
+      "links" : null
+    }, {
+      "name" : "cassandra.reads.perSec.windowed.perNode",
+      "type" : "java.lang.Double",
+      "description" : "Reads/sec (over time window) averaged over all nodes",
+      "links" : null
+    }, {
+      "name" : "cassandra.thrift.latency.windowed.perNode",
+      "type" : "java.lang.Double",
+      "description" : "Latency for thrift port (ms, over time window) averaged over all nodes",
+      "links" : null
+    }, {
+      "name" : "cassandra.write.perSec.last.perNode",
+      "type" : "java.lang.Double",
+      "description" : "Writes/sec (last datapoint) averaged over all nodes",
+      "links" : null
+    }, {
+      "name" : "cassandra.writes.perSec.windowed.perNode",
+      "type" : "java.lang.Double",
+      "description" : "Writes/sec (over time window) averaged over all nodes",
+      "links" : null
+    }, {
+      "name" : "cluster.entity",
+      "type" : "brooklyn.entity.Entity",
+      "description" : "The cluster an entity is a member of",
+      "links" : null
+    }, {
+      "name" : "cluster.first",
+      "type" : "java.lang.Boolean",
+      "description" : "Set on an entity if it is the first member of a cluster",
+      "links" : null
+    }, {
+      "name" : "cluster.first.entity",
+      "type" : "brooklyn.entity.Entity",
+      "description" : "The first member of the cluster",
+      "links" : null
+    }, {
+      "name" : "cluster.member",
+      "type" : "java.lang.Boolean",
+      "description" : "Set on an entity if it is a member of a cluster",
+      "links" : null
+    }, {
+      "name" : "datastore.url",
+      "type" : "java.lang.String",
+      "description" : "Primary contact URL for a datastore (e.g. mysql://localhost:3306/)",
+      "links" : null
+    }, {
+      "name" : "dynamiccluster.entityQuarantined",
+      "type" : "brooklyn.entity.Entity",
+      "description" : "Entity failed to start, and has been quarantined",
+      "links" : null
+    }, {
+      "name" : "dynamiccluster.failedSubLocations",
+      "type" : "java.util.Set",
+      "description" : "Sub locations that seem to have failed",
+      "links" : null
+    }, {
+      "name" : "dynamiccluster.quarantineGroup",
+      "type" : "brooklyn.entity.group.QuarantineGroup",
+      "description" : "Group of quarantined entities that failed to start",
+      "links" : null
+    }, {
+      "name" : "dynamiccluster.subLocations",
+      "type" : "java.util.List",
+      "description" : "Locations for each availability zone to use",
+      "links" : null
+    }, {
+      "name" : "group.members",
+      "type" : "java.util.Collection",
+      "description" : "Members of the group",
+      "links" : null
+    }, {
+      "name" : "group.members.added",
+      "type" : "brooklyn.entity.Entity",
+      "description" : "Entity added to group members",
+      "links" : null
+    }, {
+      "name" : "group.members.count",
+      "type" : "java.lang.Integer",
+      "description" : "Number of members",
+      "links" : null
+    }, {
+      "name" : "group.members.removed",
+      "type" : "brooklyn.entity.Entity",
+      "description" : "Entity removed from group members",
+      "links" : null
+    }, {
+      "name" : "service.isUp",
+      "type" : "java.lang.Boolean",
+      "description" : "Whether the service is active and availability (confirmed and monitored)",
+      "links" : null
+    }, {
+      "name" : "service.state",
+      "type" : "brooklyn.entity.basic.Lifecycle",
+      "description" : "Actual lifecycle state of the service",
+      "links" : null
+    } ],
+    "effectors" : [ {
+      "name" : "executeScript",
+      "returnType" : "java.lang.String",
+      "parameters" : [ {
+        "name" : "commands",
+        "type" : "java.lang.String",
+        "description" : null,
+        "defaultValue" : null
+      } ],
+      "description" : "executes the given script contents using cassandra-cli",
+      "links" : null
+    }, {
+      "name" : "replaceMember",
+      "returnType" : "java.lang.String",
+      "parameters" : [ {
+        "name" : "memberId",
+        "type" : "java.lang.String",
+        "description" : "The entity id of a member to be replaced",
+        "defaultValue" : null
+      } ],
+      "description" : "Replaces the entity with the given ID, if it is a member; first adds a new member, then removes this one. Returns id of the new entity; or throws exception if couldn't be replaced.",
+      "links" : null
+    }, {
+      "name" : "resize",
+      "returnType" : "java.lang.Integer",
+      "parameters" : [ {
+        "name" : "desiredSize",
+        "type" : "java.lang.Integer",
+        "description" : "The new size of the cluster",
+        "defaultValue" : null
+      } ],
+      "description" : "Changes the size of the entity (e.g. the number of nodes in a cluster)",
+      "links" : null
+    }, {
+      "name" : "resizeByDelta",
+      "returnType" : "java.util.Collection",
+      "parameters" : [ {
+        "name" : "delta",
+        "type" : "int",
+        "description" : "The change in number of nodes",
+        "defaultValue" : null
+      } ],
+      "description" : "Changes the size of the cluster.",
+      "links" : null
+    }, {
+      "name" : "restart",
+      "returnType" : "void",
+      "parameters" : [ ],
+      "description" : "Restart the process/service represented by an entity",
+      "links" : null
+    }, {
+      "name" : "start",
+      "returnType" : "void",
+      "parameters" : [ {
+        "name" : "locations",
+        "type" : "java.lang.Object",
+        "description" : "The location or locations to start in, as a string, a location object, a list of strings, or a list of location objects",
+        "defaultValue" : null
+      } ],
+      "description" : "Start the process/service represented by an entity",
+      "links" : null
+    }, {
+      "name" : "stop",
+      "returnType" : "void",
+      "parameters" : [ ],
+      "description" : "Stop the process/service represented by an entity",
+      "links" : null
+    }, {
+      "name" : "update",
+      "returnType" : "void",
+      "parameters" : [ ],
+      "description" : "Updates the cluster members",
+      "links" : null
+    } ]
+  }, {
+    "type" : "brooklyn.entity.nosql.cassandra.CassandraNode",
+    "defaultVersion" : "1.2.16",
+    "name" : "Apache Cassandra Node",
+    "description" : "Cassandra is a highly scalable, eventually consistent, distributed, structured key-value store which provides a ColumnFamily-based data model richer than typical key/value systems",
+    "iconUrl" : "classpath:///cassandra-logo.jpeg",
+    "config" : [ {
+      "name" : "cassandra.broadcastAddressSensor",
+      "type" : "java.lang.String",
+      "defaultValue" : null,
+      "description" : "sensor name from which to take the broadcast address; default (null) is a smart lookup",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "cassandra.cluster.name",
+      "type" : "java.lang.String",
+      "defaultValue" : "BrooklynCluster",
+      "description" : "Name of the Cassandra cluster",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "cassandra.cluster.seeds.initial",
+      "type" : "java.util.Set",
+      "defaultValue" : null,
+      "description" : "List of cluster nodes to seed this node",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "cassandra.cluster.snitchName",
+      "type" : "java.lang.String",
+      "defaultValue" : "SimpleSnitch",
+      "description" : "Type of the Cassandra snitch",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "cassandra.config.customSnitchUrl",
+      "type" : "java.lang.String",
+      "defaultValue" : null,
+      "description" : "URL for a jar file to be uploaded (e.g. \"classpath://brooklyn/entity/nosql/cassandra/cassandra-multicloud-snitch.jar\"); defaults to null which means nothing to upload",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "cassandra.config.fileName",
+      "type" : "java.lang.String",
+      "defaultValue" : "cassandra.yaml",
+      "description" : "Name for the copied config file",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "cassandra.config.rackdc.fileName",
+      "type" : "java.lang.String",
+      "defaultValue" : "cassandra-rackdc.properties",
+      "description" : "Name for the copied rackdc config file (used for configuring replication, when a suitable snitch is used)",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "cassandra.config.rackdc.templateUrl",
+      "type" : "java.lang.String",
+      "defaultValue" : "classpath://brooklyn/entity/nosql/cassandra/cassandra-rackdc.properties",
+      "description" : "Template file (in freemarker format) for the cassandra-rackdc.properties config file",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "cassandra.config.templateUrl",
+      "type" : "java.lang.String",
+      "defaultValue" : "classpath://brooklyn/entity/nosql/cassandra/cassandra-${entity.majorMinorVersion}.yaml",
+      "description" : "A URL (in freemarker format) for a cassandra.yaml config file (in freemarker format)",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "cassandra.gossip.port",
+      "type" : "brooklyn.location.PortRange",
+      "defaultValue" : "7000-65535",
+      "description" : "Cassandra Gossip communications port",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "cassandra.install.mirror.url",
+      "type" : "java.lang.String",
+      "defaultValue" : "http://www.mirrorservice.org/sites/ftp.apache.org/cassandra",
+      "description" : "URL of mirror",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "cassandra.install.tgzUrl",
+      "type" : "java.lang.String",
+      "defaultValue" : null,
+      "description" : "URL of TGZ download file",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "cassandra.listenAddressSensor",
+      "type" : "java.lang.String",
+      "defaultValue" : null,
+      "description" : "sensor name from which to take the listen address; default (null) is a smart lookup",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "cassandra.native.port",
+      "type" : "brooklyn.location.PortRange",
+      "defaultValue" : "9042-65535",
+      "description" : "Cassandra Native Transport port",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "cassandra.numTokensPerNode",
+      "type" : "java.lang.Integer",
+      "defaultValue" : 1,
+      "description" : "Number of tokens per node; if using vnodes, should set this to a value like 256",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "cassandra.replication.datacenterName",
+      "type" : "java.lang.String",
+      "defaultValue" : null,
+      "description" : "Datacenter name (used for configuring replication, when a suitable snitch is used)",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "cassandra.replication.rackName",
+      "type" : "java.lang.String",
+      "defaultValue" : null,
+      "description" : "Rack name (used for configuring replication, when a suitable snitch is used)",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "cassandra.rpcAddressSensor",
+      "type" : "java.lang.String",
+      "defaultValue" : null,
+      "description" : "sensor name from which to take the RPC address; default (null) is 0.0.0.0",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "cassandra.ssl-gossip.port",
+      "type" : "brooklyn.location.PortRange",
+      "defaultValue" : "7001-65535",
+      "description" : "Cassandra Gossip SSL communications port",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "cassandra.thrift.port",
+      "type" : "brooklyn.location.PortRange",
+      "defaultValue" : "9160-65535",
+      "description" : "Cassandra Thrift RPC port",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "cassandra.token",
+      "type" : "java.math.BigInteger",
+      "defaultValue" : null,
+      "description" : "Cassandra Token",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "cassandra.tokens",
+      "type" : "java.util.Set",
+      "defaultValue" : null,
+      "description" : "Cassandra Tokens",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "children.startable.mode",
+      "type" : "java.lang.Enum",
+      "defaultValue" : null,
+      "description" : "children.startable.mode",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : [ {
+        "value" : "NONE",
+        "description" : "NONE"
+      }, {
+        "value" : "FOREGROUND",
+        "description" : "FOREGROUND"
+      }, {
+        "value" : "FOREGROUND_LATE",
+        "description" : "FOREGROUND_LATE"
+      }, {
+        "value" : "BACKGROUND",
+        "description" : "BACKGROUND"
+      }, {
+        "value" : "BACKGROUND_LATE",
+        "description" : "BACKGROUND_LATE"
+      } ],
+      "links" : null
+    }, {
+      "name" : "customize.latch",
+      "type" : "java.lang.Boolean",
+      "defaultValue" : null,
+      "description" : "Latch for blocking customize until ready",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "datastore.creation.script.contents",
+      "type" : "java.lang.String",
+      "defaultValue" : "",
+      "description" : "Contensts of creation script to initialize the datastore",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "datastore.creation.script.url",
+      "type" : "java.lang.String",
+      "defaultValue" : "",
+      "description" : "URL of creation script to use to initialize the datastore (ignored if contents are specified)",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "download.addon.urls",
+      "type" : "java.util.Map",
+      "defaultValue" : null,
+      "description" : "URL patterns for downloading named add-ons (will substitute things like ${version} automatically)",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "download.url",
+      "type" : "java.lang.String",
+      "defaultValue" : "${driver.mirrorUrl}/${version}/apache-cassandra-${version}-bin.tar.gz",
+      "description" : "URL pattern for downloading the installer (will substitute things like ${version} automatically)",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "expandedinstall.dir",
+      "type" : "java.lang.String",
+      "defaultValue" : null,
+      "description" : "Directory for installed artifacts (e.g. expanded dir after unpacking .tgz)",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "files.runtime",
+      "type" : "java.util.Map",
+      "defaultValue" : null,
+      "description" : "Map of files to be copied, keyed by destination name relative to runDir",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "install.dir",
+      "type" : "java.lang.String",
+      "defaultValue" : "${config['onbox.base.dir']!config['brooklyn.datadir']!'/<ERROR>-ONBOX_BASE_DIR-not-set'}/installs/${(config['install.unique_label']??)?string(config['install.unique_label']!'X',(entity.entityType.simpleName)+((config['install.version']??)?string('_'+(config['install.version']!'X'),'')))}",
+      "description" : "Directory for this software to be installed in",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "install.latch",
+      "type" : "java.lang.Boolean",
+      "defaultValue" : null,
+      "description" : "Latch for blocking install until ready",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "install.skip",
+      "type" : "java.lang.Boolean",
+      "defaultValue" : false,
+      "description" : "Skip the driver install commands entirely, for pre-installed software",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "install.unique_label",
+      "type" : "java.lang.String",
+      "defaultValue" : null,
+      "description" : "Provides a label which uniquely identifies an installation, used in the computation of the install dir; this should include something readable, and must include a hash of all data which differentiates an installation (e.g. version, plugins, etc), but should be the same where install dirs can be shared to allow for re-use",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "install.version",
+      "type" : "java.lang.String",
+      "defaultValue" : "1.2.16",
+      "description" : "Suggested version",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "java.check.hostname.bug",
+      "type" : "java.lang.Boolean",
+      "defaultValue" : true,
+      "description" : "Check whether hostname is too long and will likely crash Javadue to bug 7089443",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "java.metrics.mxbeanStatsEnabled",
+      "type" : "java.lang.Boolean",
+      "defaultValue" : true,
+      "description" : "Enables collection of JVM stats from the MXBeans, such as memory and thread usage (default is true)",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "java.opts",
+      "type" : "java.util.Set",
+      "defaultValue" : [ ],
+      "description" : "Java command line options",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "java.sysprops",
+      "type" : "java.util.Map",
+      "defaultValue" : { },
+      "description" : "Java command line system properties",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "jmx.agent.mode",
+      "type" : "java.lang.Enum",
+      "defaultValue" : "JMXMP_AND_RMI",
+      "description" : "What type of JMX agent to use; defaults to null (autodetect) which means JMXMP_AND_RMI allowing firewall access through a single port as well as local access supporting jconsole (unless JMX_SSL_ENABLED is set, in which case it is JMXMP only)",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : [ {
+        "value" : "AUTODETECT",
+        "description" : "AUTODETECT"
+      }, {
+        "value" : "JMXMP",
+        "description" : "JMXMP"
+      }, {
+        "value" : "JMXMP_AND_RMI",
+        "description" : "JMXMP_AND_RMI"
+      }, {
+        "value" : "JMX_RMI_CUSTOM_AGENT",
+        "description" : "JMX_RMI_CUSTOM_AGENT"
+      }, {
+        "value" : "JMX_RMI",
+        "description" : "JMX_RMI"
+      }, {
+        "value" : "NONE",
+        "description" : "NONE"
+      } ],
+      "links" : null
+    }, {
+      "name" : "jmx.context",
+      "type" : "java.lang.String",
+      "defaultValue" : "jmxrmi",
+      "description" : "JMX context path",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "jmx.direct.port",
+      "type" : "brooklyn.location.PortRange",
+      "defaultValue" : "31001-65535",
+      "description" : "JMX direct/private port (e.g. JMX RMI server port, or JMXMP port, but not RMI registry port)",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "jmx.enabled",
+      "type" : "java.lang.Boolean",
+      "defaultValue" : true,
+      "description" : "JMX enabled",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "jmx.password",
+      "type" : "java.lang.String",
+      "defaultValue" : null,
+      "description" : "JMX password",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "jmx.ssl.access.cert",
+      "type" : "java.security.cert.Certificate",
+      "defaultValue" : null,
+      "description" : "certificate of key used to access a JMX agent",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "jmx.ssl.access.key",
+      "type" : "java.security.PrivateKey",
+      "defaultValue" : null,
+      "description" : "key used to access a JMX agent (typically per entity, embedded in the managed JVM)",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "jmx.ssl.enabled",
+      "type" : "java.lang.Boolean",
+      "defaultValue" : false,
+      "description" : "JMX over JMXMP enabled with SSL/TLS",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "jmx.user",
+      "type" : "java.lang.String",
+      "defaultValue" : null,
+      "description" : "JMX username",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "launch.latch",
+      "type" : "java.lang.Boolean",
+      "defaultValue" : null,
+      "description" : "Latch for blocking launch until ready",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "post.install.command",
+      "type" : "java.lang.String",
+      "defaultValue" : null,
+      "description" : "Command to be run after the install method being called on the driver",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "post.launch.command",
+      "type" : "java.lang.String",
+      "defaultValue" : null,
+      "description" : "Command to be run after the launch method being called on the driver",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "pre.install.command",
+      "type" : "java.lang.String",
+      "defaultValue" : null,
+      "description" : "Command to be run prior to the install method being called on the driver",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "pre.launch.command",
+      "type" : "java.lang.String",
+      "defaultValue" : null,
+      "description" : "Command to be run prior to the launch method being called on the driver",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "provisioning.properties",
+      "type" : "java.util.Map",
+      "defaultValue" : { },
+      "description" : "Custom properties to be passed in when provisioning a new machine",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "resources.latch",
+      "type" : "java.lang.Boolean",
+      "defaultValue" : null,
+      "description" : "Latch for blocking resources until ready",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "rmi.registry.port",
+      "type" : "brooklyn.location.PortRange",
+      "defaultValue" : "7199",
+      "description" : "RMI registry port, used for discovering JMX (private) port",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "run.dir",
+      "type" : "java.lang.String",
+      "defaultValue" : "${config['onbox.base.dir']!config['brooklyn.datadir']!'/<ERROR>-ONBOX_BASE_DIR-not-set'}/apps/${entity.applicationId}/entities/${entity.entityType.simpleName}_${entity.id}",
+      "description" : "Directory for this software to be run from",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "setup.latch",
+      "type" : "java.lang.Boolean",
+      "defaultValue" : null,
+      "description" : "Latch for blocking setup until ready",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "shell.env",
+      "type" : "java.util.Map",
+      "defaultValue" : { },
+      "description" : "Map of environment variables to pass to the runtime shell",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "softwareProcess.maxSensorRebindDelay",
+      "type" : "brooklyn.util.time.Duration",
+      "defaultValue" : "10s",
+      "description" : "The maximum delay to apply when reconnecting sensors when rebinding to this entity. Brooklyn will wait a random amount of time, up to the value of this config key, to avoid a thundering herd problem when the entity shares its machine with several others. Set to null or to 0 to disable any delay.",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "start.latch",
+      "type" : "java.lang.Boolean",
+      "defaultValue" : null,
+      "description" : "Latch for blocking start until ready",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "start.timeout",
+      "type" : "brooklyn.util.time.Duration",
+      "defaultValue" : "5m",
+      "description" : "Time to wait for process and for SERVICE_UP before failing (in seconds, default 2m)",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "templates.runtime",
+      "type" : "java.util.Map",
+      "defaultValue" : null,
+      "description" : "Map of templates to be filled in and copied, keyed by destination name relative to runDir",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    } ],
+    "sensors" : [ {
+      "name" : "cassandra.cluster.name",
+      "type" : "java.lang.String",
+      "description" : "Name of the Cassandra cluster",
+      "links" : null
+    }, {
+      "name" : "cassandra.gossip.port",
+      "type" : "java.lang.Integer",
+      "description" : "Cassandra Gossip communications port",
+      "links" : null
+    }, {
+      "name" : "cassandra.liveNodeCount",
+      "type" : "java.lang.Integer",
+      "description" : "Number of live nodes in cluster",
+      "links" : null
+    }, {
+      "name" : "cassandra.native.port",
+      "type" : "java.lang.Integer",
+      "description" : "Cassandra Native Transport port",
+      "links" : null
+    }, {
+      "name" : "cassandra.peers",
+      "type" : "java.lang.Integer",
+      "description" : "Number of peers in cluster",
+      "links" : null
+    }, {
+      "name" : "cassandra.read.active",
+      "type" : "java.lang.Integer",
+      "description" : "Current active ReadStage tasks",
+      "links" : null
+    }, {
+      "name" : "cassandra.read.completed",
+      "type" : "java.lang.Long",
+      "description" : "Total completed ReadStage tasks",
+      "links" : null
+    }, {
+      "name" : "cassandra.read.pending",
+      "type" : "java.lang.Long",
+      "description" : "Current pending ReadStage tasks",
+      "links" : null
+    }, {
+      "name" : "cassandra.reads.perSec.last",
+      "type" : "java.lang.Double",
+      "description" : "Reads/sec (last datapoint)",
+      "links" : null
+    }, {
+      "name" : "cassandra.reads.perSec.windowed",
+      "type" : "java.lang.Double",
+      "description" : "Reads/sec (over time window)",
+      "links" : null
+    }, {
+      "name" : "cassandra.replication.datacenterName",
+      "type" : "java.lang.String",
+      "description" : "Datacenter name (used for configuring replication, when a suitable snitch is used)",
+      "links" : null
+    }, {
+      "name" : "cassandra.replication.rackName",
+      "type" : "java.lang.String",
+      "description" : "Rack name (used for configuring replication, when a suitable snitch is used)",
+      "links" : null
+    }, {
+      "name" : "cassandra.service.jmx.up",
+      "type" : "java.lang.Boolean",
+      "description" : "Whether JMX is up for this service",
+      "links" : null
+    }, {
+      "name" : "cassandra.ssl-gossip.port",
+      "type" : "java.lang.Integer",
+      "description" : "Cassandra Gossip SSL communications port",
+      "links" : null
+    }, {
+      "name" : "cassandra.thrift.latency",
+      "type" : "java.lang.Long",
+      "description" : "Latency for thrift port connection (ms) or null if down",
+      "links" : null
+    }, {
+      "name" : "cassandra.thrift.latency.windowed",
+      "type" : "java.lang.Double",
+      "description" : "Latency for thrift port (ms, averaged over time window)",
+      "links" : null
+    }, {
+      "name" : "cassandra.thrift.port",
+      "type" : "java.lang.Integer",
+      "description" : "Cassandra Thrift RPC port",
+      "links" : null
+    }, {
+      "name" : "cassandra.token",
+      "type" : "java.math.BigInteger",
+      "description" : "Cassandra Token",
+      "links" : null
+    }, {
+      "name" : "cassandra.tokens",
+      "type" : "java.util.Set",
+      "description" : "Cassandra Tokens",
+      "links" : null
+    }, {
+      "name" : "cassandra.write.active",
+      "type" : "java.lang.Integer",
+      "description" : "Current active MutationStage tasks",
+      "links" : null
+    }, {
+      "name" : "cassandra.write.completed",
+      "type" : "java.lang.Long",
+      "description" : "Total completed MutationStage tasks",
+      "links" : null
+    }, {
+      "name" : "cassandra.write.pending",
+      "type" : "java.lang.Long",
+      "description" : "Current pending MutationStage tasks",
+      "links" : null
+    }, {
+      "name" : "cassandra.write.perSec.last",
+      "type" : "java.lang.Double",
+      "description" : "Writes/sec (last datapoint)",
+      "links" : null
+    }, {
+      "name" : "cassandra.writes.perSec.windowed",
+      "type" : "java.lang.Double",
+      "description" : "Writes/sec (over time window)",
+      "links" : null
+    }, {
+      "name" : "datastore.url",
+      "type" : "java.lang.String",
+      "description" : "Primary contact URL for a datastore (e.g. mysql://localhost:3306/)",
+      "links" : null
+    }, {
+      "name" : "download.addon.urls",
+      "type" : "java.util.Map",
+      "description" : "URL patterns for downloading named add-ons (will substitute things like ${version} automatically)",
+      "links" : null
+    }, {
+      "name" : "download.url",
+      "type" : "java.lang.String",
+      "description" : "URL pattern for downloading the installer (will substitute things like ${version} automatically)",
+      "links" : null
+    }, {
+      "name" : "expandedinstall.dir",
+      "type" : "java.lang.String",
+      "description" : "Directory for installed artifacts (e.g. expanded dir after unpacking .tgz)",
+      "links" : null
+    }, {
+      "name" : "host.address",
+      "type" : "java.lang.String",
+      "description" : "Host IP address",
+      "links" : null
+    }, {
+      "name" : "host.name",
+      "type" : "java.lang.String",
+      "description" : "Host name",
+      "links" : null
+    }, {
+      "name" : "host.subnet.address",
+      "type" : "java.lang.String",
+      "description" : "Host address as known internally in the subnet where it is running (if different to host.name)",
+      "links" : null
+    }, {
+      "name" : "host.subnet.hostname",
+      "type" : "java.lang.String",
+      "description" : "Host name as known internally in the subnet where it is running (if different to host.name)",
+      "links" : null
+    }, {
+      "name" : "install.dir",
+      "type" : "java.lang.String",
+      "description" : "Directory for this software to be installed in",
+      "links" : null
+    }, {
+      "name" : "java.metrics.gc.time",
+      "type" : "java.util.Map",
+      "description" : "garbage collection time",
+      "links" : null
+    }, {
+      "name" : "java.metrics.heap.committed",
+      "type" : "java.lang.Long",
+      "description" : "Commited heap size (bytes)",
+      "links" : null
+    }, {
+      "name" : "java.metrics.heap.init",
+      "type" : "java.lang.Long",
+      "description" : "Initial heap size (bytes)",
+      "links" : null
+    }, {
+      "name" : "java.metrics.heap.max",
+      "type" : "java.lang.Long",
+      "description" : "Max heap size (bytes)",
+      "links" : null
+    }, {
+      "name" : "java.metrics.heap.used",
+      "type" : "java.lang.Long",
+      "description" : "Current heap size (bytes)",
+      "links" : null
+    }, {
+      "name" : "java.metrics.nonheap.used",
+      "type" : "java.lang.Long",
+      "description" : "Current non-heap size (bytes)",
+      "links" : null
+    }, {
+      "name" : "java.metrics.physicalmemory.free",
+      "type" : "java.lang.Long",
+      "description" : "The free memory available to the operating system",
+      "links" : null
+    }, {
+      "name" : "java.metrics.physicalmemory.total",
+      "type" : "java.lang.Long",
+      "description" : "The physical memory available to the operating system",
+      "links" : null
+    }, {
+      "name" : "java.metrics.processCpuTime.fraction.last",
+      "type" : "java.lang.Double",
+      "description" : "Fraction of CPU time used, reported by JVM (percentage, last datapoint)",
+      "links" : null
+    }, {
+      "name" : "java.metrics.processCpuTime.fraction.windowed",
+      "type" : "java.lang.Double",
+      "description" : "Fraction of CPU time used, reported by JVM (percentage, over time window)",
+      "links" : null
+    }, {
+      "name" : "java.metrics.processCpuTime.total",
+      "type" : "java.lang.Double",
+      "description" : "Process CPU time (total millis since start)",
+      "links" : null
+    }, {
+      "name" : "java.metrics.processors.available",
+      "type" : "java.lang.Integer",
+      "description" : "number of processors available to the Java virtual machine",
+      "links" : null
+    }, {
+      "name" : "java.metrics.starttime",
+      "type" : "java.lang.Long",
+      "description" : "Start time of Java process (UTC)",
+      "links" : null
+    }, {
+      "name" : "java.metrics.systemload.average",
+      "type" : "java.lang.Double",
+      "description" : "average system load",
+      "links" : null
+    }, {
+      "name" : "java.metrics.threads.current",
+      "type" : "java.lang.Integer",
+      "description" : "Current number of threads",
+      "links" : null
+    }, {
+      "name" : "java.metrics.threads.max",
+      "type" : "java.lang.Integer",
+      "description" : "Peak number of threads",
+      "links" : null
+    }, {
+      "name" : "java.metrics.uptime",
+      "type" : "java.lang.Long",
+      "description" : "Uptime of Java process (millis, elapsed since start)",
+      "links" : null
+    }, {
+      "name" : "jmx.context",
+      "type" : "java.lang.String",
+      "description" : "JMX context path",
+      "links" : null
+    }, {
+      "name" : "jmx.direct.port",
+      "type" : "java.lang.Integer",
+      "description" : "JMX direct/private port (e.g. JMX RMI server port, or JMXMP port, but not RMI registry port)",
+      "links" : null
+    }, {
+      "name" : "jmx.password",
+      "type" : "java.lang.String",
+      "description" : "JMX password",
+      "links" : null
+    }, {
+      "name" : "jmx.service.url",
+      "type" : "java.lang.String",
+      "description" : "The URL for connecting to the MBean Server",
+      "links" : null
+    }, {
+      "name" : "jmx.user",
+      "type" : "java.lang.String",
+      "description" : "JMX username",
+      "links" : null
+    }, {
+      "name" : "rmi.registry.port",
+      "type" : "java.lang.Integer",
+      "description" : "RMI registry port, used for discovering JMX (private) port",
+      "links" : null
+    }, {
+      "name" : "run.dir",
+      "type" : "java.lang.String",
+      "description" : "Directory for this software to be run from",
+      "links" : null
+    }, {
+      "name" : "service.isUp",
+      "type" : "java.lang.Boolean",
+      "description" : "Whether the service is active and availability (confirmed and monitored)",
+      "links" : null
+    }, {
+      "name" : "service.process.isRunning",
+      "type" : "java.lang.Boolean",
+      "description" : "Whether the process for the service is confirmed as running",
+      "links" : null
+    }, {
+      "name" : "service.state",
+      "type" : "brooklyn.entity.basic.Lifecycle",
+      "description" : "Actual lifecycle state of the service",
+      "links" : null
+    }, {
+      "name" : "softwareprocess.pid.file",
+      "type" : "java.lang.String",
+      "description" : "PID file",
+      "links" : null
+    }, {
+      "name" : "softwareservice.provisioningLocation",
+      "type" : "brooklyn.location.MachineProvisioningLocation",
+      "description" : "Location used to provision a machine where this is running",
+      "links" : null
+    } ],
+    "effectors" : [ {
+      "name" : "executeScript",
+      "returnType" : "java.lang.String",
+      "parameters" : [ {
+        "name" : "commands",
+        "type" : "java.lang.String",
+        "description" : null,
+        "defaultValue" : null
+      } ],
+      "description" : "executes the given script contents using cassandra-cli",
+      "links" : null
+    }, {
+      "name" : "restart",
+      "returnType" : "void",
+      "parameters" : [ ],
+      "description" : "Restart the process/service represented by an entity",
+      "links" : null
+    }, {
+      "name" : "start",
+      "returnType" : "void",
+      "parameters" : [ {
+        "name" : "locations",
+        "type" : "java.lang.Object",
+        "description" : "The location or locations to start in, as a string, a location object, a list of strings, or a list of location objects",
+        "defaultValue" : null
+      } ],
+      "description" : "Start the process/service represented by an entity",
+      "links" : null
+    }, {
+      "name" : "stop",
+      "returnType" : "void",
+      "parameters" : [ ],
+      "description" : "Stop the process/service represented by an entity",
+      "links" : null
+    } ]
+  }, {
+    "type" : "brooklyn.entity.nosql.solr.SolrServer",
+    "defaultVersion" : "4.7.0",
+    "name" : "Apache Solr Node",
+    "description" : "Solr is the popular, blazing fast open source enterprise search platform from the Apache Lucene project.",
+    "iconUrl" : "classpath:///solr-logo.jpeg",
+    "config" : [ {
+      "name" : "children.startable.mode",
+      "type" : "java.lang.Enum",
+      "defaultValue" : null,
+      "description" : "children.startable.mode",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : [ {
+        "value" : "NONE",
+        "description" : "NONE"
+      }, {
+        "value" : "FOREGROUND",
+        "description" : "FOREGROUND"
+      }, {
+        "value" : "FOREGROUND_LATE",
+        "description" : "FOREGROUND_LATE"
+      }, {
+        "value" : "BACKGROUND",
+        "description" : "BACKGROUND"
+      }, {
+        "value" : "BACKGROUND_LATE",
+        "description" : "BACKGROUND_LATE"
+      } ],
+      "links" : null
+    }, {
+      "name" : "customize.latch",
+      "type" : "java.lang.Boolean",
+      "defaultValue" : null,
+      "description" : "Latch for blocking customize until ready",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "download.addon.urls",
+      "type" : "java.util.Map",
+      "defaultValue" : null,
+      "description" : "URL patterns for downloading named add-ons (will substitute things like ${version} automatically)",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "download.url",
+      "type" : "java.lang.String",
+      "defaultValue" : "${driver.mirrorUrl}/${version}/solr-${version}.tgz",
+      "description" : "URL pattern for downloading the installer (will substitute things like ${version} automatically)",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "expandedinstall.dir",
+      "type" : "java.lang.String",
+      "defaultValue" : null,
+      "description" : "Directory for installed artifacts (e.g. expanded dir after unpacking .tgz)",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "files.runtime",
+      "type" : "java.util.Map",
+      "defaultValue" : null,
+      "description" : "Map of files to be copied, keyed by destination name relative to runDir",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "install.dir",
+      "type" : "java.lang.String",
+      "defaultValue" : "${config['onbox.base.dir']!config['brooklyn.datadir']!'/<ERROR>-ONBOX_BASE_DIR-not-set'}/installs/${(config['install.unique_label']??)?string(config['install.unique_label']!'X',(entity.entityType.simpleName)+((config['install.version']??)?string('_'+(config['install.version']!'X'),'')))}",
+      "description" : "Directory for this software to be installed i

<TRUNCATED>

[16/19] incubator-brooklyn git commit: Catalog index page

Posted by he...@apache.org.
Catalog index page

- load the catalog items from json


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

Branch: refs/heads/master
Commit: 29a989c3ba150525888c36ec4ec0e16b72ec87a2
Parents: e63f68b
Author: Valentin Aitken <bo...@gmail.com>
Authored: Tue Feb 24 13:49:44 2015 +0200
Committer: Valentin Aitken <bo...@gmail.com>
Committed: Tue Feb 24 13:49:44 2015 +0200

----------------------------------------------------------------------
 docs/style/js/catalog/bloodhound.js             | 727 +++++++++++++++++++
 docs/website/learnmore/catalog/index.html       |  57 +-
 .../learnmore/catalog/libs/js/bloodhound.js     | 727 -------------------
 3 files changed, 762 insertions(+), 749 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/29a989c3/docs/style/js/catalog/bloodhound.js
----------------------------------------------------------------------
diff --git a/docs/style/js/catalog/bloodhound.js b/docs/style/js/catalog/bloodhound.js
new file mode 100644
index 0000000..96a4c43
--- /dev/null
+++ b/docs/style/js/catalog/bloodhound.js
@@ -0,0 +1,727 @@
+/*!
+ * typeahead.js 0.10.5
+ * https://github.com/twitter/typeahead.js
+ * Copyright 2013-2014 Twitter, Inc. and other contributors; Licensed MIT
+ */
+
+(function($) {
+    var _ = function() {
+        "use strict";
+        return {
+            isMsie: function() {
+                return /(msie|trident)/i.test(navigator.userAgent) ? navigator.userAgent.match(/(msie |rv:)(\d+(.\d+)?)/i)[2] : false;
+            },
+            isBlankString: function(str) {
+                return !str || /^\s*$/.test(str);
+            },
+            escapeRegExChars: function(str) {
+                return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
+            },
+            isString: function(obj) {
+                return typeof obj === "string";
+            },
+            isNumber: function(obj) {
+                return typeof obj === "number";
+            },
+            isArray: $.isArray,
+            isFunction: $.isFunction,
+            isObject: $.isPlainObject,
+            isUndefined: function(obj) {
+                return typeof obj === "undefined";
+            },
+            toStr: function toStr(s) {
+                return _.isUndefined(s) || s === null ? "" : s + "";
+            },
+            bind: $.proxy,
+            each: function(collection, cb) {
+                $.each(collection, reverseArgs);
+                function reverseArgs(index, value) {
+                    return cb(value, index);
+                }
+            },
+            map: $.map,
+            filter: $.grep,
+            every: function(obj, test) {
+                var result = true;
+                if (!obj) {
+                    return result;
+                }
+                $.each(obj, function(key, val) {
+                    if (!(result = test.call(null, val, key, obj))) {
+                        return false;
+                    }
+                });
+                return !!result;
+            },
+            some: function(obj, test) {
+                var result = false;
+                if (!obj) {
+                    return result;
+                }
+                $.each(obj, function(key, val) {
+                    if (result = test.call(null, val, key, obj)) {
+                        return false;
+                    }
+                });
+                return !!result;
+            },
+            mixin: $.extend,
+            getUniqueId: function() {
+                var counter = 0;
+                return function() {
+                    return counter++;
+                };
+            }(),
+            templatify: function templatify(obj) {
+                return $.isFunction(obj) ? obj : template;
+                function template() {
+                    return String(obj);
+                }
+            },
+            defer: function(fn) {
+                setTimeout(fn, 0);
+            },
+            debounce: function(func, wait, immediate) {
+                var timeout, result;
+                return function() {
+                    var context = this, args = arguments, later, callNow;
+                    later = function() {
+                        timeout = null;
+                        if (!immediate) {
+                            result = func.apply(context, args);
+                        }
+                    };
+                    callNow = immediate && !timeout;
+                    clearTimeout(timeout);
+                    timeout = setTimeout(later, wait);
+                    if (callNow) {
+                        result = func.apply(context, args);
+                    }
+                    return result;
+                };
+            },
+            throttle: function(func, wait) {
+                var context, args, timeout, result, previous, later;
+                previous = 0;
+                later = function() {
+                    previous = new Date();
+                    timeout = null;
+                    result = func.apply(context, args);
+                };
+                return function() {
+                    var now = new Date(), remaining = wait - (now - previous);
+                    context = this;
+                    args = arguments;
+                    if (remaining <= 0) {
+                        clearTimeout(timeout);
+                        timeout = null;
+                        previous = now;
+                        result = func.apply(context, args);
+                    } else if (!timeout) {
+                        timeout = setTimeout(later, remaining);
+                    }
+                    return result;
+                };
+            },
+            noop: function() {}
+        };
+    }();
+    var VERSION = "0.10.5";
+    var tokenizers = function() {
+        "use strict";
+        return {
+            nonword: nonword,
+            whitespace: whitespace,
+            obj: {
+                nonword: getObjTokenizer(nonword),
+                whitespace: getObjTokenizer(whitespace)
+            }
+        };
+        function whitespace(str) {
+            str = _.toStr(str);
+            return str ? str.split(/\s+/) : [];
+        }
+        function nonword(str) {
+            str = _.toStr(str);
+            return str ? str.split(/\W+/) : [];
+        }
+        function getObjTokenizer(tokenizer) {
+            return function setKey() {
+                var args = [].slice.call(arguments, 0);
+                return function tokenize(o) {
+                    var tokens = [];
+                    _.each(args, function(k) {
+                        tokens = tokens.concat(tokenizer(_.toStr(o[k])));
+                    });
+                    return tokens;
+                };
+            };
+        }
+    }();
+    var LruCache = function() {
+        "use strict";
+        function LruCache(maxSize) {
+            this.maxSize = _.isNumber(maxSize) ? maxSize : 100;
+            this.reset();
+            if (this.maxSize <= 0) {
+                this.set = this.get = $.noop;
+            }
+        }
+        _.mixin(LruCache.prototype, {
+            set: function set(key, val) {
+                var tailItem = this.list.tail, node;
+                if (this.size >= this.maxSize) {
+                    this.list.remove(tailItem);
+                    delete this.hash[tailItem.key];
+                }
+                if (node = this.hash[key]) {
+                    node.val = val;
+                    this.list.moveToFront(node);
+                } else {
+                    node = new Node(key, val);
+                    this.list.add(node);
+                    this.hash[key] = node;
+                    this.size++;
+                }
+            },
+            get: function get(key) {
+                var node = this.hash[key];
+                if (node) {
+                    this.list.moveToFront(node);
+                    return node.val;
+                }
+            },
+            reset: function reset() {
+                this.size = 0;
+                this.hash = {};
+                this.list = new List();
+            }
+        });
+        function List() {
+            this.head = this.tail = null;
+        }
+        _.mixin(List.prototype, {
+            add: function add(node) {
+                if (this.head) {
+                    node.next = this.head;
+                    this.head.prev = node;
+                }
+                this.head = node;
+                this.tail = this.tail || node;
+            },
+            remove: function remove(node) {
+                node.prev ? node.prev.next = node.next : this.head = node.next;
+                node.next ? node.next.prev = node.prev : this.tail = node.prev;
+            },
+            moveToFront: function(node) {
+                this.remove(node);
+                this.add(node);
+            }
+        });
+        function Node(key, val) {
+            this.key = key;
+            this.val = val;
+            this.prev = this.next = null;
+        }
+        return LruCache;
+    }();
+    var PersistentStorage = function() {
+        "use strict";
+        var ls, methods;
+        try {
+            ls = window.localStorage;
+            ls.setItem("~~~", "!");
+            ls.removeItem("~~~");
+        } catch (err) {
+            ls = null;
+        }
+        function PersistentStorage(namespace) {
+            this.prefix = [ "__", namespace, "__" ].join("");
+            this.ttlKey = "__ttl__";
+            this.keyMatcher = new RegExp("^" + _.escapeRegExChars(this.prefix));
+        }
+        if (ls && window.JSON) {
+            methods = {
+                _prefix: function(key) {
+                    return this.prefix + key;
+                },
+                _ttlKey: function(key) {
+                    return this._prefix(key) + this.ttlKey;
+                },
+                get: function(key) {
+                    if (this.isExpired(key)) {
+                        this.remove(key);
+                    }
+                    return decode(ls.getItem(this._prefix(key)));
+                },
+                set: function(key, val, ttl) {
+                    if (_.isNumber(ttl)) {
+                        ls.setItem(this._ttlKey(key), encode(now() + ttl));
+                    } else {
+                        ls.removeItem(this._ttlKey(key));
+                    }
+                    return ls.setItem(this._prefix(key), encode(val));
+                },
+                remove: function(key) {
+                    ls.removeItem(this._ttlKey(key));
+                    ls.removeItem(this._prefix(key));
+                    return this;
+                },
+                clear: function() {
+                    var i, key, keys = [], len = ls.length;
+                    for (i = 0; i < len; i++) {
+                        if ((key = ls.key(i)).match(this.keyMatcher)) {
+                            keys.push(key.replace(this.keyMatcher, ""));
+                        }
+                    }
+                    for (i = keys.length; i--; ) {
+                        this.remove(keys[i]);
+                    }
+                    return this;
+                },
+                isExpired: function(key) {
+                    var ttl = decode(ls.getItem(this._ttlKey(key)));
+                    return _.isNumber(ttl) && now() > ttl ? true : false;
+                }
+            };
+        } else {
+            methods = {
+                get: _.noop,
+                set: _.noop,
+                remove: _.noop,
+                clear: _.noop,
+                isExpired: _.noop
+            };
+        }
+        _.mixin(PersistentStorage.prototype, methods);
+        return PersistentStorage;
+        function now() {
+            return new Date().getTime();
+        }
+        function encode(val) {
+            return JSON.stringify(_.isUndefined(val) ? null : val);
+        }
+        function decode(val) {
+            return JSON.parse(val);
+        }
+    }();
+    var Transport = function() {
+        "use strict";
+        var pendingRequestsCount = 0, pendingRequests = {}, maxPendingRequests = 6, sharedCache = new LruCache(10);
+        function Transport(o) {
+            o = o || {};
+            this.cancelled = false;
+            this.lastUrl = null;
+            this._send = o.transport ? callbackToDeferred(o.transport) : $.ajax;
+            this._get = o.rateLimiter ? o.rateLimiter(this._get) : this._get;
+            this._cache = o.cache === false ? new LruCache(0) : sharedCache;
+        }
+        Transport.setMaxPendingRequests = function setMaxPendingRequests(num) {
+            maxPendingRequests = num;
+        };
+        Transport.resetCache = function resetCache() {
+            sharedCache.reset();
+        };
+        _.mixin(Transport.prototype, {
+            _get: function(url, o, cb) {
+                var that = this, jqXhr;
+                if (this.cancelled || url !== this.lastUrl) {
+                    return;
+                }
+                if (jqXhr = pendingRequests[url]) {
+                    jqXhr.done(done).fail(fail);
+                } else if (pendingRequestsCount < maxPendingRequests) {
+                    pendingRequestsCount++;
+                    pendingRequests[url] = this._send(url, o).done(done).fail(fail).always(always);
+                } else {
+                    this.onDeckRequestArgs = [].slice.call(arguments, 0);
+                }
+                function done(resp) {
+                    cb && cb(null, resp);
+                    that._cache.set(url, resp);
+                }
+                function fail() {
+                    cb && cb(true);
+                }
+                function always() {
+                    pendingRequestsCount--;
+                    delete pendingRequests[url];
+                    if (that.onDeckRequestArgs) {
+                        that._get.apply(that, that.onDeckRequestArgs);
+                        that.onDeckRequestArgs = null;
+                    }
+                }
+            },
+            get: function(url, o, cb) {
+                var resp;
+                if (_.isFunction(o)) {
+                    cb = o;
+                    o = {};
+                }
+                this.cancelled = false;
+                this.lastUrl = url;
+                if (resp = this._cache.get(url)) {
+                    _.defer(function() {
+                        cb && cb(null, resp);
+                    });
+                } else {
+                    this._get(url, o, cb);
+                }
+                return !!resp;
+            },
+            cancel: function() {
+                this.cancelled = true;
+            }
+        });
+        return Transport;
+        function callbackToDeferred(fn) {
+            return function customSendWrapper(url, o) {
+                var deferred = $.Deferred();
+                fn(url, o, onSuccess, onError);
+                return deferred;
+                function onSuccess(resp) {
+                    _.defer(function() {
+                        deferred.resolve(resp);
+                    });
+                }
+                function onError(err) {
+                    _.defer(function() {
+                        deferred.reject(err);
+                    });
+                }
+            };
+        }
+    }();
+    var SearchIndex = function() {
+        "use strict";
+        function SearchIndex(o) {
+            o = o || {};
+            if (!o.datumTokenizer || !o.queryTokenizer) {
+                $.error("datumTokenizer and queryTokenizer are both required");
+            }
+            this.datumTokenizer = o.datumTokenizer;
+            this.queryTokenizer = o.queryTokenizer;
+            this.reset();
+        }
+        _.mixin(SearchIndex.prototype, {
+            bootstrap: function bootstrap(o) {
+                this.datums = o.datums;
+                this.trie = o.trie;
+            },
+            add: function(data) {
+                var that = this;
+                data = _.isArray(data) ? data : [ data ];
+                _.each(data, function(datum) {
+                    var id, tokens;
+                    id = that.datums.push(datum) - 1;
+                    tokens = normalizeTokens(that.datumTokenizer(datum));
+                    _.each(tokens, function(token) {
+                        var node, chars, ch;
+                        node = that.trie;
+                        chars = token.split("");
+                        while (ch = chars.shift()) {
+                            node = node.children[ch] || (node.children[ch] = newNode());
+                            node.ids.push(id);
+                        }
+                    });
+                });
+            },
+            get: function get(query) {
+                var that = this, tokens, matches;
+                tokens = normalizeTokens(this.queryTokenizer(query));
+                _.each(tokens, function(token) {
+                    var node, chars, ch, ids;
+                    if (matches && matches.length === 0) {
+                        return false;
+                    }
+                    node = that.trie;
+                    chars = token.split("");
+                    while (node && (ch = chars.shift())) {
+                        node = node.children[ch];
+                    }
+                    if (node && chars.length === 0) {
+                        ids = node.ids.slice(0);
+                        matches = matches ? getIntersection(matches, ids) : ids;
+                    } else {
+                        matches = [];
+                        return false;
+                    }
+                });
+                return matches ? _.map(unique(matches), function(id) {
+                    return that.datums[id];
+                }) : [];
+            },
+            reset: function reset() {
+                this.datums = [];
+                this.trie = newNode();
+            },
+            serialize: function serialize() {
+                return {
+                    datums: this.datums,
+                    trie: this.trie
+                };
+            }
+        });
+        return SearchIndex;
+        function normalizeTokens(tokens) {
+            tokens = _.filter(tokens, function(token) {
+                return !!token;
+            });
+            tokens = _.map(tokens, function(token) {
+                return token.toLowerCase();
+            });
+            return tokens;
+        }
+        function newNode() {
+            return {
+                ids: [],
+                children: {}
+            };
+        }
+        function unique(array) {
+            var seen = {}, uniques = [];
+            for (var i = 0, len = array.length; i < len; i++) {
+                if (!seen[array[i]]) {
+                    seen[array[i]] = true;
+                    uniques.push(array[i]);
+                }
+            }
+            return uniques;
+        }
+        function getIntersection(arrayA, arrayB) {
+            var ai = 0, bi = 0, intersection = [];
+            arrayA = arrayA.sort(compare);
+            arrayB = arrayB.sort(compare);
+            var lenArrayA = arrayA.length, lenArrayB = arrayB.length;
+            while (ai < lenArrayA && bi < lenArrayB) {
+                if (arrayA[ai] < arrayB[bi]) {
+                    ai++;
+                } else if (arrayA[ai] > arrayB[bi]) {
+                    bi++;
+                } else {
+                    intersection.push(arrayA[ai]);
+                    ai++;
+                    bi++;
+                }
+            }
+            return intersection;
+            function compare(a, b) {
+                return a - b;
+            }
+        }
+    }();
+    var oParser = function() {
+        "use strict";
+        return {
+            local: getLocal,
+            prefetch: getPrefetch,
+            remote: getRemote
+        };
+        function getLocal(o) {
+            return o.local || null;
+        }
+        function getPrefetch(o) {
+            var prefetch, defaults;
+            defaults = {
+                url: null,
+                thumbprint: "",
+                ttl: 24 * 60 * 60 * 1e3,
+                filter: null,
+                ajax: {}
+            };
+            if (prefetch = o.prefetch || null) {
+                prefetch = _.isString(prefetch) ? {
+                    url: prefetch
+                } : prefetch;
+                prefetch = _.mixin(defaults, prefetch);
+                prefetch.thumbprint = VERSION + prefetch.thumbprint;
+                prefetch.ajax.type = prefetch.ajax.type || "GET";
+                prefetch.ajax.dataType = prefetch.ajax.dataType || "json";
+                !prefetch.url && $.error("prefetch requires url to be set");
+            }
+            return prefetch;
+        }
+        function getRemote(o) {
+            var remote, defaults;
+            defaults = {
+                url: null,
+                cache: true,
+                wildcard: "%QUERY",
+                replace: null,
+                rateLimitBy: "debounce",
+                rateLimitWait: 300,
+                send: null,
+                filter: null,
+                ajax: {}
+            };
+            if (remote = o.remote || null) {
+                remote = _.isString(remote) ? {
+                    url: remote
+                } : remote;
+                remote = _.mixin(defaults, remote);
+                remote.rateLimiter = /^throttle$/i.test(remote.rateLimitBy) ? byThrottle(remote.rateLimitWait) : byDebounce(remote.rateLimitWait);
+                remote.ajax.type = remote.ajax.type || "GET";
+                remote.ajax.dataType = remote.ajax.dataType || "json";
+                delete remote.rateLimitBy;
+                delete remote.rateLimitWait;
+                !remote.url && $.error("remote requires url to be set");
+            }
+            return remote;
+            function byDebounce(wait) {
+                return function(fn) {
+                    return _.debounce(fn, wait);
+                };
+            }
+            function byThrottle(wait) {
+                return function(fn) {
+                    return _.throttle(fn, wait);
+                };
+            }
+        }
+    }();
+    (function(root) {
+        "use strict";
+        var old, keys;
+        old = root.Bloodhound;
+        keys = {
+            data: "data",
+            protocol: "protocol",
+            thumbprint: "thumbprint"
+        };
+        root.Bloodhound = Bloodhound;
+        function Bloodhound(o) {
+            if (!o || !o.local && !o.prefetch && !o.remote) {
+                $.error("one of local, prefetch, or remote is required");
+            }
+            this.limit = o.limit || 5;
+            this.sorter = getSorter(o.sorter);
+            this.dupDetector = o.dupDetector || ignoreDuplicates;
+            this.local = oParser.local(o);
+            this.prefetch = oParser.prefetch(o);
+            this.remote = oParser.remote(o);
+            this.cacheKey = this.prefetch ? this.prefetch.cacheKey || this.prefetch.url : null;
+            this.index = new SearchIndex({
+                datumTokenizer: o.datumTokenizer,
+                queryTokenizer: o.queryTokenizer
+            });
+            this.storage = this.cacheKey ? new PersistentStorage(this.cacheKey) : null;
+        }
+        Bloodhound.noConflict = function noConflict() {
+            root.Bloodhound = old;
+            return Bloodhound;
+        };
+        Bloodhound.tokenizers = tokenizers;
+        _.mixin(Bloodhound.prototype, {
+            _loadPrefetch: function loadPrefetch(o) {
+                var that = this, serialized, deferred;
+                if (serialized = this._readFromStorage(o.thumbprint)) {
+                    this.index.bootstrap(serialized);
+                    deferred = $.Deferred().resolve();
+                } else {
+                    deferred = $.ajax(o.url, o.ajax).done(handlePrefetchResponse);
+                }
+                return deferred;
+                function handlePrefetchResponse(resp) {
+                    that.clear();
+                    that.add(o.filter ? o.filter(resp) : resp);
+                    that._saveToStorage(that.index.serialize(), o.thumbprint, o.ttl);
+                }
+            },
+            _getFromRemote: function getFromRemote(query, cb) {
+                var that = this, url, uriEncodedQuery;
+                if (!this.transport) {
+                    return;
+                }
+                query = query || "";
+                uriEncodedQuery = encodeURIComponent(query);
+                url = this.remote.replace ? this.remote.replace(this.remote.url, query) : this.remote.url.replace(this.remote.wildcard, uriEncodedQuery);
+                return this.transport.get(url, this.remote.ajax, handleRemoteResponse);
+                function handleRemoteResponse(err, resp) {
+                    err ? cb([]) : cb(that.remote.filter ? that.remote.filter(resp) : resp);
+                }
+            },
+            _cancelLastRemoteRequest: function cancelLastRemoteRequest() {
+                this.transport && this.transport.cancel();
+            },
+            _saveToStorage: function saveToStorage(data, thumbprint, ttl) {
+                if (this.storage) {
+                    this.storage.set(keys.data, data, ttl);
+                    this.storage.set(keys.protocol, location.protocol, ttl);
+                    this.storage.set(keys.thumbprint, thumbprint, ttl);
+                }
+            },
+            _readFromStorage: function readFromStorage(thumbprint) {
+                var stored = {}, isExpired;
+                if (this.storage) {
+                    stored.data = this.storage.get(keys.data);
+                    stored.protocol = this.storage.get(keys.protocol);
+                    stored.thumbprint = this.storage.get(keys.thumbprint);
+                }
+                isExpired = stored.thumbprint !== thumbprint || stored.protocol !== location.protocol;
+                return stored.data && !isExpired ? stored.data : null;
+            },
+            _initialize: function initialize() {
+                var that = this, local = this.local, deferred;
+                deferred = this.prefetch ? this._loadPrefetch(this.prefetch) : $.Deferred().resolve();
+                local && deferred.done(addLocalToIndex);
+                this.transport = this.remote ? new Transport(this.remote) : null;
+                return this.initPromise = deferred.promise();
+                function addLocalToIndex() {
+                    that.add(_.isFunction(local) ? local() : local);
+                }
+            },
+            initialize: function initialize(force) {
+                return !this.initPromise || force ? this._initialize() : this.initPromise;
+            },
+            add: function add(data) {
+                this.index.add(data);
+            },
+            get: function get(query, cb) {
+                var that = this, matches = [], cacheHit = false;
+                matches = this.index.get(query);
+                matches = this.sorter(matches).slice(0, this.limit);
+                matches.length < this.limit ? cacheHit = this._getFromRemote(query, returnRemoteMatches) : this._cancelLastRemoteRequest();
+                if (!cacheHit) {
+                    (matches.length > 0 || !this.transport) && cb && cb(matches);
+                }
+                function returnRemoteMatches(remoteMatches) {
+                    var matchesWithBackfill = matches.slice(0);
+                    _.each(remoteMatches, function(remoteMatch) {
+                        var isDuplicate;
+                        isDuplicate = _.some(matchesWithBackfill, function(match) {
+                            return that.dupDetector(remoteMatch, match);
+                        });
+                        !isDuplicate && matchesWithBackfill.push(remoteMatch);
+                        return matchesWithBackfill.length < that.limit;
+                    });
+                    cb && cb(that.sorter(matchesWithBackfill));
+                }
+            },
+            clear: function clear() {
+                this.index.reset();
+            },
+            clearPrefetchCache: function clearPrefetchCache() {
+                this.storage && this.storage.clear();
+            },
+            clearRemoteCache: function clearRemoteCache() {
+                this.transport && Transport.resetCache();
+            },
+            ttAdapter: function ttAdapter() {
+                return _.bind(this.get, this);
+            }
+        });
+        return Bloodhound;
+        function getSorter(sortFn) {
+            return _.isFunction(sortFn) ? sort : noSort;
+            function sort(array) {
+                return array.sort(sortFn);
+            }
+            function noSort(array) {
+                return array;
+            }
+        }
+        function ignoreDuplicates() {
+            return false;
+        }
+    })(this);
+})(window.jQuery);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/29a989c3/docs/website/learnmore/catalog/index.html
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/index.html b/docs/website/learnmore/catalog/index.html
index 87b8723..9911ba6 100644
--- a/docs/website/learnmore/catalog/index.html
+++ b/docs/website/learnmore/catalog/index.html
@@ -64,22 +64,13 @@ under the License.
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
 <script src="{{site.path.style}}/js/underscore-min.js" type="text/javascript"></script>
 <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
-<script src="libs/js/bloodhound.js" type="text/javascript"></script>
+<script src="{{site.path.style}}/js/catalog/bloodhound.js" type="text/javascript"></script>
 <script src="{{site.path.style}}/js/catalog/common.js" type="text/javascript"></script>
-<script src="{{site.path.style}}/js/catalog/items.js" type="text/javascript"></script>
 <script type="text/javascript">
-  if (!String.prototype.trim) {
-    String.prototype.trim = function () {
-      return this.replace(/^\s+|\s+$/g, '');
-    };
-  }
-  var card = function (collection, cardFunction, target) {
-    var cards = _.map(collection, cardFunction);
-    $(target).append(cards.join(""));
-  };
-  var ESCAPE_KEY = 27;
 
-  var filter = function (element) {
+  var filter = function (element, items) {
+    var ESCAPE_KEY = 27;
+
     var $element = $(element),
             $tab = $element.parent(),
             kind = $tab.attr("id"),
@@ -136,15 +127,37 @@ under the License.
       }
     });
   };
-
+  
+  var items_loaded;
   $(document).ready(function () {
-    card(items.entities, brooklyn.entityCard, "#entities");
-    card(items.policies, brooklyn.policyCard, "#policies");
-    card(items.enrichers, brooklyn.enricherCard, "#enrichers");
-    //transformItemAndAddToElement(items.locations, brooklyn.locationCard, "#locations");
-    //items.locationResolvers.forEach(function (element) { $("#locationResolvers").append("<tr><td>" + element + "</td></tr>"); });
-    $("input.filter").each(function (index, element) {
-      filter(element);
-    });
+    if(!items_loaded) {
+      $.getJSON( "{{site.path.style}}/js/catalog/items.json", function( data ) {
+        items_loaded = data;
+        updateItems(data);
+      });
+    } else {
+      updateItems(items_loaded);
+    }
+
+    function updateItems(items) {
+      if (!String.prototype.trim) {
+        String.prototype.trim = function () {
+          return this.replace(/^\s+|\s+$/g, '');
+        };
+      }
+      var card = function (collection, cardFunction, target) {
+        var cards = _.map(collection, cardFunction);
+        $(target).append(cards.join(""));
+      };
+
+      card(items.entities, brooklyn.entityCard, "#entities");
+      card(items.policies, brooklyn.policyCard, "#policies");
+      card(items.enrichers, brooklyn.enricherCard, "#enrichers");
+      //transformItemAndAddToElement(items.locations, brooklyn.locationCard, "#locations");
+      //items.locationResolvers.forEach(function (element) { $("#locationResolvers").append("<tr><td>" + element + "</td></tr>"); });
+      $("input.filter").each(function (index, element) {
+        filter(element, items);
+      });
+    }
   });
 </script>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/29a989c3/docs/website/learnmore/catalog/libs/js/bloodhound.js
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/libs/js/bloodhound.js b/docs/website/learnmore/catalog/libs/js/bloodhound.js
deleted file mode 100644
index 96a4c43..0000000
--- a/docs/website/learnmore/catalog/libs/js/bloodhound.js
+++ /dev/null
@@ -1,727 +0,0 @@
-/*!
- * typeahead.js 0.10.5
- * https://github.com/twitter/typeahead.js
- * Copyright 2013-2014 Twitter, Inc. and other contributors; Licensed MIT
- */
-
-(function($) {
-    var _ = function() {
-        "use strict";
-        return {
-            isMsie: function() {
-                return /(msie|trident)/i.test(navigator.userAgent) ? navigator.userAgent.match(/(msie |rv:)(\d+(.\d+)?)/i)[2] : false;
-            },
-            isBlankString: function(str) {
-                return !str || /^\s*$/.test(str);
-            },
-            escapeRegExChars: function(str) {
-                return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
-            },
-            isString: function(obj) {
-                return typeof obj === "string";
-            },
-            isNumber: function(obj) {
-                return typeof obj === "number";
-            },
-            isArray: $.isArray,
-            isFunction: $.isFunction,
-            isObject: $.isPlainObject,
-            isUndefined: function(obj) {
-                return typeof obj === "undefined";
-            },
-            toStr: function toStr(s) {
-                return _.isUndefined(s) || s === null ? "" : s + "";
-            },
-            bind: $.proxy,
-            each: function(collection, cb) {
-                $.each(collection, reverseArgs);
-                function reverseArgs(index, value) {
-                    return cb(value, index);
-                }
-            },
-            map: $.map,
-            filter: $.grep,
-            every: function(obj, test) {
-                var result = true;
-                if (!obj) {
-                    return result;
-                }
-                $.each(obj, function(key, val) {
-                    if (!(result = test.call(null, val, key, obj))) {
-                        return false;
-                    }
-                });
-                return !!result;
-            },
-            some: function(obj, test) {
-                var result = false;
-                if (!obj) {
-                    return result;
-                }
-                $.each(obj, function(key, val) {
-                    if (result = test.call(null, val, key, obj)) {
-                        return false;
-                    }
-                });
-                return !!result;
-            },
-            mixin: $.extend,
-            getUniqueId: function() {
-                var counter = 0;
-                return function() {
-                    return counter++;
-                };
-            }(),
-            templatify: function templatify(obj) {
-                return $.isFunction(obj) ? obj : template;
-                function template() {
-                    return String(obj);
-                }
-            },
-            defer: function(fn) {
-                setTimeout(fn, 0);
-            },
-            debounce: function(func, wait, immediate) {
-                var timeout, result;
-                return function() {
-                    var context = this, args = arguments, later, callNow;
-                    later = function() {
-                        timeout = null;
-                        if (!immediate) {
-                            result = func.apply(context, args);
-                        }
-                    };
-                    callNow = immediate && !timeout;
-                    clearTimeout(timeout);
-                    timeout = setTimeout(later, wait);
-                    if (callNow) {
-                        result = func.apply(context, args);
-                    }
-                    return result;
-                };
-            },
-            throttle: function(func, wait) {
-                var context, args, timeout, result, previous, later;
-                previous = 0;
-                later = function() {
-                    previous = new Date();
-                    timeout = null;
-                    result = func.apply(context, args);
-                };
-                return function() {
-                    var now = new Date(), remaining = wait - (now - previous);
-                    context = this;
-                    args = arguments;
-                    if (remaining <= 0) {
-                        clearTimeout(timeout);
-                        timeout = null;
-                        previous = now;
-                        result = func.apply(context, args);
-                    } else if (!timeout) {
-                        timeout = setTimeout(later, remaining);
-                    }
-                    return result;
-                };
-            },
-            noop: function() {}
-        };
-    }();
-    var VERSION = "0.10.5";
-    var tokenizers = function() {
-        "use strict";
-        return {
-            nonword: nonword,
-            whitespace: whitespace,
-            obj: {
-                nonword: getObjTokenizer(nonword),
-                whitespace: getObjTokenizer(whitespace)
-            }
-        };
-        function whitespace(str) {
-            str = _.toStr(str);
-            return str ? str.split(/\s+/) : [];
-        }
-        function nonword(str) {
-            str = _.toStr(str);
-            return str ? str.split(/\W+/) : [];
-        }
-        function getObjTokenizer(tokenizer) {
-            return function setKey() {
-                var args = [].slice.call(arguments, 0);
-                return function tokenize(o) {
-                    var tokens = [];
-                    _.each(args, function(k) {
-                        tokens = tokens.concat(tokenizer(_.toStr(o[k])));
-                    });
-                    return tokens;
-                };
-            };
-        }
-    }();
-    var LruCache = function() {
-        "use strict";
-        function LruCache(maxSize) {
-            this.maxSize = _.isNumber(maxSize) ? maxSize : 100;
-            this.reset();
-            if (this.maxSize <= 0) {
-                this.set = this.get = $.noop;
-            }
-        }
-        _.mixin(LruCache.prototype, {
-            set: function set(key, val) {
-                var tailItem = this.list.tail, node;
-                if (this.size >= this.maxSize) {
-                    this.list.remove(tailItem);
-                    delete this.hash[tailItem.key];
-                }
-                if (node = this.hash[key]) {
-                    node.val = val;
-                    this.list.moveToFront(node);
-                } else {
-                    node = new Node(key, val);
-                    this.list.add(node);
-                    this.hash[key] = node;
-                    this.size++;
-                }
-            },
-            get: function get(key) {
-                var node = this.hash[key];
-                if (node) {
-                    this.list.moveToFront(node);
-                    return node.val;
-                }
-            },
-            reset: function reset() {
-                this.size = 0;
-                this.hash = {};
-                this.list = new List();
-            }
-        });
-        function List() {
-            this.head = this.tail = null;
-        }
-        _.mixin(List.prototype, {
-            add: function add(node) {
-                if (this.head) {
-                    node.next = this.head;
-                    this.head.prev = node;
-                }
-                this.head = node;
-                this.tail = this.tail || node;
-            },
-            remove: function remove(node) {
-                node.prev ? node.prev.next = node.next : this.head = node.next;
-                node.next ? node.next.prev = node.prev : this.tail = node.prev;
-            },
-            moveToFront: function(node) {
-                this.remove(node);
-                this.add(node);
-            }
-        });
-        function Node(key, val) {
-            this.key = key;
-            this.val = val;
-            this.prev = this.next = null;
-        }
-        return LruCache;
-    }();
-    var PersistentStorage = function() {
-        "use strict";
-        var ls, methods;
-        try {
-            ls = window.localStorage;
-            ls.setItem("~~~", "!");
-            ls.removeItem("~~~");
-        } catch (err) {
-            ls = null;
-        }
-        function PersistentStorage(namespace) {
-            this.prefix = [ "__", namespace, "__" ].join("");
-            this.ttlKey = "__ttl__";
-            this.keyMatcher = new RegExp("^" + _.escapeRegExChars(this.prefix));
-        }
-        if (ls && window.JSON) {
-            methods = {
-                _prefix: function(key) {
-                    return this.prefix + key;
-                },
-                _ttlKey: function(key) {
-                    return this._prefix(key) + this.ttlKey;
-                },
-                get: function(key) {
-                    if (this.isExpired(key)) {
-                        this.remove(key);
-                    }
-                    return decode(ls.getItem(this._prefix(key)));
-                },
-                set: function(key, val, ttl) {
-                    if (_.isNumber(ttl)) {
-                        ls.setItem(this._ttlKey(key), encode(now() + ttl));
-                    } else {
-                        ls.removeItem(this._ttlKey(key));
-                    }
-                    return ls.setItem(this._prefix(key), encode(val));
-                },
-                remove: function(key) {
-                    ls.removeItem(this._ttlKey(key));
-                    ls.removeItem(this._prefix(key));
-                    return this;
-                },
-                clear: function() {
-                    var i, key, keys = [], len = ls.length;
-                    for (i = 0; i < len; i++) {
-                        if ((key = ls.key(i)).match(this.keyMatcher)) {
-                            keys.push(key.replace(this.keyMatcher, ""));
-                        }
-                    }
-                    for (i = keys.length; i--; ) {
-                        this.remove(keys[i]);
-                    }
-                    return this;
-                },
-                isExpired: function(key) {
-                    var ttl = decode(ls.getItem(this._ttlKey(key)));
-                    return _.isNumber(ttl) && now() > ttl ? true : false;
-                }
-            };
-        } else {
-            methods = {
-                get: _.noop,
-                set: _.noop,
-                remove: _.noop,
-                clear: _.noop,
-                isExpired: _.noop
-            };
-        }
-        _.mixin(PersistentStorage.prototype, methods);
-        return PersistentStorage;
-        function now() {
-            return new Date().getTime();
-        }
-        function encode(val) {
-            return JSON.stringify(_.isUndefined(val) ? null : val);
-        }
-        function decode(val) {
-            return JSON.parse(val);
-        }
-    }();
-    var Transport = function() {
-        "use strict";
-        var pendingRequestsCount = 0, pendingRequests = {}, maxPendingRequests = 6, sharedCache = new LruCache(10);
-        function Transport(o) {
-            o = o || {};
-            this.cancelled = false;
-            this.lastUrl = null;
-            this._send = o.transport ? callbackToDeferred(o.transport) : $.ajax;
-            this._get = o.rateLimiter ? o.rateLimiter(this._get) : this._get;
-            this._cache = o.cache === false ? new LruCache(0) : sharedCache;
-        }
-        Transport.setMaxPendingRequests = function setMaxPendingRequests(num) {
-            maxPendingRequests = num;
-        };
-        Transport.resetCache = function resetCache() {
-            sharedCache.reset();
-        };
-        _.mixin(Transport.prototype, {
-            _get: function(url, o, cb) {
-                var that = this, jqXhr;
-                if (this.cancelled || url !== this.lastUrl) {
-                    return;
-                }
-                if (jqXhr = pendingRequests[url]) {
-                    jqXhr.done(done).fail(fail);
-                } else if (pendingRequestsCount < maxPendingRequests) {
-                    pendingRequestsCount++;
-                    pendingRequests[url] = this._send(url, o).done(done).fail(fail).always(always);
-                } else {
-                    this.onDeckRequestArgs = [].slice.call(arguments, 0);
-                }
-                function done(resp) {
-                    cb && cb(null, resp);
-                    that._cache.set(url, resp);
-                }
-                function fail() {
-                    cb && cb(true);
-                }
-                function always() {
-                    pendingRequestsCount--;
-                    delete pendingRequests[url];
-                    if (that.onDeckRequestArgs) {
-                        that._get.apply(that, that.onDeckRequestArgs);
-                        that.onDeckRequestArgs = null;
-                    }
-                }
-            },
-            get: function(url, o, cb) {
-                var resp;
-                if (_.isFunction(o)) {
-                    cb = o;
-                    o = {};
-                }
-                this.cancelled = false;
-                this.lastUrl = url;
-                if (resp = this._cache.get(url)) {
-                    _.defer(function() {
-                        cb && cb(null, resp);
-                    });
-                } else {
-                    this._get(url, o, cb);
-                }
-                return !!resp;
-            },
-            cancel: function() {
-                this.cancelled = true;
-            }
-        });
-        return Transport;
-        function callbackToDeferred(fn) {
-            return function customSendWrapper(url, o) {
-                var deferred = $.Deferred();
-                fn(url, o, onSuccess, onError);
-                return deferred;
-                function onSuccess(resp) {
-                    _.defer(function() {
-                        deferred.resolve(resp);
-                    });
-                }
-                function onError(err) {
-                    _.defer(function() {
-                        deferred.reject(err);
-                    });
-                }
-            };
-        }
-    }();
-    var SearchIndex = function() {
-        "use strict";
-        function SearchIndex(o) {
-            o = o || {};
-            if (!o.datumTokenizer || !o.queryTokenizer) {
-                $.error("datumTokenizer and queryTokenizer are both required");
-            }
-            this.datumTokenizer = o.datumTokenizer;
-            this.queryTokenizer = o.queryTokenizer;
-            this.reset();
-        }
-        _.mixin(SearchIndex.prototype, {
-            bootstrap: function bootstrap(o) {
-                this.datums = o.datums;
-                this.trie = o.trie;
-            },
-            add: function(data) {
-                var that = this;
-                data = _.isArray(data) ? data : [ data ];
-                _.each(data, function(datum) {
-                    var id, tokens;
-                    id = that.datums.push(datum) - 1;
-                    tokens = normalizeTokens(that.datumTokenizer(datum));
-                    _.each(tokens, function(token) {
-                        var node, chars, ch;
-                        node = that.trie;
-                        chars = token.split("");
-                        while (ch = chars.shift()) {
-                            node = node.children[ch] || (node.children[ch] = newNode());
-                            node.ids.push(id);
-                        }
-                    });
-                });
-            },
-            get: function get(query) {
-                var that = this, tokens, matches;
-                tokens = normalizeTokens(this.queryTokenizer(query));
-                _.each(tokens, function(token) {
-                    var node, chars, ch, ids;
-                    if (matches && matches.length === 0) {
-                        return false;
-                    }
-                    node = that.trie;
-                    chars = token.split("");
-                    while (node && (ch = chars.shift())) {
-                        node = node.children[ch];
-                    }
-                    if (node && chars.length === 0) {
-                        ids = node.ids.slice(0);
-                        matches = matches ? getIntersection(matches, ids) : ids;
-                    } else {
-                        matches = [];
-                        return false;
-                    }
-                });
-                return matches ? _.map(unique(matches), function(id) {
-                    return that.datums[id];
-                }) : [];
-            },
-            reset: function reset() {
-                this.datums = [];
-                this.trie = newNode();
-            },
-            serialize: function serialize() {
-                return {
-                    datums: this.datums,
-                    trie: this.trie
-                };
-            }
-        });
-        return SearchIndex;
-        function normalizeTokens(tokens) {
-            tokens = _.filter(tokens, function(token) {
-                return !!token;
-            });
-            tokens = _.map(tokens, function(token) {
-                return token.toLowerCase();
-            });
-            return tokens;
-        }
-        function newNode() {
-            return {
-                ids: [],
-                children: {}
-            };
-        }
-        function unique(array) {
-            var seen = {}, uniques = [];
-            for (var i = 0, len = array.length; i < len; i++) {
-                if (!seen[array[i]]) {
-                    seen[array[i]] = true;
-                    uniques.push(array[i]);
-                }
-            }
-            return uniques;
-        }
-        function getIntersection(arrayA, arrayB) {
-            var ai = 0, bi = 0, intersection = [];
-            arrayA = arrayA.sort(compare);
-            arrayB = arrayB.sort(compare);
-            var lenArrayA = arrayA.length, lenArrayB = arrayB.length;
-            while (ai < lenArrayA && bi < lenArrayB) {
-                if (arrayA[ai] < arrayB[bi]) {
-                    ai++;
-                } else if (arrayA[ai] > arrayB[bi]) {
-                    bi++;
-                } else {
-                    intersection.push(arrayA[ai]);
-                    ai++;
-                    bi++;
-                }
-            }
-            return intersection;
-            function compare(a, b) {
-                return a - b;
-            }
-        }
-    }();
-    var oParser = function() {
-        "use strict";
-        return {
-            local: getLocal,
-            prefetch: getPrefetch,
-            remote: getRemote
-        };
-        function getLocal(o) {
-            return o.local || null;
-        }
-        function getPrefetch(o) {
-            var prefetch, defaults;
-            defaults = {
-                url: null,
-                thumbprint: "",
-                ttl: 24 * 60 * 60 * 1e3,
-                filter: null,
-                ajax: {}
-            };
-            if (prefetch = o.prefetch || null) {
-                prefetch = _.isString(prefetch) ? {
-                    url: prefetch
-                } : prefetch;
-                prefetch = _.mixin(defaults, prefetch);
-                prefetch.thumbprint = VERSION + prefetch.thumbprint;
-                prefetch.ajax.type = prefetch.ajax.type || "GET";
-                prefetch.ajax.dataType = prefetch.ajax.dataType || "json";
-                !prefetch.url && $.error("prefetch requires url to be set");
-            }
-            return prefetch;
-        }
-        function getRemote(o) {
-            var remote, defaults;
-            defaults = {
-                url: null,
-                cache: true,
-                wildcard: "%QUERY",
-                replace: null,
-                rateLimitBy: "debounce",
-                rateLimitWait: 300,
-                send: null,
-                filter: null,
-                ajax: {}
-            };
-            if (remote = o.remote || null) {
-                remote = _.isString(remote) ? {
-                    url: remote
-                } : remote;
-                remote = _.mixin(defaults, remote);
-                remote.rateLimiter = /^throttle$/i.test(remote.rateLimitBy) ? byThrottle(remote.rateLimitWait) : byDebounce(remote.rateLimitWait);
-                remote.ajax.type = remote.ajax.type || "GET";
-                remote.ajax.dataType = remote.ajax.dataType || "json";
-                delete remote.rateLimitBy;
-                delete remote.rateLimitWait;
-                !remote.url && $.error("remote requires url to be set");
-            }
-            return remote;
-            function byDebounce(wait) {
-                return function(fn) {
-                    return _.debounce(fn, wait);
-                };
-            }
-            function byThrottle(wait) {
-                return function(fn) {
-                    return _.throttle(fn, wait);
-                };
-            }
-        }
-    }();
-    (function(root) {
-        "use strict";
-        var old, keys;
-        old = root.Bloodhound;
-        keys = {
-            data: "data",
-            protocol: "protocol",
-            thumbprint: "thumbprint"
-        };
-        root.Bloodhound = Bloodhound;
-        function Bloodhound(o) {
-            if (!o || !o.local && !o.prefetch && !o.remote) {
-                $.error("one of local, prefetch, or remote is required");
-            }
-            this.limit = o.limit || 5;
-            this.sorter = getSorter(o.sorter);
-            this.dupDetector = o.dupDetector || ignoreDuplicates;
-            this.local = oParser.local(o);
-            this.prefetch = oParser.prefetch(o);
-            this.remote = oParser.remote(o);
-            this.cacheKey = this.prefetch ? this.prefetch.cacheKey || this.prefetch.url : null;
-            this.index = new SearchIndex({
-                datumTokenizer: o.datumTokenizer,
-                queryTokenizer: o.queryTokenizer
-            });
-            this.storage = this.cacheKey ? new PersistentStorage(this.cacheKey) : null;
-        }
-        Bloodhound.noConflict = function noConflict() {
-            root.Bloodhound = old;
-            return Bloodhound;
-        };
-        Bloodhound.tokenizers = tokenizers;
-        _.mixin(Bloodhound.prototype, {
-            _loadPrefetch: function loadPrefetch(o) {
-                var that = this, serialized, deferred;
-                if (serialized = this._readFromStorage(o.thumbprint)) {
-                    this.index.bootstrap(serialized);
-                    deferred = $.Deferred().resolve();
-                } else {
-                    deferred = $.ajax(o.url, o.ajax).done(handlePrefetchResponse);
-                }
-                return deferred;
-                function handlePrefetchResponse(resp) {
-                    that.clear();
-                    that.add(o.filter ? o.filter(resp) : resp);
-                    that._saveToStorage(that.index.serialize(), o.thumbprint, o.ttl);
-                }
-            },
-            _getFromRemote: function getFromRemote(query, cb) {
-                var that = this, url, uriEncodedQuery;
-                if (!this.transport) {
-                    return;
-                }
-                query = query || "";
-                uriEncodedQuery = encodeURIComponent(query);
-                url = this.remote.replace ? this.remote.replace(this.remote.url, query) : this.remote.url.replace(this.remote.wildcard, uriEncodedQuery);
-                return this.transport.get(url, this.remote.ajax, handleRemoteResponse);
-                function handleRemoteResponse(err, resp) {
-                    err ? cb([]) : cb(that.remote.filter ? that.remote.filter(resp) : resp);
-                }
-            },
-            _cancelLastRemoteRequest: function cancelLastRemoteRequest() {
-                this.transport && this.transport.cancel();
-            },
-            _saveToStorage: function saveToStorage(data, thumbprint, ttl) {
-                if (this.storage) {
-                    this.storage.set(keys.data, data, ttl);
-                    this.storage.set(keys.protocol, location.protocol, ttl);
-                    this.storage.set(keys.thumbprint, thumbprint, ttl);
-                }
-            },
-            _readFromStorage: function readFromStorage(thumbprint) {
-                var stored = {}, isExpired;
-                if (this.storage) {
-                    stored.data = this.storage.get(keys.data);
-                    stored.protocol = this.storage.get(keys.protocol);
-                    stored.thumbprint = this.storage.get(keys.thumbprint);
-                }
-                isExpired = stored.thumbprint !== thumbprint || stored.protocol !== location.protocol;
-                return stored.data && !isExpired ? stored.data : null;
-            },
-            _initialize: function initialize() {
-                var that = this, local = this.local, deferred;
-                deferred = this.prefetch ? this._loadPrefetch(this.prefetch) : $.Deferred().resolve();
-                local && deferred.done(addLocalToIndex);
-                this.transport = this.remote ? new Transport(this.remote) : null;
-                return this.initPromise = deferred.promise();
-                function addLocalToIndex() {
-                    that.add(_.isFunction(local) ? local() : local);
-                }
-            },
-            initialize: function initialize(force) {
-                return !this.initPromise || force ? this._initialize() : this.initPromise;
-            },
-            add: function add(data) {
-                this.index.add(data);
-            },
-            get: function get(query, cb) {
-                var that = this, matches = [], cacheHit = false;
-                matches = this.index.get(query);
-                matches = this.sorter(matches).slice(0, this.limit);
-                matches.length < this.limit ? cacheHit = this._getFromRemote(query, returnRemoteMatches) : this._cancelLastRemoteRequest();
-                if (!cacheHit) {
-                    (matches.length > 0 || !this.transport) && cb && cb(matches);
-                }
-                function returnRemoteMatches(remoteMatches) {
-                    var matchesWithBackfill = matches.slice(0);
-                    _.each(remoteMatches, function(remoteMatch) {
-                        var isDuplicate;
-                        isDuplicate = _.some(matchesWithBackfill, function(match) {
-                            return that.dupDetector(remoteMatch, match);
-                        });
-                        !isDuplicate && matchesWithBackfill.push(remoteMatch);
-                        return matchesWithBackfill.length < that.limit;
-                    });
-                    cb && cb(that.sorter(matchesWithBackfill));
-                }
-            },
-            clear: function clear() {
-                this.index.reset();
-            },
-            clearPrefetchCache: function clearPrefetchCache() {
-                this.storage && this.storage.clear();
-            },
-            clearRemoteCache: function clearRemoteCache() {
-                this.transport && Transport.resetCache();
-            },
-            ttAdapter: function ttAdapter() {
-                return _.bind(this.get, this);
-            }
-        });
-        return Bloodhound;
-        function getSorter(sortFn) {
-            return _.isFunction(sortFn) ? sort : noSort;
-            function sort(array) {
-                return array.sort(sortFn);
-            }
-            function noSort(array) {
-                return array;
-            }
-        }
-        function ignoreDuplicates() {
-            return false;
-        }
-    })(this);
-})(window.jQuery);
\ No newline at end of file


[09/19] incubator-brooklyn git commit: Rename the loading page for catalog items

Posted by he...@apache.org.
Rename the loading page for catalog items


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

Branch: refs/heads/master
Commit: ab6abfaa06141dadf758ae5a6d50c5773197f9d7
Parents: 192601b
Author: Valentin Aitken <bo...@gmail.com>
Authored: Mon Feb 23 11:48:52 2015 +0200
Committer: Valentin Aitken <bo...@gmail.com>
Committed: Mon Feb 23 11:48:52 2015 +0200

----------------------------------------------------------------------
 docs/style/js/catalog/common.js                 |  6 +-
 .../learnmore/catalog/brooklyn-node.html        | 90 --------------------
 .../website/learnmore/catalog/catalog-item.html | 90 ++++++++++++++++++++
 3 files changed, 93 insertions(+), 93 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/ab6abfaa/docs/style/js/catalog/common.js
----------------------------------------------------------------------
diff --git a/docs/style/js/catalog/common.js b/docs/style/js/catalog/common.js
index 3b95313..d99508f 100644
--- a/docs/style/js/catalog/common.js
+++ b/docs/style/js/catalog/common.js
@@ -25,7 +25,7 @@ var brooklyn = (function ($, _) {
         },
 
         entityCard: _.template(
-            "<a class='plain' data-type='<%= type %>' href='brooklyn-node.html#entities/<%= type %>'>" +
+            "<a class='plain' data-type='<%= type %>' href='catalog-item.html#!entities/<%= type %>'>" +
             "<div class='card'>" +
             "<span class='glyphicon glyphicon-chevron-right'/>" +
             "<div class='name'><%=name%></div>" +
@@ -35,7 +35,7 @@ var brooklyn = (function ($, _) {
             "</a>"
         ),
         policyCard: _.template(
-            "<a class='plain' data-type='<%= type %>' href='brooklyn-node.html#policies/<%= type %>'>" +
+            "<a class='plain' data-type='<%= type %>' href='catalog-item.html#!policies/<%= type %>'>" +
             "<div class='card'>" +
             "<span class='glyphicon glyphicon-chevron-right'/>" +
             "<div class='name'><%=name%></div>" +
@@ -45,7 +45,7 @@ var brooklyn = (function ($, _) {
             "</a>"
         ),
         enricherCard: _.template(
-            "<a class='plain' data-type='<%= type %>' href='brooklyn-node.html#enrichers/<%= type %>'>" +
+            "<a class='plain' data-type='<%= type %>' href='catalog-item.html#!enrichers/<%= type %>'>" +
             "<div class='card'>" +
             "<span class='glyphicon glyphicon-chevron-right'/>" +
             "<div class='name'><%=name%></div>" +

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/ab6abfaa/docs/website/learnmore/catalog/brooklyn-node.html
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/brooklyn-node.html b/docs/website/learnmore/catalog/brooklyn-node.html
deleted file mode 100644
index 3b07cf6..0000000
--- a/docs/website/learnmore/catalog/brooklyn-node.html
+++ /dev/null
@@ -1,90 +0,0 @@
----
-title: Catalog
----
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-<head>
-  <title>Brooklyn Entity - Brooklyn Node</title>
-  {% include base-head.html %}
-  <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
-  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
-  <link rel="stylesheet" href="{{site.path.style}}/css/catalog_items.css" type="text/css" media="screen"/>
-</head>
-<body>
-{% include topmenu.html %}
-<div id="container">
-  <div id="header">
-    <div id="identity">
-      <a href="http://brooklyncentral.github.com/" rel="home">Brooklyn</a>
-    </div>
-  </div>
-
-  <div id="summary"></div>
-
-  <ul class="nav nav-tabs">
-    <li class="active"><a href="#configKeys" data-toggle="tab">Config Keys</a></li>
-    <li><a href="#sensors" data-toggle="tab">Sensors</a></li>
-    <li><a href="#effectors" data-toggle="tab">Effectors</a></li>
-  </ul>
-
-  <div class="tab-content">
-    <div class="tab-pane active" id="configKeys"></div>
-    <div class="tab-pane" id="sensors"></div>
-    <div class="tab-pane" id="effectors"></div>
-  </div>
-</div>
-
-<script src="{{site.path.style}}/js/underscore-min.js" type="text/javascript"></script>
-<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
-<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
-<script src="{{site.path.style}}/js/catalog/common.js" type="text/javascript"></script>
-<script src="{{site.path.style}}/js/catalog/items.js" type="text/javascript"></script>
-<script type="text/javascript">
-  $(document).ready(function () {
-    updateItems();
-
-    $(window).on('hashchange', updateItems);
-
-    function updateItems() {
-      var args;
-      var hash = window.location.hash;
-      if(!hash) {
-        alert('No class selected');
-        return;
-      }
-      args = hash.substring(1).split('/');
-      if(args.length!=2) {
-        alert('bad entity format')
-        return;
-      }
-
-      // entities/brooklyn.entity.brooklynnode.BrooklynNode
-      var item = brooklyn.findItemOfType(items[args[0]], args[1]);
-      $("#summary").html(brooklyn.typeSummary(item));
-      item.config.forEach(function (element) { $("#configKeys").append(brooklyn.configKeyCard(element)); });
-      item.sensors.forEach(function (element) { $("#sensors").append(brooklyn.sensorCard(element)); });
-      if (item.effectors != undefined) {
-        item.effectors.forEach(function (element) { $("#effectors").append(brooklyn.effectorCard(element)); });
-      }
-    }
-  });
-</script>
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/ab6abfaa/docs/website/learnmore/catalog/catalog-item.html
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/catalog-item.html b/docs/website/learnmore/catalog/catalog-item.html
new file mode 100644
index 0000000..82512a9
--- /dev/null
+++ b/docs/website/learnmore/catalog/catalog-item.html
@@ -0,0 +1,90 @@
+---
+title: Catalog
+---
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+<head>
+  <title>Brooklyn Entity - Brooklyn Node</title>
+  {% include base-head.html %}
+  <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
+  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
+  <link rel="stylesheet" href="{{site.path.style}}/css/catalog_items.css" type="text/css" media="screen"/>
+</head>
+<body>
+{% include topmenu.html %}
+<div id="container">
+  <div id="header">
+    <div id="identity">
+      <a href="http://brooklyncentral.github.com/" rel="home">Brooklyn</a>
+    </div>
+  </div>
+
+  <div id="summary"></div>
+
+  <ul class="nav nav-tabs">
+    <li class="active"><a href="#configKeys" data-toggle="tab">Config Keys</a></li>
+    <li><a href="#sensors" data-toggle="tab">Sensors</a></li>
+    <li><a href="#effectors" data-toggle="tab">Effectors</a></li>
+  </ul>
+
+  <div class="tab-content">
+    <div class="tab-pane active" id="configKeys"></div>
+    <div class="tab-pane" id="sensors"></div>
+    <div class="tab-pane" id="effectors"></div>
+  </div>
+</div>
+
+<script src="{{site.path.style}}/js/underscore-min.js" type="text/javascript"></script>
+<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
+<script src="{{site.path.style}}/js/catalog/common.js" type="text/javascript"></script>
+<script src="{{site.path.style}}/js/catalog/items.js" type="text/javascript"></script>
+<script type="text/javascript">
+  $(document).ready(function () {
+    updateItems();
+
+    $(window).on('hashchange', updateItems);
+
+    function updateItems() {
+      var args;
+      var hash = window.location.hash;
+      if(!hash || hash.length <= 2) {
+        alert('No such catalog item');
+        return;
+      }
+      args = hash.substring(2).split('/');
+      if(args.length!=2) {
+        alert('bad entity format')
+        return;
+      }
+
+      // entities/brooklyn.entity.brooklynnode.BrooklynNode
+      var item = brooklyn.findItemOfType(items[args[0]], args[1]);
+      $("#summary").html(brooklyn.typeSummary(item));
+      item.config.forEach(function (element) { $("#configKeys").append(brooklyn.configKeyCard(element)); });
+      item.sensors.forEach(function (element) { $("#sensors").append(brooklyn.sensorCard(element)); });
+      if (item.effectors != undefined) {
+        item.effectors.forEach(function (element) { $("#effectors").append(brooklyn.effectorCard(element)); });
+      }
+    }
+  });
+</script>
+</body>
+</html>


[15/19] incubator-brooklyn git commit: Catalog build

Posted by he...@apache.org.
Catalog build

- delete _build/website-root.yml from the build script
  this configuration is stored in _config.yml currently


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

Branch: refs/heads/master
Commit: e63f68bf9b55e92d2ecd5cbfbaa0e3dbf43cf518
Parents: c790036
Author: Valentin Aitken <bo...@gmail.com>
Authored: Mon Feb 23 20:03:16 2015 +0200
Committer: Valentin Aitken <bo...@gmail.com>
Committed: Mon Feb 23 20:03:16 2015 +0200

----------------------------------------------------------------------
 docs/_build/build.sh | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e63f68bf/docs/_build/build.sh
----------------------------------------------------------------------
diff --git a/docs/_build/build.sh b/docs/_build/build.sh
index 40f826c..562e531 100755
--- a/docs/_build/build.sh
+++ b/docs/_build/build.sh
@@ -43,7 +43,7 @@ function parse_mode() {
     help
     exit 0 ;;
   website-root)
-    JEKYLL_CONFIG=_config.yml,_build/config-production.yml,_build/config-exclude-guide.yml,_build/config-website-root.yml
+    JEKYLL_CONFIG=_config.yml,_build/config-production.yml,_build/config-exclude-guide.yml
     STYLE_SUBDIR=style
     DIRS_TO_MOVE[0]=website
     DIRS_TO_MOVE_TARGET[0]=""
@@ -90,7 +90,7 @@ function parse_mode() {
     SUMMARY="user guide files in the root"
     ;;
   test-both)
-    JEKYLL_CONFIG=_config.yml,_build/config-production.yml,_build/config-exclude-root-index.yml,_build/config-website-root.yml,_build/config-guide-latest.yml
+    JEKYLL_CONFIG=_config.yml,_build/config-production.yml,_build/config-exclude-root-index.yml,_build/config-guide-latest.yml
     DIRS_TO_MOVE[0]=guide
     DIRS_TO_MOVE_TARGET[0]=v/latest
     DIRS_TO_MOVE[1]=website


[07/19] incubator-brooklyn git commit: Catalog items Load an entity using one html file

Posted by he...@apache.org.
Catalog items
Load an entity using one html file


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

Branch: refs/heads/master
Commit: cbe6f8e6f1affffea39ea87fe9fd89d887219f16
Parents: 671fda3
Author: Valentin Aitken <bo...@gmail.com>
Authored: Sun Feb 22 00:00:35 2015 +0200
Committer: Valentin Aitken <bo...@gmail.com>
Committed: Sun Feb 22 00:00:35 2015 +0200

----------------------------------------------------------------------
 docs/style/js/catalog/common.js                 |  6 +-
 .../learnmore/catalog/brooklyn-node.html        | 90 ++++++++++++++++++++
 .../brooklyn.enricher.DeltaEnricher.html        | 59 -------------
 .../brooklyn.enricher.HttpLatencyDetector.html  | 59 -------------
 .../brooklyn.enricher.RollingMeanEnricher.html  | 59 -------------
 ....enricher.RollingTimeWindowMeanEnricher.html | 59 -------------
 ...klyn.enricher.TimeFractionDeltaEnricher.html | 59 -------------
 ...klyn.enricher.TimeWeightedDeltaEnricher.html | 59 -------------
 .../brooklyn.enricher.basic.Aggregator.html     | 59 -------------
 .../brooklyn.enricher.basic.Combiner.html       | 59 -------------
 .../brooklyn.enricher.basic.Propagator.html     | 59 -------------
 .../brooklyn.enricher.basic.Transformer.html    | 59 -------------
 ...ooklyn.policy.ha.ServiceFailureDetector.html | 59 -------------
 ...lyn.entity.basic.VanillaSoftwareProcess.html | 66 --------------
 ...ntity.brooklynnode.BrooklynEntityMirror.html | 66 --------------
 ...ooklyn.entity.brooklynnode.BrooklynNode.html | 66 --------------
 ...lyn.entity.database.mariadb.MariaDbNode.html | 66 --------------
 ...rooklyn.entity.database.mysql.MySqlNode.html | 66 --------------
 ...tity.database.postgresql.PostgreSqlNode.html | 66 --------------
 ...lyn.entity.database.rubyrep.RubyRepNode.html | 66 --------------
 .../brooklyn.entity.machine.MachineEntity.html  | 66 --------------
 ...ntity.messaging.activemq.ActiveMQBroker.html | 66 --------------
 ...lyn.entity.messaging.kafka.KafkaCluster.html | 66 --------------
 ...ooklyn.entity.messaging.qpid.QpidBroker.html | 66 --------------
 ...yn.entity.messaging.rabbit.RabbitBroker.html | 66 --------------
 .../brooklyn.entity.messaging.storm.Storm.html  | 66 --------------
 ....entity.messaging.storm.StormDeployment.html | 66 --------------
 ...oklyn.entity.monitoring.monit.MonitNode.html | 66 --------------
 ...oklyn.entity.network.bind.BindDnsServer.html | 66 --------------
 ...ity.nosql.cassandra.CassandraDatacenter.html | 66 --------------
 ....entity.nosql.cassandra.CassandraFabric.html | 66 --------------
 ...yn.entity.nosql.cassandra.CassandraNode.html | 66 --------------
 ...entity.nosql.couchbase.CouchbaseCluster.html | 66 --------------
 ...yn.entity.nosql.couchbase.CouchbaseNode.html | 66 --------------
 ...ooklyn.entity.nosql.couchdb.CouchDBNode.html | 66 --------------
 ...osql.elasticsearch.ElasticSearchCluster.html | 66 --------------
 ...y.nosql.elasticsearch.ElasticSearchNode.html | 66 --------------
 ...klyn.entity.nosql.mongodb.MongoDBServer.html | 66 --------------
 ...ty.nosql.mongodb.sharding.MongoDBRouter.html | 66 --------------
 ...ngodb.sharding.MongoDBShardedDeployment.html | 66 --------------
 ...rooklyn.entity.nosql.redis.RedisCluster.html | 66 --------------
 .../brooklyn.entity.nosql.redis.RedisStore.html | 66 --------------
 .../brooklyn.entity.nosql.riak.RiakCluster.html | 66 --------------
 .../brooklyn.entity.nosql.riak.RiakNode.html    | 66 --------------
 .../brooklyn.entity.nosql.solr.SolrServer.html  | 66 --------------
 ...ooklyn.entity.osgi.karaf.KarafContainer.html | 66 --------------
 .../brooklyn.entity.pool.ServerPool.html        | 66 --------------
 ...klyn.entity.proxy.nginx.NginxController.html | 66 --------------
 ...y.webapp.ControlledDynamicWebAppCluster.html | 66 --------------
 ...klyn.entity.webapp.DynamicWebAppCluster.html | 66 --------------
 ...ooklyn.entity.webapp.jboss.JBoss6Server.html | 66 --------------
 ...ooklyn.entity.webapp.jboss.JBoss7Server.html | 66 --------------
 ...ooklyn.entity.webapp.jetty.Jetty6Server.html | 66 --------------
 ...ntity.webapp.nodejs.NodeJsWebAppService.html | 66 --------------
 ...oklyn.entity.webapp.tomcat.TomcatServer.html | 66 --------------
 ...klyn.entity.zookeeper.ZooKeeperEnsemble.html | 66 --------------
 ...brooklyn.entity.zookeeper.ZooKeeperNode.html | 66 --------------
 ...lyn.policy.autoscaling.AutoScalerPolicy.html | 59 -------------
 ....policy.followthesun.FollowTheSunPolicy.html | 59 -------------
 ...lyn.policy.ha.ConnectionFailureDetector.html | 59 -------------
 .../brooklyn.policy.ha.ServiceReplacer.html     | 59 -------------
 .../brooklyn.policy.ha.ServiceRestarter.html    | 59 -------------
 ...olicy.loadbalancing.LoadBalancingPolicy.html | 59 -------------
 63 files changed, 93 insertions(+), 3910 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cbe6f8e6/docs/style/js/catalog/common.js
----------------------------------------------------------------------
diff --git a/docs/style/js/catalog/common.js b/docs/style/js/catalog/common.js
index 8e8a45f..3b95313 100644
--- a/docs/style/js/catalog/common.js
+++ b/docs/style/js/catalog/common.js
@@ -25,7 +25,7 @@ var brooklyn = (function ($, _) {
         },
 
         entityCard: _.template(
-            "<a class='plain' data-type='<%= type %>' href='entities/<%= type %>.html'>" +
+            "<a class='plain' data-type='<%= type %>' href='brooklyn-node.html#entities/<%= type %>'>" +
             "<div class='card'>" +
             "<span class='glyphicon glyphicon-chevron-right'/>" +
             "<div class='name'><%=name%></div>" +
@@ -35,7 +35,7 @@ var brooklyn = (function ($, _) {
             "</a>"
         ),
         policyCard: _.template(
-            "<a class='plain' data-type='<%= type %>' href='policies/<%= type %>.html'>" +
+            "<a class='plain' data-type='<%= type %>' href='brooklyn-node.html#policies/<%= type %>'>" +
             "<div class='card'>" +
             "<span class='glyphicon glyphicon-chevron-right'/>" +
             "<div class='name'><%=name%></div>" +
@@ -45,7 +45,7 @@ var brooklyn = (function ($, _) {
             "</a>"
         ),
         enricherCard: _.template(
-            "<a class='plain' data-type='<%= type %>' href='enrichers/<%= type %>.html'>" +
+            "<a class='plain' data-type='<%= type %>' href='brooklyn-node.html#enrichers/<%= type %>'>" +
             "<div class='card'>" +
             "<span class='glyphicon glyphicon-chevron-right'/>" +
             "<div class='name'><%=name%></div>" +

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cbe6f8e6/docs/website/learnmore/catalog/brooklyn-node.html
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/brooklyn-node.html b/docs/website/learnmore/catalog/brooklyn-node.html
new file mode 100644
index 0000000..3b07cf6
--- /dev/null
+++ b/docs/website/learnmore/catalog/brooklyn-node.html
@@ -0,0 +1,90 @@
+---
+title: Catalog
+---
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+<head>
+  <title>Brooklyn Entity - Brooklyn Node</title>
+  {% include base-head.html %}
+  <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
+  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
+  <link rel="stylesheet" href="{{site.path.style}}/css/catalog_items.css" type="text/css" media="screen"/>
+</head>
+<body>
+{% include topmenu.html %}
+<div id="container">
+  <div id="header">
+    <div id="identity">
+      <a href="http://brooklyncentral.github.com/" rel="home">Brooklyn</a>
+    </div>
+  </div>
+
+  <div id="summary"></div>
+
+  <ul class="nav nav-tabs">
+    <li class="active"><a href="#configKeys" data-toggle="tab">Config Keys</a></li>
+    <li><a href="#sensors" data-toggle="tab">Sensors</a></li>
+    <li><a href="#effectors" data-toggle="tab">Effectors</a></li>
+  </ul>
+
+  <div class="tab-content">
+    <div class="tab-pane active" id="configKeys"></div>
+    <div class="tab-pane" id="sensors"></div>
+    <div class="tab-pane" id="effectors"></div>
+  </div>
+</div>
+
+<script src="{{site.path.style}}/js/underscore-min.js" type="text/javascript"></script>
+<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
+<script src="{{site.path.style}}/js/catalog/common.js" type="text/javascript"></script>
+<script src="{{site.path.style}}/js/catalog/items.js" type="text/javascript"></script>
+<script type="text/javascript">
+  $(document).ready(function () {
+    updateItems();
+
+    $(window).on('hashchange', updateItems);
+
+    function updateItems() {
+      var args;
+      var hash = window.location.hash;
+      if(!hash) {
+        alert('No class selected');
+        return;
+      }
+      args = hash.substring(1).split('/');
+      if(args.length!=2) {
+        alert('bad entity format')
+        return;
+      }
+
+      // entities/brooklyn.entity.brooklynnode.BrooklynNode
+      var item = brooklyn.findItemOfType(items[args[0]], args[1]);
+      $("#summary").html(brooklyn.typeSummary(item));
+      item.config.forEach(function (element) { $("#configKeys").append(brooklyn.configKeyCard(element)); });
+      item.sensors.forEach(function (element) { $("#sensors").append(brooklyn.sensorCard(element)); });
+      if (item.effectors != undefined) {
+        item.effectors.forEach(function (element) { $("#effectors").append(brooklyn.effectorCard(element)); });
+      }
+    }
+  });
+</script>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cbe6f8e6/docs/website/learnmore/catalog/enrichers/brooklyn.enricher.DeltaEnricher.html
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/enrichers/brooklyn.enricher.DeltaEnricher.html b/docs/website/learnmore/catalog/enrichers/brooklyn.enricher.DeltaEnricher.html
deleted file mode 100644
index d888b8c..0000000
--- a/docs/website/learnmore/catalog/enrichers/brooklyn.enricher.DeltaEnricher.html
+++ /dev/null
@@ -1,59 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-  <head>
-    <title>Brooklyn Enricher - Delta</title>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
-    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
-    <link rel="stylesheet" href="../items.css" type="text/css" media="screen"/>
-  </head>
-  <body>
-    <div id="container">
-      <div id="header">
-        <div id="identity">
-          <a href="http://brooklyncentral.github.com/" rel="home">Brooklyn</a>
-        </div>
-      </div>
-
-      <div id="summary"></div>
-
-      <ul class="nav nav-tabs">
-        <li class="active"><a href="#configKeys" data-toggle="tab">Config Keys</a></li>
-      </ul>
-
-      <div class="tab-content">
-        <div id="configKeys"></div>
-      </div>
-
-    </div>
-
-    <script src="../../../style/js/underscore-min.js" type="text/javascript"></script>
-    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
-    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
-    <script src="../common.js" type="text/javascript"></script>
-    <script src="../items.js" type="text/javascript"></script>
-    <script type="text/javascript">
-        $(document).ready(function () {
-            var item = brooklyn.findItemOfType(items.enrichers, "brooklyn.enricher.DeltaEnricher");
-            $("#summary").html(brooklyn.typeSummary(item));
-            item.config.forEach(function (element) { $("#configKeys").append(brooklyn.configKeyCard(element)); });
-        });
-    </script>
-  </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cbe6f8e6/docs/website/learnmore/catalog/enrichers/brooklyn.enricher.HttpLatencyDetector.html
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/enrichers/brooklyn.enricher.HttpLatencyDetector.html b/docs/website/learnmore/catalog/enrichers/brooklyn.enricher.HttpLatencyDetector.html
deleted file mode 100644
index 47b3a54..0000000
--- a/docs/website/learnmore/catalog/enrichers/brooklyn.enricher.HttpLatencyDetector.html
+++ /dev/null
@@ -1,59 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-  <head>
-    <title>Brooklyn Enricher - HTTP Latency Detector</title>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
-    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
-    <link rel="stylesheet" href="../items.css" type="text/css" media="screen"/>
-  </head>
-  <body>
-    <div id="container">
-      <div id="header">
-        <div id="identity">
-          <a href="http://brooklyncentral.github.com/" rel="home">Brooklyn</a>
-        </div>
-      </div>
-
-      <div id="summary"></div>
-
-      <ul class="nav nav-tabs">
-        <li class="active"><a href="#configKeys" data-toggle="tab">Config Keys</a></li>
-      </ul>
-
-      <div class="tab-content">
-        <div id="configKeys"></div>
-      </div>
-
-    </div>
-
-    <script src="../../../style/js/underscore-min.js" type="text/javascript"></script>
-    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
-    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
-    <script src="../common.js" type="text/javascript"></script>
-    <script src="../items.js" type="text/javascript"></script>
-    <script type="text/javascript">
-        $(document).ready(function () {
-            var item = brooklyn.findItemOfType(items.enrichers, "brooklyn.enricher.HttpLatencyDetector");
-            $("#summary").html(brooklyn.typeSummary(item));
-            item.config.forEach(function (element) { $("#configKeys").append(brooklyn.configKeyCard(element)); });
-        });
-    </script>
-  </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cbe6f8e6/docs/website/learnmore/catalog/enrichers/brooklyn.enricher.RollingMeanEnricher.html
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/enrichers/brooklyn.enricher.RollingMeanEnricher.html b/docs/website/learnmore/catalog/enrichers/brooklyn.enricher.RollingMeanEnricher.html
deleted file mode 100644
index ba4c179..0000000
--- a/docs/website/learnmore/catalog/enrichers/brooklyn.enricher.RollingMeanEnricher.html
+++ /dev/null
@@ -1,59 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-  <head>
-    <title>Brooklyn Enricher - Rolling Mean</title>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
-    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
-    <link rel="stylesheet" href="../items.css" type="text/css" media="screen"/>
-  </head>
-  <body>
-    <div id="container">
-      <div id="header">
-        <div id="identity">
-          <a href="http://brooklyncentral.github.com/" rel="home">Brooklyn</a>
-        </div>
-      </div>
-
-      <div id="summary"></div>
-
-      <ul class="nav nav-tabs">
-        <li class="active"><a href="#configKeys" data-toggle="tab">Config Keys</a></li>
-      </ul>
-
-      <div class="tab-content">
-        <div id="configKeys"></div>
-      </div>
-
-    </div>
-
-    <script src="../../../style/js/underscore-min.js" type="text/javascript"></script>
-    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
-    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
-    <script src="../common.js" type="text/javascript"></script>
-    <script src="../items.js" type="text/javascript"></script>
-    <script type="text/javascript">
-        $(document).ready(function () {
-            var item = brooklyn.findItemOfType(items.enrichers, "brooklyn.enricher.RollingMeanEnricher");
-            $("#summary").html(brooklyn.typeSummary(item));
-            item.config.forEach(function (element) { $("#configKeys").append(brooklyn.configKeyCard(element)); });
-        });
-    </script>
-  </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cbe6f8e6/docs/website/learnmore/catalog/enrichers/brooklyn.enricher.RollingTimeWindowMeanEnricher.html
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/enrichers/brooklyn.enricher.RollingTimeWindowMeanEnricher.html b/docs/website/learnmore/catalog/enrichers/brooklyn.enricher.RollingTimeWindowMeanEnricher.html
deleted file mode 100644
index acc9a84..0000000
--- a/docs/website/learnmore/catalog/enrichers/brooklyn.enricher.RollingTimeWindowMeanEnricher.html
+++ /dev/null
@@ -1,59 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-  <head>
-    <title>Brooklyn Enricher - Rolling Mean in Time Window</title>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
-    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
-    <link rel="stylesheet" href="../items.css" type="text/css" media="screen"/>
-  </head>
-  <body>
-    <div id="container">
-      <div id="header">
-        <div id="identity">
-          <a href="http://brooklyncentral.github.com/" rel="home">Brooklyn</a>
-        </div>
-      </div>
-
-      <div id="summary"></div>
-
-      <ul class="nav nav-tabs">
-        <li class="active"><a href="#configKeys" data-toggle="tab">Config Keys</a></li>
-      </ul>
-
-      <div class="tab-content">
-        <div id="configKeys"></div>
-      </div>
-
-    </div>
-
-    <script src="../../../style/js/underscore-min.js" type="text/javascript"></script>
-    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
-    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
-    <script src="../common.js" type="text/javascript"></script>
-    <script src="../items.js" type="text/javascript"></script>
-    <script type="text/javascript">
-        $(document).ready(function () {
-            var item = brooklyn.findItemOfType(items.enrichers, "brooklyn.enricher.RollingTimeWindowMeanEnricher");
-            $("#summary").html(brooklyn.typeSummary(item));
-            item.config.forEach(function (element) { $("#configKeys").append(brooklyn.configKeyCard(element)); });
-        });
-    </script>
-  </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cbe6f8e6/docs/website/learnmore/catalog/enrichers/brooklyn.enricher.TimeFractionDeltaEnricher.html
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/enrichers/brooklyn.enricher.TimeFractionDeltaEnricher.html b/docs/website/learnmore/catalog/enrichers/brooklyn.enricher.TimeFractionDeltaEnricher.html
deleted file mode 100644
index f21846b..0000000
--- a/docs/website/learnmore/catalog/enrichers/brooklyn.enricher.TimeFractionDeltaEnricher.html
+++ /dev/null
@@ -1,59 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-  <head>
-    <title>Brooklyn Enricher - Time-fraction Delta</title>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
-    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
-    <link rel="stylesheet" href="../items.css" type="text/css" media="screen"/>
-  </head>
-  <body>
-    <div id="container">
-      <div id="header">
-        <div id="identity">
-          <a href="http://brooklyncentral.github.com/" rel="home">Brooklyn</a>
-        </div>
-      </div>
-
-      <div id="summary"></div>
-
-      <ul class="nav nav-tabs">
-        <li class="active"><a href="#configKeys" data-toggle="tab">Config Keys</a></li>
-      </ul>
-
-      <div class="tab-content">
-        <div id="configKeys"></div>
-      </div>
-
-    </div>
-
-    <script src="../../../style/js/underscore-min.js" type="text/javascript"></script>
-    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
-    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
-    <script src="../common.js" type="text/javascript"></script>
-    <script src="../items.js" type="text/javascript"></script>
-    <script type="text/javascript">
-        $(document).ready(function () {
-            var item = brooklyn.findItemOfType(items.enrichers, "brooklyn.enricher.TimeFractionDeltaEnricher");
-            $("#summary").html(brooklyn.typeSummary(item));
-            item.config.forEach(function (element) { $("#configKeys").append(brooklyn.configKeyCard(element)); });
-        });
-    </script>
-  </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cbe6f8e6/docs/website/learnmore/catalog/enrichers/brooklyn.enricher.TimeWeightedDeltaEnricher.html
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/enrichers/brooklyn.enricher.TimeWeightedDeltaEnricher.html b/docs/website/learnmore/catalog/enrichers/brooklyn.enricher.TimeWeightedDeltaEnricher.html
deleted file mode 100644
index 6679d8a..0000000
--- a/docs/website/learnmore/catalog/enrichers/brooklyn.enricher.TimeWeightedDeltaEnricher.html
+++ /dev/null
@@ -1,59 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-  <head>
-    <title>Brooklyn Enricher - Time-weighted Delta</title>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
-    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
-    <link rel="stylesheet" href="../items.css" type="text/css" media="screen"/>
-  </head>
-  <body>
-    <div id="container">
-      <div id="header">
-        <div id="identity">
-          <a href="http://brooklyncentral.github.com/" rel="home">Brooklyn</a>
-        </div>
-      </div>
-
-      <div id="summary"></div>
-
-      <ul class="nav nav-tabs">
-        <li class="active"><a href="#configKeys" data-toggle="tab">Config Keys</a></li>
-      </ul>
-
-      <div class="tab-content">
-        <div id="configKeys"></div>
-      </div>
-
-    </div>
-
-    <script src="../../../style/js/underscore-min.js" type="text/javascript"></script>
-    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
-    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
-    <script src="../common.js" type="text/javascript"></script>
-    <script src="../items.js" type="text/javascript"></script>
-    <script type="text/javascript">
-        $(document).ready(function () {
-            var item = brooklyn.findItemOfType(items.enrichers, "brooklyn.enricher.TimeWeightedDeltaEnricher");
-            $("#summary").html(brooklyn.typeSummary(item));
-            item.config.forEach(function (element) { $("#configKeys").append(brooklyn.configKeyCard(element)); });
-        });
-    </script>
-  </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cbe6f8e6/docs/website/learnmore/catalog/enrichers/brooklyn.enricher.basic.Aggregator.html
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/enrichers/brooklyn.enricher.basic.Aggregator.html b/docs/website/learnmore/catalog/enrichers/brooklyn.enricher.basic.Aggregator.html
deleted file mode 100644
index 920d74e..0000000
--- a/docs/website/learnmore/catalog/enrichers/brooklyn.enricher.basic.Aggregator.html
+++ /dev/null
@@ -1,59 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-  <head>
-    <title>Brooklyn Enricher - Aggregator</title>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
-    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
-    <link rel="stylesheet" href="../items.css" type="text/css" media="screen"/>
-  </head>
-  <body>
-    <div id="container">
-      <div id="header">
-        <div id="identity">
-          <a href="http://brooklyncentral.github.com/" rel="home">Brooklyn</a>
-        </div>
-      </div>
-
-      <div id="summary"></div>
-
-      <ul class="nav nav-tabs">
-        <li class="active"><a href="#configKeys" data-toggle="tab">Config Keys</a></li>
-      </ul>
-
-      <div class="tab-content">
-        <div id="configKeys"></div>
-      </div>
-
-    </div>
-
-    <script src="../../../style/js/underscore-min.js" type="text/javascript"></script>
-    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
-    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
-    <script src="../common.js" type="text/javascript"></script>
-    <script src="../items.js" type="text/javascript"></script>
-    <script type="text/javascript">
-        $(document).ready(function () {
-            var item = brooklyn.findItemOfType(items.enrichers, "brooklyn.enricher.basic.Aggregator");
-            $("#summary").html(brooklyn.typeSummary(item));
-            item.config.forEach(function (element) { $("#configKeys").append(brooklyn.configKeyCard(element)); });
-        });
-    </script>
-  </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cbe6f8e6/docs/website/learnmore/catalog/enrichers/brooklyn.enricher.basic.Combiner.html
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/enrichers/brooklyn.enricher.basic.Combiner.html b/docs/website/learnmore/catalog/enrichers/brooklyn.enricher.basic.Combiner.html
deleted file mode 100644
index d489eb3..0000000
--- a/docs/website/learnmore/catalog/enrichers/brooklyn.enricher.basic.Combiner.html
+++ /dev/null
@@ -1,59 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-  <head>
-    <title>Brooklyn Enricher - Combiner</title>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
-    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
-    <link rel="stylesheet" href="../items.css" type="text/css" media="screen"/>
-  </head>
-  <body>
-    <div id="container">
-      <div id="header">
-        <div id="identity">
-          <a href="http://brooklyncentral.github.com/" rel="home">Brooklyn</a>
-        </div>
-      </div>
-
-      <div id="summary"></div>
-
-      <ul class="nav nav-tabs">
-        <li class="active"><a href="#configKeys" data-toggle="tab">Config Keys</a></li>
-      </ul>
-
-      <div class="tab-content">
-        <div id="configKeys"></div>
-      </div>
-
-    </div>
-
-    <script src="../../../style/js/underscore-min.js" type="text/javascript"></script>
-    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
-    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
-    <script src="../common.js" type="text/javascript"></script>
-    <script src="../items.js" type="text/javascript"></script>
-    <script type="text/javascript">
-        $(document).ready(function () {
-            var item = brooklyn.findItemOfType(items.enrichers, "brooklyn.enricher.basic.Combiner");
-            $("#summary").html(brooklyn.typeSummary(item));
-            item.config.forEach(function (element) { $("#configKeys").append(brooklyn.configKeyCard(element)); });
-        });
-    </script>
-  </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cbe6f8e6/docs/website/learnmore/catalog/enrichers/brooklyn.enricher.basic.Propagator.html
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/enrichers/brooklyn.enricher.basic.Propagator.html b/docs/website/learnmore/catalog/enrichers/brooklyn.enricher.basic.Propagator.html
deleted file mode 100644
index 62136af..0000000
--- a/docs/website/learnmore/catalog/enrichers/brooklyn.enricher.basic.Propagator.html
+++ /dev/null
@@ -1,59 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-  <head>
-    <title>Brooklyn Enricher - Propagator</title>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
-    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
-    <link rel="stylesheet" href="../items.css" type="text/css" media="screen"/>
-  </head>
-  <body>
-    <div id="container">
-      <div id="header">
-        <div id="identity">
-          <a href="http://brooklyncentral.github.com/" rel="home">Brooklyn</a>
-        </div>
-      </div>
-
-      <div id="summary"></div>
-
-      <ul class="nav nav-tabs">
-        <li class="active"><a href="#configKeys" data-toggle="tab">Config Keys</a></li>
-      </ul>
-
-      <div class="tab-content">
-        <div id="configKeys"></div>
-      </div>
-
-    </div>
-
-    <script src="../../../style/js/underscore-min.js" type="text/javascript"></script>
-    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
-    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
-    <script src="../common.js" type="text/javascript"></script>
-    <script src="../items.js" type="text/javascript"></script>
-    <script type="text/javascript">
-        $(document).ready(function () {
-            var item = brooklyn.findItemOfType(items.enrichers, "brooklyn.enricher.basic.Propagator");
-            $("#summary").html(brooklyn.typeSummary(item));
-            item.config.forEach(function (element) { $("#configKeys").append(brooklyn.configKeyCard(element)); });
-        });
-    </script>
-  </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cbe6f8e6/docs/website/learnmore/catalog/enrichers/brooklyn.enricher.basic.Transformer.html
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/enrichers/brooklyn.enricher.basic.Transformer.html b/docs/website/learnmore/catalog/enrichers/brooklyn.enricher.basic.Transformer.html
deleted file mode 100644
index 2c27f4d..0000000
--- a/docs/website/learnmore/catalog/enrichers/brooklyn.enricher.basic.Transformer.html
+++ /dev/null
@@ -1,59 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-  <head>
-    <title>Brooklyn Enricher - Transformer</title>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
-    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
-    <link rel="stylesheet" href="../items.css" type="text/css" media="screen"/>
-  </head>
-  <body>
-    <div id="container">
-      <div id="header">
-        <div id="identity">
-          <a href="http://brooklyncentral.github.com/" rel="home">Brooklyn</a>
-        </div>
-      </div>
-
-      <div id="summary"></div>
-
-      <ul class="nav nav-tabs">
-        <li class="active"><a href="#configKeys" data-toggle="tab">Config Keys</a></li>
-      </ul>
-
-      <div class="tab-content">
-        <div id="configKeys"></div>
-      </div>
-
-    </div>
-
-    <script src="../../../style/js/underscore-min.js" type="text/javascript"></script>
-    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
-    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
-    <script src="../common.js" type="text/javascript"></script>
-    <script src="../items.js" type="text/javascript"></script>
-    <script type="text/javascript">
-        $(document).ready(function () {
-            var item = brooklyn.findItemOfType(items.enrichers, "brooklyn.enricher.basic.Transformer");
-            $("#summary").html(brooklyn.typeSummary(item));
-            item.config.forEach(function (element) { $("#configKeys").append(brooklyn.configKeyCard(element)); });
-        });
-    </script>
-  </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cbe6f8e6/docs/website/learnmore/catalog/enrichers/brooklyn.policy.ha.ServiceFailureDetector.html
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/enrichers/brooklyn.policy.ha.ServiceFailureDetector.html b/docs/website/learnmore/catalog/enrichers/brooklyn.policy.ha.ServiceFailureDetector.html
deleted file mode 100644
index a2c06af..0000000
--- a/docs/website/learnmore/catalog/enrichers/brooklyn.policy.ha.ServiceFailureDetector.html
+++ /dev/null
@@ -1,59 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-  <head>
-    <title>Brooklyn Enricher - Service Failure Detector</title>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
-    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
-    <link rel="stylesheet" href="../items.css" type="text/css" media="screen"/>
-  </head>
-  <body>
-    <div id="container">
-      <div id="header">
-        <div id="identity">
-          <a href="http://brooklyncentral.github.com/" rel="home">Brooklyn</a>
-        </div>
-      </div>
-
-      <div id="summary"></div>
-
-      <ul class="nav nav-tabs">
-        <li class="active"><a href="#configKeys" data-toggle="tab">Config Keys</a></li>
-      </ul>
-
-      <div class="tab-content">
-        <div id="configKeys"></div>
-      </div>
-
-    </div>
-
-    <script src="../../../style/js/underscore-min.js" type="text/javascript"></script>
-    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
-    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
-    <script src="../common.js" type="text/javascript"></script>
-    <script src="../items.js" type="text/javascript"></script>
-    <script type="text/javascript">
-        $(document).ready(function () {
-            var item = brooklyn.findItemOfType(items.enrichers, "brooklyn.policy.ha.ServiceFailureDetector");
-            $("#summary").html(brooklyn.typeSummary(item));
-            item.config.forEach(function (element) { $("#configKeys").append(brooklyn.configKeyCard(element)); });
-        });
-    </script>
-  </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cbe6f8e6/docs/website/learnmore/catalog/entities/brooklyn.entity.basic.VanillaSoftwareProcess.html
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/entities/brooklyn.entity.basic.VanillaSoftwareProcess.html b/docs/website/learnmore/catalog/entities/brooklyn.entity.basic.VanillaSoftwareProcess.html
deleted file mode 100644
index 6b33b01..0000000
--- a/docs/website/learnmore/catalog/entities/brooklyn.entity.basic.VanillaSoftwareProcess.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-  <head>
-    <title>Brooklyn Entity - Vanilla Software Process</title>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
-    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
-    <link rel="stylesheet" href="../items.css" type="text/css" media="screen"/>
-  </head>
-  <body>
-    <div id="container">
-      <div id="header">
-        <div id="identity">
-          <a href="http://brooklyncentral.github.com/" rel="home">Brooklyn</a>
-        </div>
-      </div>
-
-      <div id="summary"></div>
-
-      <ul class="nav nav-tabs">
-        <li class="active"><a href="#configKeys" data-toggle="tab">Config Keys</a></li>
-        <li><a href="#sensors" data-toggle="tab">Sensors</a></li>
-        <li><a href="#effectors" data-toggle="tab">Effectors</a></li>
-      </ul>
-
-      <div class="tab-content">
-        <div class="tab-pane active" id="configKeys"></div>
-        <div class="tab-pane" id="sensors"></div>
-        <div class="tab-pane" id="effectors"></div>
-      </div>
-    </div>
-
-    <script src="../../../style/js/underscore-min.js" type="text/javascript"></script>
-    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
-    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
-    <script src="../common.js" type="text/javascript"></script>
-    <script src="../items.js" type="text/javascript"></script>
-    <script type="text/javascript">
-        $(document).ready(function () {
-            var item = brooklyn.findItemOfType(items.entities, "brooklyn.entity.basic.VanillaSoftwareProcess");
-            $("#summary").html(brooklyn.typeSummary(item));
-            item.config.forEach(function (element) { $("#configKeys").append(brooklyn.configKeyCard(element)); });
-            item.sensors.forEach(function (element) { $("#sensors").append(brooklyn.sensorCard(element)); });
-            if (item.effectors != undefined) {
-                item.effectors.forEach(function (element) { $("#effectors").append(brooklyn.effectorCard(element)); });
-            }
-        });
-    </script>
-  </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cbe6f8e6/docs/website/learnmore/catalog/entities/brooklyn.entity.brooklynnode.BrooklynEntityMirror.html
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/entities/brooklyn.entity.brooklynnode.BrooklynEntityMirror.html b/docs/website/learnmore/catalog/entities/brooklyn.entity.brooklynnode.BrooklynEntityMirror.html
deleted file mode 100644
index 2877ea5..0000000
--- a/docs/website/learnmore/catalog/entities/brooklyn.entity.brooklynnode.BrooklynEntityMirror.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-  <head>
-    <title>Brooklyn Entity - Brooklyn Entity Mirror</title>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
-    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
-    <link rel="stylesheet" href="../items.css" type="text/css" media="screen"/>
-  </head>
-  <body>
-    <div id="container">
-      <div id="header">
-        <div id="identity">
-          <a href="http://brooklyncentral.github.com/" rel="home">Brooklyn</a>
-        </div>
-      </div>
-
-      <div id="summary"></div>
-
-      <ul class="nav nav-tabs">
-        <li class="active"><a href="#configKeys" data-toggle="tab">Config Keys</a></li>
-        <li><a href="#sensors" data-toggle="tab">Sensors</a></li>
-        <li><a href="#effectors" data-toggle="tab">Effectors</a></li>
-      </ul>
-
-      <div class="tab-content">
-        <div class="tab-pane active" id="configKeys"></div>
-        <div class="tab-pane" id="sensors"></div>
-        <div class="tab-pane" id="effectors"></div>
-      </div>
-    </div>
-
-    <script src="../../../style/js/underscore-min.js" type="text/javascript"></script>
-    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
-    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
-    <script src="../common.js" type="text/javascript"></script>
-    <script src="../items.js" type="text/javascript"></script>
-    <script type="text/javascript">
-        $(document).ready(function () {
-            var item = brooklyn.findItemOfType(items.entities, "brooklyn.entity.brooklynnode.BrooklynEntityMirror");
-            $("#summary").html(brooklyn.typeSummary(item));
-            item.config.forEach(function (element) { $("#configKeys").append(brooklyn.configKeyCard(element)); });
-            item.sensors.forEach(function (element) { $("#sensors").append(brooklyn.sensorCard(element)); });
-            if (item.effectors != undefined) {
-                item.effectors.forEach(function (element) { $("#effectors").append(brooklyn.effectorCard(element)); });
-            }
-        });
-    </script>
-  </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cbe6f8e6/docs/website/learnmore/catalog/entities/brooklyn.entity.brooklynnode.BrooklynNode.html
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/entities/brooklyn.entity.brooklynnode.BrooklynNode.html b/docs/website/learnmore/catalog/entities/brooklyn.entity.brooklynnode.BrooklynNode.html
deleted file mode 100644
index b592f64..0000000
--- a/docs/website/learnmore/catalog/entities/brooklyn.entity.brooklynnode.BrooklynNode.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-  <head>
-    <title>Brooklyn Entity - Brooklyn Node</title>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
-    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
-    <link rel="stylesheet" href="../items.css" type="text/css" media="screen"/>
-  </head>
-  <body>
-    <div id="container">
-      <div id="header">
-        <div id="identity">
-          <a href="http://brooklyncentral.github.com/" rel="home">Brooklyn</a>
-        </div>
-      </div>
-
-      <div id="summary"></div>
-
-      <ul class="nav nav-tabs">
-        <li class="active"><a href="#configKeys" data-toggle="tab">Config Keys</a></li>
-        <li><a href="#sensors" data-toggle="tab">Sensors</a></li>
-        <li><a href="#effectors" data-toggle="tab">Effectors</a></li>
-      </ul>
-
-      <div class="tab-content">
-        <div class="tab-pane active" id="configKeys"></div>
-        <div class="tab-pane" id="sensors"></div>
-        <div class="tab-pane" id="effectors"></div>
-      </div>
-    </div>
-
-    <script src="../../../style/js/underscore-min.js" type="text/javascript"></script>
-    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
-    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
-    <script src="../common.js" type="text/javascript"></script>
-    <script src="../items.js" type="text/javascript"></script>
-    <script type="text/javascript">
-        $(document).ready(function () {
-            var item = brooklyn.findItemOfType(items.entities, "brooklyn.entity.brooklynnode.BrooklynNode");
-            $("#summary").html(brooklyn.typeSummary(item));
-            item.config.forEach(function (element) { $("#configKeys").append(brooklyn.configKeyCard(element)); });
-            item.sensors.forEach(function (element) { $("#sensors").append(brooklyn.sensorCard(element)); });
-            if (item.effectors != undefined) {
-                item.effectors.forEach(function (element) { $("#effectors").append(brooklyn.effectorCard(element)); });
-            }
-        });
-    </script>
-  </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cbe6f8e6/docs/website/learnmore/catalog/entities/brooklyn.entity.database.mariadb.MariaDbNode.html
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/entities/brooklyn.entity.database.mariadb.MariaDbNode.html b/docs/website/learnmore/catalog/entities/brooklyn.entity.database.mariadb.MariaDbNode.html
deleted file mode 100644
index 66a4f62..0000000
--- a/docs/website/learnmore/catalog/entities/brooklyn.entity.database.mariadb.MariaDbNode.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-  <head>
-    <title>Brooklyn Entity - MariaDB Node</title>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
-    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
-    <link rel="stylesheet" href="../items.css" type="text/css" media="screen"/>
-  </head>
-  <body>
-    <div id="container">
-      <div id="header">
-        <div id="identity">
-          <a href="http://brooklyncentral.github.com/" rel="home">Brooklyn</a>
-        </div>
-      </div>
-
-      <div id="summary"></div>
-
-      <ul class="nav nav-tabs">
-        <li class="active"><a href="#configKeys" data-toggle="tab">Config Keys</a></li>
-        <li><a href="#sensors" data-toggle="tab">Sensors</a></li>
-        <li><a href="#effectors" data-toggle="tab">Effectors</a></li>
-      </ul>
-
-      <div class="tab-content">
-        <div class="tab-pane active" id="configKeys"></div>
-        <div class="tab-pane" id="sensors"></div>
-        <div class="tab-pane" id="effectors"></div>
-      </div>
-    </div>
-
-    <script src="../../../style/js/underscore-min.js" type="text/javascript"></script>
-    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
-    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
-    <script src="../common.js" type="text/javascript"></script>
-    <script src="../items.js" type="text/javascript"></script>
-    <script type="text/javascript">
-        $(document).ready(function () {
-            var item = brooklyn.findItemOfType(items.entities, "brooklyn.entity.database.mariadb.MariaDbNode");
-            $("#summary").html(brooklyn.typeSummary(item));
-            item.config.forEach(function (element) { $("#configKeys").append(brooklyn.configKeyCard(element)); });
-            item.sensors.forEach(function (element) { $("#sensors").append(brooklyn.sensorCard(element)); });
-            if (item.effectors != undefined) {
-                item.effectors.forEach(function (element) { $("#effectors").append(brooklyn.effectorCard(element)); });
-            }
-        });
-    </script>
-  </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cbe6f8e6/docs/website/learnmore/catalog/entities/brooklyn.entity.database.mysql.MySqlNode.html
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/entities/brooklyn.entity.database.mysql.MySqlNode.html b/docs/website/learnmore/catalog/entities/brooklyn.entity.database.mysql.MySqlNode.html
deleted file mode 100644
index 4426838..0000000
--- a/docs/website/learnmore/catalog/entities/brooklyn.entity.database.mysql.MySqlNode.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-  <head>
-    <title>Brooklyn Entity - MySql Node</title>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
-    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
-    <link rel="stylesheet" href="../items.css" type="text/css" media="screen"/>
-  </head>
-  <body>
-    <div id="container">
-      <div id="header">
-        <div id="identity">
-          <a href="http://brooklyncentral.github.com/" rel="home">Brooklyn</a>
-        </div>
-      </div>
-
-      <div id="summary"></div>
-
-      <ul class="nav nav-tabs">
-        <li class="active"><a href="#configKeys" data-toggle="tab">Config Keys</a></li>
-        <li><a href="#sensors" data-toggle="tab">Sensors</a></li>
-        <li><a href="#effectors" data-toggle="tab">Effectors</a></li>
-      </ul>
-
-      <div class="tab-content">
-        <div class="tab-pane active" id="configKeys"></div>
-        <div class="tab-pane" id="sensors"></div>
-        <div class="tab-pane" id="effectors"></div>
-      </div>
-    </div>
-
-    <script src="../../../style/js/underscore-min.js" type="text/javascript"></script>
-    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
-    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
-    <script src="../common.js" type="text/javascript"></script>
-    <script src="../items.js" type="text/javascript"></script>
-    <script type="text/javascript">
-        $(document).ready(function () {
-            var item = brooklyn.findItemOfType(items.entities, "brooklyn.entity.database.mysql.MySqlNode");
-            $("#summary").html(brooklyn.typeSummary(item));
-            item.config.forEach(function (element) { $("#configKeys").append(brooklyn.configKeyCard(element)); });
-            item.sensors.forEach(function (element) { $("#sensors").append(brooklyn.sensorCard(element)); });
-            if (item.effectors != undefined) {
-                item.effectors.forEach(function (element) { $("#effectors").append(brooklyn.effectorCard(element)); });
-            }
-        });
-    </script>
-  </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cbe6f8e6/docs/website/learnmore/catalog/entities/brooklyn.entity.database.postgresql.PostgreSqlNode.html
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/entities/brooklyn.entity.database.postgresql.PostgreSqlNode.html b/docs/website/learnmore/catalog/entities/brooklyn.entity.database.postgresql.PostgreSqlNode.html
deleted file mode 100644
index e8e30db..0000000
--- a/docs/website/learnmore/catalog/entities/brooklyn.entity.database.postgresql.PostgreSqlNode.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-  <head>
-    <title>Brooklyn Entity - PostgreSQL Node</title>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
-    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
-    <link rel="stylesheet" href="../items.css" type="text/css" media="screen"/>
-  </head>
-  <body>
-    <div id="container">
-      <div id="header">
-        <div id="identity">
-          <a href="http://brooklyncentral.github.com/" rel="home">Brooklyn</a>
-        </div>
-      </div>
-
-      <div id="summary"></div>
-
-      <ul class="nav nav-tabs">
-        <li class="active"><a href="#configKeys" data-toggle="tab">Config Keys</a></li>
-        <li><a href="#sensors" data-toggle="tab">Sensors</a></li>
-        <li><a href="#effectors" data-toggle="tab">Effectors</a></li>
-      </ul>
-
-      <div class="tab-content">
-        <div class="tab-pane active" id="configKeys"></div>
-        <div class="tab-pane" id="sensors"></div>
-        <div class="tab-pane" id="effectors"></div>
-      </div>
-    </div>
-
-    <script src="../../../style/js/underscore-min.js" type="text/javascript"></script>
-    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
-    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
-    <script src="../common.js" type="text/javascript"></script>
-    <script src="../items.js" type="text/javascript"></script>
-    <script type="text/javascript">
-        $(document).ready(function () {
-            var item = brooklyn.findItemOfType(items.entities, "brooklyn.entity.database.postgresql.PostgreSqlNode");
-            $("#summary").html(brooklyn.typeSummary(item));
-            item.config.forEach(function (element) { $("#configKeys").append(brooklyn.configKeyCard(element)); });
-            item.sensors.forEach(function (element) { $("#sensors").append(brooklyn.sensorCard(element)); });
-            if (item.effectors != undefined) {
-                item.effectors.forEach(function (element) { $("#effectors").append(brooklyn.effectorCard(element)); });
-            }
-        });
-    </script>
-  </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cbe6f8e6/docs/website/learnmore/catalog/entities/brooklyn.entity.database.rubyrep.RubyRepNode.html
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/entities/brooklyn.entity.database.rubyrep.RubyRepNode.html b/docs/website/learnmore/catalog/entities/brooklyn.entity.database.rubyrep.RubyRepNode.html
deleted file mode 100644
index c7bce4a..0000000
--- a/docs/website/learnmore/catalog/entities/brooklyn.entity.database.rubyrep.RubyRepNode.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-  <head>
-    <title>Brooklyn Entity - RubyRep Node</title>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
-    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
-    <link rel="stylesheet" href="../items.css" type="text/css" media="screen"/>
-  </head>
-  <body>
-    <div id="container">
-      <div id="header">
-        <div id="identity">
-          <a href="http://brooklyncentral.github.com/" rel="home">Brooklyn</a>
-        </div>
-      </div>
-
-      <div id="summary"></div>
-
-      <ul class="nav nav-tabs">
-        <li class="active"><a href="#configKeys" data-toggle="tab">Config Keys</a></li>
-        <li><a href="#sensors" data-toggle="tab">Sensors</a></li>
-        <li><a href="#effectors" data-toggle="tab">Effectors</a></li>
-      </ul>
-
-      <div class="tab-content">
-        <div class="tab-pane active" id="configKeys"></div>
-        <div class="tab-pane" id="sensors"></div>
-        <div class="tab-pane" id="effectors"></div>
-      </div>
-    </div>
-
-    <script src="../../../style/js/underscore-min.js" type="text/javascript"></script>
-    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
-    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
-    <script src="../common.js" type="text/javascript"></script>
-    <script src="../items.js" type="text/javascript"></script>
-    <script type="text/javascript">
-        $(document).ready(function () {
-            var item = brooklyn.findItemOfType(items.entities, "brooklyn.entity.database.rubyrep.RubyRepNode");
-            $("#summary").html(brooklyn.typeSummary(item));
-            item.config.forEach(function (element) { $("#configKeys").append(brooklyn.configKeyCard(element)); });
-            item.sensors.forEach(function (element) { $("#sensors").append(brooklyn.sensorCard(element)); });
-            if (item.effectors != undefined) {
-                item.effectors.forEach(function (element) { $("#effectors").append(brooklyn.effectorCard(element)); });
-            }
-        });
-    </script>
-  </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cbe6f8e6/docs/website/learnmore/catalog/entities/brooklyn.entity.machine.MachineEntity.html
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/entities/brooklyn.entity.machine.MachineEntity.html b/docs/website/learnmore/catalog/entities/brooklyn.entity.machine.MachineEntity.html
deleted file mode 100644
index e710e37..0000000
--- a/docs/website/learnmore/catalog/entities/brooklyn.entity.machine.MachineEntity.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-  <head>
-    <title>Brooklyn Entity - Machine Entity</title>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
-    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
-    <link rel="stylesheet" href="../items.css" type="text/css" media="screen"/>
-  </head>
-  <body>
-    <div id="container">
-      <div id="header">
-        <div id="identity">
-          <a href="http://brooklyncentral.github.com/" rel="home">Brooklyn</a>
-        </div>
-      </div>
-
-      <div id="summary"></div>
-
-      <ul class="nav nav-tabs">
-        <li class="active"><a href="#configKeys" data-toggle="tab">Config Keys</a></li>
-        <li><a href="#sensors" data-toggle="tab">Sensors</a></li>
-        <li><a href="#effectors" data-toggle="tab">Effectors</a></li>
-      </ul>
-
-      <div class="tab-content">
-        <div class="tab-pane active" id="configKeys"></div>
-        <div class="tab-pane" id="sensors"></div>
-        <div class="tab-pane" id="effectors"></div>
-      </div>
-    </div>
-
-    <script src="../../../style/js/underscore-min.js" type="text/javascript"></script>
-    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
-    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
-    <script src="../common.js" type="text/javascript"></script>
-    <script src="../items.js" type="text/javascript"></script>
-    <script type="text/javascript">
-        $(document).ready(function () {
-            var item = brooklyn.findItemOfType(items.entities, "brooklyn.entity.machine.MachineEntity");
-            $("#summary").html(brooklyn.typeSummary(item));
-            item.config.forEach(function (element) { $("#configKeys").append(brooklyn.configKeyCard(element)); });
-            item.sensors.forEach(function (element) { $("#sensors").append(brooklyn.sensorCard(element)); });
-            if (item.effectors != undefined) {
-                item.effectors.forEach(function (element) { $("#effectors").append(brooklyn.effectorCard(element)); });
-            }
-        });
-    </script>
-  </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cbe6f8e6/docs/website/learnmore/catalog/entities/brooklyn.entity.messaging.activemq.ActiveMQBroker.html
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/entities/brooklyn.entity.messaging.activemq.ActiveMQBroker.html b/docs/website/learnmore/catalog/entities/brooklyn.entity.messaging.activemq.ActiveMQBroker.html
deleted file mode 100644
index c3629b8..0000000
--- a/docs/website/learnmore/catalog/entities/brooklyn.entity.messaging.activemq.ActiveMQBroker.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-  <head>
-    <title>Brooklyn Entity - ActiveMQ Broker</title>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
-    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
-    <link rel="stylesheet" href="../items.css" type="text/css" media="screen"/>
-  </head>
-  <body>
-    <div id="container">
-      <div id="header">
-        <div id="identity">
-          <a href="http://brooklyncentral.github.com/" rel="home">Brooklyn</a>
-        </div>
-      </div>
-
-      <div id="summary"></div>
-
-      <ul class="nav nav-tabs">
-        <li class="active"><a href="#configKeys" data-toggle="tab">Config Keys</a></li>
-        <li><a href="#sensors" data-toggle="tab">Sensors</a></li>
-        <li><a href="#effectors" data-toggle="tab">Effectors</a></li>
-      </ul>
-
-      <div class="tab-content">
-        <div class="tab-pane active" id="configKeys"></div>
-        <div class="tab-pane" id="sensors"></div>
-        <div class="tab-pane" id="effectors"></div>
-      </div>
-    </div>
-
-    <script src="../../../style/js/underscore-min.js" type="text/javascript"></script>
-    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
-    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
-    <script src="../common.js" type="text/javascript"></script>
-    <script src="../items.js" type="text/javascript"></script>
-    <script type="text/javascript">
-        $(document).ready(function () {
-            var item = brooklyn.findItemOfType(items.entities, "brooklyn.entity.messaging.activemq.ActiveMQBroker");
-            $("#summary").html(brooklyn.typeSummary(item));
-            item.config.forEach(function (element) { $("#configKeys").append(brooklyn.configKeyCard(element)); });
-            item.sensors.forEach(function (element) { $("#sensors").append(brooklyn.sensorCard(element)); });
-            if (item.effectors != undefined) {
-                item.effectors.forEach(function (element) { $("#effectors").append(brooklyn.effectorCard(element)); });
-            }
-        });
-    </script>
-  </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cbe6f8e6/docs/website/learnmore/catalog/entities/brooklyn.entity.messaging.kafka.KafkaCluster.html
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/entities/brooklyn.entity.messaging.kafka.KafkaCluster.html b/docs/website/learnmore/catalog/entities/brooklyn.entity.messaging.kafka.KafkaCluster.html
deleted file mode 100644
index 7c8c8b5..0000000
--- a/docs/website/learnmore/catalog/entities/brooklyn.entity.messaging.kafka.KafkaCluster.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-  <head>
-    <title>Brooklyn Entity - Kafka</title>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
-    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
-    <link rel="stylesheet" href="../items.css" type="text/css" media="screen"/>
-  </head>
-  <body>
-    <div id="container">
-      <div id="header">
-        <div id="identity">
-          <a href="http://brooklyncentral.github.com/" rel="home">Brooklyn</a>
-        </div>
-      </div>
-
-      <div id="summary"></div>
-
-      <ul class="nav nav-tabs">
-        <li class="active"><a href="#configKeys" data-toggle="tab">Config Keys</a></li>
-        <li><a href="#sensors" data-toggle="tab">Sensors</a></li>
-        <li><a href="#effectors" data-toggle="tab">Effectors</a></li>
-      </ul>
-
-      <div class="tab-content">
-        <div class="tab-pane active" id="configKeys"></div>
-        <div class="tab-pane" id="sensors"></div>
-        <div class="tab-pane" id="effectors"></div>
-      </div>
-    </div>
-
-    <script src="../../../style/js/underscore-min.js" type="text/javascript"></script>
-    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
-    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
-    <script src="../common.js" type="text/javascript"></script>
-    <script src="../items.js" type="text/javascript"></script>
-    <script type="text/javascript">
-        $(document).ready(function () {
-            var item = brooklyn.findItemOfType(items.entities, "brooklyn.entity.messaging.kafka.KafkaCluster");
-            $("#summary").html(brooklyn.typeSummary(item));
-            item.config.forEach(function (element) { $("#configKeys").append(brooklyn.configKeyCard(element)); });
-            item.sensors.forEach(function (element) { $("#sensors").append(brooklyn.sensorCard(element)); });
-            if (item.effectors != undefined) {
-                item.effectors.forEach(function (element) { $("#effectors").append(brooklyn.effectorCard(element)); });
-            }
-        });
-    </script>
-  </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cbe6f8e6/docs/website/learnmore/catalog/entities/brooklyn.entity.messaging.qpid.QpidBroker.html
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/entities/brooklyn.entity.messaging.qpid.QpidBroker.html b/docs/website/learnmore/catalog/entities/brooklyn.entity.messaging.qpid.QpidBroker.html
deleted file mode 100644
index a805f46..0000000
--- a/docs/website/learnmore/catalog/entities/brooklyn.entity.messaging.qpid.QpidBroker.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-  <head>
-    <title>Brooklyn Entity - Qpid Broker</title>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
-    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
-    <link rel="stylesheet" href="../items.css" type="text/css" media="screen"/>
-  </head>
-  <body>
-    <div id="container">
-      <div id="header">
-        <div id="identity">
-          <a href="http://brooklyncentral.github.com/" rel="home">Brooklyn</a>
-        </div>
-      </div>
-
-      <div id="summary"></div>
-
-      <ul class="nav nav-tabs">
-        <li class="active"><a href="#configKeys" data-toggle="tab">Config Keys</a></li>
-        <li><a href="#sensors" data-toggle="tab">Sensors</a></li>
-        <li><a href="#effectors" data-toggle="tab">Effectors</a></li>
-      </ul>
-
-      <div class="tab-content">
-        <div class="tab-pane active" id="configKeys"></div>
-        <div class="tab-pane" id="sensors"></div>
-        <div class="tab-pane" id="effectors"></div>
-      </div>
-    </div>
-
-    <script src="../../../style/js/underscore-min.js" type="text/javascript"></script>
-    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
-    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
-    <script src="../common.js" type="text/javascript"></script>
-    <script src="../items.js" type="text/javascript"></script>
-    <script type="text/javascript">
-        $(document).ready(function () {
-            var item = brooklyn.findItemOfType(items.entities, "brooklyn.entity.messaging.qpid.QpidBroker");
-            $("#summary").html(brooklyn.typeSummary(item));
-            item.config.forEach(function (element) { $("#configKeys").append(brooklyn.configKeyCard(element)); });
-            item.sensors.forEach(function (element) { $("#sensors").append(brooklyn.sensorCard(element)); });
-            if (item.effectors != undefined) {
-                item.effectors.forEach(function (element) { $("#effectors").append(brooklyn.effectorCard(element)); });
-            }
-        });
-    </script>
-  </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cbe6f8e6/docs/website/learnmore/catalog/entities/brooklyn.entity.messaging.rabbit.RabbitBroker.html
----------------------------------------------------------------------
diff --git a/docs/website/learnmore/catalog/entities/brooklyn.entity.messaging.rabbit.RabbitBroker.html b/docs/website/learnmore/catalog/entities/brooklyn.entity.messaging.rabbit.RabbitBroker.html
deleted file mode 100644
index 50012b7..0000000
--- a/docs/website/learnmore/catalog/entities/brooklyn.entity.messaging.rabbit.RabbitBroker.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-  <head>
-    <title>Brooklyn Entity - RabbitMQ Broker</title>
-    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
-    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
-    <link rel="stylesheet" href="../items.css" type="text/css" media="screen"/>
-  </head>
-  <body>
-    <div id="container">
-      <div id="header">
-        <div id="identity">
-          <a href="http://brooklyncentral.github.com/" rel="home">Brooklyn</a>
-        </div>
-      </div>
-
-      <div id="summary"></div>
-
-      <ul class="nav nav-tabs">
-        <li class="active"><a href="#configKeys" data-toggle="tab">Config Keys</a></li>
-        <li><a href="#sensors" data-toggle="tab">Sensors</a></li>
-        <li><a href="#effectors" data-toggle="tab">Effectors</a></li>
-      </ul>
-
-      <div class="tab-content">
-        <div class="tab-pane active" id="configKeys"></div>
-        <div class="tab-pane" id="sensors"></div>
-        <div class="tab-pane" id="effectors"></div>
-      </div>
-    </div>
-
-    <script src="../../../style/js/underscore-min.js" type="text/javascript"></script>
-    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
-    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
-    <script src="../common.js" type="text/javascript"></script>
-    <script src="../items.js" type="text/javascript"></script>
-    <script type="text/javascript">
-        $(document).ready(function () {
-            var item = brooklyn.findItemOfType(items.entities, "brooklyn.entity.messaging.rabbit.RabbitBroker");
-            $("#summary").html(brooklyn.typeSummary(item));
-            item.config.forEach(function (element) { $("#configKeys").append(brooklyn.configKeyCard(element)); });
-            item.sensors.forEach(function (element) { $("#sensors").append(brooklyn.sensorCard(element)); });
-            if (item.effectors != undefined) {
-                item.effectors.forEach(function (element) { $("#effectors").append(brooklyn.effectorCard(element)); });
-            }
-        });
-    </script>
-  </body>
-</html>


[13/19] incubator-brooklyn git commit: Load the catalog items as json resource

Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/c7900364/docs/style/js/catalog/items.js
----------------------------------------------------------------------
diff --git a/docs/style/js/catalog/items.js b/docs/style/js/catalog/items.js
deleted file mode 100644
index 814636a..0000000
--- a/docs/style/js/catalog/items.js
+++ /dev/null
@@ -1,24674 +0,0 @@
-var items = {
-  "entities" : [ {
-    "type" : "brooklyn.entity.messaging.activemq.ActiveMQBroker",
-    "defaultVersion" : "5.7.0",
-    "name" : "ActiveMQ Broker",
-    "description" : "ActiveMQ is an open source message broker which fully implements the Java Message Service 1.1 (JMS)",
-    "iconUrl" : "classpath:///activemq-logo.png",
-    "config" : [ {
-      "name" : "activemq.install.mirror.url",
-      "type" : "java.lang.String",
-      "defaultValue" : "http://www.mirrorservice.org/sites/ftp.apache.org/activemq/apache-activemq",
-      "description" : "URL of mirror",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "activemq.jetty.port",
-      "type" : "brooklyn.location.PortRange",
-      "defaultValue" : "8161-65535",
-      "description" : "jetty port",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "activemq.templateConfigurationUrl",
-      "type" : "java.lang.String",
-      "defaultValue" : "classpath://brooklyn/entity/messaging/activemq/activemq.xml",
-      "description" : "Template file (in freemarker format) for the conf/activemq.xml file",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "children.startable.mode",
-      "type" : "java.lang.Enum",
-      "defaultValue" : null,
-      "description" : "children.startable.mode",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : [ {
-        "value" : "NONE",
-        "description" : "NONE"
-      }, {
-        "value" : "FOREGROUND",
-        "description" : "FOREGROUND"
-      }, {
-        "value" : "FOREGROUND_LATE",
-        "description" : "FOREGROUND_LATE"
-      }, {
-        "value" : "BACKGROUND",
-        "description" : "BACKGROUND"
-      }, {
-        "value" : "BACKGROUND_LATE",
-        "description" : "BACKGROUND_LATE"
-      } ],
-      "links" : null
-    }, {
-      "name" : "customize.latch",
-      "type" : "java.lang.Boolean",
-      "defaultValue" : null,
-      "description" : "Latch for blocking customize until ready",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "download.addon.urls",
-      "type" : "java.util.Map",
-      "defaultValue" : null,
-      "description" : "URL patterns for downloading named add-ons (will substitute things like ${version} automatically)",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "download.url",
-      "type" : "java.lang.String",
-      "defaultValue" : "${driver.mirrorUrl}/${version}/apache-activemq-${version}-bin.tar.gz",
-      "description" : "URL pattern for downloading the installer (will substitute things like ${version} automatically)",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "expandedinstall.dir",
-      "type" : "java.lang.String",
-      "defaultValue" : null,
-      "description" : "Directory for installed artifacts (e.g. expanded dir after unpacking .tgz)",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "files.runtime",
-      "type" : "java.util.Map",
-      "defaultValue" : null,
-      "description" : "Map of files to be copied, keyed by destination name relative to runDir",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "install.dir",
-      "type" : "java.lang.String",
-      "defaultValue" : "${config['onbox.base.dir']!config['brooklyn.datadir']!'/<ERROR>-ONBOX_BASE_DIR-not-set'}/installs/${(config['install.unique_label']??)?string(config['install.unique_label']!'X',(entity.entityType.simpleName)+((config['install.version']??)?string('_'+(config['install.version']!'X'),'')))}",
-      "description" : "Directory for this software to be installed in",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "install.latch",
-      "type" : "java.lang.Boolean",
-      "defaultValue" : null,
-      "description" : "Latch for blocking install until ready",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "install.skip",
-      "type" : "java.lang.Boolean",
-      "defaultValue" : false,
-      "description" : "Skip the driver install commands entirely, for pre-installed software",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "install.unique_label",
-      "type" : "java.lang.String",
-      "defaultValue" : null,
-      "description" : "Provides a label which uniquely identifies an installation, used in the computation of the install dir; this should include something readable, and must include a hash of all data which differentiates an installation (e.g. version, plugins, etc), but should be the same where install dirs can be shared to allow for re-use",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "install.version",
-      "type" : "java.lang.String",
-      "defaultValue" : "5.7.0",
-      "description" : "Suggested version",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "java.check.hostname.bug",
-      "type" : "java.lang.Boolean",
-      "defaultValue" : true,
-      "description" : "Check whether hostname is too long and will likely crash Javadue to bug 7089443",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "java.opts",
-      "type" : "java.util.Set",
-      "defaultValue" : [ ],
-      "description" : "Java command line options",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "java.sysprops",
-      "type" : "java.util.Map",
-      "defaultValue" : { },
-      "description" : "Java command line system properties",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "jmx.agent.mode",
-      "type" : "java.lang.Enum",
-      "defaultValue" : "AUTODETECT",
-      "description" : "What type of JMX agent to use; defaults to null (autodetect) which means JMXMP_AND_RMI allowing firewall access through a single port as well as local access supporting jconsole (unless JMX_SSL_ENABLED is set, in which case it is JMXMP only)",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : [ {
-        "value" : "AUTODETECT",
-        "description" : "AUTODETECT"
-      }, {
-        "value" : "JMXMP",
-        "description" : "JMXMP"
-      }, {
-        "value" : "JMXMP_AND_RMI",
-        "description" : "JMXMP_AND_RMI"
-      }, {
-        "value" : "JMX_RMI_CUSTOM_AGENT",
-        "description" : "JMX_RMI_CUSTOM_AGENT"
-      }, {
-        "value" : "JMX_RMI",
-        "description" : "JMX_RMI"
-      }, {
-        "value" : "NONE",
-        "description" : "NONE"
-      } ],
-      "links" : null
-    }, {
-      "name" : "jmx.context",
-      "type" : "java.lang.String",
-      "defaultValue" : "jmxrmi",
-      "description" : "JMX context path",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "jmx.direct.port",
-      "type" : "brooklyn.location.PortRange",
-      "defaultValue" : "31001-65535",
-      "description" : "JMX direct/private port (e.g. JMX RMI server port, or JMXMP port, but not RMI registry port)",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "jmx.enabled",
-      "type" : "java.lang.Boolean",
-      "defaultValue" : true,
-      "description" : "JMX enabled",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "jmx.password",
-      "type" : "java.lang.String",
-      "defaultValue" : "admin",
-      "description" : "JMX password",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "jmx.ssl.access.cert",
-      "type" : "java.security.cert.Certificate",
-      "defaultValue" : null,
-      "description" : "certificate of key used to access a JMX agent",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "jmx.ssl.access.key",
-      "type" : "java.security.PrivateKey",
-      "defaultValue" : null,
-      "description" : "key used to access a JMX agent (typically per entity, embedded in the managed JVM)",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "jmx.ssl.enabled",
-      "type" : "java.lang.Boolean",
-      "defaultValue" : false,
-      "description" : "JMX over JMXMP enabled with SSL/TLS",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "jmx.user",
-      "type" : "java.lang.String",
-      "defaultValue" : "admin",
-      "description" : "JMX username",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "launch.latch",
-      "type" : "java.lang.Boolean",
-      "defaultValue" : null,
-      "description" : "Latch for blocking launch until ready",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "openwire.port",
-      "type" : "brooklyn.location.PortRange",
-      "defaultValue" : "61616-65535",
-      "description" : "OpenWire port",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "post.install.command",
-      "type" : "java.lang.String",
-      "defaultValue" : null,
-      "description" : "Command to be run after the install method being called on the driver",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "post.launch.command",
-      "type" : "java.lang.String",
-      "defaultValue" : null,
-      "description" : "Command to be run after the launch method being called on the driver",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "pre.install.command",
-      "type" : "java.lang.String",
-      "defaultValue" : null,
-      "description" : "Command to be run prior to the install method being called on the driver",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "pre.launch.command",
-      "type" : "java.lang.String",
-      "defaultValue" : null,
-      "description" : "Command to be run prior to the launch method being called on the driver",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "provisioning.properties",
-      "type" : "java.util.Map",
-      "defaultValue" : { },
-      "description" : "Custom properties to be passed in when provisioning a new machine",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "resources.latch",
-      "type" : "java.lang.Boolean",
-      "defaultValue" : null,
-      "description" : "Latch for blocking resources until ready",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "rmi.registry.port",
-      "type" : "brooklyn.location.PortRange",
-      "defaultValue" : "1099,19099-65535",
-      "description" : "RMI registry port, used for discovering JMX (private) port",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "run.dir",
-      "type" : "java.lang.String",
-      "defaultValue" : "${config['onbox.base.dir']!config['brooklyn.datadir']!'/<ERROR>-ONBOX_BASE_DIR-not-set'}/apps/${entity.applicationId}/entities/${entity.entityType.simpleName}_${entity.id}",
-      "description" : "Directory for this software to be run from",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "setup.latch",
-      "type" : "java.lang.Boolean",
-      "defaultValue" : null,
-      "description" : "Latch for blocking setup until ready",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "shell.env",
-      "type" : "java.util.Map",
-      "defaultValue" : { },
-      "description" : "Map of environment variables to pass to the runtime shell",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "softwareProcess.maxSensorRebindDelay",
-      "type" : "brooklyn.util.time.Duration",
-      "defaultValue" : "10s",
-      "description" : "The maximum delay to apply when reconnecting sensors when rebinding to this entity. Brooklyn will wait a random amount of time, up to the value of this config key, to avoid a thundering herd problem when the entity shares its machine with several others. Set to null or to 0 to disable any delay.",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "start.latch",
-      "type" : "java.lang.Boolean",
-      "defaultValue" : null,
-      "description" : "Latch for blocking start until ready",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "start.timeout",
-      "type" : "brooklyn.util.time.Duration",
-      "defaultValue" : "2m",
-      "description" : "Time to wait for process and for SERVICE_UP before failing (in seconds, default 2m)",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "templates.runtime",
-      "type" : "java.util.Map",
-      "defaultValue" : null,
-      "description" : "Map of templates to be filled in and copied, keyed by destination name relative to runDir",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    } ],
-    "sensors" : [ {
-      "name" : "activemq.jetty.port",
-      "type" : "java.lang.Integer",
-      "description" : "jetty port",
-      "links" : null
-    }, {
-      "name" : "activemq.templateConfigurationUrl",
-      "type" : "java.lang.String",
-      "description" : "Template file (in freemarker format) for the conf/activemq.xml file",
-      "links" : null
-    }, {
-      "name" : "broker.url",
-      "type" : "java.lang.String",
-      "description" : "Broker Connection URL",
-      "links" : null
-    }, {
-      "name" : "download.addon.urls",
-      "type" : "java.util.Map",
-      "description" : "URL patterns for downloading named add-ons (will substitute things like ${version} automatically)",
-      "links" : null
-    }, {
-      "name" : "download.url",
-      "type" : "java.lang.String",
-      "description" : "URL pattern for downloading the installer (will substitute things like ${version} automatically)",
-      "links" : null
-    }, {
-      "name" : "expandedinstall.dir",
-      "type" : "java.lang.String",
-      "description" : "Directory for installed artifacts (e.g. expanded dir after unpacking .tgz)",
-      "links" : null
-    }, {
-      "name" : "host.address",
-      "type" : "java.lang.String",
-      "description" : "Host IP address",
-      "links" : null
-    }, {
-      "name" : "host.name",
-      "type" : "java.lang.String",
-      "description" : "Host name",
-      "links" : null
-    }, {
-      "name" : "host.subnet.address",
-      "type" : "java.lang.String",
-      "description" : "Host address as known internally in the subnet where it is running (if different to host.name)",
-      "links" : null
-    }, {
-      "name" : "host.subnet.hostname",
-      "type" : "java.lang.String",
-      "description" : "Host name as known internally in the subnet where it is running (if different to host.name)",
-      "links" : null
-    }, {
-      "name" : "install.dir",
-      "type" : "java.lang.String",
-      "description" : "Directory for this software to be installed in",
-      "links" : null
-    }, {
-      "name" : "jmx.context",
-      "type" : "java.lang.String",
-      "description" : "JMX context path",
-      "links" : null
-    }, {
-      "name" : "jmx.direct.port",
-      "type" : "java.lang.Integer",
-      "description" : "JMX direct/private port (e.g. JMX RMI server port, or JMXMP port, but not RMI registry port)",
-      "links" : null
-    }, {
-      "name" : "jmx.password",
-      "type" : "java.lang.String",
-      "description" : "JMX password",
-      "links" : null
-    }, {
-      "name" : "jmx.service.url",
-      "type" : "java.lang.String",
-      "description" : "The URL for connecting to the MBean Server",
-      "links" : null
-    }, {
-      "name" : "jmx.user",
-      "type" : "java.lang.String",
-      "description" : "JMX username",
-      "links" : null
-    }, {
-      "name" : "openwire.port",
-      "type" : "java.lang.Integer",
-      "description" : "OpenWire port",
-      "links" : null
-    }, {
-      "name" : "rmi.registry.port",
-      "type" : "java.lang.Integer",
-      "description" : "RMI registry port, used for discovering JMX (private) port",
-      "links" : null
-    }, {
-      "name" : "run.dir",
-      "type" : "java.lang.String",
-      "description" : "Directory for this software to be run from",
-      "links" : null
-    }, {
-      "name" : "service.isUp",
-      "type" : "java.lang.Boolean",
-      "description" : "Whether the service is active and availability (confirmed and monitored)",
-      "links" : null
-    }, {
-      "name" : "service.process.isRunning",
-      "type" : "java.lang.Boolean",
-      "description" : "Whether the process for the service is confirmed as running",
-      "links" : null
-    }, {
-      "name" : "service.state",
-      "type" : "brooklyn.entity.basic.Lifecycle",
-      "description" : "Actual lifecycle state of the service",
-      "links" : null
-    }, {
-      "name" : "softwareprocess.pid.file",
-      "type" : "java.lang.String",
-      "description" : "PID file",
-      "links" : null
-    }, {
-      "name" : "softwareservice.provisioningLocation",
-      "type" : "brooklyn.location.MachineProvisioningLocation",
-      "description" : "Location used to provision a machine where this is running",
-      "links" : null
-    } ],
-    "effectors" : [ {
-      "name" : "restart",
-      "returnType" : "void",
-      "parameters" : [ ],
-      "description" : "Restart the process/service represented by an entity",
-      "links" : null
-    }, {
-      "name" : "start",
-      "returnType" : "void",
-      "parameters" : [ {
-        "name" : "locations",
-        "type" : "java.lang.Object",
-        "description" : "The location or locations to start in, as a string, a location object, a list of strings, or a list of location objects",
-        "defaultValue" : null
-      } ],
-      "description" : "Start the process/service represented by an entity",
-      "links" : null
-    }, {
-      "name" : "stop",
-      "returnType" : "void",
-      "parameters" : [ ],
-      "description" : "Stop the process/service represented by an entity",
-      "links" : null
-    } ]
-  }, {
-    "type" : "brooklyn.entity.nosql.cassandra.CassandraFabric",
-    "name" : "Apache Cassandra Database Fabric",
-    "description" : "Cassandra is a highly scalable, eventually consistent, distributed, structured key-value store which provides a ColumnFamily-based data model richer than typical key/value systems",
-    "iconUrl" : "classpath:///cassandra-logo.jpeg",
-    "config" : [ {
-      "name" : "cassandra.fabric.datacenter.namer",
-      "type" : "com.google.common.base.Function",
-      "defaultValue" : null,
-      "description" : "Function used to provide the cassandra.replication.datacenterName for a given location",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "dynamiccfabric.memberspec",
-      "type" : "brooklyn.entity.proxying.EntitySpec",
-      "defaultValue" : null,
-      "description" : "entity spec for creating new cluster members",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "dynamicfabric.customChildFlags",
-      "type" : "java.util.Map",
-      "defaultValue" : { },
-      "description" : "Additional flags to be passed to children when they are being created",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "dynamicfabric.displayNamePrefix",
-      "type" : "java.lang.String",
-      "defaultValue" : null,
-      "description" : "Display name prefix, for created children",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "dynamicfabric.displayNameSuffix",
-      "type" : "java.lang.String",
-      "defaultValue" : null,
-      "description" : "Display name suffix, for created children",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "dynamicfabric.factory",
-      "type" : "brooklyn.entity.basic.EntityFactory",
-      "defaultValue" : null,
-      "description" : "factory for creating new cluster members",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "enricher.service_state.children_and_members.quorum.running",
-      "type" : "brooklyn.entity.basic.QuorumCheck",
-      "defaultValue" : "QuorumCheck[require=0,100.0%]",
-      "description" : "Problems check from children actual states (lifecycle), applied by default to members and children, not checking upness, but requiring by default that none are on-fire",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "enricher.service_state.children_and_members.quorum.up",
-      "type" : "brooklyn.entity.basic.QuorumCheck",
-      "defaultValue" : "QuorumCheck[require=1,0.0%]",
-      "description" : "Up check, applied by default to members, requiring at least one present and up",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "fabric.initial.quorumSize",
-      "type" : "java.lang.Integer",
-      "defaultValue" : -1,
-      "description" : "Initial fabric quorum size - number of initial nodes that must have been successfully started to report success (if less than 0, then use a value based on INITIAL_SIZE of clusters)",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "group.members.delegate",
-      "type" : "java.lang.Boolean",
-      "defaultValue" : false,
-      "description" : "Add delegate child entities for members of the group",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "group.members.delegate.nameFormat",
-      "type" : "java.lang.String",
-      "defaultValue" : "%s",
-      "description" : "Delegate members name format string (Use %s for the original entity display name)",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    } ],
-    "sensors" : [ {
-      "name" : "cassandra.cluster.datacenterUsages",
-      "type" : "com.google.common.collect.Multimap",
-      "description" : "Current set of datacenters in use, with nodes in each",
-      "links" : null
-    }, {
-      "name" : "cassandra.cluster.datacenters",
-      "type" : "java.util.Set",
-      "description" : "Current set of datacenters in use",
-      "links" : null
-    }, {
-      "name" : "cassandra.cluster.hostname",
-      "type" : "java.lang.String",
-      "description" : "Hostname to connect to cluster with",
-      "links" : null
-    }, {
-      "name" : "cassandra.cluster.seeds.current",
-      "type" : "java.util.Set",
-      "description" : "Current set of seeds to use to bootstrap the cluster",
-      "links" : null
-    }, {
-      "name" : "cassandra.cluster.seeds.hasPublished",
-      "type" : "java.lang.Boolean",
-      "description" : "Whether we have published any seeds",
-      "links" : null
-    }, {
-      "name" : "cassandra.cluster.thrift.port",
-      "type" : "java.lang.Integer",
-      "description" : "Cassandra Thrift RPC port to connect to cluster with",
-      "links" : null
-    }, {
-      "name" : "fabric.size",
-      "type" : "java.lang.Integer",
-      "description" : "Fabric size",
-      "links" : null
-    }, {
-      "name" : "group.members",
-      "type" : "java.util.Collection",
-      "description" : "Members of the group",
-      "links" : null
-    }, {
-      "name" : "group.members.added",
-      "type" : "brooklyn.entity.Entity",
-      "description" : "Entity added to group members",
-      "links" : null
-    }, {
-      "name" : "group.members.count",
-      "type" : "java.lang.Integer",
-      "description" : "Number of members",
-      "links" : null
-    }, {
-      "name" : "group.members.removed",
-      "type" : "brooklyn.entity.Entity",
-      "description" : "Entity removed from group members",
-      "links" : null
-    }, {
-      "name" : "service.isUp",
-      "type" : "java.lang.Boolean",
-      "description" : "Whether the service is active and availability (confirmed and monitored)",
-      "links" : null
-    }, {
-      "name" : "service.state",
-      "type" : "brooklyn.entity.basic.Lifecycle",
-      "description" : "Actual lifecycle state of the service",
-      "links" : null
-    } ],
-    "effectors" : [ {
-      "name" : "restart",
-      "returnType" : "void",
-      "parameters" : [ ],
-      "description" : "Restart the process/service represented by an entity",
-      "links" : null
-    }, {
-      "name" : "start",
-      "returnType" : "void",
-      "parameters" : [ {
-        "name" : "locations",
-        "type" : "java.lang.Object",
-        "description" : "The location or locations to start in, as a string, a location object, a list of strings, or a list of location objects",
-        "defaultValue" : null
-      } ],
-      "description" : "Start the process/service represented by an entity",
-      "links" : null
-    }, {
-      "name" : "stop",
-      "returnType" : "void",
-      "parameters" : [ ],
-      "description" : "Stop the process/service represented by an entity",
-      "links" : null
-    }, {
-      "name" : "update",
-      "returnType" : "void",
-      "parameters" : [ ],
-      "description" : "Updates the cluster members",
-      "links" : null
-    } ]
-  }, {
-    "type" : "brooklyn.entity.nosql.cassandra.CassandraDatacenter",
-    "name" : "Apache Cassandra Datacenter Cluster",
-    "description" : "Cassandra is a highly scalable, eventually consistent, distributed, structured key-value store which provides a ColumnFamily-based data model richer than typical key/value systems",
-    "iconUrl" : "classpath:///cassandra-logo.jpeg",
-    "config" : [ {
-      "name" : "cassandra.cluster.delayBeforeAdvertisingCluster",
-      "type" : "brooklyn.util.time.Duration",
-      "defaultValue" : "10s",
-      "description" : "Delay after cluster is started before checking and advertising its availability",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "cassandra.cluster.name",
-      "type" : "java.lang.String",
-      "defaultValue" : "BrooklynCluster",
-      "description" : "Name of the Cassandra cluster",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "cassandra.cluster.seedSupplier",
-      "type" : "com.google.common.base.Supplier",
-      "defaultValue" : null,
-      "description" : "For determining the seed nodes",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "cassandra.cluster.snitchName",
-      "type" : "java.lang.String",
-      "defaultValue" : "SimpleSnitch",
-      "description" : "Type of the Cassandra snitch",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "cassandra.cluster.tokenGenerator.class",
-      "type" : "java.lang.Class",
-      "defaultValue" : "class brooklyn.entity.nosql.cassandra.TokenGenerators$PosNeg63TokenGenerator",
-      "description" : "For determining the tokens of nodes",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "cassandra.cluster.tokenShift",
-      "type" : "java.math.BigInteger",
-      "defaultValue" : null,
-      "description" : "Delta applied to all tokens generated for this Cassandra datacenter, useful when configuring multiple datacenters which should be shifted; if not set, a random shift is applied. (Pass 0 to prevent any shift.)",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "cassandra.cluster.useVnodes",
-      "type" : "java.lang.Boolean",
-      "defaultValue" : false,
-      "description" : "Determines whether to use vnodes; if doing so, tokens will not be explicitly assigned to nodes in the cluster",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "cassandra.numTokensPerNode",
-      "type" : "java.lang.Integer",
-      "defaultValue" : 256,
-      "description" : "Number of tokens per node; if using vnodes, should set this to a value like 256; will be overridden to 1 if USE_VNODES==false",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "cluster.initial.quorumSize",
-      "type" : "java.lang.Integer",
-      "defaultValue" : -1,
-      "description" : "Initial cluster quorum size - number of initial nodes that must have been successfully started to report success (if < 0, then use value of INITIAL_SIZE)",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "cluster.initial.size",
-      "type" : "java.lang.Integer",
-      "defaultValue" : 1,
-      "description" : "Initial cluster size",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "dynamiccluster.availabilityZones",
-      "type" : "java.util.Collection",
-      "defaultValue" : null,
-      "description" : "availability zones to use (if non-null, overrides other configuration)",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "dynamiccluster.customChildFlags",
-      "type" : "java.util.Map",
-      "defaultValue" : { },
-      "description" : "Additional flags to be passed to children when they are being created",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "dynamiccluster.factory",
-      "type" : "brooklyn.entity.basic.EntityFactory",
-      "defaultValue" : null,
-      "description" : "factory for creating new cluster members",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "dynamiccluster.memberspec",
-      "type" : "brooklyn.entity.proxying.EntitySpec",
-      "defaultValue" : null,
-      "description" : "entity spec for creating new cluster members",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "dynamiccluster.numAvailabilityZones",
-      "type" : "java.lang.Integer",
-      "defaultValue" : null,
-      "description" : "number of availability zones to use (will attempt to auto-discover this number)",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "dynamiccluster.quarantineFailedEntities",
-      "type" : "java.lang.Boolean",
-      "defaultValue" : true,
-      "description" : "If true, will quarantine entities that fail to start; if false, will get rid of them (i.e. delete them)",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "dynamiccluster.removalstrategy",
-      "type" : "com.google.common.base.Function",
-      "defaultValue" : null,
-      "description" : "strategy for deciding what to remove when down-sizing",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "dynamiccluster.zone.enable",
-      "type" : "java.lang.Boolean",
-      "defaultValue" : false,
-      "description" : "Whether to use availability zones, or just deploy everything into the generic location",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "dynamiccluster.zone.failureDetector",
-      "type" : "brooklyn.entity.group.DynamicCluster$ZoneFailureDetector",
-      "defaultValue" : "brooklyn.entity.group.zoneaware.ProportionalZoneFailureDetector@b7193fc",
-      "description" : "Zone failure detector",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "dynamiccluster.zone.placementStrategy",
-      "type" : "brooklyn.entity.group.DynamicCluster$NodePlacementStrategy",
-      "defaultValue" : "brooklyn.entity.group.zoneaware.BalancingNodePlacementStrategy@37f02eaa",
-      "description" : "Node placement strategy",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "enricher.service_state.children_and_members.quorum.running",
-      "type" : "brooklyn.entity.basic.QuorumCheck",
-      "defaultValue" : "QuorumCheck[require=0,100.0%]",
-      "description" : "Problems check from children actual states (lifecycle), applied by default to members and children, not checking upness, but requiring by default that none are on-fire",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "enricher.service_state.children_and_members.quorum.up",
-      "type" : "brooklyn.entity.basic.QuorumCheck",
-      "defaultValue" : "QuorumCheck[require=1,0.0%]",
-      "description" : "Up check, applied by default to members, requiring at least one present and up",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "group.members.delegate",
-      "type" : "java.lang.Boolean",
-      "defaultValue" : false,
-      "description" : "Add delegate child entities for members of the group",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "group.members.delegate.nameFormat",
-      "type" : "java.lang.String",
-      "defaultValue" : "%s",
-      "description" : "Delegate members name format string (Use %s for the original entity display name)",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    } ],
-    "sensors" : [ {
-      "name" : "cassandra.cluster.datacenterUsages",
-      "type" : "com.google.common.collect.Multimap",
-      "description" : "Current set of datacenters in use, with nodes in each",
-      "links" : null
-    }, {
-      "name" : "cassandra.cluster.datacenters",
-      "type" : "java.util.Set",
-      "description" : "Current set of datacenters in use",
-      "links" : null
-    }, {
-      "name" : "cassandra.cluster.first.node.started.utc",
-      "type" : "java.lang.Long",
-      "description" : "Time (UTC) when the first node was started",
-      "links" : null
-    }, {
-      "name" : "cassandra.cluster.hostname",
-      "type" : "java.lang.String",
-      "description" : "Hostname to connect to cluster with",
-      "links" : null
-    }, {
-      "name" : "cassandra.cluster.metrics.processCpuTime.fraction.perNode",
-      "type" : "java.lang.Double",
-      "description" : "Fraction of CPU time used (percentage reported by JMX), averaged over all nodes",
-      "links" : null
-    }, {
-      "name" : "cassandra.cluster.metrics.processCpuTime.fraction.windowed",
-      "type" : "java.lang.Double",
-      "description" : "Fraction of CPU time used (percentage, over time window), averaged over all nodes",
-      "links" : null
-    }, {
-      "name" : "cassandra.cluster.name",
-      "type" : "java.lang.String",
-      "description" : "Name of the Cassandra cluster",
-      "links" : null
-    }, {
-      "name" : "cassandra.cluster.nodes",
-      "type" : "java.util.List",
-      "description" : "List of host:port of all active nodes in the cluster (thrift port, and public hostname/IP)",
-      "links" : null
-    }, {
-      "name" : "cassandra.cluster.read.active",
-      "type" : "java.lang.Integer",
-      "description" : "Current active ReadStage tasks",
-      "links" : null
-    }, {
-      "name" : "cassandra.cluster.read.pending",
-      "type" : "java.lang.Long",
-      "description" : "Current pending ReadStage tasks",
-      "links" : null
-    }, {
-      "name" : "cassandra.cluster.schema.versions.count",
-      "type" : "java.lang.Integer",
-      "description" : "Number of different schema versions in the cluster; should be 1 for a healthy cluster, 0 when off; 2 and above indicats a Schema Disagreement Error (and keyspace access may fail)",
-      "links" : null
-    }, {
-      "name" : "cassandra.cluster.seeds.current",
-      "type" : "java.util.Set",
-      "description" : "Current set of seeds to use to bootstrap the cluster",
-      "links" : null
-    }, {
-      "name" : "cassandra.cluster.seeds.hasPublished",
-      "type" : "java.lang.Boolean",
-      "description" : "Whether we have published any seeds",
-      "links" : null
-    }, {
-      "name" : "cassandra.cluster.start.nodes.queued",
-      "type" : "java.util.List",
-      "description" : "Nodes queued for starting (for sequential start)",
-      "links" : null
-    }, {
-      "name" : "cassandra.cluster.thrift.latency.perNode",
-      "type" : "java.lang.Long",
-      "description" : "Latency for thrift port connection  averaged over all nodes (ms)",
-      "links" : null
-    }, {
-      "name" : "cassandra.cluster.thrift.port",
-      "type" : "java.lang.Integer",
-      "description" : "Cassandra Thrift RPC port to connect to cluster with",
-      "links" : null
-    }, {
-      "name" : "cassandra.cluster.write.active",
-      "type" : "java.lang.Integer",
-      "description" : "Current active MutationStage tasks",
-      "links" : null
-    }, {
-      "name" : "cassandra.cluster.write.pending",
-      "type" : "java.lang.Long",
-      "description" : "Current pending MutationStage tasks",
-      "links" : null
-    }, {
-      "name" : "cassandra.reads.perSec.last.perNode",
-      "type" : "java.lang.Double",
-      "description" : "Reads/sec (last datapoint) averaged over all nodes",
-      "links" : null
-    }, {
-      "name" : "cassandra.reads.perSec.windowed.perNode",
-      "type" : "java.lang.Double",
-      "description" : "Reads/sec (over time window) averaged over all nodes",
-      "links" : null
-    }, {
-      "name" : "cassandra.thrift.latency.windowed.perNode",
-      "type" : "java.lang.Double",
-      "description" : "Latency for thrift port (ms, over time window) averaged over all nodes",
-      "links" : null
-    }, {
-      "name" : "cassandra.write.perSec.last.perNode",
-      "type" : "java.lang.Double",
-      "description" : "Writes/sec (last datapoint) averaged over all nodes",
-      "links" : null
-    }, {
-      "name" : "cassandra.writes.perSec.windowed.perNode",
-      "type" : "java.lang.Double",
-      "description" : "Writes/sec (over time window) averaged over all nodes",
-      "links" : null
-    }, {
-      "name" : "cluster.entity",
-      "type" : "brooklyn.entity.Entity",
-      "description" : "The cluster an entity is a member of",
-      "links" : null
-    }, {
-      "name" : "cluster.first",
-      "type" : "java.lang.Boolean",
-      "description" : "Set on an entity if it is the first member of a cluster",
-      "links" : null
-    }, {
-      "name" : "cluster.first.entity",
-      "type" : "brooklyn.entity.Entity",
-      "description" : "The first member of the cluster",
-      "links" : null
-    }, {
-      "name" : "cluster.member",
-      "type" : "java.lang.Boolean",
-      "description" : "Set on an entity if it is a member of a cluster",
-      "links" : null
-    }, {
-      "name" : "datastore.url",
-      "type" : "java.lang.String",
-      "description" : "Primary contact URL for a datastore (e.g. mysql://localhost:3306/)",
-      "links" : null
-    }, {
-      "name" : "dynamiccluster.entityQuarantined",
-      "type" : "brooklyn.entity.Entity",
-      "description" : "Entity failed to start, and has been quarantined",
-      "links" : null
-    }, {
-      "name" : "dynamiccluster.failedSubLocations",
-      "type" : "java.util.Set",
-      "description" : "Sub locations that seem to have failed",
-      "links" : null
-    }, {
-      "name" : "dynamiccluster.quarantineGroup",
-      "type" : "brooklyn.entity.group.QuarantineGroup",
-      "description" : "Group of quarantined entities that failed to start",
-      "links" : null
-    }, {
-      "name" : "dynamiccluster.subLocations",
-      "type" : "java.util.List",
-      "description" : "Locations for each availability zone to use",
-      "links" : null
-    }, {
-      "name" : "group.members",
-      "type" : "java.util.Collection",
-      "description" : "Members of the group",
-      "links" : null
-    }, {
-      "name" : "group.members.added",
-      "type" : "brooklyn.entity.Entity",
-      "description" : "Entity added to group members",
-      "links" : null
-    }, {
-      "name" : "group.members.count",
-      "type" : "java.lang.Integer",
-      "description" : "Number of members",
-      "links" : null
-    }, {
-      "name" : "group.members.removed",
-      "type" : "brooklyn.entity.Entity",
-      "description" : "Entity removed from group members",
-      "links" : null
-    }, {
-      "name" : "service.isUp",
-      "type" : "java.lang.Boolean",
-      "description" : "Whether the service is active and availability (confirmed and monitored)",
-      "links" : null
-    }, {
-      "name" : "service.state",
-      "type" : "brooklyn.entity.basic.Lifecycle",
-      "description" : "Actual lifecycle state of the service",
-      "links" : null
-    } ],
-    "effectors" : [ {
-      "name" : "executeScript",
-      "returnType" : "java.lang.String",
-      "parameters" : [ {
-        "name" : "commands",
-        "type" : "java.lang.String",
-        "description" : null,
-        "defaultValue" : null
-      } ],
-      "description" : "executes the given script contents using cassandra-cli",
-      "links" : null
-    }, {
-      "name" : "replaceMember",
-      "returnType" : "java.lang.String",
-      "parameters" : [ {
-        "name" : "memberId",
-        "type" : "java.lang.String",
-        "description" : "The entity id of a member to be replaced",
-        "defaultValue" : null
-      } ],
-      "description" : "Replaces the entity with the given ID, if it is a member; first adds a new member, then removes this one. Returns id of the new entity; or throws exception if couldn't be replaced.",
-      "links" : null
-    }, {
-      "name" : "resize",
-      "returnType" : "java.lang.Integer",
-      "parameters" : [ {
-        "name" : "desiredSize",
-        "type" : "java.lang.Integer",
-        "description" : "The new size of the cluster",
-        "defaultValue" : null
-      } ],
-      "description" : "Changes the size of the entity (e.g. the number of nodes in a cluster)",
-      "links" : null
-    }, {
-      "name" : "resizeByDelta",
-      "returnType" : "java.util.Collection",
-      "parameters" : [ {
-        "name" : "delta",
-        "type" : "int",
-        "description" : "The change in number of nodes",
-        "defaultValue" : null
-      } ],
-      "description" : "Changes the size of the cluster.",
-      "links" : null
-    }, {
-      "name" : "restart",
-      "returnType" : "void",
-      "parameters" : [ ],
-      "description" : "Restart the process/service represented by an entity",
-      "links" : null
-    }, {
-      "name" : "start",
-      "returnType" : "void",
-      "parameters" : [ {
-        "name" : "locations",
-        "type" : "java.lang.Object",
-        "description" : "The location or locations to start in, as a string, a location object, a list of strings, or a list of location objects",
-        "defaultValue" : null
-      } ],
-      "description" : "Start the process/service represented by an entity",
-      "links" : null
-    }, {
-      "name" : "stop",
-      "returnType" : "void",
-      "parameters" : [ ],
-      "description" : "Stop the process/service represented by an entity",
-      "links" : null
-    }, {
-      "name" : "update",
-      "returnType" : "void",
-      "parameters" : [ ],
-      "description" : "Updates the cluster members",
-      "links" : null
-    } ]
-  }, {
-    "type" : "brooklyn.entity.nosql.cassandra.CassandraNode",
-    "defaultVersion" : "1.2.16",
-    "name" : "Apache Cassandra Node",
-    "description" : "Cassandra is a highly scalable, eventually consistent, distributed, structured key-value store which provides a ColumnFamily-based data model richer than typical key/value systems",
-    "iconUrl" : "classpath:///cassandra-logo.jpeg",
-    "config" : [ {
-      "name" : "cassandra.broadcastAddressSensor",
-      "type" : "java.lang.String",
-      "defaultValue" : null,
-      "description" : "sensor name from which to take the broadcast address; default (null) is a smart lookup",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "cassandra.cluster.name",
-      "type" : "java.lang.String",
-      "defaultValue" : "BrooklynCluster",
-      "description" : "Name of the Cassandra cluster",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "cassandra.cluster.seeds.initial",
-      "type" : "java.util.Set",
-      "defaultValue" : null,
-      "description" : "List of cluster nodes to seed this node",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "cassandra.cluster.snitchName",
-      "type" : "java.lang.String",
-      "defaultValue" : "SimpleSnitch",
-      "description" : "Type of the Cassandra snitch",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "cassandra.config.customSnitchUrl",
-      "type" : "java.lang.String",
-      "defaultValue" : null,
-      "description" : "URL for a jar file to be uploaded (e.g. \"classpath://brooklyn/entity/nosql/cassandra/cassandra-multicloud-snitch.jar\"); defaults to null which means nothing to upload",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "cassandra.config.fileName",
-      "type" : "java.lang.String",
-      "defaultValue" : "cassandra.yaml",
-      "description" : "Name for the copied config file",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "cassandra.config.rackdc.fileName",
-      "type" : "java.lang.String",
-      "defaultValue" : "cassandra-rackdc.properties",
-      "description" : "Name for the copied rackdc config file (used for configuring replication, when a suitable snitch is used)",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "cassandra.config.rackdc.templateUrl",
-      "type" : "java.lang.String",
-      "defaultValue" : "classpath://brooklyn/entity/nosql/cassandra/cassandra-rackdc.properties",
-      "description" : "Template file (in freemarker format) for the cassandra-rackdc.properties config file",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "cassandra.config.templateUrl",
-      "type" : "java.lang.String",
-      "defaultValue" : "classpath://brooklyn/entity/nosql/cassandra/cassandra-${entity.majorMinorVersion}.yaml",
-      "description" : "A URL (in freemarker format) for a cassandra.yaml config file (in freemarker format)",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "cassandra.gossip.port",
-      "type" : "brooklyn.location.PortRange",
-      "defaultValue" : "7000-65535",
-      "description" : "Cassandra Gossip communications port",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "cassandra.install.mirror.url",
-      "type" : "java.lang.String",
-      "defaultValue" : "http://www.mirrorservice.org/sites/ftp.apache.org/cassandra",
-      "description" : "URL of mirror",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "cassandra.install.tgzUrl",
-      "type" : "java.lang.String",
-      "defaultValue" : null,
-      "description" : "URL of TGZ download file",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "cassandra.listenAddressSensor",
-      "type" : "java.lang.String",
-      "defaultValue" : null,
-      "description" : "sensor name from which to take the listen address; default (null) is a smart lookup",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "cassandra.native.port",
-      "type" : "brooklyn.location.PortRange",
-      "defaultValue" : "9042-65535",
-      "description" : "Cassandra Native Transport port",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "cassandra.numTokensPerNode",
-      "type" : "java.lang.Integer",
-      "defaultValue" : 1,
-      "description" : "Number of tokens per node; if using vnodes, should set this to a value like 256",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "cassandra.replication.datacenterName",
-      "type" : "java.lang.String",
-      "defaultValue" : null,
-      "description" : "Datacenter name (used for configuring replication, when a suitable snitch is used)",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "cassandra.replication.rackName",
-      "type" : "java.lang.String",
-      "defaultValue" : null,
-      "description" : "Rack name (used for configuring replication, when a suitable snitch is used)",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "cassandra.rpcAddressSensor",
-      "type" : "java.lang.String",
-      "defaultValue" : null,
-      "description" : "sensor name from which to take the RPC address; default (null) is 0.0.0.0",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "cassandra.ssl-gossip.port",
-      "type" : "brooklyn.location.PortRange",
-      "defaultValue" : "7001-65535",
-      "description" : "Cassandra Gossip SSL communications port",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "cassandra.thrift.port",
-      "type" : "brooklyn.location.PortRange",
-      "defaultValue" : "9160-65535",
-      "description" : "Cassandra Thrift RPC port",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "cassandra.token",
-      "type" : "java.math.BigInteger",
-      "defaultValue" : null,
-      "description" : "Cassandra Token",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "cassandra.tokens",
-      "type" : "java.util.Set",
-      "defaultValue" : null,
-      "description" : "Cassandra Tokens",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "children.startable.mode",
-      "type" : "java.lang.Enum",
-      "defaultValue" : null,
-      "description" : "children.startable.mode",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : [ {
-        "value" : "NONE",
-        "description" : "NONE"
-      }, {
-        "value" : "FOREGROUND",
-        "description" : "FOREGROUND"
-      }, {
-        "value" : "FOREGROUND_LATE",
-        "description" : "FOREGROUND_LATE"
-      }, {
-        "value" : "BACKGROUND",
-        "description" : "BACKGROUND"
-      }, {
-        "value" : "BACKGROUND_LATE",
-        "description" : "BACKGROUND_LATE"
-      } ],
-      "links" : null
-    }, {
-      "name" : "customize.latch",
-      "type" : "java.lang.Boolean",
-      "defaultValue" : null,
-      "description" : "Latch for blocking customize until ready",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "datastore.creation.script.contents",
-      "type" : "java.lang.String",
-      "defaultValue" : "",
-      "description" : "Contensts of creation script to initialize the datastore",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "datastore.creation.script.url",
-      "type" : "java.lang.String",
-      "defaultValue" : "",
-      "description" : "URL of creation script to use to initialize the datastore (ignored if contents are specified)",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "download.addon.urls",
-      "type" : "java.util.Map",
-      "defaultValue" : null,
-      "description" : "URL patterns for downloading named add-ons (will substitute things like ${version} automatically)",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "download.url",
-      "type" : "java.lang.String",
-      "defaultValue" : "${driver.mirrorUrl}/${version}/apache-cassandra-${version}-bin.tar.gz",
-      "description" : "URL pattern for downloading the installer (will substitute things like ${version} automatically)",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "expandedinstall.dir",
-      "type" : "java.lang.String",
-      "defaultValue" : null,
-      "description" : "Directory for installed artifacts (e.g. expanded dir after unpacking .tgz)",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "files.runtime",
-      "type" : "java.util.Map",
-      "defaultValue" : null,
-      "description" : "Map of files to be copied, keyed by destination name relative to runDir",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "install.dir",
-      "type" : "java.lang.String",
-      "defaultValue" : "${config['onbox.base.dir']!config['brooklyn.datadir']!'/<ERROR>-ONBOX_BASE_DIR-not-set'}/installs/${(config['install.unique_label']??)?string(config['install.unique_label']!'X',(entity.entityType.simpleName)+((config['install.version']??)?string('_'+(config['install.version']!'X'),'')))}",
-      "description" : "Directory for this software to be installed in",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "install.latch",
-      "type" : "java.lang.Boolean",
-      "defaultValue" : null,
-      "description" : "Latch for blocking install until ready",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "install.skip",
-      "type" : "java.lang.Boolean",
-      "defaultValue" : false,
-      "description" : "Skip the driver install commands entirely, for pre-installed software",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "install.unique_label",
-      "type" : "java.lang.String",
-      "defaultValue" : null,
-      "description" : "Provides a label which uniquely identifies an installation, used in the computation of the install dir; this should include something readable, and must include a hash of all data which differentiates an installation (e.g. version, plugins, etc), but should be the same where install dirs can be shared to allow for re-use",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "install.version",
-      "type" : "java.lang.String",
-      "defaultValue" : "1.2.16",
-      "description" : "Suggested version",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "java.check.hostname.bug",
-      "type" : "java.lang.Boolean",
-      "defaultValue" : true,
-      "description" : "Check whether hostname is too long and will likely crash Javadue to bug 7089443",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "java.metrics.mxbeanStatsEnabled",
-      "type" : "java.lang.Boolean",
-      "defaultValue" : true,
-      "description" : "Enables collection of JVM stats from the MXBeans, such as memory and thread usage (default is true)",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "java.opts",
-      "type" : "java.util.Set",
-      "defaultValue" : [ ],
-      "description" : "Java command line options",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "java.sysprops",
-      "type" : "java.util.Map",
-      "defaultValue" : { },
-      "description" : "Java command line system properties",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "jmx.agent.mode",
-      "type" : "java.lang.Enum",
-      "defaultValue" : "JMXMP_AND_RMI",
-      "description" : "What type of JMX agent to use; defaults to null (autodetect) which means JMXMP_AND_RMI allowing firewall access through a single port as well as local access supporting jconsole (unless JMX_SSL_ENABLED is set, in which case it is JMXMP only)",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : [ {
-        "value" : "AUTODETECT",
-        "description" : "AUTODETECT"
-      }, {
-        "value" : "JMXMP",
-        "description" : "JMXMP"
-      }, {
-        "value" : "JMXMP_AND_RMI",
-        "description" : "JMXMP_AND_RMI"
-      }, {
-        "value" : "JMX_RMI_CUSTOM_AGENT",
-        "description" : "JMX_RMI_CUSTOM_AGENT"
-      }, {
-        "value" : "JMX_RMI",
-        "description" : "JMX_RMI"
-      }, {
-        "value" : "NONE",
-        "description" : "NONE"
-      } ],
-      "links" : null
-    }, {
-      "name" : "jmx.context",
-      "type" : "java.lang.String",
-      "defaultValue" : "jmxrmi",
-      "description" : "JMX context path",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "jmx.direct.port",
-      "type" : "brooklyn.location.PortRange",
-      "defaultValue" : "31001-65535",
-      "description" : "JMX direct/private port (e.g. JMX RMI server port, or JMXMP port, but not RMI registry port)",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "jmx.enabled",
-      "type" : "java.lang.Boolean",
-      "defaultValue" : true,
-      "description" : "JMX enabled",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "jmx.password",
-      "type" : "java.lang.String",
-      "defaultValue" : null,
-      "description" : "JMX password",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "jmx.ssl.access.cert",
-      "type" : "java.security.cert.Certificate",
-      "defaultValue" : null,
-      "description" : "certificate of key used to access a JMX agent",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "jmx.ssl.access.key",
-      "type" : "java.security.PrivateKey",
-      "defaultValue" : null,
-      "description" : "key used to access a JMX agent (typically per entity, embedded in the managed JVM)",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "jmx.ssl.enabled",
-      "type" : "java.lang.Boolean",
-      "defaultValue" : false,
-      "description" : "JMX over JMXMP enabled with SSL/TLS",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "jmx.user",
-      "type" : "java.lang.String",
-      "defaultValue" : null,
-      "description" : "JMX username",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "launch.latch",
-      "type" : "java.lang.Boolean",
-      "defaultValue" : null,
-      "description" : "Latch for blocking launch until ready",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "post.install.command",
-      "type" : "java.lang.String",
-      "defaultValue" : null,
-      "description" : "Command to be run after the install method being called on the driver",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "post.launch.command",
-      "type" : "java.lang.String",
-      "defaultValue" : null,
-      "description" : "Command to be run after the launch method being called on the driver",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "pre.install.command",
-      "type" : "java.lang.String",
-      "defaultValue" : null,
-      "description" : "Command to be run prior to the install method being called on the driver",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "pre.launch.command",
-      "type" : "java.lang.String",
-      "defaultValue" : null,
-      "description" : "Command to be run prior to the launch method being called on the driver",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "provisioning.properties",
-      "type" : "java.util.Map",
-      "defaultValue" : { },
-      "description" : "Custom properties to be passed in when provisioning a new machine",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "resources.latch",
-      "type" : "java.lang.Boolean",
-      "defaultValue" : null,
-      "description" : "Latch for blocking resources until ready",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "rmi.registry.port",
-      "type" : "brooklyn.location.PortRange",
-      "defaultValue" : "7199",
-      "description" : "RMI registry port, used for discovering JMX (private) port",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "run.dir",
-      "type" : "java.lang.String",
-      "defaultValue" : "${config['onbox.base.dir']!config['brooklyn.datadir']!'/<ERROR>-ONBOX_BASE_DIR-not-set'}/apps/${entity.applicationId}/entities/${entity.entityType.simpleName}_${entity.id}",
-      "description" : "Directory for this software to be run from",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "setup.latch",
-      "type" : "java.lang.Boolean",
-      "defaultValue" : null,
-      "description" : "Latch for blocking setup until ready",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "shell.env",
-      "type" : "java.util.Map",
-      "defaultValue" : { },
-      "description" : "Map of environment variables to pass to the runtime shell",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "softwareProcess.maxSensorRebindDelay",
-      "type" : "brooklyn.util.time.Duration",
-      "defaultValue" : "10s",
-      "description" : "The maximum delay to apply when reconnecting sensors when rebinding to this entity. Brooklyn will wait a random amount of time, up to the value of this config key, to avoid a thundering herd problem when the entity shares its machine with several others. Set to null or to 0 to disable any delay.",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "start.latch",
-      "type" : "java.lang.Boolean",
-      "defaultValue" : null,
-      "description" : "Latch for blocking start until ready",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "start.timeout",
-      "type" : "brooklyn.util.time.Duration",
-      "defaultValue" : "5m",
-      "description" : "Time to wait for process and for SERVICE_UP before failing (in seconds, default 2m)",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "templates.runtime",
-      "type" : "java.util.Map",
-      "defaultValue" : null,
-      "description" : "Map of templates to be filled in and copied, keyed by destination name relative to runDir",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    } ],
-    "sensors" : [ {
-      "name" : "cassandra.cluster.name",
-      "type" : "java.lang.String",
-      "description" : "Name of the Cassandra cluster",
-      "links" : null
-    }, {
-      "name" : "cassandra.gossip.port",
-      "type" : "java.lang.Integer",
-      "description" : "Cassandra Gossip communications port",
-      "links" : null
-    }, {
-      "name" : "cassandra.liveNodeCount",
-      "type" : "java.lang.Integer",
-      "description" : "Number of live nodes in cluster",
-      "links" : null
-    }, {
-      "name" : "cassandra.native.port",
-      "type" : "java.lang.Integer",
-      "description" : "Cassandra Native Transport port",
-      "links" : null
-    }, {
-      "name" : "cassandra.peers",
-      "type" : "java.lang.Integer",
-      "description" : "Number of peers in cluster",
-      "links" : null
-    }, {
-      "name" : "cassandra.read.active",
-      "type" : "java.lang.Integer",
-      "description" : "Current active ReadStage tasks",
-      "links" : null
-    }, {
-      "name" : "cassandra.read.completed",
-      "type" : "java.lang.Long",
-      "description" : "Total completed ReadStage tasks",
-      "links" : null
-    }, {
-      "name" : "cassandra.read.pending",
-      "type" : "java.lang.Long",
-      "description" : "Current pending ReadStage tasks",
-      "links" : null
-    }, {
-      "name" : "cassandra.reads.perSec.last",
-      "type" : "java.lang.Double",
-      "description" : "Reads/sec (last datapoint)",
-      "links" : null
-    }, {
-      "name" : "cassandra.reads.perSec.windowed",
-      "type" : "java.lang.Double",
-      "description" : "Reads/sec (over time window)",
-      "links" : null
-    }, {
-      "name" : "cassandra.replication.datacenterName",
-      "type" : "java.lang.String",
-      "description" : "Datacenter name (used for configuring replication, when a suitable snitch is used)",
-      "links" : null
-    }, {
-      "name" : "cassandra.replication.rackName",
-      "type" : "java.lang.String",
-      "description" : "Rack name (used for configuring replication, when a suitable snitch is used)",
-      "links" : null
-    }, {
-      "name" : "cassandra.service.jmx.up",
-      "type" : "java.lang.Boolean",
-      "description" : "Whether JMX is up for this service",
-      "links" : null
-    }, {
-      "name" : "cassandra.ssl-gossip.port",
-      "type" : "java.lang.Integer",
-      "description" : "Cassandra Gossip SSL communications port",
-      "links" : null
-    }, {
-      "name" : "cassandra.thrift.latency",
-      "type" : "java.lang.Long",
-      "description" : "Latency for thrift port connection (ms) or null if down",
-      "links" : null
-    }, {
-      "name" : "cassandra.thrift.latency.windowed",
-      "type" : "java.lang.Double",
-      "description" : "Latency for thrift port (ms, averaged over time window)",
-      "links" : null
-    }, {
-      "name" : "cassandra.thrift.port",
-      "type" : "java.lang.Integer",
-      "description" : "Cassandra Thrift RPC port",
-      "links" : null
-    }, {
-      "name" : "cassandra.token",
-      "type" : "java.math.BigInteger",
-      "description" : "Cassandra Token",
-      "links" : null
-    }, {
-      "name" : "cassandra.tokens",
-      "type" : "java.util.Set",
-      "description" : "Cassandra Tokens",
-      "links" : null
-    }, {
-      "name" : "cassandra.write.active",
-      "type" : "java.lang.Integer",
-      "description" : "Current active MutationStage tasks",
-      "links" : null
-    }, {
-      "name" : "cassandra.write.completed",
-      "type" : "java.lang.Long",
-      "description" : "Total completed MutationStage tasks",
-      "links" : null
-    }, {
-      "name" : "cassandra.write.pending",
-      "type" : "java.lang.Long",
-      "description" : "Current pending MutationStage tasks",
-      "links" : null
-    }, {
-      "name" : "cassandra.write.perSec.last",
-      "type" : "java.lang.Double",
-      "description" : "Writes/sec (last datapoint)",
-      "links" : null
-    }, {
-      "name" : "cassandra.writes.perSec.windowed",
-      "type" : "java.lang.Double",
-      "description" : "Writes/sec (over time window)",
-      "links" : null
-    }, {
-      "name" : "datastore.url",
-      "type" : "java.lang.String",
-      "description" : "Primary contact URL for a datastore (e.g. mysql://localhost:3306/)",
-      "links" : null
-    }, {
-      "name" : "download.addon.urls",
-      "type" : "java.util.Map",
-      "description" : "URL patterns for downloading named add-ons (will substitute things like ${version} automatically)",
-      "links" : null
-    }, {
-      "name" : "download.url",
-      "type" : "java.lang.String",
-      "description" : "URL pattern for downloading the installer (will substitute things like ${version} automatically)",
-      "links" : null
-    }, {
-      "name" : "expandedinstall.dir",
-      "type" : "java.lang.String",
-      "description" : "Directory for installed artifacts (e.g. expanded dir after unpacking .tgz)",
-      "links" : null
-    }, {
-      "name" : "host.address",
-      "type" : "java.lang.String",
-      "description" : "Host IP address",
-      "links" : null
-    }, {
-      "name" : "host.name",
-      "type" : "java.lang.String",
-      "description" : "Host name",
-      "links" : null
-    }, {
-      "name" : "host.subnet.address",
-      "type" : "java.lang.String",
-      "description" : "Host address as known internally in the subnet where it is running (if different to host.name)",
-      "links" : null
-    }, {
-      "name" : "host.subnet.hostname",
-      "type" : "java.lang.String",
-      "description" : "Host name as known internally in the subnet where it is running (if different to host.name)",
-      "links" : null
-    }, {
-      "name" : "install.dir",
-      "type" : "java.lang.String",
-      "description" : "Directory for this software to be installed in",
-      "links" : null
-    }, {
-      "name" : "java.metrics.gc.time",
-      "type" : "java.util.Map",
-      "description" : "garbage collection time",
-      "links" : null
-    }, {
-      "name" : "java.metrics.heap.committed",
-      "type" : "java.lang.Long",
-      "description" : "Commited heap size (bytes)",
-      "links" : null
-    }, {
-      "name" : "java.metrics.heap.init",
-      "type" : "java.lang.Long",
-      "description" : "Initial heap size (bytes)",
-      "links" : null
-    }, {
-      "name" : "java.metrics.heap.max",
-      "type" : "java.lang.Long",
-      "description" : "Max heap size (bytes)",
-      "links" : null
-    }, {
-      "name" : "java.metrics.heap.used",
-      "type" : "java.lang.Long",
-      "description" : "Current heap size (bytes)",
-      "links" : null
-    }, {
-      "name" : "java.metrics.nonheap.used",
-      "type" : "java.lang.Long",
-      "description" : "Current non-heap size (bytes)",
-      "links" : null
-    }, {
-      "name" : "java.metrics.physicalmemory.free",
-      "type" : "java.lang.Long",
-      "description" : "The free memory available to the operating system",
-      "links" : null
-    }, {
-      "name" : "java.metrics.physicalmemory.total",
-      "type" : "java.lang.Long",
-      "description" : "The physical memory available to the operating system",
-      "links" : null
-    }, {
-      "name" : "java.metrics.processCpuTime.fraction.last",
-      "type" : "java.lang.Double",
-      "description" : "Fraction of CPU time used, reported by JVM (percentage, last datapoint)",
-      "links" : null
-    }, {
-      "name" : "java.metrics.processCpuTime.fraction.windowed",
-      "type" : "java.lang.Double",
-      "description" : "Fraction of CPU time used, reported by JVM (percentage, over time window)",
-      "links" : null
-    }, {
-      "name" : "java.metrics.processCpuTime.total",
-      "type" : "java.lang.Double",
-      "description" : "Process CPU time (total millis since start)",
-      "links" : null
-    }, {
-      "name" : "java.metrics.processors.available",
-      "type" : "java.lang.Integer",
-      "description" : "number of processors available to the Java virtual machine",
-      "links" : null
-    }, {
-      "name" : "java.metrics.starttime",
-      "type" : "java.lang.Long",
-      "description" : "Start time of Java process (UTC)",
-      "links" : null
-    }, {
-      "name" : "java.metrics.systemload.average",
-      "type" : "java.lang.Double",
-      "description" : "average system load",
-      "links" : null
-    }, {
-      "name" : "java.metrics.threads.current",
-      "type" : "java.lang.Integer",
-      "description" : "Current number of threads",
-      "links" : null
-    }, {
-      "name" : "java.metrics.threads.max",
-      "type" : "java.lang.Integer",
-      "description" : "Peak number of threads",
-      "links" : null
-    }, {
-      "name" : "java.metrics.uptime",
-      "type" : "java.lang.Long",
-      "description" : "Uptime of Java process (millis, elapsed since start)",
-      "links" : null
-    }, {
-      "name" : "jmx.context",
-      "type" : "java.lang.String",
-      "description" : "JMX context path",
-      "links" : null
-    }, {
-      "name" : "jmx.direct.port",
-      "type" : "java.lang.Integer",
-      "description" : "JMX direct/private port (e.g. JMX RMI server port, or JMXMP port, but not RMI registry port)",
-      "links" : null
-    }, {
-      "name" : "jmx.password",
-      "type" : "java.lang.String",
-      "description" : "JMX password",
-      "links" : null
-    }, {
-      "name" : "jmx.service.url",
-      "type" : "java.lang.String",
-      "description" : "The URL for connecting to the MBean Server",
-      "links" : null
-    }, {
-      "name" : "jmx.user",
-      "type" : "java.lang.String",
-      "description" : "JMX username",
-      "links" : null
-    }, {
-      "name" : "rmi.registry.port",
-      "type" : "java.lang.Integer",
-      "description" : "RMI registry port, used for discovering JMX (private) port",
-      "links" : null
-    }, {
-      "name" : "run.dir",
-      "type" : "java.lang.String",
-      "description" : "Directory for this software to be run from",
-      "links" : null
-    }, {
-      "name" : "service.isUp",
-      "type" : "java.lang.Boolean",
-      "description" : "Whether the service is active and availability (confirmed and monitored)",
-      "links" : null
-    }, {
-      "name" : "service.process.isRunning",
-      "type" : "java.lang.Boolean",
-      "description" : "Whether the process for the service is confirmed as running",
-      "links" : null
-    }, {
-      "name" : "service.state",
-      "type" : "brooklyn.entity.basic.Lifecycle",
-      "description" : "Actual lifecycle state of the service",
-      "links" : null
-    }, {
-      "name" : "softwareprocess.pid.file",
-      "type" : "java.lang.String",
-      "description" : "PID file",
-      "links" : null
-    }, {
-      "name" : "softwareservice.provisioningLocation",
-      "type" : "brooklyn.location.MachineProvisioningLocation",
-      "description" : "Location used to provision a machine where this is running",
-      "links" : null
-    } ],
-    "effectors" : [ {
-      "name" : "executeScript",
-      "returnType" : "java.lang.String",
-      "parameters" : [ {
-        "name" : "commands",
-        "type" : "java.lang.String",
-        "description" : null,
-        "defaultValue" : null
-      } ],
-      "description" : "executes the given script contents using cassandra-cli",
-      "links" : null
-    }, {
-      "name" : "restart",
-      "returnType" : "void",
-      "parameters" : [ ],
-      "description" : "Restart the process/service represented by an entity",
-      "links" : null
-    }, {
-      "name" : "start",
-      "returnType" : "void",
-      "parameters" : [ {
-        "name" : "locations",
-        "type" : "java.lang.Object",
-        "description" : "The location or locations to start in, as a string, a location object, a list of strings, or a list of location objects",
-        "defaultValue" : null
-      } ],
-      "description" : "Start the process/service represented by an entity",
-      "links" : null
-    }, {
-      "name" : "stop",
-      "returnType" : "void",
-      "parameters" : [ ],
-      "description" : "Stop the process/service represented by an entity",
-      "links" : null
-    } ]
-  }, {
-    "type" : "brooklyn.entity.nosql.solr.SolrServer",
-    "defaultVersion" : "4.7.0",
-    "name" : "Apache Solr Node",
-    "description" : "Solr is the popular, blazing fast open source enterprise search platform from the Apache Lucene project.",
-    "iconUrl" : "classpath:///solr-logo.jpeg",
-    "config" : [ {
-      "name" : "children.startable.mode",
-      "type" : "java.lang.Enum",
-      "defaultValue" : null,
-      "description" : "children.startable.mode",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : [ {
-        "value" : "NONE",
-        "description" : "NONE"
-      }, {
-        "value" : "FOREGROUND",
-        "description" : "FOREGROUND"
-      }, {
-        "value" : "FOREGROUND_LATE",
-        "description" : "FOREGROUND_LATE"
-      }, {
-        "value" : "BACKGROUND",
-        "description" : "BACKGROUND"
-      }, {
-        "value" : "BACKGROUND_LATE",
-        "description" : "BACKGROUND_LATE"
-      } ],
-      "links" : null
-    }, {
-      "name" : "customize.latch",
-      "type" : "java.lang.Boolean",
-      "defaultValue" : null,
-      "description" : "Latch for blocking customize until ready",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "download.addon.urls",
-      "type" : "java.util.Map",
-      "defaultValue" : null,
-      "description" : "URL patterns for downloading named add-ons (will substitute things like ${version} automatically)",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "download.url",
-      "type" : "java.lang.String",
-      "defaultValue" : "${driver.mirrorUrl}/${version}/solr-${version}.tgz",
-      "description" : "URL pattern for downloading the installer (will substitute things like ${version} automatically)",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "expandedinstall.dir",
-      "type" : "java.lang.String",
-      "defaultValue" : null,
-      "description" : "Directory for installed artifacts (e.g. expanded dir after unpacking .tgz)",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "files.runtime",
-      "type" : "java.util.Map",
-      "defaultValue" : null,
-      "description" : "Map of files to be copied, keyed by destination name relative to runDir",
-      "reconfigurable" : false,
-      "label" : null,
-      "priority" : null,
-      "possibleValues" : null,
-      "links" : null
-    }, {
-      "name" : "install.dir",
-      "type" : "java.lang.String",
-      "defaultValue" : "${config['onbox.base.dir']!config['brooklyn.datadir']!'/<ERROR>-ONBOX_BASE_DIR-not-set'}/installs/${(config['install.unique_label']??)?string(config['install.unique_label']!'X',(entity.entityType.simpleName)+((config['install.version']??)?string('_'+(config['install.version']!'X'),'')))}",
-      "description" : "Directory for this software to be install

<TRUNCATED>

[04/19] incubator-brooklyn git commit: - Catalog rearrangement so it work with jekyll serve without moving files - Include the Navigation menu in the catalog

Posted by he...@apache.org.
- Catalog rearrangement so it work with jekyll serve without moving files
- Include the Navigation menu in the catalog


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

Branch: refs/heads/master
Commit: 671fda387c445726cb96d468d056c6923a6a3c10
Parents: 5ed89cd
Author: Valentin Aitken <bo...@gmail.com>
Authored: Fri Feb 20 20:09:05 2015 +0200
Committer: Valentin Aitken <bo...@gmail.com>
Committed: Fri Feb 20 20:09:05 2015 +0200

----------------------------------------------------------------------
 docs/_build/config-website-root.yml       |     3 -
 docs/_config.yml                          |     3 +-
 docs/_plugins/site_structure.rb           |    16 +-
 docs/style/css/catalog_items.css          |   153 +
 docs/style/js/catalog/common.js           |    94 +
 docs/style/js/catalog/items.js            | 24674 +++++++++++++++++++++++
 docs/website/learnmore/catalog/common.js  |    94 -
 docs/website/learnmore/catalog/index.html |   150 +
 docs/website/learnmore/catalog/index.md   |   131 -
 docs/website/learnmore/catalog/items.css  |   153 -
 docs/website/learnmore/catalog/items.js   | 24674 -----------------------
 11 files changed, 25086 insertions(+), 25059 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/671fda38/docs/_build/config-website-root.yml
----------------------------------------------------------------------
diff --git a/docs/_build/config-website-root.yml b/docs/_build/config-website-root.yml
deleted file mode 100644
index e5e4b07..0000000
--- a/docs/_build/config-website-root.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-path:
-  website: ""
-  guide: "/v/latest"

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/671fda38/docs/_config.yml
----------------------------------------------------------------------
diff --git a/docs/_config.yml b/docs/_config.yml
index 10a5d5a..3bc42e9 100644
--- a/docs/_config.yml
+++ b/docs/_config.yml
@@ -26,7 +26,8 @@ url_root: http://0.0.0.0:4000
 path:
   style: /style
   guide: /guide
-  website: /website
+  #guide: "/v/latest"
+  website: ""
   v: /v
 
 # Use local copies of dependencies in dev build (switched to remote using URLs for prod build)

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/671fda38/docs/_plugins/site_structure.rb
----------------------------------------------------------------------
diff --git a/docs/_plugins/site_structure.rb b/docs/_plugins/site_structure.rb
index fbfeb27..5b0c488 100644
--- a/docs/_plugins/site_structure.rb
+++ b/docs/_plugins/site_structure.rb
@@ -116,7 +116,17 @@ module SiteStructure
       # Pathname API ignores first arg below if second is absolute
 #      puts "converting #{path} wrt #{referrent ? referrent.path : ""}"
       file = Pathname.new(File.dirname(referrent ? referrent.path : "")) + path
-      file += "index.md" if file.to_s.end_with? "/"
+
+      if file.to_s.end_with? "/"
+        if File.exist? File.join(file, 'index.md')
+          file += 'index.md'
+        elsif File.exist? File.join(file, 'index.html')
+          file += 'index.html'
+        else
+          file += 'index.md'
+        end
+      end
+
       file = file.cleanpath
       # is there a better way to trim a leading / ?
       file = file.relative_path_from(Pathname.new("/")) unless file.relative?
@@ -167,11 +177,11 @@ module SiteStructure
       # process all pages
       puts "site_structure now processing all pages" if @@verbose
       site.pages.each { |p| 
-        Generator.gen_structure(site, { 'path' => p.path }, nil, [], [], structure_processed_pages) if (p.path.end_with? ".md") && (!p['menu_processed'])
+        Generator.gen_structure(site, { 'path' => p.path }, nil, [], [], structure_processed_pages) if (p.path.end_with?(".md") || p.path.end_with?(".html")) && (!p['menu_processed'])
       }
       site.data['structure_processed_pages'] = structure_processed_pages
 #      puts "ROOT menu is #{site.data['menu']}"
-#      puts "PAGE menu is #{structure_processed_pages['website/documentation/index.md'].data['menu']}"
+#      puts "PAGE menu is #{structure_processed_pages['website/documentation/index.'].data['menu']}"
 # (but note, in the context hash map 'data' on pages is promoted, so you access it like {{ page.menu }})
     end
 

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/671fda38/docs/style/css/catalog_items.css
----------------------------------------------------------------------
diff --git a/docs/style/css/catalog_items.css b/docs/style/css/catalog_items.css
new file mode 100644
index 0000000..a0bf0f0
--- /dev/null
+++ b/docs/style/css/catalog_items.css
@@ -0,0 +1,153 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+*/
+/* landing page */
+body {
+  margin: 0px;
+  padding: 10px 0px 20px 0px;
+  font-family: arial, helvetica, sans-serif;
+  background-color: #ffffff;
+  color: #393939;
+  font-size: 15px;
+}
+
+.nav-tabs {
+  clear: both;
+  font-weight: bold;
+  font-size: 12pt;
+}
+.nav-tabs a {
+  color: #4d9d3a;
+}
+.nav-tabs a:hover {
+  color: #4d9d3a;
+}
+
+.tab-content {
+  padding: 20px;
+  padding-bottom: 10px;
+  border: 1px solid #ddd;
+  border-top: none;
+}
+
+a:hover > .card {
+  top: -2px;
+  background-color: #f4f4f4;
+  box-shadow: 0px 2px 2px 0px rgba(0, 0, 0, 0.2);
+}
+.card {
+  position: relative;
+  padding: 12px;
+  background-color: #f8f8f8;
+  color: #333;
+  border: 1px solid #E1E1E8;
+  border-radius: 6px;
+  font-size: 11pt;
+}
+.card,
+.filter {
+    margin-bottom: 10px;
+}
+a .glyphicon {
+  display: block;
+  position: absolute;
+  right: 0;
+  top: 0;
+  padding: 8px;
+  font-size: 16pt;
+  color: #aaa;
+}
+a:hover .glyphicon {
+  color: #888;
+}
+a.plain {
+  text-decoration: none !important;
+}
+.name {
+  font-size: 12pt;
+  font-weight: bold;
+}
+.type {
+  font-family: monospace;
+  color: #888;
+  margin-top: 2px;
+}
+#summary .description {
+  margin: 15px 0 25px 0;
+}
+.card .description {
+  margin: 10px 40px 0 20px;
+}
+
+#summary {
+  clear: both;
+  margin: 10px 0 20px 0;
+}
+.summaryLabel {
+  font-size: 20px;
+  font-weight: bold;
+}
+.summaryType {
+  font-family: monospace;
+  font-size: 12pt;
+  color: #888;
+}
+.java {
+  font-family: monospace;
+}
+
+.card dl {
+  margin-bottom: 0;
+  margin-top: 5px;
+}
+dt {
+  clear: both;
+  float: left;
+  width: 8em;
+  text-align: right;
+  font-weight: normal;
+}
+dd {
+  margin-left: 9em;
+}
+
+#container {
+  width: 980px;
+  padding: 0;
+  margin: 0 auto;
+}
+
+#identity {
+  float: left;
+  margin: 0;
+  padding: 30px 0 15px 10px;
+}
+
+#identity a {
+  text-decoration: none;
+  display: block;
+  margin: 0;
+  color: #4d9d3a;
+  font-size: 2.5em;
+  padding: 0;
+  background: transparent url(images/brooklyn.gif) no-repeat 0 0;
+  width: 206px;
+  height: 44px;
+  text-indent: -1000px;
+  overflow: hidden;
+}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/671fda38/docs/style/js/catalog/common.js
----------------------------------------------------------------------
diff --git a/docs/style/js/catalog/common.js b/docs/style/js/catalog/common.js
new file mode 100644
index 0000000..8e8a45f
--- /dev/null
+++ b/docs/style/js/catalog/common.js
@@ -0,0 +1,94 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+var brooklyn = (function ($, _) {
+
+    return {
+        findItemOfType: function(items, type) {
+            return _.findWhere(items, { type: type });
+        },
+
+        entityCard: _.template(
+            "<a class='plain' data-type='<%= type %>' href='entities/<%= type %>.html'>" +
+            "<div class='card'>" +
+            "<span class='glyphicon glyphicon-chevron-right'/>" +
+            "<div class='name'><%=name%></div>" +
+            "<div class='type'><%=type%></div>" +
+            "<div class='description'><%=description%></div>" +
+            "</div>" +
+            "</a>"
+        ),
+        policyCard: _.template(
+            "<a class='plain' data-type='<%= type %>' href='policies/<%= type %>.html'>" +
+            "<div class='card'>" +
+            "<span class='glyphicon glyphicon-chevron-right'/>" +
+            "<div class='name'><%=name%></div>" +
+            "<div class='type'><%=type%></div>" +
+            "<div class='description'><%=description%></div>" +
+            "</div>" +
+            "</a>"
+        ),
+        enricherCard: _.template(
+            "<a class='plain' data-type='<%= type %>' href='enrichers/<%= type %>.html'>" +
+            "<div class='card'>" +
+            "<span class='glyphicon glyphicon-chevron-right'/>" +
+            "<div class='name'><%=name%></div>" +
+            "<div class='type'><%=type%></div>" +
+            "<div class='description'><%=description%></div>" +
+            "</div>" +
+            "</a>"
+        ),
+
+        typeSummary: _.template(
+            "<div class='summaryLabel'><%=name%></div>" +
+            "<div class='summaryType'><%=type%></div>" +
+            "<div class='description'><%=description%></div>"
+        ),
+
+        configKeyCard: _.template(
+            "<div class='card configKey'>" +
+            "<div class='name'><%=name%></div>" +
+            "<dl>" +
+            "<dt>description</dt><dd><%=(description||'&nbsp;')%></dd>" +
+            "<dt>value type</dt><dd class='java'><%=(type||'&nbsp;')%></dd>" +
+            "<dt>default value</dt><dd><%=(defaultValue||'&nbsp;')%></dd>" +
+            "</dl>" +
+            "</div>"
+        ),
+        sensorCard: _.template(
+            "<div class='card sensor'>" +
+            "<div class='name'><%=name%></div>" +
+            "<dl>" +
+            "<dt>description</dt><dd><%=(description||'&nbsp;')%></dd>" +
+            "<dt>value type</dt><dd class='java'><%=(type||'&nbsp;')%></dd>" +
+            "</dl>" +
+            "</div>"
+        ),
+        effectorCard: _.template(
+            "<div class='card effector'>" +
+            "<div class='name'><%=name%></div>" +
+            "<dl>" +
+            "<dt>description</dt><dd><%=(description||'&nbsp;')%></dd>" +
+            "<dt>return type</dt><dd class='java'><%=(returnType||'&nbsp;')%></dd>" +
+            "</dl>" +
+            "</div>"
+        )
+    };
+
+}(jQuery, _));