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:29 UTC

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

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>