# 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": [
        {
            "name": "TF-Zone",
            "guestcidraddress": "10.1.1.0/16",
            "dns1": "8.8.8.8",
            "physical_networks": [
                {
                    "broadcastdomainrange": "Zone",
                    "name": "TF-PhysicalNetwork",
                    "traffictypes": [
                        {
                            "typ": "Guest",
                            "kvm": "vhost0"
                        },
                        {
                            "typ": "Management",
                            "kvm": "vhost0"
                        },
                        {
                            "typ": "Public",
                            "kvm": "vhost0"
                        }
                    ],
                    "providers": [
                        {
                            "broadcastdomainrange": "ZONE",
                            "name": "Tungsten"
                        }
                    ],
                    "isolationmethods": [
                             "TF"
                    ]
                }
            ],
            "tungstenprovider": {
                "name": "tf-provider",
                "hostname": "192.168.5.203",
                "gateway": "192.168.5.203"
            },
            "ipranges": [
                {
                    "startip": "192.168.3.100",
                    "endip": "192.168.3.200",
                    "netmask": "255.255.255.0",
                    "vlan": "untagged",
                    "gateway": "192.168.3.1"
                }
            ],
            "networktype": "Advanced",
            "pods": [
                {
                    "endip": "192.168.6.200",
                    "name": "TF-Pod",
                    "startip": "192.168.6.100",
                    "netmask": "255.255.255.0",
                    "clusters": [
                        {
                            "clustername": "TF-Cluster",
                            "hypervisor": "KVM",
                            "hosts": [
                                {
                                    "username": "root",
                                    "url": "http://192.168.5.203",
                                    "password": "password"
                                },
                                {
                                    "username": "root",
                                    "url": "http://192.168.5.202",
                                    "password": "password"
                                }
                            ],
                            "clustertype": "CloudManaged",
                            "primaryStorages": [
                                {
                                    "url": "nfs://192.168.5.203:/export/primary",
                                    "name": "TF-PS"
                                }
                            ]
                        }
                    ],
                    "gateway": "192.168.6.1"
                }
            ],
            "internaldns1": "192.168.5.202",
            "secondaryStorages": [
                {
                    "url": "nfs://192.168.5.203:/export/secondary",
                    "provider" : "NFS"
                }
            ]
        }
    ],
    "dbSvr": {
        "dbSvr": "192.168.5.203",
        "passwd": "password",
        "db": "cloud",
        "port": 3306,
        "user": "cloud"
    },
    "logger":
        {
            "LogFolderPath": "/tmp"
        }
    ,
    "mgtSvr": [
        {
            "mgtSvrIp": "192.168.5.203",
            "passwd": "password",
            "user": "root",
            "port": 8888,
            "hypervisor": "KVM",
            "useHttps": "False",
            "certCAPath":  "NA",
            "certPath":  "NA"
        }
    ]
}
