# 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": "8.8.8.8",
            "physical_networks": [
                {
                    "broadcastdomainrange": "Zone",
                    "name": "Sandbox-pnet",
                    "traffictypes": [
                        {
                            "typ": "Guest"
                        },
                        {
                            "typ": "Management"
                        }
                    ],
                    "providers": [
                        {
                            "broadcastdomainrange": "ZONE",
                            "name": "VirtualRouter"
                        },
                        {
                            "broadcastdomainrange": "Pod",
                            "name": "SecurityGroupProvider"
                        }
                    ],
                    "isolationmethods": [
                             "L3"
                    ]
                }
            ],
            "securitygroupenabled": "true",
            "networktype": "Basic",
            "pods": [
                {
                    "endip": "172.16.15.254",
                    "name": "POD0",
                    "startip": "172.16.15.2",
                    "guestIpRanges": [
                        {
                            "startip": "60.147.41.2",
                            "endip": "60.147.41.254",
                            "netmask": "255.255.255.0",
                            "gateway": "60.147.41.1"
                        }
                    ],
                    "netmask": "255.255.255.0",
                    "clusters": [
                        {
                            "clustername": "C0",
                            "hypervisor": "simulator",
                            "hosts": [
                                {
                                    "username": "root",
                                    "url": "http://sim/c0/h0",
                                    "password": "password"
                                }
                            ],
                            "clustertype": "CloudManaged",
                            "primaryStorages": [
                                {
                                    "url": "nfs://nfsstor:/export/home/sandbox/primary",
                                    "name": "PS0"
                                }
                            ]
                        }
                    ],
                    "gateway": "172.16.15.1"
                }
            ],
            "internaldns1": "8.8.8.8",
            "secondaryStorages": [
                {
                    "url": "nfs://nfsstor:/export/home/sandbox/secondary",
                    "provider" : "NFS"
                }
            ]
        }
    ],
    "dbSvr": {
        "dbSvr": "localhost",
        "passwd": "cloud",
        "db": "cloud",
        "port": 3306,
        "user": "cloud"
    },
    "logger": 
        {
            "LogFolderPath": "/tmp/"
        },
    "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": "172.16.15.0/24"
        },
        {
            "name": "check.pod.cidrs",
            "value": "true"
        }
    ],
    "mgtSvr": [
        {
            "mgtSvrIp": "localhost",
            "passwd": "password",
            "user": "root",
            "port": 8096
        }
    ]
}
