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 2016/02/06 11:58:16 UTC

svn commit: r1728807 [3/3] - in /brooklyn/site: ./ community/ developers/ developers/committers/ developers/committers/release-process/ documentation/ download/ learnmore/ learnmore/catalog/ learnmore/features/ meta/ style/js/catalog/

Added: brooklyn/site/style/js/catalog/items.js
URL: http://svn.apache.org/viewvc/brooklyn/site/style/js/catalog/items.js?rev=1728807&view=auto
==============================================================================
--- brooklyn/site/style/js/catalog/items.js (added)
+++ brooklyn/site/style/js/catalog/items.js Sat Feb  6 10:58:15 2016
@@ -0,0 +1,35803 @@
+var items = {
+  "entities" : [ {
+    "type" : "org.apache.brooklyn.entity.messaging.activemq.ActiveMQBroker",
+    "defaultVersion" : "5.10.2",
+    "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.brokerName",
+      "type" : "java.lang.String",
+      "defaultValue" : "localhost",
+      "description" : "ActiveMQ Broker Name",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "activemq.install.mirror.url",
+      "type" : "java.lang.String",
+      "defaultValue" : "http://www.mirrorservice.org/sites/ftp.apache.org/activemq",
+      "description" : "URL of mirror",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "activemq.jetty.port",
+      "type" : "org.apache.brooklyn.api.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://org/apache/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" : "NONE",
+      "description" : "Controls behaviour when starting Startable children as part of this entity's lifecycle.",
+      "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" : "dontRequireTtyForSudo",
+      "type" : "java.lang.Boolean",
+      "defaultValue" : false,
+      "description" : "Whether to explicitly set /etc/sudoers, so don't need tty (will leave unchanged if 'false'); some machines require a tty for sudo; brooklyn by default does not use a tty (so that it can get separate error+stdout streams); you can enable a tty as an option to every ssh command, or you can do it once and modify the machine so that a tty is not subsequently required.",
+      "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" : "entity.running",
+      "type" : "java.lang.Boolean",
+      "defaultValue" : null,
+      "description" : "Skip the startup process entirely, if service already running",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "entity.started",
+      "type" : "java.lang.Boolean",
+      "defaultValue" : null,
+      "description" : "Skip the startup process entirely, for running services",
+      "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.install",
+      "type" : "java.util.Map",
+      "defaultValue" : null,
+      "description" : "Mapping of files, to be copied before install, to destination name relative to installDir",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "files.preinstall",
+      "type" : "java.util.Map",
+      "defaultValue" : null,
+      "description" : "Mapping of files, to be copied before install, to destination name relative to installDir",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "files.runtime",
+      "type" : "java.util.Map",
+      "defaultValue" : null,
+      "description" : "Mapping of files, to be copied before customisation, to destination name relative to runDir",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "inboundPorts.autoInfer",
+      "type" : "java.lang.Boolean",
+      "defaultValue" : true,
+      "description" : "If set to false turns off the opening of ports based on naming convention, and also those that are of type PortRange in Java entities",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "inboundPorts.configRegex",
+      "type" : "java.lang.String",
+      "defaultValue" : ".*\\.port",
+      "description" : "Regex governing the opening of ports based on config names",
+      "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" : null,
+      "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.10.2",
+      "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" : "java.version.required",
+      "type" : "java.lang.String",
+      "defaultValue" : "1.7",
+      "description" : "Java version required",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "jmx.agent.local.path",
+      "type" : "java.lang.String",
+      "defaultValue" : null,
+      "description" : "Path to JMX driver on the local machine",
+      "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" : "org.apache.brooklyn.api.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.direct.port.legacy.NOT_USED",
+      "type" : "org.apache.brooklyn.api.location.PortRange",
+      "defaultValue" : null,
+      "description" : "Legacy definition 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" : "metrics.usage.retrieve",
+      "type" : "java.lang.Boolean",
+      "defaultValue" : true,
+      "description" : "Whether to retrieve the usage (e.g. performance) metrics",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "openIptables",
+      "type" : "java.lang.Boolean",
+      "defaultValue" : false,
+      "description" : "Whether to open the INBOUND_PORTS via iptables rules; if true then ssh in to run iptables commands, as part of machine provisioning",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "openwire.port",
+      "type" : "org.apache.brooklyn.api.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" : "requiredOpenLoginPorts",
+      "type" : "java.util.Collection",
+      "defaultValue" : [ 22 ],
+      "description" : "The port(s) to be opened, to allow login",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "resources.install.latch",
+      "type" : "java.lang.Boolean",
+      "defaultValue" : null,
+      "description" : "Latch for blocking install resources until ready",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "resources.runtime.latch",
+      "type" : "java.lang.Boolean",
+      "defaultValue" : null,
+      "description" : "Latch for blocking runtime resources until ready",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "rmi.registry.port",
+      "type" : "org.apache.brooklyn.api.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.lifecycleTasks",
+      "type" : "org.apache.brooklyn.entity.software.base.SoftwareProcessDriverLifecycleEffectorTasks",
+      "defaultValue" : "org.apache.brooklyn.entity.software.base.SoftwareProcessDriverLifecycleEffectorTasks@563e4026",
+      "description" : "An object that handles lifecycle of an entity's associated machine.",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "softwareProcess.maxSensorRebindDelay",
+      "type" : "org.apache.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" : "org.apache.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" : "stopIptables",
+      "type" : "java.lang.Boolean",
+      "defaultValue" : false,
+      "description" : "Whether to stop iptables entirely; if true then ssh in to stop the iptables service, as part of machine provisioning",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "templates.install",
+      "type" : "java.util.Map",
+      "defaultValue" : null,
+      "description" : "Mapping of templates, to be filled in and copied before install, to destination name relative to installDir",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "templates.preinstall",
+      "type" : "java.util.Map",
+      "defaultValue" : null,
+      "description" : "Mapping of templates, to be filled in and copied before pre-install, to destination name relative to installDir",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "templates.runtime",
+      "type" : "java.util.Map",
+      "defaultValue" : null,
+      "description" : "Mapping of templates, to be filled in and copied before customisation, to destination name relative to runDir",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    } ],
+    "sensors" : [ {
+      "name" : "activemq.brokerName",
+      "type" : "java.lang.String",
+      "description" : "ActiveMQ Broker Name",
+      "links" : { }
+    }, {
+      "name" : "activemq.jetty.port",
+      "type" : "java.lang.Integer",
+      "description" : "jetty port",
+      "links" : { }
+    }, {
+      "name" : "activemq.templateConfigurationUrl",
+      "type" : "java.lang.String",
+      "description" : "Template file (in freemarker format) for the conf/activemq.xml file",
+      "links" : { }
+    }, {
+      "name" : "broker.url",
+      "type" : "java.lang.String",
+      "description" : "Broker Connection URL",
+      "links" : { }
+    }, {
+      "name" : "download.addon.urls",
+      "type" : "java.util.Map",
+      "description" : "URL patterns for downloading named add-ons (will substitute things like ${version} automatically)",
+      "links" : { }
+    }, {
+      "name" : "download.url",
+      "type" : "java.lang.String",
+      "description" : "URL pattern for downloading the installer (will substitute things like ${version} automatically)",
+      "links" : { }
+    }, {
+      "name" : "expandedinstall.dir",
+      "type" : "java.lang.String",
+      "description" : "Directory for installed artifacts (e.g. expanded dir after unpacking .tgz)",
+      "links" : { }
+    }, {
+      "name" : "host.address",
+      "type" : "java.lang.String",
+      "description" : "Host IP address",
+      "links" : { }
+    }, {
+      "name" : "host.name",
+      "type" : "java.lang.String",
+      "description" : "Host name",
+      "links" : { }
+    }, {
+      "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" : { }
+    }, {
+      "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" : { }
+    }, {
+      "name" : "install.dir",
+      "type" : "java.lang.String",
+      "description" : "Directory for this software to be installed in",
+      "links" : { }
+    }, {
+      "name" : "jmx.agent.local.path",
+      "type" : "java.lang.String",
+      "description" : "Path to JMX driver on the local machine",
+      "links" : { }
+    }, {
+      "name" : "jmx.context",
+      "type" : "java.lang.String",
+      "description" : "JMX context path",
+      "links" : { }
+    }, {
+      "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" : { }
+    }, {
+      "name" : "jmx.direct.port.legacy.NOT_USED",
+      "type" : "java.lang.Integer",
+      "description" : "Legacy definition JMX direct/private port (e.g. JMX RMI server port, or JMXMP port, but not RMI registry port)",
+      "links" : { }
+    }, {
+      "name" : "jmx.password",
+      "type" : "java.lang.String",
+      "description" : "JMX password",
+      "links" : { }
+    }, {
+      "name" : "jmx.service.url",
+      "type" : "java.lang.String",
+      "description" : "The URL for connecting to the MBean Server",
+      "links" : { }
+    }, {
+      "name" : "jmx.user",
+      "type" : "java.lang.String",
+      "description" : "JMX username",
+      "links" : { }
+    }, {
+      "name" : "openwire.port",
+      "type" : "java.lang.Integer",
+      "description" : "OpenWire port",
+      "links" : { }
+    }, {
+      "name" : "rmi.registry.port",
+      "type" : "java.lang.Integer",
+      "description" : "RMI registry port, used for discovering JMX (private) port",
+      "links" : { }
+    }, {
+      "name" : "run.dir",
+      "type" : "java.lang.String",
+      "description" : "Directory for this software to be run from",
+      "links" : { }
+    }, {
+      "name" : "service.isUp",
+      "type" : "java.lang.Boolean",
+      "description" : "Whether the service is active and availability (confirmed and monitored)",
+      "links" : { }
+    }, {
+      "name" : "service.process.isRunning",
+      "type" : "java.lang.Boolean",
+      "description" : "Whether the process for the service is confirmed as running",
+      "links" : { }
+    }, {
+      "name" : "service.state",
+      "type" : "org.apache.brooklyn.core.entity.lifecycle.Lifecycle",
+      "description" : "Actual lifecycle state of the service",
+      "links" : { }
+    }, {
+      "name" : "service.state.expected",
+      "type" : "org.apache.brooklyn.core.entity.lifecycle.Lifecycle$Transition",
+      "description" : "Last controlled change to service state, indicating what the expected state should be",
+      "links" : { }
+    }, {
+      "name" : "softwareprocess.pid.file",
+      "type" : "java.lang.String",
+      "description" : "PID file",
+      "links" : { }
+    }, {
+      "name" : "softwareservice.provisioningLocation",
+      "type" : "org.apache.brooklyn.api.location.MachineProvisioningLocation",
+      "description" : "Location used to provision a machine where this is running",
+      "links" : { }
+    } ],
+    "effectors" : [ {
+      "name" : "populateServiceNotUpDiagnostics",
+      "returnType" : "void",
+      "parameters" : [ ],
+      "description" : "Populates the attribute service.notUp.diagnostics, with any available health indicators",
+      "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" : "org.apache.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" : "org.apache.brooklyn.api.entity.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" : "org.apache.brooklyn.core.entity.factory.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" : "org.apache.brooklyn.util.collections.QuorumCheck",
+      "defaultValue" : "QuorumCheck[all;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" : "org.apache.brooklyn.util.collections.QuorumCheck",
+      "defaultValue" : "QuorumCheck[atLeastOne;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" : "Deprecated: 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" : { }
+    }, {
+      "name" : "cassandra.cluster.datacenters",
+      "type" : "java.util.Set",
+      "description" : "Current set of datacenters in use",
+      "links" : { }
+    }, {
+      "name" : "cassandra.cluster.hostname",
+      "type" : "java.lang.String",
+      "description" : "Hostname to connect to cluster with",
+      "links" : { }
+    }, {
+      "name" : "cassandra.cluster.seeds.current",
+      "type" : "java.util.Set",
+      "description" : "Current set of seeds to use to bootstrap the cluster",
+      "links" : { }
+    }, {
+      "name" : "cassandra.cluster.seeds.hasPublished",
+      "type" : "java.lang.Boolean",
+      "description" : "Whether we have published any seeds",
+      "links" : { }
+    }, {
+      "name" : "cassandra.cluster.thrift.port",
+      "type" : "java.lang.Integer",
+      "description" : "Cassandra Thrift RPC port to connect to cluster with",
+      "links" : { }
+    }, {
+      "name" : "cluster.first",
+      "type" : "java.lang.Boolean",
+      "description" : "Set on an entity if it is the first member of a cluster",
+      "links" : { }
+    }, {
+      "name" : "cluster.first.entity",
+      "type" : "org.apache.brooklyn.api.entity.Entity",
+      "description" : "The first member of the cluster",
+      "links" : { }
+    }, {
+      "name" : "fabric.size",
+      "type" : "java.lang.Integer",
+      "description" : "Fabric size",
+      "links" : { }
+    }, {
+      "name" : "group.members",
+      "type" : "java.util.Collection",
+      "description" : "Members of the group",
+      "links" : { }
+    }, {
+      "name" : "group.members.added",
+      "type" : "org.apache.brooklyn.api.entity.Entity",
+      "description" : "Entity added to group members",
+      "links" : { }
+    }, {
+      "name" : "group.members.count",
+      "type" : "java.lang.Integer",
+      "description" : "Number of members",
+      "links" : { }
+    }, {
+      "name" : "group.members.removed",
+      "type" : "org.apache.brooklyn.api.entity.Entity",
+      "description" : "Entity removed from group members",
+      "links" : { }
+    }, {
+      "name" : "service.isUp",
+      "type" : "java.lang.Boolean",
+      "description" : "Whether the service is active and availability (confirmed and monitored)",
+      "links" : { }
+    }, {
+      "name" : "service.state",
+      "type" : "org.apache.brooklyn.core.entity.lifecycle.Lifecycle",
+      "description" : "Actual lifecycle state of the service",
+      "links" : { }
+    } ],
+    "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" : "org.apache.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" : "org.apache.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 org.apache.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" : "cluster.member.id",
+      "type" : "java.lang.Integer",
+      "defaultValue" : null,
+      "description" : "The unique ID number (sequential) of a member of a cluster",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "commands",
+      "type" : "java.lang.String",
+      "defaultValue" : null,
+      "description" : "commands",
+      "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" : "org.apache.brooklyn.core.entity.factory.EntityFactory",
+      "defaultValue" : null,
+      "description" : "factory for creating new cluster members",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "dynamiccluster.firstmemberspec",
+      "type" : "org.apache.brooklyn.api.entity.EntitySpec",
+      "defaultValue" : null,
+      "description" : "entity spec for creating new cluster members, used for the very first member if different",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "dynamiccluster.memberspec",
+      "type" : "org.apache.brooklyn.api.entity.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.quarantineFilter",
+      "type" : "com.google.common.base.Predicate",
+      "defaultValue" : null,
+      "description" : "Quarantine the failed nodes that pass this filter (given the exception thrown by the node). Default is those that did not fail with NoMachinesAvailableException (Config ignored if quarantineFailedEntities is false)",
+      "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.restartMode",
+      "type" : "java.lang.String",
+      "defaultValue" : null,
+      "description" : "How this cluster should handle restarts; by default it is disallowed, but this key can specify a different mode. Modes supported by dynamic cluster are 'off', 'sequqential', or 'parallel'. However subclasses can define their own modes or may ignore this.",
+      "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" : "org.apache.brooklyn.entity.group.DynamicCluster$ZoneFailureDetector",
+      "defaultValue" : "org.apache.brooklyn.entity.group.zoneaware.ProportionalZoneFailureDetector@27cfea65",
+      "description" : "Zone failure detector",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "dynamiccluster.zone.placementStrategy",
+      "type" : "org.apache.brooklyn.entity.group.DynamicCluster$NodePlacementStrategy",
+      "defaultValue" : "org.apache.brooklyn.entity.group.zoneaware.BalancingNodePlacementStrategy@faba6f7",
+      "description" : "Node placement strategy",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "enricher.service_state.children_and_members.quorum.running",
+      "type" : "org.apache.brooklyn.util.collections.QuorumCheck",
+      "defaultValue" : "QuorumCheck[all;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" : "org.apache.brooklyn.util.collections.QuorumCheck",
+      "defaultValue" : "QuorumCheck[atLeastOne;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" : "Deprecated: 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" : { }
+    }, {
+      "name" : "cassandra.cluster.datacenters",
+      "type" : "java.util.Set",
+      "description" : "Current set of datacenters in use",
+      "links" : { }
+    }, {
+      "name" : "cassandra.cluster.first.node.started.utc",
+      "type" : "java.lang.Long",
+      "description" : "Time (UTC) when the first node was started",
+      "links" : { }
+    }, {
+      "name" : "cassandra.cluster.hostname",
+      "type" : "java.lang.String",
+      "description" : "Hostname to connect to cluster with",
+      "links" : { }
+    }, {
+      "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" : { }
+    }, {
+      "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" : { }
+    }, {
+      "name" : "cassandra.cluster.name",
+      "type" : "java.lang.String",
+      "description" : "Name of the Cassandra cluster",
+      "links" : { }
+    }, {
+      "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" : { }
+    }, {
+      "name" : "cassandra.cluster.read.active",
+      "type" : "java.lang.Integer",
+      "description" : "Current active ReadStage tasks",
+      "links" : { }
+    }, {
+      "name" : "cassandra.cluster.read.pending",
+      "type" : "java.lang.Long",
+      "description" : "Current pending ReadStage tasks",
+      "links" : { }
+    }, {
+      "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" : { }
+    }, {
+      "name" : "cassandra.cluster.seeds.current",
+      "type" : "java.util.Set",
+      "description" : "Current set of seeds to use to bootstrap the cluster",
+      "links" : { }
+    }, {
+      "name" : "cassandra.cluster.seeds.hasPublished",
+      "type" : "java.lang.Boolean",
+      "description" : "Whether we have published any seeds",
+      "links" : { }
+    }, {
+      "name" : "cassandra.cluster.start.nodes.queued",
+      "type" : "java.util.List",
+      "description" : "Nodes queued for starting (for sequential start)",
+      "links" : { }
+    }, {
+      "name" : "cassandra.cluster.thrift.latency.perNode",
+      "type" : "java.lang.Long",
+      "description" : "Latency for thrift port connection  averaged over all nodes (ms)",
+      "links" : { }
+    }, {
+      "name" : "cassandra.cluster.thrift.port",
+      "type" : "java.lang.Integer",
+      "description" : "Cassandra Thrift RPC port to connect to cluster with",
+      "links" : { }
+    }, {
+      "name" : "cassandra.cluster.write.active",
+      "type" : "java.lang.Integer",
+      "description" : "Current active MutationStage tasks",
+      "links" : { }
+    }, {
+      "name" : "cassandra.cluster.write.pending",
+      "type" : "java.lang.Long",
+      "description" : "Current pending MutationStage tasks",
+      "links" : { }
+    }, {
+      "name" : "cassandra.reads.perSec.last.perNode",
+      "type" : "java.lang.Double",
+      "description" : "Reads/sec (last datapoint) averaged over all nodes",
+      "links" : { }
+    }, {
+      "name" : "cassandra.reads.perSec.windowed.perNode",
+      "type" : "java.lang.Double",
+      "description" : "Reads/sec (over time window) averaged over all nodes",
+      "links" : { }
+    }, {
+      "name" : "cassandra.thrift.latency.windowed.perNode",
+      "type" : "java.lang.Double",
+      "description" : "Latency for thrift port (ms, over time window) averaged over all nodes",
+      "links" : { }
+    }, {
+      "name" : "cassandra.write.perSec.last.perNode",
+      "type" : "java.lang.Double",
+      "description" : "Writes/sec (last datapoint) averaged over all nodes",
+      "links" : { }
+    }, {
+      "name" : "cassandra.writes.perSec.windowed.perNode",
+      "type" : "java.lang.Double",
+      "description" : "Writes/sec (over time window) averaged over all nodes",
+      "links" : { }
+    }, {
+      "name" : "cluster.entity",
+      "type" : "org.apache.brooklyn.api.entity.Entity",
+      "description" : "The cluster an entity is a member of",
+      "links" : { }
+    }, {
+      "name" : "cluster.first",
+      "type" : "java.lang.Boolean",
+      "description" : "Set on an entity if it is the first member of a cluster",
+      "links" : { }
+    }, {
+      "name" : "cluster.first.entity",
+      "type" : "org.apache.brooklyn.api.entity.Entity",
+      "description" : "The first member of the cluster",
+      "links" : { }
+    }, {
+      "name" : "cluster.member",
+      "type" : "java.lang.Boolean",
+      "description" : "Set on an entity if it is a member of a cluster",
+      "links" : { }
+    }, {
+      "name" : "cluster.one_and_all.members.up",
+      "type" : "java.lang.Boolean",
+      "description" : "True cluster is running, there is on member, and all members are service.isUp",
+      "links" : { }
+    }, {
+      "name" : "datastore.url",
+      "type" : "java.lang.String",
+      "description" : "Primary contact URL for a datastore (e.g. mysql://localhost:3306/)",
+      "links" : { }
+    }, {
+      "name" : "dynamiccluster.entityQuarantined",
+      "type" : "org.apache.brooklyn.api.entity.Entity",
+      "description" : "Entity failed to start, and has been quarantined",
+      "links" : { }
+    }, {
+      "name" : "dynamiccluster.failedSubLocations",
+      "type" : "java.util.Set",
+      "description" : "Sub locations that seem to have failed",
+      "links" : { }
+    }, {
+      "name" : "dynamiccluster.quarantineGroup",
+      "type" : "org.apache.brooklyn.entity.group.QuarantineGroup",
+      "description" : "Group of quarantined entities that failed to start",
+      "links" : { }
+    }, {
+      "name" : "dynamiccluster.subLocations",
+      "type" : "java.util.List",
+      "description" : "Locations for each availability zone to use",
+      "links" : { }
+    }, {
+      "name" : "group.members",
+      "type" : "java.util.Collection",
+      "description" : "Members of the group",
+      "links" : { }
+    }, {
+      "name" : "group.members.added",
+      "type" : "org.apache.brooklyn.api.entity.Entity",
+      "description" : "Entity added to group members",
+      "links" : { }
+    }, {
+      "name" : "group.members.count",
+      "type" : "java.lang.Integer",
+      "description" : "Number of members",
+      "links" : { }
+    }, {
+      "name" : "group.members.removed",
+      "type" : "org.apache.brooklyn.api.entity.Entity",
+      "description" : "Entity removed from group members",
+      "links" : { }
+    }, {
+      "name" : "service.isUp",
+      "type" : "java.lang.Boolean",
+      "description" : "Whether the service is active and availability (confirmed and monitored)",
+      "links" : { }
+    }, {
+      "name" : "service.state",
+      "type" : "org.apache.brooklyn.core.entity.lifecycle.Lifecycle",
+      "description" : "Actual lifecycle state of the service",
+      "links" : { }
+    } ],
+    "effectors" : [ {
+      "name" : "executeScript",
+      "returnType" : "java.lang.String",
+      "parameters" : [ {
+        "name" : "commands",
+        "type" : "java.lang.String",
+        "description" : "commands",
+        "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" : "org.apache.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://org/apache/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://org/apache/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://org/apache/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" : "org.apache.brooklyn.api.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" : "org.apache.brooklyn.api.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" : "org.apache.brooklyn.api.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" : "org.apache.brooklyn.api.location.PortRange",
+      "defaultValue" : "9160-65535",
+      "description" : "Cassandra Thrift RPC port",
+      "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" : "NONE",
+      "description" : "Controls behaviour when starting Startable children as part of this entity's lifecycle.",
+      "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" : "commands",
+      "type" : "java.lang.String",
+      "defaultValue" : null,
+      "description" : "commands",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "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" : "Contents 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 creationScriptContents is specified)",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "dontRequireTtyForSudo",
+      "type" : "java.lang.Boolean",
+      "defaultValue" : false,
+      "description" : "Whether to explicitly set /etc/sudoers, so don't need tty (will leave unchanged if 'false'); some machines require a tty for sudo; brooklyn by default does not use a tty (so that it can get separate error+stdout streams); you can enable a tty as an option to every ssh command, or you can do it once and modify the machine so that a tty is not subsequently required.",
+      "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" : "entity.running",
+      "type" : "java.lang.Boolean",
+      "defaultValue" : null,
+      "description" : "Skip the startup process entirely, if service already running",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "entity.started",
+      "type" : "java.lang.Boolean",
+      "defaultValue" : null,
+      "description" : "Skip the startup process entirely, for running services",
+      "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.install",
+      "type" : "java.util.Map",
+      "defaultValue" : null,
+      "description" : "Mapping of files, to be copied before install, to destination name relative to installDir",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "files.preinstall",
+      "type" : "java.util.Map",
+      "defaultValue" : null,
+      "description" : "Mapping of files, to be copied before install, to destination name relative to installDir",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "files.runtime",
+      "type" : "java.util.Map",
+      "defaultValue" : null,
+      "description" : "Mapping of files, to be copied before customisation, to destination name relative to runDir",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "inboundPorts.autoInfer",
+      "type" : "java.lang.Boolean",
+      "defaultValue" : true,
+      "description" : "If set to false turns off the opening of ports based on naming convention, and also those that are of type PortRange in Java entities",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "inboundPorts.configRegex",
+      "type" : "java.lang.String",
+      "defaultValue" : ".*\\.port",
+      "description" : "Regex governing the opening of ports based on config names",
+      "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" : null,
+      "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" : "java.version.required",
+      "type" : "java.lang.String",
+      "defaultValue" : "1.7",
+      "description" : "Java version required",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "jmx.agent.local.path",
+      "type" : "java.lang.String",
+      "defaultValue" : null,
+      "description" : "Path to JMX driver on the local machine",
+      "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" : "org.apache.brooklyn.api.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.direct.port.legacy.NOT_USED",
+      "type" : "org.apache.brooklyn.api.location.PortRange",
+      "defaultValue" : null,
+      "description" : "Legacy definition 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" : "metrics.usage.retrieve",
+      "type" : "java.lang.Boolean",
+      "defaultValue" : true,
+      "description" : "Whether to retrieve the usage (e.g. performance) metrics",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "openIptables",
+      "type" : "java.lang.Boolean",
+      "defaultValue" : false,
+      "description" : "Whether to open the INBOUND_PORTS via iptables rules; if true then ssh in to run iptables commands, as part of machine provisioning",
+      "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" : "requiredOpenLoginPorts",
+      "type" : "java.util.Collection",
+      "defaultValue" : [ 22 ],
+      "description" : "The port(s) to be opened, to allow login",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "resources.install.latch",
+      "type" : "java.lang.Boolean",
+      "defaultValue" : null,
+      "description" : "Latch for blocking install resources until ready",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "resources.runtime.latch",
+      "type" : "java.lang.Boolean",
+      "defaultValue" : null,
+      "description" : "Latch for blocking runtime resources until ready",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "rmi.registry.port",
+      "type" : "org.apache.brooklyn.api.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.lifecycleTasks",
+      "type" : "org.apache.brooklyn.entity.software.base.SoftwareProcessDriverLifecycleEffectorTasks",
+      "defaultValue" : "org.apache.brooklyn.entity.software.base.SoftwareProcessDriverLifecycleEffectorTasks@563e4026",
+      "description" : "An object that handles lifecycle of an entity's associated machine.",
+      "reconfigurable" : false,
+      "label" : null,
+      "priority" : null,
+      "possibleValues" : null,
+      "links" : null
+    }, {
+      "name" : "softwareProcess.maxSensorRebindDelay",
+      "type" : "org.apache.brooklyn.util.time.Duration",
+      "defaultValue" : "10s",

[... 33411 lines stripped ...]