{
    "properties": {
        "connect": {
            "description": "Control center connect service configuration",
            "properties": {
                "connect_cluster": {
                    "default": "connect.marathon.l4lb.thisdcos.directory:8083",
                    "description": "Comma-separated list of URLs for the Connect cluster. This must be set if you wish to manage a connect cluster.",
                    "title": "Control center connect cluster configuration",
                    "type": "string"
                }
            },
            "required": [
                "connect_cluster"
            ],
            "type": "object"
        },
        "control-center": {
            "properties": {
                "ciphers": {
                    "default": "TLS_RSA_WITH_AES_128_GCM_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,TLS_DHE_RSA_WITH_AES_128_CBC_SHA256,TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,TLS_DHE_RSA_WITH_AES_256_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384",
                    "description": "Comma-separated list of JSSE Cipher Suite Names",
                    "type": "string"
                },
                "confluent-controlcenter-internal-topics-partitions": {
                    "default": 3,
                    "description": "Parition count for internal control-center kafka topics",
                    "type": "number"
                },
                "confluent-controlcenter-internal-topics-replication": {
                    "default": 2,
                    "description": "Replication factor for internal control-center kafka topics",
                    "type": "number"
                },
                "confluent-license": {
                    "default": "",
                    "description": "License key for Confluent Enterprise (default is 30-day trial)",
                    "type": "string"
                },
                "confluent-monitoring-interceptor-topic-partitions": {
                    "default": 3,
                    "description": "Parition count for kafka topics used to store data from the interceptor classes",
                    "type": "number"
                },
                "confluent-monitoring-interceptor-topic-replication": {
                    "default": 2,
                    "description": "Replication factor for kafka topics used to store data from the interceptor classes",
                    "type": "number"
                },
                "cpus": {
                    "default": 2,
                    "description": "CPU shares to allocate to each control-center instance.",
                    "minimum": 2,
                    "type": "number"
                },
                "instances": {
                    "default": 1,
                    "description": "Number of instances to run.",
                    "minimum": 1,
                    "type": "integer"
                },
                "keystore_secret": {
                    "default": "",
                    "description": "Keystore secret.",
                    "title": "Keystore secret",
                    "type": "string"
                },
                "listener_protocol": {
                    "default": "http",
                    "description": "Control center listener protocol, http or https.",
                    "title": "Control center listener protocol",
                    "type": "string"
                },
                "mem": {
                    "default": 4096,
                    "description": "Memory (MB) to allocate to each control-center task.",
                    "minimum": 4096,
                    "type": "number"
                },
                "name": {
                    "default": "control-center",
                    "description": "Name for this control-center application",
                    "type": "string"
                },
                "role": {
                    "default": "*",
                    "description": "Deploy control-center only on nodes with this role.",
                    "type": "string"
                },
                "virtual_network_enabled": {
                    "default": false,
                    "description": "Enable virtual networking",
                    "type": "boolean"
                },
                "virtual_network_name": {
                    "default": "dcos",
                    "description": "The name of the virtual network to join",
                    "type": "string"
                }
            },
            "required": [
                "cpus",
                "mem",
                "instances",
                "name"
            ],
            "type": "object"
        },
        "kafka": {
            "description": "Control center kafka service configuration",
            "properties": {
                "bootstrap_servers": {
                    "default": "broker.confluent-kafka.l4lb.thisdcos.directory:9092",
                    "description": "The name of the kafka bootstrapserver. Broker vip (for TLS it is broker-tls.confluent-kafka.l4lb.thisdcos.directory:9093) or comma separated list of broker dns names (like in the kerberos case). Note slahes in a kafka service name have to be removed.",
                    "title": "Kafka bootstrap servers",
                    "type": "string"
                },
                "client_sasl_kerberos_service_name": {
                    "default": "kafka",
                    "description": "The Kerberos principal name that Kafka runs as. This can be defined either in Kafka's JAAS config or in Kafka's config.",
                    "title": "Kafka client sasl kerberos service name",
                    "type": "string"
                },
                "client_sasl_mechanism": {
                    "default": "GSSAPI",
                    "description": "SASL mechanism used for client connections. This may be any mechanism for which a security provider is available. GSSAPI is the default mechanism.",
                    "title": "Kafka client sasl mechanism",
                    "type": "string"
                },
                "client_security_protocol": {
                    "default": "PLAINTEXT",
                    "description": "Protocol used to communicate with brokers. Valid values are: PLAINTEXT, SSL, SASL_PLAINTEXT, SASL_SSL",
                    "title": "Kafka client security protocol",
                    "type": "string"
                },
                "kerberos_enabled": {
                    "default": false,
                    "description": "Enable kerberos",
                    "type": "boolean"
                },
                "kerberos_jaas_secret": {
                    "default": "jaas",
                    "description": "Kerberos jaas secret containing jaas config",
                    "title": "Kerberos jaas secret",
                    "type": "string"
                },
                "kerberos_keytab_secret": {
                    "default": "__dcos_base64___keytab",
                    "description": "Kerberos keytab secret containing keytab",
                    "title": "Kerberos keytab secret",
                    "type": "string"
                },
                "kerberos_krb5_secret": {
                    "default": "krb5",
                    "description": "Kerberos krb5 secret containing krb5 config",
                    "title": "Kerberos krb5 secret",
                    "type": "string"
                },
                "zookeeper_connect": {
                    "default": "master.mesos:2181/dcos-service-confluent-kafka",
                    "description": "... . Note slahes in a kafka service name have to be removed, all excpet the first get replaced by two underscores.",
                    "title": "Zookeeper connect",
                    "type": "string"
                }
            },
            "required": [
                "bootstrap_servers",
                "zookeeper_connect"
            ],
            "type": "object"
        }
    },
    "type": "object"
}