{
    "properties": {
        "avi": {
            "additionalProperties": false,
            "description": "Avi Vantage specific configuration properties",
            "properties": {
                "controller": {
                    "additionalProperties": false,
                    "description": "Avi Controller specific configuration properties",
                    "properties": {
                        "admin-password": {
                            "default": "admin",
                            "description": "Password for Avi admin user",
                            "type": "string"
                        },
                        "admin-username": {
                            "default": "admin",
                            "description": "Username for Avi admin user",
                            "type": "string"
                        },
                        "cluster-size": {
                            "default": 1,
                            "description": "Number of Avi Controller instances to run in the cluster.",
                            "maximum": 3,
                            "minimum": 1,
                            "type": "integer"
                        },
                        "cpus": {
                            "default": 4,
                            "description": "CPU shares to allocate to each Avi Controller instance.",
                            "minimum": 4,
                            "type": "integer"
                        },
                        "disk": {
                            "default": 81920,
                            "description": "Disk (MB) to allocate to each Avi Controller instance.",
                            "minimum": 81920,
                            "type": "integer"
                        },
                        "dns-port": {
                            "default": 9053,
                            "description": "Avi DNS port",
                            "type": "integer"
                        },
                        "dns-servers": {
                            "default": "master.mesos",
                            "description": "comma-delimited list of DNS servers.",
                            "type": "string"
                        },
                        "enable-avidns": {
                            "default": false,
                            "description": "Enable AVI DNS.",
                            "type": "boolean"
                        },
                        "enable-ntp": {
                            "default": false,
                            "description": "Enable AVI NTP.",
                            "type": "boolean"
                        },
                        "force-pull": {
                            "default": false,
                            "description": "Force docker to re-pull the image.",
                            "type": "boolean"
                        },
                        "http-port": {
                            "default": 9080,
                            "description": "HTTP port for Avi-Vantage portal",
                            "type": "integer"
                        },
                        "https-port": {
                            "default": 9443,
                            "description": "HTTPS port for Avi-Vantage portal",
                            "type": "integer"
                        },
                        "memory": {
                            "default": 12288,
                            "description": "Memory (MB) to allocate to each Avi Controller task.",
                            "minimum": 12288,
                            "type": "integer"
                        },
                        "ntp-port": {
                            "default": 9161,
                            "description": "NTP port",
                            "maximum": 9161,
                            "minimum": 9161,
                            "type": "integer"
                        },
                        "remote-cli-port": {
                            "default": 5054,
                            "description": "Remote CLI shell port",
                            "type": "integer"
                        },
                        "resource-role": {
                            "default": "*",
                            "description": "The accepted resource role (e.g. slave_public or *). By default, this will deploy to any agents with '*' role.",
                            "type": "string"
                        },
                        "schannel-port": {
                            "default": 8443,
                            "description": "Secure-Channel port",
                            "maximum": 8443,
                            "minimum": 8443,
                            "type": "integer"
                        },
                        "ssh-port": {
                            "default": 5098,
                            "description": "SSH port",
                            "maximum": 5098,
                            "minimum": 5098,
                            "type": "integer"
                        },
                        "tag": {
                            "default": "16.2-beta",
                            "description": "Tag value of the Avi-Vantage image in the Docker repository.",
                            "type": "string"
                        }
                    },
                    "required": [
                        "cluster-size",
                        "cpus",
                        "memory",
                        "disk",
                        "https-port",
                        "tag"
                    ],
                    "type": "object"
                },
                "serviceengine": {
                    "additionalProperties": false,
                    "description": "Avi ServiceEngine specific configuration properties",
                    "properties": {
                        "cpus": {
                            "default": 1,
                            "description": "CPU shares to allocate to each Avi SE instance.",
                            "minimum": 1,
                            "type": "number"
                        },
                        "disk": {
                            "default": 10240,
                            "description": "Disk (MB) to allocate to each Avi SE instance.",
                            "minimum": 10240,
                            "type": "integer"
                        },
                        "memory": {
                            "default": 2,
                            "description": "Memory (MB) to allocate to each Avi SE instance.",
                            "minimum": 2,
                            "type": "number"
                        }
                    },
                    "required": [
                        "cpus",
                        "memory",
                        "disk"
                    ],
                    "type": "object"
                }
            },
            "required": [
                "controller",
                "serviceengine"
            ],
            "type": "object"
        },
        "mesos": {
            "description": "Mesos specific configuration properties",
            "properties": {
                "marathon": {
                    "default": "http://marathon.mesos:8080",
                    "description": "URI of Marathon instance",
                    "type": "string"
                },
                "master": {
                    "default": "master.mesos:5050",
                    "description": "The URL of the Mesos master.",
                    "type": "string"
                }
            },
            "required": [
                "master",
                "marathon"
            ],
            "type": "object"
        },
        "service": {
            "additionalProperties": false,
            "properties": {
                "name": {
                    "default": "avi-vantage",
                    "description": "Avi Vantage ADC service name",
                    "type": "string"
                }
            },
            "required": [
                "name"
            ],
            "type": "object"
        }
    },
    "required": [
        "service",
        "avi",
        "mesos"
    ],
    "type": "object"
}