# 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": "Sandbox-Simulator", 
            "dns1": "10.147.28.6", 
            "physical_networks": [
                {
                    "name": "Sandbox-pnet", 
                    "tags": [
                        "cloud-simulator-pnet"
                    ], 
                    "broadcastdomainrange": "Zone", 
                    "providers": [
                        {
                            "broadcastdomainrange": "ZONE", 
                            "name": "VirtualRouter"
                        }, 
                        {
                            "broadcastdomainrange": "ZONE", 
                            "name": "SecurityGroupProvider"
                        }
                    ], 
                    "traffictypes": [
                        {
                            "typ": "Guest"
                        }, 
                        {
                            "typ": "Management", 
                            "simulator": "cloud-simulator-mgmt"
                        }
                    ], 
                    "isolationmethods": [
                        "VLAN"
                    ]
                }
            ], 
            "securitygroupenabled": "true", 
            "ipranges": [
                {
                    "startip": "10.147.31.150", 
                    "endip": "10.147.31.159", 
                    "netmask": "255.255.255.0", 
                    "vlan": "31", 
                    "gateway": "10.147.31.1"
                }
            ], 
            "networktype": "Advanced", 
            "pods": [
                {
                    "endip": "10.147.29.159", 
                    "name": "POD0", 
                    "startip": "10.147.29.150", 
                    "netmask": "255.255.255.0", 
                    "clusters": [
                        {
                            "clustername": "C0", 
                            "hypervisor": "Simulator", 
                            "hosts": [
                                {
                                    "username": "root", 
                                    "url": "http://simulator0", 
                                    "password": "password"
                                }
                            ], 
                            "clustertype": "CloudManaged", 
                            "primaryStorages": [
                                {
                                    "url": "nfs://10.147.28.6:/export/home/sandbox/primary", 
                                    "name": "PS0"
                                }
                            ]
                        }
                    ], 
                    "gateway": "10.147.29.1"
                }
            ], 
            "internaldns1": "10.147.28.6", 
            "secondaryStorages": [
                {
                    "url": "nfs://10.147.28.6:/export/home/sandbox/sstor"
                }
            ]
        }
    ], 
    "dbSvr": {
        "dbSvr": "localhost", 
        "passwd": "cloud", 
        "db": "cloud", 
        "port": 3306, 
        "user": "cloud"
    }, 
    "logger": [
        {
            "name": "TestClient", 
            "file": "testclient.log"
        }, 
        {
            "name": "TestCase", 
            "file": "testcase.log"
        }
    ], 
    "globalConfig": [
        {
            "name": "storage.cleanup.interval", 
            "value": "300"
        }, 
        {
            "name": "direct.agent.load.size", 
            "value": "1000"
        }, 
        {
            "name": "default.page.size", 
            "value": "10000"
        }, 
        {
            "name": "instance.name", 
            "value": "QA"
        }, 
        {
            "name": "workers", 
            "value": "10"
        }, 
        {
            "name": "vm.op.wait.interval", 
            "value": "5"
        }, 
        {
            "name": "account.cleanup.interval", 
            "value": "600"
        }, 
        {
            "name": "guest.domain.suffix", 
            "value": "sandbox.simulator"
        }, 
        {
            "name": "expunge.delay", 
            "value": "60"
        }, 
        {
            "name": "vm.allocation.algorithm", 
            "value": "random"
        }, 
        {
            "name": "expunge.interval", 
            "value": "60"
        }, 
        {
            "name": "expunge.workers", 
            "value": "3"
        }, 
        {
            "name": "secstorage.allowed.internal.sites", 
            "value": "10.147.28.0/24"
        }, 
        {
            "name": "check.pod.cidrs", 
            "value": "true"
        }
    ], 
    "mgtSvr": [
        {
            "mgtSvrIp": "localhost", 
            "passwd": "password", 
            "user": "root", 
            "port": 8096
        }
    ]
}
