{"push_id":1972916389,"size":1,"distinct_size":1,"ref":"refs/heads/version-3.x","head":"9df8e41162fa4326ab713e514e1e85d1a086ef3b","before":"9f6debf0d59d42b8a31dddc0e8ac18090568f197","commits":[{"sha":"9df8e41162fa4326ab713e514e1e85d1a086ef3b","author":{"name":"Mesosphere CI Robot","email":"9e1d6c161ba5b135400a3a5575790e2fc84b09a1@users.noreply.github.com"},"message":"Release cassandra 2.0.0-3.0.14 (automated commit) (#1413)\n\n* Release cassandra 2.0.0-3.0.14 (automated commit)\r\n\r\nDescription:\r\nRelease cassandra 2.0.0-3.0.14\r\n\r\nSource URL: https://infinity-artifacts.s3.amazonaws.com/autodelete7d/cassandra/20170907-171529-abKDPt2twud6jAt5/stub-universe-cassandra.json\r\n\r\nChanges since revision 25:\r\n0 files added: []\r\n1 files removed: [command.json]\r\n4 files changed:\r\n\r\n```\r\n--- 25/config.json\r\n+++ 26/config.json\r\n@@ -1,618 +1,661 @@\r\n {\r\n-\t\"$schema\": \"http://json-schema.org/draft-04/schema#\",\r\n-\t\"id\": \"http://cassandra/docs/mesosphere.com\",\r\n-\t\"type\": \"object\",\r\n-\t\"properties\": {\r\n-\t\t\"service\": {\r\n-\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/service\",\r\n-\t\t\t\"type\": \"object\",\r\n-\t\t\t\"description\": \"DC/OS Apache Cassandra service configuration properties\",\r\n-\t\t\t\"properties\": {\r\n-\t\t\t\t\"name\": {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/service/name\",\r\n-\t\t\t\t\t\"type\": \"string\",\r\n-\t\t\t\t\t\"description\": \"The name of the Cassandra service instance.\",\r\n-\t\t\t\t\t\"default\": \"cassandra\"\r\n-\t\t\t\t},\r\n-\t\t\t\t\"user\": {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/service/user\",\r\n-\t\t\t\t\t\"type\": \"string\",\r\n-\t\t\t\t\t\"description\": \"The user that the service will run as.\",\r\n-\t\t\t\t\t\"default\": \"root\"\r\n-\t\t\t\t},\r\n-\t\t\t\t\"principal\": {\r\n-\t\t\t\t\t\"description\": \"The principal for the Cassandra service instance.\",\r\n-\t\t\t\t\t\"type\": \"string\",\r\n-\t\t\t\t\t\"default\": \"cassandra-principal\"\r\n-\t\t\t\t},\r\n-\t\t\t\t\"secret_name\": {\r\n-\t\t\t\t\t\"description\": \"Name of the Secret Store credentials to use for DC/OS service authentication. This should be left empty unless service authentication is needed.\",\r\n-\t\t\t\t\t\"type\": \"string\",\r\n-\t\t\t\t\t\"default\": \"\"\r\n-\t\t\t\t},\r\n-\t\t\t\t\"cpus\": {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/service/cpus\",\r\n-\t\t\t\t\t\"type\": \"number\",\r\n-\t\t\t\t\t\"description\": \"The cpu shares used by the Cassandra service scheduler.\",\r\n-\t\t\t\t\t\"default\": 0.5\r\n-\t\t\t\t},\r\n-\t\t\t\t\"mem\": {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/service/mem\",\r\n-\t\t\t\t\t\"type\": \"integer\",\r\n-\t\t\t\t\t\"description\": \"The memory used by the Cassandra service scheduler in Mb.\",\r\n-\t\t\t\t\t\"default\": 2048\r\n-\t\t\t\t},\r\n-\t\t\t\t\"heap\": {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/service/heap\",\r\n-\t\t\t\t\t\"type\": \"integer\",\r\n-\t\t\t\t\t\"description\": \"The JVM heap used by the Cassandra service scheduler in Mb.\",\r\n-\t\t\t\t\t\"default\": 1024\r\n-\t\t\t\t},\r\n-\t\t\t\t\"api_port\" : {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/service/api_port\",\r\n-\t\t\t\t\t\"type\": \"integer\",\r\n-\t\t\t\t\t\"description\": \"The port that the Cassandra service API will accept on.\",\r\n-\t\t\t\t\t\"default\": 9000\r\n-\t\t\t\t},\r\n-\t\t\t\t\"placement_constraint\": {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/service/placement_constraint\",\r\n-\t\t\t\t\t\"type\": \"string\",\r\n-\t\t\t\t\t\"description\": \"Marathon-style placement constraint for Cassandra nodes. Example: rack_id:LIKE:rack-foo-.*,rack_id:MAX_PER:2\",\r\n-\t\t\t\t\t\"default\": \"\"\r\n-\t\t\t\t},\r\n-\t\t\t\t\"data_center\": {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/service/data_center\",\r\n-\t\t\t\t\t\"type\": \"string\",\r\n-\t\t\t\t\t\"description\": \"The data center that the Cassandra cluster managed by the service is deployed in.\",\r\n-\t\t\t\t\t\"default\" : \"dc1\"\r\n-\t\t\t\t},\r\n-\t\t\t\t\"data_center_url\": {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/service/data_center_url\",\r\n-\t\t\t\t\t\"type\": \"string\",\r\n-\t\t\t\t\t\"description\": \"The URL from which the data center for the cluster managed by this service instance will serve its data center information.\"\r\n-\t\t\t\t},\r\n-\t\t\t\t\"external_data_center_urls\": {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/service/data_center_url\",\r\n-\t\t\t\t\t\"type\": \"string\",\r\n-\t\t\t\t\t\"description\": \"A comma separated list of the URLs from which this service instance retrieves data center info to form a cluster spanning multiple data centers.\"\r\n-\t\t\t\t}\r\n-\t\t\t},\r\n-\t\t\t\"additionalProperties\": false,\r\n-\t\t\t\"required\": [\r\n-\t\t\t\t\"name\",\r\n-\t\t\t\t\"user\",\r\n-\t\t\t\t\"cpus\",\r\n-\t\t\t\t\"mem\",\r\n-\t\t\t\t\"heap\",\r\n-\t\t\t\t\"api_port\"\r\n-\t\t\t]\r\n-\t\t},\r\n-\t\t\"nodes\": {\r\n-\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/node\",\r\n-\t\t\t\"type\": \"object\",\r\n-\t\t\t\"description\": \"DC/OS Apache Cassandra node configuration properties\",\r\n-\t\t\t\"properties\": {\r\n-\t\t\t\t\"count\": {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/node/count\",\r\n-\t\t\t\t\t\"type\": \"integer\",\r\n-\t\t\t\t\t\"description\": \"The number of Cassandra nodes in the cluster.\",\r\n-\t\t\t\t\t\"default\": 3\r\n-\t\t\t\t},\r\n-\t\t\t\t\"cpus\": {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/node/cpus\",\r\n-\t\t\t\t\t\"type\": \"number\",\r\n-\t\t\t\t\t\"description\": \"The number of cpu shares allocated to the Cassandra process.\",\r\n-\t\t\t\t\t\"default\": 0.5\r\n-\t\t\t\t},\r\n-\t\t\t\t\"mem\": {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/node/mem\",\r\n-\t\t\t\t\t\"type\": \"integer\",\r\n-\t\t\t\t\t\"description\": \"The amount of memory, in MB, allocated to the Cassandra process.\",\r\n-\t\t\t\t\t\"default\": 4096\r\n-\t\t\t\t},\r\n-\t\t\t\t\"disk\": {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/node/disk\",\r\n-\t\t\t\t\t\"type\": \"integer\",\r\n-\t\t\t\t\t\"description\": \"The amount of disk, in MB, allocated to the Cassandra process.\",\r\n-\t\t\t\t\t\"default\": 10240\r\n-\t\t\t\t},\r\n-\t\t\t\t\"disk_type\": {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/node/diskType\",\r\n-\t\t\t\t\t\"type\": \"string\",\r\n-\t\t\t\t\t\"description\": \"Disk type to be used for storing Cassandra data. See documentation. [ROOT, MOUNT]\",\r\n-\t\t\t\t\t\"default\": \"ROOT\"\r\n-\t\t\t\t},\r\n-\t\t\t\t\"heap\": {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/node/heap\",\r\n-\t\t\t\t\t\"type\": \"object\",\r\n-\t\t\t\t\t\"description\": \"The Cassandra process JVM heap configuration object.\",\r\n-\t\t\t\t\t\"properties\": {\r\n-\t\t\t\t\t\t\"size\": {\r\n-\t\t\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/node/heap/size\",\r\n-\t\t\t\t\t\t\t\"type\": \"integer\",\r\n-\t\t\t\t\t\t\t\"description\": \"The amount of JVM heap, in MB, allocated to the Cassandra process.\",\r\n-\t\t\t\t\t\t\t\"default\": 2048\r\n-\t\t\t\t\t\t},\r\n-\t\t\t\t\t\t\"new\": {\r\n-\t\t\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/node/heap/new\",\r\n-\t\t\t\t\t\t\t\"type\": \"integer\",\r\n-\t\t\t\t\t\t\t\"description\": \"The amount of JVM new generation heap, in MB, allocated to the Cassandra process.\",\r\n-\t\t\t\t\t\t\t\"default\": 100\r\n-\t\t\t\t\t\t},\r\n-\t\t\t\t\t\t\"gc\" : {\r\n-\t\t\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/node/heap/gc\",\r\n-\t\t\t\t\t\t\t\"type\": \"string\",\r\n-\t\t\t\t\t\t\t\"enum\": [ \"G1\", \"CMS\" ],\r\n-\t\t\t\t\t\t\t\"description\": \"The Garbage collector for JVM (Either G1 or CMS).\",\r\n-\t\t\t\t\t\t\t\"default\": \"CMS\"\r\n-\t\t\t\t\t\t}\r\n-\t\t\t\t\t},\r\n-\t\t\t\t\t\"additionalProperties\": false,\r\n-\t\t\t\t\t\"required\": [\r\n-\t\t\t\t\t\t\"size\",\r\n-\t\t\t\t\t\t\"new\",\r\n-\t\t\t\t\t\t\"gc\"\r\n-\t\t\t\t\t]\r\n-\r\n-\t\t\t\t},\r\n-\t\t\t\t\"seeds\": {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/node/seeds\",\r\n-\t\t\t\t\t\"type\": \"integer\",\r\n-\t\t\t\t\t\"description\": \"The number of Cassandra seed nodes in the cluster\",\r\n-\t\t\t\t\t\"default\": 2\r\n-\t\t\t\t}\r\n-\t\t\t},\r\n-\t\t\t\"additionalProperties\": false,\r\n-\t\t\t\"required\": [\r\n-\t\t\t\t\"cpus\",\r\n-\t\t\t\t\"mem\",\r\n-\t\t\t\t\"disk\",\r\n-\t\t\t\t\"heap\",\r\n-\t\t\t\t\"count\",\r\n-\t\t\t\t\"seeds\"\r\n-\t\t\t]\r\n-\t\t},\r\n-\t\t\"cassandra\": {\r\n-\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/cassandra\",\r\n-\t\t\t\"description\": \"Apache Cassandra configuration properties\",\r\n-\t\t\t\"type\": \"object\",\r\n-\t\t\t\"properties\": {\r\n-\t\t\t\t\"cluster_name\" : {\r\n-\t\t\t\t\t\"id\" : \"http://cassandra/docs/mesosphere.com/cassandra/cluster_name\",\r\n-\t\t\t\t\t\"type\" : \"string\",\r\n-\t\t\t\t\t\"description\" : \"The name of the cluster managed by the Service\",\r\n-\t\t\t\t\t\"default\" : \"cassandra\"\r\n-\t\t\t\t},\r\n-\t\t\t\t\"authenticator\" : {\r\n-\t\t\t\t\t\"id\" : \"http://cassandra/docs/mesosphere.com/cassandra/authenticator\",\r\n-\t\t\t\t\t\"type\" : \"string\",\r\n-\t\t\t\t\t\"description\" : \"The authentication backend. It implements IAuthenticator, which is used to identify users.\",\r\n-\t\t\t\t\t\"default\" : \"AllowAllAuthenticator\"\r\n-\t\t\t\t},\r\n-\t\t\t\t\"authorizer\" : {\r\n-\t\t\t\t\t\"id\" : \"http://cassandra/docs/mesosphere.com/cassandra/authorizer\",\r\n-\t\t\t\t\t\"type\" : \"string\",\r\n-\t\t\t\t\t\"description\" : \"The authorization backend. It implements IAuthenticator, which limits access and provides permissions.\",\r\n-\t\t\t\t\t\"default\" : \"AllowAllAuthorizer\"\r\n-\t\t\t\t},\r\n-\t\t\t\t\"jmx_port\": {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/cassandra/jmxPort\",\r\n-\t\t\t\t\t\"type\": \"integer\",\r\n-\t\t\t\t\t\"description\": \"The JMX port that will be used to interface with the Cassandra application.\",\r\n-\t\t\t\t\t\"default\": 7199\r\n-\t\t\t\t},\r\n-\t\t\t\t\"num_tokens\": {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/cassandra/numTokens\",\r\n-\t\t\t\t\t\"type\": \"integer\",\r\n-\t\t\t\t\t\"description\": \"The number of tokens assigned to each node.\",\r\n-\t\t\t\t\t\"default\": 256\r\n-\t\t\t\t},\r\n-\t\t\t\t\"hinted_handoff_enabled\": {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/cassandra/hintedHandoffEnabled\",\r\n-\t\t\t\t\t\"type\": \"boolean\",\r\n-\t\t\t\t\t\"description\": \"If true, hinted handoff is enabled for the cluster.\",\r\n-\t\t\t\t\t\"default\": true\r\n-\t\t\t\t},\r\n-\t\t\t\t\"max_hint_window_in_ms\": {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/cassandra/maxHintWindowInMs\",\r\n-\t\t\t\t\t\"type\": \"integer\",\r\n-\t\t\t\t\t\"description\": \"The maximum amount of time, in ms, that hints are generates hints for an unresponsive node.\",\r\n-\t\t\t\t\t\"default\": 10800000\r\n-\t\t\t\t},\r\n-\t\t\t\t\"hinted_handoff_throttle_in_kb\": {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/cassandra/hintedHandoffThrottleInKb\",\r\n-\t\t\t\t\t\"type\": \"integer\",\r\n-\t\t\t\t\t\"description\": \"The maximum throttle per delivery thread in kilobytes per second.\",\r\n-\t\t\t\t\t\"default\": 1024\r\n-\t\t\t\t},\r\n-\t\t\t\t\"max_hints_delivery_threads\": {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/cassandra/maxHintsDeliveryThreads\",\r\n-\t\t\t\t\t\"type\": \"integer\",\r\n-\t\t\t\t\t\"description\": \"The maximum number of delivery threads for hinted handoff.\",\r\n-\t\t\t\t\t\"default\": 2\r\n-\t\t\t\t},\r\n-\t\t\t\t\"batchlog_replay_throttle_in_kb\": {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/cassandra/batchlogReplayThrottleInKb\",\r\n-\t\t\t\t\t\"type\": \"integer\",\r\n-\t\t\t\t\t\"description\": \"The total throttle for log replay in Kpbs.\",\r\n-\t\t\t\t\t\"default\": 1024\r\n-\t\t\t\t},\r\n-\t\t\t\t\"partitioner\": {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/cassandra/partitioner\",\r\n-\t\t\t\t\t\"type\": \"string\",\r\n-\t\t\t\t\t\"description\": \"The partitioner used to distribute rows across the cluster. Murmur3Partitioner is the recommended setting. RandomPartitioner and ByteOrderedPartitioner are supported for legacy applications.\",\r\n-\t\t\t\t\t\"default\": \"org.apache.cassandra.dht.Murmur3Partitioner\"\r\n-\t\t\t\t},\r\n-\t\t\t\t\"key_cache_save_period\": {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/cassandra/keyCacheSavePeriod\",\r\n-\t\t\t\t\t\"type\": \"integer\",\r\n-\t\t\t\t\t\"description\": \"The duration in seconds that keys are saved in cache. Saved caches greatly improve cold-start speeds and has relatively little effect on I/O.\",\r\n-\t\t\t\t\t\"default\": 14400\r\n-\t\t\t\t},\r\n-\t\t\t\t\"row_cache_size_in_mb\": {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/cassandra/rowCacheSizeInMb\",\r\n-\t\t\t\t\t\"type\": \"integer\",\r\n-\t\t\t\t\t\"description\": \"Maximum size of the row cache in memory. Row cache can save more time than key_cache_size_in_mb, but is space-intensive because it contains the entire row. Use the row cache only for hot rows or static rows. 0 disables the row cache.\",\r\n-\t\t\t\t\t\"default\": 0\r\n-\t\t\t\t},\r\n-\t\t\t\t\"row_cache_save_period\": {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/cassandra/rowCacheSavePeriod\",\r\n-\t\t\t\t\t\"type\": \"integer\",\r\n-\t\t\t\t\t\"description\": \"Duration in seconds that rows are saved in cache. 0 disables caching.\",\r\n-\t\t\t\t\t\"default\": 0\r\n-\t\t\t\t},\r\n-\t\t\t\t\"commitlog_sync_period_in_ms\": {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/cassandra/commitlogSyncPeriodInMs\",\r\n-\t\t\t\t\t\"type\": \"integer\",\r\n-\t\t\t\t\t\"description\": \"The number of milliseconds between disk fsync calls.\",\r\n-\t\t\t\t\t\"default\": 10000\r\n-\t\t\t\t},\r\n-\t\t\t\t\"commitlog_segment_size_in_mb\": {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/cassandra/commitlogSegmentSizeInMb\",\r\n-\t\t\t\t\t\"type\": \"integer\",\r\n-\t\t\t\t\t\"description\": \"The size of each commit log segment in Mb.\",\r\n-\t\t\t\t\t\"default\": 32\r\n-\t\t\t\t},\r\n-\t\t\t\t\"concurrent_reads\": {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/cassandra/concurrentReads\",\r\n-\t\t\t\t\t\"type\": \"integer\",\r\n-\t\t\t\t\t\"description\": \"For workloads with more data than can fit in memory, the bottleneck is reads fetching data from disk. Setting to (16 times the number of drives) allows operations to queue low enough in the stack so that the OS and drives can reorder them.\",\r\n-\t\t\t\t\t\"default\": 16\r\n-\t\t\t\t},\r\n-\t\t\t\t\"concurrent_writes\": {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/cassandra/concurrentWrites\",\r\n-\t\t\t\t\t\"type\": \"integer\",\r\n-\t\t\t\t\t\"description\": \"Writes in Cassandra are rarely I/O bound, so the ideal number of concurrent writes depends on the number of CPU cores in your system. The recommended value is 8 times the number of cpu cores.\",\r\n-\t\t\t\t\t\"default\": 32\r\n-\t\t\t\t},\r\n-\t\t\t\t\"concurrent_counter_writes\": {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/cassandra/concurrentCounterWrites\",\r\n-\t\t\t\t\t\"type\": \"integer\",\r\n-\t\t\t\t\t\"description\": \"Counter writes read the current values before incrementing and writing them back. The recommended value is (16 times the number of drives) .\",\r\n-\t\t\t\t\t\"default\": 16\r\n-\t\t\t\t},\r\n-\t\t\t\t\"memtable_allocation_type\": {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/cassandra/memtableAllocationType\",\r\n-\t\t\t\t\t\"type\": \"string\",\r\n-\t\t\t\t\t\"description\": \"The type of allocations for the Cassandra memtable. heap_buffers keep all data on the JVM heap. offheap_buffers may reduce heap utilization for large string or binary values. offheap_objects may improve heap size for small integers or UUIDs as well. Both off heap options will increase read latency.\",\r\n-\t\t\t\t\t\"default\": \"heap_buffers\"\r\n-\t\t\t\t},\r\n-\t\t\t\t\"index_summary_resize_interval_in_minutes\": {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/cassandra/indexSummaryResizeIntervalInMinutes\",\r\n-\t\t\t\t\t\"type\": \"integer\",\r\n-\t\t\t\t\t\"description\": \"How frequently index summaries should be re-sampled in minutes. This is done periodically to redistribute memory from the fixed-size pool to SSTables proportional their recent read rates.\",\r\n-\t\t\t\t\t\"default\": 60\r\n-\t\t\t\t},\r\n-\t\t\t\t\"storage_port\": {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/cassandra/storagePort\",\r\n-\t\t\t\t\t\"type\": \"integer\",\r\n-\t\t\t\t\t\"description\": \"The port for inter-node communication.\",\r\n-\t\t\t\t\t\"default\": 7000\r\n-\t\t\t\t},\r\n-\t\t\t\t\"ssl_storage_port\": {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/cassandra/sslStoragePort\",\r\n-\t\t\t\t\t\"type\": \"integer\",\r\n-\t\t\t\t\t\"description\": \"The port for inter-node communication over SSL.\",\r\n-\t\t\t\t\t\"default\": 7001\r\n-\t\t\t\t},\r\n-\t\t\t\t\"start_native_transport\": {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/cassandra/startNativeTransport\",\r\n-\t\t\t\t\t\"type\": \"boolean\",\r\n-\t\t\t\t\t\"description\": \"If true CQL is enabled.\",\r\n-\t\t\t\t\t\"default\": true\r\n-\t\t\t\t},\r\n-\t\t\t\t\"native_transport_port\": {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/cassandra/nativeTransportPort\",\r\n-\t\t\t\t\t\"type\": \"integer\",\r\n-\t\t\t\t\t\"description\": \"The port for CQL communication.\",\r\n-\t\t\t\t\t\"default\": 9042\r\n-\t\t\t\t},\r\n-\t\t\t\t\"start_rpc\": {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/cassandra/startRpc\",\r\n-\t\t\t\t\t\"type\": \"boolean\",\r\n-\t\t\t\t\t\"description\": \"If true Thrift RPC is enable. This is deprecated by may be necessary for legacy applications.\",\r\n-\t\t\t\t\t\"default\": false\r\n-\t\t\t\t},\r\n-\t\t\t\t\"rpc_port\": {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/cassandra/rpcPort\",\r\n-\t\t\t\t\t\"type\": \"integer\",\r\n-\t\t\t\t\t\"description\": \"The port for Thrift RPC communication.\",\r\n-\t\t\t\t\t\"default\": 9160\r\n-\t\t\t\t},\r\n-\t\t\t\t\"rpc_keepalive\": {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/cassandra/rpcKeepalive\",\r\n-\t\t\t\t\t\"type\": \"boolean\",\r\n-\t\t\t\t\t\"description\": \"Enables or TCP keepalive for RPC connections.\",\r\n-\t\t\t\t\t\"default\": true\r\n-\t\t\t\t},\r\n-\t\t\t\t\"thrift_framed_transport_size_in_mb\": {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/cassandra/thriftFramedTransportSizeInMb\",\r\n-\t\t\t\t\t\"type\": \"integer\",\r\n-\t\t\t\t\t\"description\": \"Frame size (maximum field length) for Thrift.\",\r\n-\t\t\t\t\t\"default\": 15\r\n-\t\t\t\t},\r\n-\t\t\t\t\"tombstone_warn_threshold\": {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/cassandra/tombstoneWarnThreshold\",\r\n-\t\t\t\t\t\"type\": \"integer\",\r\n-\t\t\t\t\t\"description\": \"The maximum number of tombstones a query can scan before warning.\",\r\n-\t\t\t\t\t\"default\": 1000\r\n-\t\t\t\t},\r\n-\t\t\t\t\"tombstone_failure_threshold\": {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/cassandra/tombstoneFailureThreshold\",\r\n-\t\t\t\t\t\"type\": \"integer\",\r\n-\t\t\t\t\t\"description\": \"The maximum number of tombstones a query can scan before aborting.\",\r\n-\t\t\t\t\t\"default\": 100000\r\n-\t\t\t\t},\r\n-\t\t\t\t\"column_index_size_in_kb\": {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/cassandra/columnIndexSizeInKb\",\r\n-\t\t\t\t\t\"type\": \"integer\",\r\n-\t\t\t\t\t\"description\": \"The granularity of the index of rows within a partition. For huge rows, decrease this setting to improve seek time. If you use key cache, be careful not to make this setting too large because key cache will be overwhelmed.\",\r\n-\t\t\t\t\t\"default\": 64\r\n-\t\t\t\t},\r\n-\t\t\t\t\"batch_size_warn_threshold_in_kb\": {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/cassandra/batchSizeWarnThresholdInKb\",\r\n-\t\t\t\t\t\"type\": \"integer\",\r\n-\t\t\t\t\t\"description\": \"Warn the operator on a batch size exceeding this value in kilobytes. Caution should be taken on increasing the size of this threshold as it can lead to node instability.\",\r\n-\t\t\t\t\t\"default\": 5\r\n-\t\t\t\t},\r\n-\t\t\t\t\"batch_size_fail_threshold_in_kb\": {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/cassandra/batchSizeFailThresholdInKb\",\r\n-\t\t\t\t\t\"type\": \"integer\",\r\n-\t\t\t\t\t\"description\": \"Fail batch sizes exceeding this value in kilobytes. Caution should be taken on increasing the size of this threshold as it can lead to node instability.\",\r\n-\t\t\t\t\t\"default\": 50\r\n-\t\t\t\t},\r\n-\t\t\t\t\"compaction_throughput_mb_per_sec\": {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/cassandra/compactionThroughputMbPerSec\",\r\n-\t\t\t\t\t\"type\": \"integer\",\r\n-\t\t\t\t\t\"description\": \"Throttles compaction to the specified total throughput across the node. Compaction frequency varies with direct proportion to write throughput and is necessary to limit the SSTable size. The recommended value is 16 to 32 times the rate of write throughput (in MB/second).\",\r\n-\t\t\t\t\t\"default\": 16\r\n-\t\t\t\t},\r\n-\t\t\t\t\"sstable_preemptive_open_interval_in_mb\": {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/cassandra/sstablePreemptiveOpenIntervalInMb\",\r\n-\t\t\t\t\t\"type\": \"integer\",\r\n-\t\t\t\t\t\"description\": \"When compacting, the replacement opens SSTables before they are completely written and uses in place of the prior SSTables for any range previously written. This setting helps to smoothly transfer reads between the SSTables by reducing page cache churn and keeps hot rows hot.\",\r\n-\t\t\t\t\t\"default\": 50\r\n-\t\t\t\t},\r\n-\t\t\t\t\"read_request_timeout_in_ms\": {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/cassandra/readRequestTimeoutInMs\",\r\n-\t\t\t\t\t\"type\": \"integer\",\r\n-\t\t\t\t\t\"description\": \"The time that the coordinator waits for read operations to complete in ms.\",\r\n-\t\t\t\t\t\"default\": 5000\r\n-\t\t\t\t},\r\n-\t\t\t\t\"range_request_timeout_in_ms\": {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/cassandra/rangeRequestTimeoutInMs\",\r\n-\t\t\t\t\t\"type\": \"integer\",\r\n-\t\t\t\t\t\"description\": \"The time that the coordinator waits for range scans complete in ms.\",\r\n-\t\t\t\t\t\"default\": 10000\r\n-\t\t\t\t},\r\n-\t\t\t\t\"write_request_timeout_in_ms\": {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/cassandra/writeRequestTimeoutInMs\",\r\n-\t\t\t\t\t\"type\": \"integer\",\r\n-\t\t\t\t\t\"description\": \"The time that the coordinator waits for write operations to complete in ms.\",\r\n-\t\t\t\t\t\"default\": 2000\r\n-\t\t\t\t},\r\n-\t\t\t\t\"counter_write_request_timeout_in_ms\": {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/cassandra/counterWriteRequestTimeoutInMs\",\r\n-\t\t\t\t\t\"type\": \"integer\",\r\n-\t\t\t\t\t\"description\": \"The time that the coordinator waits for counter write operations to complete in ms.\",\r\n-\t\t\t\t\t\"default\": 5000\r\n-\t\t\t\t},\r\n-\t\t\t\t\"cas_contention_timeout_in_ms\": {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/cassandra/casContentionTimeoutInMs\",\r\n-\t\t\t\t\t\"type\": \"integer\",\r\n-\t\t\t\t\t\"description\": \"The time for which the coordinator will retry CAS operations on the same row in ms.\",\r\n-\t\t\t\t\t\"default\": 1000\r\n-\t\t\t\t},\r\n-\t\t\t\t\"truncate_request_timeout_in_ms\": {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/cassandra/truncateRequestTimeoutInMs\",\r\n-\t\t\t\t\t\"type\": \"integer\",\r\n-\t\t\t\t\t\"description\": \"The time that the coordinator waits for truncate operations to complete in ms.\",\r\n-\r\n-\t\t\t\t\t\"default\": 60000\r\n-\t\t\t\t},\r\n-\t\t\t\t\"request_timeout_in_ms\": {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/cassandra/requestTimeoutInMs\",\r\n-\t\t\t\t\t\"type\": \"integer\",\r\n-\t\t\t\t\t\"description\": \"The default timeout for all other requests in ms.\",\r\n-\t\t\t\t\t\"default\": 10000\r\n-\t\t\t\t},\r\n-\t\t\t\t\"dynamic_snitch_update_interval_in_ms\": {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/cassandra/dynamicSnitchUpdateIntervalInMs\",\r\n-\t\t\t\t\t\"type\": \"integer\",\r\n-\t\t\t\t\t\"description\": \"The time, in ms, the snitch will wait before updating node scores.\",\r\n-\t\t\t\t\t\"default\": 100\r\n-\t\t\t\t},\r\n-\t\t\t\t\"dynamic_snitch_reset_interval_in_ms\": {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/cassandra/dynamicSnitchResetIntervalInMs\",\r\n-\t\t\t\t\t\"type\": \"integer\",\r\n-\t\t\t\t\t\"description\": \"The time, in ms, the snitch will wait before resetting node scores allowing bad nodes to recover.\",\r\n-\t\t\t\t\t\"default\": 600000\r\n-\t\t\t\t},\r\n-\t\t\t\t\"dynamic_snitch_badness_threshold\": {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/cassandra/dynamicSnitchBadnessThreshold\",\r\n-\t\t\t\t\t\"type\": \"number\",\r\n-\t\t\t\t\t\"description\": \"Sets the performance threshold for dynamically routing client requests away from a poorly performing node.\",\r\n-\t\t\t\t\t\"default\": 0.1\r\n-\t\t\t\t},\r\n-\t\t\t\t\"internode_compression\": {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/cassandra/internodeCompression\",\r\n-\t\t\t\t\t\"type\": \"string\",\r\n-\t\t\t\t\t\"description\": \"Controls whether traffic between nodes is compressed. all compresses all traffic. none compresses no traffic. dc compresses between datacenters.\",\r\n-\t\t\t\t\t\"default\": \"all\"\r\n-\t\t\t\t},\r\n-\t\t\t\t\"max_hints_file_size_in_mb\": {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/cassandra/max_hints_file_size_in_mb\",\r\n-\t\t\t\t\t\"type\": \"integer\",\r\n-\t\t\t\t\t\"description\": \"The maximum size of the hints file in Mb.\",\r\n-\t\t\t\t\t\"default\": 128\r\n-\t\t\t\t},\r\n-\t\t\t\t\"hints_flush_period_in_ms\": {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/cassandra/hints_flush_period_in_ms\",\r\n-\t\t\t\t\t\"type\": \"integer\",\r\n-\t\t\t\t\t\"description\": \"The time, in ms, for the period in which hints are flushed to disk.\",\r\n-\t\t\t\t\t\"default\": 10000\r\n-\t\t\t\t},\r\n-\t\t\t\t\"concurrent_materialized_view_writes\": {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/cassandra/concurrent_materialized_view_writes\",\r\n-\t\t\t\t\t\"type\": \"integer\",\r\n-\t\t\t\t\t\"description\": \"The maximum number of concurrent writes to materialized views.\",\r\n-\t\t\t\t\t\"default\": 32\r\n-\t\t\t\t},\r\n-\t\t\t\t\"commitlog_total_space_in_mb\": {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/cassandra/commitlog_total_space_in_mb\",\r\n-\t\t\t\t\t\"type\": \"integer\",\r\n-\t\t\t\t\t\"description\": \"The total size of the commit log in Mb.\",\r\n-\t\t\t\t\t\"default\": 8192\r\n-\t\t\t\t}\r\n-\t\t\t},\r\n-\t\t\t\"additionalProperties\": false,\r\n-\t\t\t\"required\": [\r\n-\t\t\t\t\"cluster_name\",\r\n-\t\t\t\t\"jmx_port\",\r\n-\t\t\t\t\"num_tokens\",\r\n-\t\t\t\t\"max_hint_window_in_ms\",\r\n-\t\t\t\t\"hinted_handoff_enabled\",\r\n-\t\t\t\t\"hinted_handoff_throttle_in_kb\",\r\n-\t\t\t\t\"max_hints_delivery_threads\",\r\n-\t\t\t\t\"batchlog_replay_throttle_in_kb\",\r\n-\t\t\t\t\"partitioner\",\r\n-\t\t\t\t\"key_cache_save_period\",\r\n-\t\t\t\t\"row_cache_size_in_mb\",\r\n-\t\t\t\t\"row_cache_save_period\",\r\n-\t\t\t\t\"commitlog_sync_period_in_ms\",\r\n-\t\t\t\t\"commitlog_segment_size_in_mb\",\r\n-\t\t\t\t\"concurrent_reads\",\r\n-\t\t\t\t\"concurrent_writes\",\r\n-\t\t\t\t\"concurrent_counter_writes\",\r\n-\t\t\t\t\"memtable_allocation_type\",\r\n-\t\t\t\t\"index_summary_resize_interval_in_minutes\",\r\n-\t\t\t\t\"storage_port\",\r\n-\t\t\t\t\"start_native_transport\",\r\n-\t\t\t\t\"native_transport_port\",\r\n-\t\t\t\t\"start_rpc\",\r\n-\t\t\t\t\"rpc_port\",\r\n-\t\t\t\t\"rpc_keepalive\",\r\n-\t\t\t\t\"thrift_framed_transport_size_in_mb\",\r\n-\t\t\t\t\"tombstone_warn_threshold\",\r\n-\t\t\t\t\"tombstone_failure_threshold\",\r\n-\t\t\t\t\"column_index_size_in_kb\",\r\n-\t\t\t\t\"batch_size_warn_threshold_in_kb\",\r\n-\t\t\t\t\"batch_size_fail_threshold_in_kb\",\r\n-\t\t\t\t\"compaction_throughput_mb_per_sec\",\r\n-\t\t\t\t\"sstable_preemptive_open_interval_in_mb\",\r\n-\t\t\t\t\"read_request_timeout_in_ms\",\r\n-\t\t\t\t\"range_request_timeout_in_ms\",\r\n-\t\t\t\t\"write_request_timeout_in_ms\",\r\n-\t\t\t\t\"counter_write_request_timeout_in_ms\",\r\n-\t\t\t\t\"cas_contention_timeout_in_ms\",\r\n-\t\t\t\t\"truncate_request_timeout_in_ms\",\r\n-\t\t\t\t\"request_timeout_in_ms\",\r\n-\t\t\t\t\"dynamic_snitch_update_interval_in_ms\",\r\n-\t\t\t\t\"dynamic_snitch_reset_interval_in_ms\",\r\n-\t\t\t\t\"dynamic_snitch_badness_threshold\",\r\n-\t\t\t\t\"internode_compression\",\r\n-\t\t\t\t\"max_hints_file_size_in_mb\",\r\n-\t\t\t\t\"hints_flush_period_in_ms\",\r\n-\t\t\t\t\"concurrent_materialized_view_writes\",\r\n-\t\t\t\t\"commitlog_total_space_in_mb\"\r\n-\t\t\t]\r\n-\t\t},\r\n-\t\t\"executor\": {\r\n-\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/executor\",\r\n-\t\t\t\"type\": \"object\",\r\n-\t\t\t\"description\": \"The DC/OS Apache Cassandra service executor configuration object.\",\r\n-\t\t\t\"properties\": {\r\n-\t\t\t\t\"cpus\": {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/executor/cpus\",\r\n-\t\t\t\t\t\"type\": \"number\",\r\n-\t\t\t\t\t\"description\": \"The cpu shares used by the Cassandra service executor.\",\r\n-\t\t\t\t\t\"default\": 0.5\r\n-\t\t\t\t},\r\n-\t\t\t\t\"mem\": {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/executor/mem\",\r\n-\t\t\t\t\t\"type\": \"integer\",\r\n-\t\t\t\t\t\"description\": \"The memory used by the Cassandra service executor in Mb.\",\r\n-\t\t\t\t\t\"default\": 1024\r\n-\t\t\t\t},\r\n-\t\t\t\t\"heap\": {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/executor/heap\",\r\n-\t\t\t\t\t\"type\": \"integer\",\r\n-\t\t\t\t\t\"description\": \"The JVM heap used by the Cassandra service executor in Mb.\",\r\n-\t\t\t\t\t\"default\": 768\r\n-\t\t\t\t},\r\n-\t\t\t\t\"disk\": {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/executor/heap\",\r\n-\t\t\t\t\t\"type\": \"integer\",\r\n-\t\t\t\t\t\"description\": \"The amount of disk used by the Cassandra service executor in Mb.\",\r\n-\t\t\t\t\t\"default\": 1024\r\n-\t\t\t\t},\r\n-\t\t\t\t\"api_port\" : {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/executor/api_port\",\r\n-\t\t\t\t\t\"type\": \"integer\",\r\n-\t\t\t\t\t\"description\": \"The port that the Cassandra executor API will accept on.\",\r\n-\t\t\t\t\t\"default\": 9001\r\n-\t\t\t\t}\r\n-\t\t\t},\r\n-\t\t\t\"additionalProperties\": false,\r\n-\t\t\t\"required\": [\r\n-\t\t\t\t\"cpus\",\r\n-\t\t\t\t\"mem\",\r\n-\t\t\t\t\"heap\",\r\n-\t\t\t\t\"disk\",\r\n-\t\t\t\t\"api_port\"\r\n-\t\t\t]\r\n-\t\t},\r\n-\t\t\"task\": {\r\n-\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/task\",\r\n-\t\t\t\"type\": \"object\",\r\n-\t\t\t\"description\": \"The DC/OS Apache Cassandra service cluster task configuration object.\",\r\n-\t\t\t\"properties\": {\r\n-\t\t\t\t\"cpus\": {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/task/cpus\",\r\n-\t\t\t\t\t\"type\": \"number\",\r\n-\t\t\t\t\t\"description\": \"The cpu shares used by the Cassandra service cluster tasks.\",\r\n-\t\t\t\t\t\"default\": 0.5\r\n-\t\t\t\t},\r\n-\t\t\t\t\"mem\": {\r\n-\t\t\t\t\t\"id\": \"http://cassandra/docs/mesosphere.com/executor/mem\",\r\n-\t\t\t\t\t\"type\": \"integer\",\r\n-\t\t\t\t\t\"description\": \"The memory used by the Cassandra cluster tasks in Mb.\",\r\n-\t\t\t\t\t\"default\": 256\r\n-\t\t\t\t}\r\n-\t\t\t},\r\n-\t\t\t\"additionalProperties\": false,\r\n-\t\t\t\"required\": [\r\n-\t\t\t\t\"cpus\",\r\n-\t\t\t\t\"mem\"\r\n-\t\t\t]\r\n-\t\t}\r\n-\t},\r\n-\t\"additionalProperties\": false,\r\n-\t\"required\": [\r\n-\t\t\"service\",\r\n-\t\t\"nodes\",\r\n-\t\t\"cassandra\",\r\n-\t\t\"executor\",\r\n-\t\t\"task\"\r\n-\t]\r\n+  \"type\": \"object\",\r\n+  \"properties\": {\r\n+    \"service\": {\r\n+      \"type\": \"object\",\r\n+      \"description\": \"DC/OS Apache Cassandra service configuration properties\",\r\n+      \"properties\": {\r\n+        \"name\": {\r\n+          \"description\": \"The name of the Cassandra service instance.\",\r\n+          \"type\": \"string\",\r\n+          \"default\": \"cassandra\"\r\n+        },\r\n+        \"service_account_secret\": {\r\n+          \"description\": \"Name of the Secret Store credentials to use for DC/OS service authentication. This should be left empty unless service authentication is needed.\",\r\n+          \"type\": \"string\",\r\n+          \"default\": \"\"\r\n+        },\r\n+        \"service_account\": {\r\n+          \"description\": \"The service account for DC/OS service authentication. This is typically left empty to use the default unless service authentication is needed. The value given here is passed as the principal of Mesos framework.\",\r\n+          \"type\": \"string\",\r\n+          \"default\": \"\"\r\n+        },\r\n+        \"user\": {\r\n+          \"description\": \"The user that runs the Cassandra nodes and owns the Mesos sandbox.\",\r\n+          \"type\": \"string\",\r\n+          \"default\": \"nobody\"\r\n+        },\r\n+        \"mesos_api_version\": {\r\n+          \"description\": \"Configures the Mesos API version to use. Possible values: V0 (non-HTTP), V1 (HTTP)\",\r\n+          \"type\": \"string\",\r\n+          \"default\": \"V0\"\r\n+        },\r\n+        \"data_center\": {\r\n+          \"description\": \"The name of the data center this cluster is running in\",\r\n+          \"type\": \"string\",\r\n+          \"default\": \"datacenter1\"\r\n+        },\r\n+        \"rack\": {\r\n+          \"description\": \"The name of the rack this cluster is running on\",\r\n+          \"type\": \"string\",\r\n+          \"default\": \"rack1\"\r\n+        },\r\n+        \"remote_seeds\": {\r\n+          \"description\": \"A comma-separated list of seed nodes from other clusters in a multi-datacenter deployment\",\r\n+          \"type\": \"string\",\r\n+          \"default\": \"\"\r\n+        },\r\n+        \"backup_restore_strategy\": {\r\n+          \"description\": \"Strategy to use for uploading/downloading backups {serial, parallel}\",\r\n+          \"type\": \"string\",\r\n+          \"enum\": [\r\n+            \"serial\",\r\n+            \"parallel\"\r\n+          ],\r\n+          \"default\": \"serial\"\r\n+        },\r\n+        \"virtual_network_enabled\": {\r\n+          \"description\": \"Enable virtual networking\",\r\n+          \"type\": \"boolean\",\r\n+          \"default\": false\r\n+        },\r\n+        \"virtual_network_name\": {\r\n+          \"description\": \"The name of the virtual network to join\",\r\n+          \"type\": \"string\",\r\n+          \"default\": \"dcos\"\r\n+        },\r\n+        \"virtual_network_plugin_labels\": {\r\n+          \"description\": \"Labels to pass to the virtual network plugin. Comma-separated key:value pairs. For example: k_0:v_0,k_1:v_1,...,k_n:v_n\",\r\n+          \"type\": \"string\",\r\n+          \"default\": \"\"\r\n+        },\r\n+        \"log_level\": {\r\n+          \"description\": \"The log level for the DC/OS service.\",\r\n+          \"type\": \"string\",\r\n+          \"enum\": [\r\n+            \"OFF\",\r\n+            \"FATAL\",\r\n+            \"ERROR\",\r\n+            \"WARN\",\r\n+            \"INFO\",\r\n+            \"DEBUG\",\r\n+            \"TRACE\",\r\n+            \"ALL\"\r\n+          ],\r\n+          \"default\": \"INFO\"\r\n+        }\r\n+      },\r\n+      \"required\": [\r\n+        \"name\",\r\n+        \"user\"\r\n+      ]\r\n+    },\r\n+    \"nodes\": {\r\n+      \"type\": \"object\",\r\n+      \"description\": \"DC/OS Apache Cassandra node configuration properties\",\r\n+      \"properties\": {\r\n+        \"count\": {\r\n+          \"type\": \"integer\",\r\n+          \"description\": \"The number of Cassandra nodes in the cluster.\",\r\n+          \"default\": 3\r\n+        },\r\n+        \"cpus\": {\r\n+          \"type\": \"number\",\r\n+          \"description\": \"The number of cpu shares allocated to the Cassandra process.\",\r\n+          \"default\": 0.5\r\n+        },\r\n+        \"mem\": {\r\n+          \"type\": \"integer\",\r\n+          \"description\": \"The amount of memory, in MB, allocated to the Cassandra process.\",\r\n+          \"default\": 4096\r\n+        },\r\n+        \"disk\": {\r\n+          \"type\": \"integer\",\r\n+          \"description\": \"The amount of disk, in MB, allocated to the Cassandra process.\",\r\n+          \"default\": 10240\r\n+        },\r\n+        \"disk_type\": {\r\n+          \"type\": \"string\",\r\n+          \"description\": \"Disk type to be used for storing Cassandra data. See documentation. [ROOT, MOUNT]\",\r\n+          \"default\": \"ROOT\"\r\n+        },\r\n+        \"placement_constraint\": {\r\n+          \"type\": \"string\",\r\n+          \"description\": \"The Marathon-style placement constraint string controlling node placement\",\r\n+          \"default\": \"hostname:MAX_PER:1\"\r\n+        },\r\n+        \"heap\": {\r\n+          \"type\": \"object\",\r\n+          \"description\": \"The Cassandra process JVM heap configuration object.\",\r\n+          \"properties\": {\r\n+            \"size\": {\r\n+              \"type\": \"integer\",\r\n+              \"description\": \"The amount of JVM heap, in MB, allocated to the Cassandra process.\",\r\n+              \"default\": 2048\r\n+            },\r\n+            \"new\": {\r\n+              \"type\": \"integer\",\r\n+              \"description\": \"The amount of JVM new generation heap, in MB, allocated to the Cassandra process.\",\r\n+              \"default\": 100\r\n+            },\r\n+            \"gc\": {\r\n+              \"type\": \"string\",\r\n+              \"enum\": [\r\n+                \"G1\",\r\n+                \"CMS\"\r\n+              ],\r\n+              \"description\": \"The Garbage collector for JVM (Either G1 or CMS).\",\r\n+              \"default\": \"CMS\"\r\n+            }\r\n+          },\r\n+          \"additionalProperties\": false,\r\n+          \"required\": [\r\n+            \"size\",\r\n+            \"new\",\r\n+            \"gc\"\r\n+          ]\r\n+        }\r\n+      },\r\n+      \"additionalProperties\": false,\r\n+      \"required\": [\r\n+        \"cpus\",\r\n+        \"mem\",\r\n+        \"disk\",\r\n+        \"heap\",\r\n+        \"count\"\r\n+      ]\r\n+    },\r\n+    \"cassandra\": {\r\n+      \"description\": \"Apache Cassandra configuration properties\",\r\n+      \"type\": \"object\",\r\n+      \"properties\": {\r\n+        \"cluster_name\": {\r\n+          \"type\": \"string\",\r\n+          \"description\": \"The name of the cluster managed by the Service\",\r\n+          \"default\": \"cassandra\"\r\n+        },\r\n+        \"authenticator\": {\r\n+          \"type\": \"string\",\r\n+          \"description\": \"The authentication backend. It implements IAuthenticator, which is used to identify users.\",\r\n+          \"default\": \"AllowAllAuthenticator\"\r\n+        },\r\n+        \"authorizer\": {\r\n+          \"type\": \"string\",\r\n+          \"description\": \"The authorization backend. It implements IAuthenticator, which limits access and provides permissions.\",\r\n+          \"default\": \"AllowAllAuthorizer\"\r\n+        },\r\n+        \"jmx_port\": {\r\n+          \"type\": \"integer\",\r\n+          \"description\": \"The JMX port that will be used to interface with the Cassandra application.\",\r\n+          \"default\": 7199\r\n+        },\r\n+        \"num_tokens\": {\r\n+          \"type\": \"integer\",\r\n+          \"description\": \"The number of tokens assigned to each node.\",\r\n+          \"default\": 256\r\n+        },\r\n+        \"hinted_handoff_enabled\": {\r\n+          \"type\": \"boolean\",\r\n+          \"description\": \"If true, hinted handoff is enabled for the cluster.\",\r\n+          \"default\": true\r\n+        },\r\n+        \"max_hint_window_in_ms\": {\r\n+          \"type\": \"integer\",\r\n+          \"description\": \"The maximum amount of time, in ms, that hints are generates hints for an unresponsive node.\",\r\n+          \"default\": 10800000\r\n+        },\r\n+        \"hinted_handoff_throttle_in_kb\": {\r\n+          \"type\": \"integer\",\r\n+          \"description\": \"The maximum throttle per delivery thread in kilobytes per second.\",\r\n+          \"default\": 1024\r\n+        },\r\n+        \"max_hints_delivery_threads\": {\r\n+          \"type\": \"integer\",\r\n+          \"description\": \"The maximum number of delivery threads for hinted handoff.\",\r\n+          \"default\": 2\r\n+        },\r\n+        \"batchlog_replay_throttle_in_kb\": {\r\n+          \"type\": \"integer\",\r\n+          \"description\": \"The total throttle for log replay in Kpbs.\",\r\n+          \"default\": 1024\r\n+        },\r\n+        \"partitioner\": {\r\n+          \"type\": \"string\",\r\n+          \"description\": \"The partitioner used to distribute rows across the cluster. Murmur3Partitioner is the recommended setting. RandomPartitioner and ByteOrderedPartitioner are supported for legacy applications.\",\r\n+          \"default\": \"org.apache.cassandra.dht.Murmur3Partitioner\"\r\n+        },\r\n+        \"key_cache_save_period\": {\r\n+          \"type\": \"integer\",\r\n+          \"description\": \"The duration in seconds that keys are saved in cache. Saved caches greatly improve cold-start speeds and has relatively little effect on I/O.\",\r\n+          \"default\": 14400\r\n+        },\r\n+        \"row_cache_size_in_mb\": {\r\n+          \"type\": \"integer\",\r\n+          \"description\": \"Maximum size of the row cache in memory. Row cache can save more time than key_cache_size_in_mb, but is space-intensive because it contains the entire row. Use the row cache only for hot rows or static rows. 0 disables the row cache.\",\r\n+          \"default\": 0\r\n+        },\r\n+        \"row_cache_save_period\": {\r\n+          \"type\": \"integer\",\r\n+          \"description\": \"Duration in seconds that rows are saved in cache. 0 disables caching.\",\r\n+          \"default\": 0\r\n+        },\r\n+        \"commitlog_sync_period_in_ms\": {\r\n+          \"type\": \"integer\",\r\n+          \"description\": \"The number of milliseconds between disk fsync calls.\",\r\n+          \"default\": 10000\r\n+        },\r\n+        \"commitlog_segment_size_in_mb\": {\r\n+          \"type\": \"integer\",\r\n+          \"description\": \"The size of each commit log segment in Mb.\",\r\n+          \"default\": 32\r\n+        },\r\n+        \"concurrent_reads\": {\r\n+          \"type\": \"integer\",\r\n+          \"description\": \"For workloads with more data than can fit in memory, the bottleneck is reads fetching data from disk. Setting to (16 times the number of drives) allows operations to queue low enough in the stack so that the OS and drives can reorder them.\",\r\n+          \"default\": 16\r\n+        },\r\n+        \"concurrent_writes\": {\r\n+          \"type\": \"integer\",\r\n+          \"description\": \"Writes in Cassandra are rarely I/O bound, so the ideal number of concurrent writes depends on the number of CPU cores in your system. The recommended value is 8 times the number of cpu cores.\",\r\n+          \"default\": 32\r\n+        },\r\n+        \"concurrent_counter_writes\": {\r\n+          \"type\": \"integer\",\r\n+          \"description\": \"Counter writes read the current values before incrementing and writing them back. The recommended value is (16 times the number of drives) .\",\r\n+          \"default\": 16\r\n+        },\r\n+        \"memtable_allocation_type\": {\r\n+          \"type\": \"string\",\r\n+          \"description\": \"The type of allocations for the Cassandra memtable. heap_buffers keep all data on the JVM heap. offheap_buffers may reduce heap utilization for large string or binary values. offheap_objects may improve heap size for small integers or UUIDs as well. Both off heap options will increase read latency.\",\r\n+          \"default\": \"heap_buffers\"\r\n+        },\r\n+        \"index_summary_resize_interval_in_minutes\": {\r\n+          \"type\": \"integer\",\r\n+          \"description\": \"How frequently index summaries should be re-sampled in minutes. This is done periodically to redistribute memory from the fixed-size pool to SSTables proportional their recent read rates.\",\r\n+          \"default\": 60\r\n+        },\r\n+        \"storage_port\": {\r\n+          \"type\": \"integer\",\r\n+          \"description\": \"The port for inter-node communication.\",\r\n+          \"default\": 7000\r\n+        },\r\n+        \"ssl_storage_port\": {\r\n+          \"type\": \"integer\",\r\n+          \"description\": \"The port for inter-node communication over SSL.\",\r\n+          \"default\": 7001\r\n+        },\r\n+        \"start_native_transport\": {\r\n+          \"type\": \"boolean\",\r\n+          \"description\": \"If true CQL is enabled.\",\r\n+          \"default\": true\r\n+        },\r\n+        \"native_transport_port\": {\r\n+          \"type\": \"integer\",\r\n+          \"description\": \"The port for CQL communication.\",\r\n+          \"default\": 9042\r\n+        },\r\n+        \"start_rpc\": {\r\n+          \"type\": \"boolean\",\r\n+          \"description\": \"If true Thrift RPC is enable. This is deprecated by may be necessary for legacy applications.\",\r\n+          \"default\": false\r\n+        },\r\n+        \"rpc_port\": {\r\n+          \"type\": \"integer\",\r\n+          \"description\": \"The port for Thrift RPC communication.\",\r\n+          \"default\": 9160\r\n+        },\r\n+        \"rpc_keepalive\": {\r\n+          \"type\": \"boolean\",\r\n+          \"description\": \"Enables or TCP keepalive for RPC connections.\",\r\n+          \"default\": true\r\n+        },\r\n+        \"thrift_framed_transport_size_in_mb\": {\r\n+          \"type\": \"integer\",\r\n+          \"description\": \"Frame size (maximum field length) for Thrift.\",\r\n+          \"default\": 15\r\n+        },\r\n+        \"tombstone_warn_threshold\": {\r\n+          \"type\": \"integer\",\r\n+          \"description\": \"The maximum number of tombstones a query can scan before warning.\",\r\n+          \"default\": 1000\r\n+        },\r\n+        \"tombstone_failure_threshold\": {\r\n+          \"type\": \"integer\",\r\n+          \"description\": \"The maximum number of tombstones a query can scan before aborting.\",\r\n+          \"default\": 100000\r\n+        },\r\n+        \"column_index_size_in_kb\": {\r\n+          \"type\": \"integer\",\r\n+          \"description\": \"The granularity of the index of rows within a partition. For huge rows, decrease this setting to improve seek time. If you use key cache, be careful not to make this setting too large because key cache will be overwhelmed.\",\r\n+          \"default\": 64\r\n+        },\r\n+        \"batch_size_warn_threshold_in_kb\": {\r\n+          \"type\": \"integer\",\r\n+          \"description\": \"Warn the operator on a batch size exceeding this value in kilobytes. Caution should be taken on increasing the size of this threshold as it can lead to node instability.\",\r\n+          \"default\": 5\r\n+        },\r\n+        \"batch_size_fail_threshold_in_kb\": {\r\n+          \"type\": \"integer\",\r\n+          \"description\": \"Fail batch sizes exceeding this value in kilobytes. Caution should be taken on increasing the size of this threshold as it can lead to node instability.\",\r\n+          \"default\": 50\r\n+        },\r\n+        \"compaction_throughput_mb_per_sec\": {\r\n+          \"type\": \"integer\",\r\n+          \"description\": \"Throttles compaction to the specified total throughput across the node. Compaction frequency varies with direct proportion to write throughput and is necessary to limit the SSTable size. The recommended value is 16 to 32 times the rate of write throughput (in MB/second).\",\r\n+          \"default\": 16\r\n+        },\r\n+        \"sstable_preemptive_open_interval_in_mb\": {\r\n+          \"type\": \"integer\",\r\n+          \"description\": \"When compacting, the replacement opens SSTables before they are completely written and uses in place of the prior SSTables for any range previously written. This setting helps to smoothly transfer reads between the SSTables by reducing page cache churn and keeps hot rows hot.\",\r\n+          \"default\": 50\r\n+        },\r\n+        \"read_request_timeout_in_ms\": {\r\n+          \"type\": \"integer\",\r\n+          \"description\": \"The time that the coordinator waits for read operations to complete in ms.\",\r\n+          \"default\": 5000\r\n+        },\r\n+        \"range_request_timeout_in_ms\": {\r\n+          \"type\": \"integer\",\r\n+          \"description\": \"The time that the coordinator waits for range scans complete in ms.\",\r\n+          \"default\": 10000\r\n+        },\r\n+        \"write_request_timeout_in_ms\": {\r\n+          \"type\": \"integer\",\r\n+          \"description\": \"The time that the coordinator waits for write operations to complete in ms.\",\r\n+          \"default\": 2000\r\n+        },\r\n+        \"counter_write_request_timeout_in_ms\": {\r\n+          \"type\": \"integer\",\r\n+          \"description\": \"The time that the coordinator waits for counter write operations to complete in ms.\",\r\n+          \"default\": 5000\r\n+        },\r\n+        \"cas_contention_timeout_in_ms\": {\r\n+          \"type\": \"integer\",\r\n+          \"description\": \"The time for which the coordinator will retry CAS operations on the same row in ms.\",\r\n+          \"default\": 1000\r\n+        },\r\n+        \"truncate_request_timeout_in_ms\": {\r\n+          \"type\": \"integer\",\r\n+          \"description\": \"The time that the coordinator waits for truncate operations to complete in ms.\",\r\n+          \"default\": 60000\r\n+        },\r\n+        \"request_timeout_in_ms\": {\r\n+          \"type\": \"integer\",\r\n+          \"description\": \"The default timeout for all other requests in ms.\",\r\n+          \"default\": 10000\r\n+        },\r\n+        \"dynamic_snitch_update_interval_in_ms\": {\r\n+          \"type\": \"integer\",\r\n+          \"description\": \"The time, in ms, the snitch will wait before updating node scores.\",\r\n+          \"default\": 100\r\n+        },\r\n+        \"dynamic_snitch_reset_interval_in_ms\": {\r\n+          \"type\": \"integer\",\r\n+          \"description\": \"The time, in ms, the snitch will wait before resetting node scores allowing bad nodes to recover.\",\r\n+          \"default\": 600000\r\n+        },\r\n+        \"dynamic_snitch_badness_threshold\": {\r\n+          \"type\": \"number\",\r\n+          \"description\": \"Sets the performance threshold for dynamically routing client requests away from a poorly performing node.\",\r\n+          \"default\": 0.1\r\n+        },\r\n+        \"internode_compression\": {\r\n+          \"type\": \"string\",\r\n+          \"description\": \"Controls whether traffic between nodes is compressed. all compresses all traffic. none compresses no traffic. dc compresses between datacenters.\",\r\n+          \"default\": \"all\"\r\n+        },\r\n+        \"max_hints_file_size_in_mb\": {\r\n+          \"type\": \"integer\",\r\n+          \"description\": \"The maximum size of the hints file in Mb.\",\r\n+          \"default\": 128\r\n+        },\r\n+        \"hints_flush_period_in_ms\": {\r\n+          \"type\": \"integer\",\r\n+          \"description\": \"The time, in ms, for the period in which hints are flushed to disk.\",\r\n+          \"default\": 10000\r\n+        },\r\n+        \"concurrent_materialized_view_writes\": {\r\n+          \"type\": \"integer\",\r\n+          \"description\": \"The maximum number of concurrent writes to materialized views.\",\r\n+          \"default\": 32\r\n+        },\r\n+        \"commitlog_total_space_in_mb\": {\r\n+          \"type\": \"integer\",\r\n+          \"description\": \"The total size of the commit log in Mb.\",\r\n+          \"default\": 8192\r\n+        },\r\n+        \"auto_snapshot\": {\r\n+          \"type\": \"boolean\",\r\n+          \"description\": \"Take a snapshot of the data before truncating a keyspace or dropping a table\",\r\n+          \"default\": true\r\n+        },\r\n+        \"roles_update_interval_in_ms\": {\r\n+          \"type\": \"integer\",\r\n+          \"description\": \"The refresh interval for the roles cache\",\r\n+          \"default\": 1000\r\n+        },\r\n+        \"permissions_update_interval_in_ms\": {\r\n+          \"type\": \"integer\",\r\n+          \"description\": \"The refresh interval for the permissions cache\",\r\n+          \"default\": 1000\r\n+        },\r\n+        \"key_cache_keys_to_save\": {\r\n+          \"type\": \"integer\",\r\n+          \"description\": \"The number of keys from the key cache to save\",\r\n+          \"default\": 100\r\n+        },\r\n+        \"row_cache_keys_to_save\": {\r\n+          \"type\": \"integer\",\r\n+          \"description\": \"The number of keys from the row cache to save\",\r\n+          \"default\": 100\r\n+        },\r\n+        \"counter_cache_keys_to_save\": {\r\n+          \"type\": \"integer\",\r\n+          \"description\": \"The number of keys from the counter cache to save\",\r\n+          \"default\": 100\r\n+        },\r\n+        \"file_cache_size_in_mb\": {\r\n+          \"type\": \"integer\",\r\n+          \"description\": \"The total memory to use for SSTable-reading buffers\",\r\n+          \"default\": 512\r\n+        },\r\n+        \"memtable_heap_space_in_mb\": {\r\n+          \"type\": \"integer\",\r\n+          \"description\": \"The amount of on-heap memory allocated for memtables\",\r\n+          \"default\": 2048\r\n+        },\r\n+        \"memtable_offheap_space_in_mb\": {\r\n+          \"type\": \"integer\",\r\n+          \"description\": \"The total amount of off-heap memory allocated for memtables\",\r\n+          \"default\": 2048\r\n+        },\r\n+        \"memtable_cleanup_threshold\": {\r\n+          \"type\": \"number\",\r\n+          \"description\": \"The ratio used for automatic memtable flush\",\r\n+          \"default\": 0.11\r\n+        },\r\n+        \"memtable_flush_writers\": {\r\n+          \"type\": \"integer\",\r\n+          \"description\": \"The number of memtable flush writer threads\",\r\n+          \"default\": 8\r\n+        },\r\n+        \"listen_on_broadcast_address\": {\r\n+          \"type\": \"boolean\",\r\n+          \"description\": \"Listen on the address set in broadcast_address property\",\r\n+          \"default\": false\r\n+        },\r\n+        \"internode_authenticator\": {\r\n+          \"type\": \"string\",\r\n+          \"description\": \"The internode authentication backend\",\r\n+          \"default\": \"org.apache.cassandra.auth.AllowAllInternodeAuthenticator\"\r\n+        },\r\n+        \"native_transport_max_threads\": {\r\n+          \"type\": \"integer\",\r\n+          \"description\": \"The maximum number of thread handling requests\",\r\n+          \"default\": 128\r\n+        },\r\n+        \"native_transport_max_frame_size_in_mb\": {\r\n+          \"type\": \"integer\",\r\n+          \"description\": \"The maximum allowed size of a frame\",\r\n+          \"default\": 256\r\n+        },\r\n+        \"native_transport_max_concurrent_connections\": {\r\n+          \"type\": \"integer\",\r\n+          \"description\": \"The maximum number of concurrent client connections\",\r\n+          \"default\": -1\r\n+        },\r\n+        \"native_transport_max_concurrent_connections_per_ip\": {\r\n+          \"type\": \"integer\",\r\n+          \"description\": \"The maximum number of concurrent client connections per source IP address\",\r\n+          \"default\": -1\r\n+        },\r\n+        \"rpc_min_threads\": {\r\n+          \"type\": \"integer\",\r\n+          \"description\": \"The minimum thread pool size for remote procedure calls\",\r\n+          \"default\": 16\r\n+        },\r\n+        \"rpc_max_threads\": {\r\n+          \"type\": \"integer\",\r\n+          \"description\": \"The maximum thread pool size for remote procedure calls\",\r\n+          \"default\": 2048\r\n+        },\r\n+        \"rpc_send_buff_size_in_bytes\": {\r\n+          \"type\": \"integer\",\r\n+          \"description\": \"The sending socket buffer size in bytes for remote procedure calls\",\r\n+          \"default\": 16384\r\n+        },\r\n+        \"rpc_recv_buff_size_in_bytes\": {\r\n+          \"type\": \"integer\",\r\n+          \"description\": \"The receiving socket buffer size for remote procedure calls\",\r\n+          \"default\": 16384\r\n+        },\r\n+        \"concurrent_compactors\": {\r\n+          \"type\": \"integer\",\r\n+          \"description\": \"The number of concurrent compaction processes allowed to run simultaneously on a node\",\r\n+          \"default\": 1\r\n+        },\r\n+        \"stream_throughput_outbound_megabits_per_sec\": {\r\n+          \"type\": \"integer\",\r\n+          \"description\": \"The maximum throughput of all outbound streaming file transfers on a node\",\r\n+          \"default\": 200\r\n+        },\r\n+        \"inter_dc_stream_throughput_outbound_megabits_per_sec\": {\r\n+          \"type\": \"integer\",\r\n+          \"description\": \"The maximum throughput of all streaming file transfers between datacenters\",\r\n+          \"default\": 200\r\n+        },\r\n+        \"streaming_socket_timeout_in_ms\": {\r\n+          \"type\": \"integer\",\r\n+          \"description\": \"The socket timeout for streaming operations\",\r\n+          \"default\": 86400000\r\n+        },\r\n+        \"phi_convict_threshold\": {\r\n+          \"type\": \"integer\",\r\n+          \"description\": \"The sensitivity of the failure detector on an exponential scale\",\r\n+          \"default\": 8\r\n+        },\r\n+        \"buffer_pool_use_heap_if_exhausted\": {\r\n+          \"type\": \"boolean\",\r\n+          \"description\": \"Allocate on-heap memory when the SSTable buffer pool is exhausted\",\r\n+          \"default\": true\r\n+        },\r\n+        \"disk_optimization_strategy\": {\r\n+          \"type\": \"string\",\r\n+          \"description\": \"The strategy for optimizing disk reads\",\r\n+          \"default\": \"ssd\"\r\n+        },\r\n+        \"max_value_size_in_mb\": {\r\n+          \"type\": \"integer\",\r\n+          \"description\": \"The maximum size of any value in SSTables\",\r\n+          \"default\": 256\r\n+        },\r\n+        \"otc_coalescing_strategy\": {\r\n+          \"type\": \"string\",\r\n+          \"description\": \"The strategy to use for coalescing network messages\",\r\n+          \"default\": \"TIMEHORIZON\"\r\n+        }\r\n+      },\r\n+      \"additionalProperties\": false,\r\n+      \"required\": [\r\n+        \"cluster_name\",\r\n+        \"jmx_port\",\r\n+        \"num_tokens\",\r\n+        \"max_hint_window_in_ms\",\r\n+        \"hinted_handoff_enabled\",\r\n+        \"hinted_handoff_throttle_in_kb\",\r\n+        \"max_hints_delivery_threads\",\r\n+        \"batchlog_replay_throttle_in_kb\",\r\n+        \"partitioner\",\r\n+        \"key_cache_save_period\",\r\n+        \"row_cache_size_in_mb\",\r\n+        \"row_cache_save_period\",\r\n+        \"commitlog_sync_period_in_ms\",\r\n+        \"commitlog_segment_size_in_mb\",\r\n+        \"concurrent_reads\",\r\n+        \"concurrent_writes\",\r\n+        \"concurrent_counter_writes\",\r\n+        \"memtable_allocation_type\",\r\n+        \"index_summary_resize_interval_in_minutes\",\r\n+        \"storage_port\",\r\n+        \"start_native_transport\",\r\n+        \"native_transport_port\",\r\n+        \"start_rpc\",\r\n+        \"rpc_port\",\r\n+        \"rpc_keepalive\",\r\n+        \"thrift_framed_transport_size_in_mb\",\r\n+        \"tombstone_warn_threshold\",\r\n+        \"tombstone_failure_threshold\",\r\n+        \"column_index_size_in_kb\",\r\n+        \"batch_size_warn_threshold_in_kb\",\r\n+        \"batch_size_fail_threshold_in_kb\",\r\n+        \"compaction_throughput_mb_per_sec\",\r\n+        \"sstable_preemptive_open_interval_in_mb\",\r\n+        \"read_request_timeout_in_ms\",\r\n+        \"range_request_timeout_in_ms\",\r\n+        \"write_request_timeout_in_ms\",\r\n+        \"counter_write_request_timeout_in_ms\",\r\n+        \"cas_contention_timeout_in_ms\",\r\n+        \"truncate_request_timeout_in_ms\",\r\n+        \"request_timeout_in_ms\",\r\n+        \"dynamic_snitch_update_interval_in_ms\",\r\n+        \"dynamic_snitch_reset_interval_in_ms\",\r\n+        \"dynamic_snitch_badness_threshold\",\r\n+        \"internode_compression\",\r\n+        \"max_hints_file_size_in_mb\",\r\n+        \"hints_flush_period_in_ms\",\r\n+        \"concurrent_materialized_view_writes\",\r\n+        \"commitlog_total_space_in_mb\",\r\n+        \"auto_snapshot\",\r\n+        \"roles_update_interval_in_ms\",\r\n+        \"permissions_update_interval_in_ms\",\r\n+        \"key_cache_keys_to_save\",\r\n+        \"row_cache_keys_to_save\",\r\n+        \"counter_cache_keys_to_save\",\r\n+        \"file_cache_size_in_mb\",\r\n+        \"memtable_heap_space_in_mb\",\r\n+        \"memtable_offheap_space_in_mb\",\r\n+        \"memtable_cleanup_threshold\",\r\n+        \"memtable_flush_writers\",\r\n+        \"listen_on_broadcast_address\",\r\n+        \"internode_authenticator\",\r\n+        \"native_transport_max_threads\",\r\n+        \"native_transport_max_frame_size_in_mb\",\r\n+        \"native_transport_max_concurrent_connections\",\r\n+        \"native_transport_max_concurrent_connections_per_ip\",\r\n+        \"rpc_min_threads\",\r\n+        \"rpc_max_threads\",\r\n+        \"rpc_send_buff_size_in_bytes\",\r\n+        \"rpc_recv_buff_size_in_bytes\",\r\n+        \"concurrent_compactors\",\r\n+        \"stream_throughput_outbound_megabits_per_sec\",\r\n+        \"inter_dc_stream_throughput_outbound_megabits_per_sec\",\r\n+        \"streaming_socket_timeout_in_ms\",\r\n+        \"phi_convict_threshold\",\r\n+        \"buffer_pool_use_heap_if_exhausted\",\r\n+        \"disk_optimization_strategy\",\r\n+        \"max_value_size_in_mb\",\r\n+        \"otc_coalescing_strategy\"\r\n+      ]\r\n+    }\r\n+  }\r\n }\r\n--- 25/marathon.json.mustache\r\n+++ 26/marathon.json.mustache\r\n@@ -1,175 +1,187 @@\r\n {\r\n-  \"id\": \"/{{service.name}}\",\r\n-  \"cmd\": \"env && export LD_LIBRARY_PATH=$MESOS_SANDBOX/libmesos-bundle/lib:$LD_LIBRARY_PATH && export MESOS_NATIVE_JAVA_LIBRARY=$(ls $MESOS_SANDBOX/libmesos-bundle/lib/libmesos-*.so) && env && ./scheduler/bin/cassandra-scheduler server ./scheduler/conf/scheduler.yml\",\r\n+  \"id\": \"{{service.name}}\",\r\n+  \"cpus\": 1.0,\r\n+  \"mem\": 1024,\r\n   \"instances\": 1,\r\n-  \"cpus\": {{service.cpus}},\r\n-  \"mem\": {{service.mem}},\r\n-  \"requirePorts\": true,\r\n+  \"user\":\"{{service.user}}\",\r\n+  \"cmd\": \"export LD_LIBRARY_PATH=$MESOS_SANDBOX/libmesos-bundle/lib:$LD_LIBRARY_PATH; export MESOS_NATIVE_JAVA_LIBRARY=$(ls $MESOS_SANDBOX/libmesos-bundle/lib/libmesos-*.so); export JAVA_HOME=$(ls -d $MESOS_SANDBOX/jre*/); export JAVA_HOME=${JAVA_HOME%/}; export PATH=$(ls -d $JAVA_HOME/bin):$PATH &&  export JAVA_OPTS=\\\"-Xms256M -Xmx512M -XX:-HeapDumpOnOutOfMemoryError\\\" &&  ./cassandra-scheduler/bin/cassandra ./cassandra-scheduler/svc.yml\",\r\n+  \"labels\": {\r\n+    \"DCOS_COMMONS_API_VERSION\": \"v1\",\r\n+    \"DCOS_COMMONS_UNINSTALL\": \"true\",\r\n+    \"DCOS_PACKAGE_FRAMEWORK_NAME\": \"{{service.name}}\",\r\n+    \"MARATHON_SINGLE_INSTANCE_APP\": \"true\",\r\n+    \"DCOS_SERVICE_NAME\": \"{{service.name}}\",\r\n+    \"DCOS_SERVICE_PORT_INDEX\": \"0\",\r\n+    \"DCOS_SERVICE_SCHEME\": \"http\"\r\n+  },\r\n+  {{#service.service_account_secret}}\r\n+  \"secrets\": {\r\n+    \"serviceCredential\": {\r\n+      \"source\": \"{{service.service_account_secret}}\"\r\n+    }\r\n+  },\r\n+  {{/service.service_account_secret}}\r\n+  \"env\": {\r\n+    \"SERVICE_NAME\": \"{{service.name}}\",\r\n+    \"SERVICE_USER\": \"{{service.user}}\",\r\n+    \"SERVICE_PRINCIPAL\": \"{{service.service_account}}\",\r\n+    \"FRAMEWORK_LOG_LEVEL\": \"{{service.log_level}}\",\r\n+    \"CASSANDRA_VERSION\": \"3.0.14\",\r\n+    \"S3CLI_VERSION\": \"s3cli-0.0.55-linux-amd64\",\r\n+\r\n+    {{#service.service_account_secret}}\r\n+    \"DCOS_SERVICE_ACCOUNT_CREDENTIAL\": { \"secret\": \"serviceCredential\" },\r\n+    \"MESOS_MODULES\": \"{\\\"libraries\\\": [{\\\"file\\\": \\\"libdcos_security.so\\\", \\\"modules\\\": [{\\\"name\\\": \\\"com_mesosphere_dcos_ClassicRPCAuthenticatee\\\"}]}]}\",\r\n+    \"MESOS_AUTHENTICATEE\": \"com_mesosphere_dcos_ClassicRPCAuthenticatee\",\r\n+    {{/service.service_account_secret}}\r\n+    \"MESOS_API_VERSION\": \"{{service.mesos_api_version}}\",\r\n+\r\n+    \"TASKCFG_ALL_CASSANDRA_CLUSTER_NAME\": \"{{cassandra.cluster_name}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_AUTHENTICATOR\": \"{{cassandra.authenticator}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_AUTHORIZER\": \"{{cassandra.authorizer}}\",\r\n+    \"NODES\": \"{{nodes.count}}\",\r\n+    \"CASSANDRA_CPUS\": \"{{nodes.cpus}}\",\r\n+    \"CASSANDRA_MEMORY_MB\": \"{{nodes.mem}}\",\r\n+    \"CASSANDRA_DISK_MB\": \"{{nodes.disk}}\",\r\n+    \"CASSANDRA_DISK_TYPE\": \"{{nodes.disk_type}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_HEAP_SIZE_MB\": \"{{nodes.heap.size}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_HEAP_NEW_MB\": \"{{nodes.heap.new}}\",\r\n+    \"CASSANDRA_JAVA_URI\": \"{{resource.assets.uris.cassandra-jre-tar-gz}}\",\r\n+    \"CASSANDRA_HEAP_GC\": \"{{nodes.heap.gc}}\",\r\n+    \"PLACEMENT_CONSTRAINT\": \"{{nodes.placement_constraint}}\",\r\n+    {{#service.virtual_network_enabled}}\r\n+    \"ENABLE_VIRTUAL_NETWORK\": \"yes\",\r\n+    \"VIRTUAL_NETWORK_NAME\": \"{{service.virtual_network_name}}\",\r\n+    \"VIRTUAL_NETWORK_PLUGIN_LABELS\": \"{{service.virtual_network_plugin_labels}}\",\r\n+    {{/service.virtual_network_enabled}}\r\n+    \"TASKCFG_ALL_JMX_PORT\": \"{{cassandra.jmx_port}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_NUM_TOKENS\": \"{{cassandra.num_tokens}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_HINTED_HANDOFF_ENABLED\": \"{{cassandra.hinted_handoff_enabled}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_MAX_HINT_WINDOW_IN_MS\": \"{{cassandra.max_hint_window_in_ms}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_HINTED_HANDOFF_THROTTLE_IN_KB\": \"{{cassandra.hinted_handoff_throttle_in_kb}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_MAX_HINTS_DELIVERY_THREADS\": \"{{cassandra.max_hints_delivery_threads}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_BATCHLOG_REPLAY_THROTTLE_IN_KB\": \"{{cassandra.batchlog_replay_throttle_in_kb}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_PARTITIONER\": \"{{cassandra.partitioner}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_KEY_CACHE_SAVE_PERIOD\": \"{{cassandra.key_cache_save_period}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_ROW_CACHE_SIZE_IN_MB\": \"{{cassandra.row_cache_size_in_mb}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_ROW_CACHE_SAVE_PERIOD\": \"{{cassandra.row_cache_save_period}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_COMMITLOG_SYNC_PERIOD_IN_MS\": \"{{cassandra.commitlog_sync_period_in_ms}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_COMMITLOG_SEGMENT_SIZE_IN_MB\": \"{{cassandra.commitlog_segment_size_in_mb}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_CONCURRENT_READS\": \"{{cassandra.concurrent_reads}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_CONCURRENT_WRITES\": \"{{cassandra.concurrent_writes}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_CONCURRENT_COUNTER_WRITES\": \"{{cassandra.concurrent_counter_writes}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_MEMTABLE_ALLOCATION_TYPE\": \"{{cassandra.memtable_allocation_type}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_INDEX_SUMMARY_RESIZE_INTERVAL_IN_MINUTES\": \"{{cassandra.index_summary_resize_interval_in_minutes}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_STORAGE_PORT\": \"{{cassandra.storage_port}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_SSL_STORAGE_PORT\": \"{{cassandra.ssl_storage_port}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_START_NATIVE_TRANSPORT\": \"{{cassandra.start_native_transport}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_NATIVE_TRANSPORT_PORT\": \"{{cassandra.native_transport_port}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_START_RPC\": \"{{cassandra.start_rpc}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_RPC_PORT\": \"{{cassandra.rpc_port}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_RPC_KEEPALIVE\": \"{{cassandra.rpc_keepalive}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_THRIFT_FRAMED_TRANSPORT_SIZE_IN_MB\": \"{{cassandra.thrift_framed_transport_size_in_mb}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_TOMBSTONE_WARN_THRESHOLD\": \"{{cassandra.tombstone_warn_threshold}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_TOMBSTONE_FAILURE_THRESHOLD\": \"{{cassandra.tombstone_failure_threshold}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_COLUMN_INDEX_SIZE_IN_KB\": \"{{cassandra.column_index_size_in_kb}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_BATCH_SIZE_WARN_THRESHOLD_IN_KB\": \"{{cassandra.batch_size_warn_threshold_in_kb}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_BATCH_SIZE_FAIL_THRESHOLD_IN_KB\": \"{{cassandra.batch_size_fail_threshold_in_kb}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_COMPACTION_THROUGHPUT_MB_PER_SEC\": \"{{cassandra.compaction_throughput_mb_per_sec}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_SSTABLE_PREEMPTIVE_OPEN_INTERVAL_IN_MB\": \"{{cassandra.sstable_preemptive_open_interval_in_mb}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_READ_REQUEST_TIMEOUT_IN_MS\": \"{{cassandra.read_request_timeout_in_ms}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_RANGE_REQUEST_TIMEOUT_IN_MS\": \"{{cassandra.range_request_timeout_in_ms}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_WRITE_REQUEST_TIMEOUT_IN_MS\": \"{{cassandra.write_request_timeout_in_ms}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_COUNTER_WRITE_REQUEST_TIMEOUT_IN_MS\": \"{{cassandra.counter_write_request_timeout_in_ms}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_CAS_CONTENTION_TIMEOUT_IN_MS\": \"{{cassandra.cas_contention_timeout_in_ms}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_TRUNCATE_REQUEST_TIMEOUT_IN_MS\": \"{{cassandra.truncate_request_timeout_in_ms}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_REQUEST_TIMEOUT_IN_MS\": \"{{cassandra.request_timeout_in_ms}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_DYNAMIC_SNITCH_UPDATE_INTERVAL_IN_MS\": \"{{cassandra.dynamic_snitch_update_interval_in_ms}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_DYNAMIC_SNITCH_RESET_INTERVAL_IN_MS\": \"{{cassandra.dynamic_snitch_reset_interval_in_ms}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_DYNAMIC_SNITCH_BADNESS_THRESHOLD\": \"{{cassandra.dynamic_snitch_badness_threshold}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_INTERNODE_COMPRESSION\": \"{{cassandra.internode_compression}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_MAX_HINTS_FILE_SIZE_IN_MB\": \"{{cassandra.max_hints_file_size_in_mb}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_HINTS_FLUSH_PERIOD_IN_MS\": \"{{cassandra.hints_flush_period_in_ms}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_MATERIALIZED_VIEW_WRITES\": \"{{cassandra.concurrent_materialized_view_writes}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_COMMITLOG_TOTAL_SPACE_IN_MB\": \"{{cassandra.commitlog_total_space_in_mb}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_AUTO_SNAPSHOT\": \"{{cassandra.auto_snapshot}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_ROLES_UPDATE_INTERVAL_IN_MS\": \"{{cassandra.roles_update_interval_in_ms}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_PERMISSIONS_UPDATE_INTERVAL_IN_MS\": \"{{cassandra.permissions_update_interval_in_ms}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_KEY_CACHE_KEYS_TO_SAVE\": \"{{cassandra.key_cache_keys_to_save}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_ROW_CACHE_KEYS_TO_SAVE\": \"{{cassandra.row_cache_keys_to_save}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_COUNTER_CACHE_KEYS_TO_SAVE\": \"{{cassandra.counter_cache_keys_to_save}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_FILE_CACHE_SIZE_IN_MB\": \"{{cassandra.file_cache_size_in_mb}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_MEMTABLE_HEAP_SPACE_IN_MB\": \"{{cassandra.memtable_heap_space_in_mb}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_MEMTABLE_OFFHEAP_SPACE_IN_MB\": \"{{cassandra.memtable_offheap_space_in_mb}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_MEMTABLE_CLEANUP_THRESHOLD\": \"{{cassandra.memtable_cleanup_threshold}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_MEMTABLE_FLUSH_WRITERS\": \"{{cassandra.memtable_flush_writers}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_LISTEN_ON_BROADCAST_ADDRESS\": \"{{cassandra.listen_on_broadcast_address}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_INTERNODE_AUTHENTICATOR\": \"{{cassandra.internode_authenticator}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_NATIVE_TRANSPORT_MAX_THREADS\": \"{{cassandra.native_transport_max_threads}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_NATIVE_TRANSPORT_MAX_FRAME_SIZE_IN_MB\": \"{{cassandra.native_transport_max_frame_size_in_mb}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_NATIVE_TRANSPORT_MAX_CONCURRENT_CONNECTIONS\": \"{{cassandra.native_transport_max_concurrent_connections}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_NATIVE_TRANSPORT_MAX_CONCURRENT_CONNECTIONS_PER_IP\": \"{{cassandra.native_transport_max_concurrent_connections_per_ip}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_RPC_MIN_THREADS\": \"{{cassandra.rpc_min_threads}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_RPC_MAX_THREADS\": \"{{cassandra.rpc_max_threads}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_RPC_SEND_BUFF_SIZE_IN_BYTES\": \"{{cassandra.rpc_send_buff_size_in_bytes}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_RPC_RECV_BUFF_SIZE_IN_BYTES\": \"{{cassandra.rpc_recv_buff_size_in_bytes}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_CONCURRENT_COMPACTORS\": \"{{cassandra.concurrent_compactors}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_STREAM_THROUGHPUT_OUTBOUND_MEGABITS_PER_SEC\": \"{{cassandra.stream_throughput_outbound_megabits_per_sec}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_INTER_DC_STREAM_THROUGHPUT_OUTBOUND_MEGABITS_PER_SEC\": \"{{cassandra.inter_dc_stream_throughput_outbound_megabits_per_sec}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_STREAMING_SOCKET_TIMEOUT_IN_MS\": \"{{cassandra.streaming_socket_timeout_in_ms}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_PHI_CONVICT_THRESHOLD\": \"{{cassandra.phi_convict_threshold}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_BUFFER_POOL_USE_HEAP_IF_EXHAUSTED\": \"{{cassandra.buffer_pool_use_heap_if_exhausted}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_DISK_OPTIMIZATION_STRATEGY\": \"{{cassandra.disk_optimization_strategy}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_STREAMING_SOCKET_TIMEOUT_IN_MS\": \"{{cassandra.streaming_socket_timeout_in_ms}}\",\r\n+    \"TASKCFG_ALL_CASSANDRA_MAX_VAL…","distinct":true,"url":"https://api.github.com/repos/jessfraz/universe/commits/9df8e41162fa4326ab713e514e1e85d1a086ef3b"}]}
{"actor":{"display_login":"jessfraz"}}