# 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
        }
    ]
}
