# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.

{
    "zones": [
        {
            "localstorageenabled": "true",
            "name": "testzone",
            "guestcidraddress": "10.1.1.0/24",
            "dns1": "8.8.8.8",
            "physical_networks": [
                {
                    "broadcastdomainrange": "Zone",
                    "vlan": "3900-4000",
                    "name": "eth0",
                    "traffictypes": [
                        {
                            "kvm": "cloudbr0",
                            "typ": "Management"
                        },
                        {
                            "kvm": "cloudbr0",
                            "typ": "Guest"
                        }
                    ],
                    "providers": [
                        {
                            "broadcastdomainrange": "ZONE",
                            "name": "VirtualRouter"
                        },
                        {
                            "broadcastdomainrange": "ZONE",
                            "name": "VpcVirtualRouter"
                        },
                        {
                            "broadcastdomainrange": "ZONE",
                            "name": "InternalLbVm"
                        }
                    ]
                },
                {
                    "broadcastdomainrange": "Zone",
                    "name": "eth1",
                    "traffictypes": [
                        {
                            "kvm": "cloudbr1",
                            "typ": "Public"
                        }
                    ],
                    "providers": [
                        {
                            "broadcastdomainrange": "ZONE",
                            "name": "VirtualRouter"
                        }
                    ]
                }
            ],
            "ipranges": [
                {
                    "startip": "192.168.100.100",
                    "endip": "192.168.100.199",
                    "netmask": "255.255.255.0",
                    "vlan": "untagged",
                    "gateway": "192.168.100.1"
                }
            ],
            "networktype": "Advanced",
            "pods": [
                {
                    "endip": "172.17.10.199",
                    "name": "testpod",
                    "startip": "172.17.10.100",
                    "netmask": "255.255.255.0",
                    "clusters": [
                        {
                            "clustername": "testcluster",
                            "hypervisor": "KVM",
                            "hosts": [
                                {
                                    "username": "root",
                                    "url": "http://172.17.10.10/",
                                    "password": "password"
                                }
                            ],
                            "clustertype": "CloudManaged"
                        }
                    ],
                    "gateway": "172.17.10.1"
                }
            ],
            "internaldns1": "8.8.4.4",
            "secondaryStorages": [
                {
                    "url": "nfs://172.17.10.10:/nfs/secondary",
                    "provider": "NFS"
                }
            ]
        }
    ],
    "dbSvr": {
        "dbSvr": "127.0.0.1",
        "passwd": "cloud",
        "db": "cloud",
        "port": 3306,
        "user": "cloud"
    },
    "logger": [
        {
            "name": "TestClient",
            "file": "/var/log/testclient.log"
        },
        {
            "name": "TestCase",
            "file": "/var/log/testcase.log"
        }
    ],
    "mgtSvr": [
        {
            "mgtSvrIp": "172.17.10.10",
            "port": 8096,
            "hypervisor": "kvm"
        }
    ]
}
