brooklyn-commits mailing list archives

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

<TRUNCATED>

Mime
View raw message