# 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"
                                },
                                {
                                    "username": "root",
                                    "url": "http://sim/c0/h1",
                                    "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"
        },
        {
            "name": "enable.dynamic.scale.vm",
            "value": "true"
        }
    ],
    "mgtSvr": [
        {
            "mgtSvrIp": "localhost",
            "passwd": "password",
            "user": "root",
            "port": 8096
        }
    ],
    "ApiLoadCfg":
    {
        "ParsedApiDestFolder": ".",
        "ApiSpecFile": "/etc/cloud/cli/commands.xml"
    },
    "TestData":
    {
      "Path": "config/config.cfg"
    }
}
