# 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",
                    "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": "10.147.28.0/24"
        }, 
        {
            "name": "check.pod.cidrs", 
            "value": "true"
        }
    ], 
    "mgtSvr": [
        {
            "mgtSvrIp": "localhost", 
            "passwd": "password", 
            "user": "root", 
            "port": 8096
        }
    ]
}
