<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
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.
-->
<data>

  <version>2.0</version>

  <!--
    ipAddressRange:  It is possible to specify a single IP address.  For example, to add 192.168.1.1
    as the only address, specify as <ipAddressRange>192.168.1.1<ipAddressRange>.  To specify 192.168.1.1
    to 192.168.1.150 specify as <ipAddressRange>192.168.1.1-192.168.1.150</ipAddressRange>
   -->
<!--  <zones>
    <zone>
      <id>1</id>
      <name>NM</name>
      <physicalNetworkId>200</physicalNetworkId>
      <dns1>4.2.2.2</dns1>
      <dns2>10.10.10.14</dns2>
      <internalDns1>4.2.2.2</internalDns1>
      <internalDns2>4.2.2.2</internalDns2>
      <netmask>255.255.255.0</netmask>
      <vnet>560-579</vnet>
      <guestNetworkCidr>10.1.1.0/24</guestNetworkCidr>
      <networktype>Advanced</networktype>
    </zone>
  </zones>

  <physicalNetworks>
	 <physicalNetwork>
      <id>200</id>
      <zoneId>1</zoneId>
      <vnet>1075-1089</vnet>
    </physicalNetwork>
  </physicalNetworks>

  <physicalNetworkServiceProviders>
    <physicalNetworkServiceProvider>
      <id>1</id>
      <physicalNetworkId>200</physicalNetworkId>
      <providerName>VirtualRouter</providerName>
      <destPhysicalNetworkId>0</destPhysicalNetworkId>
      <vpn>1</vpn>
      <dhcp>1</dhcp>
      <dns>1</dns>
      <gateway>1</gateway>
      <firewall>1</firewall>
      <sourceNat>1</sourceNat>
      <loadBalance>1</loadBalance>
      <staticNat>1</staticNat>
      <portForwarding>1</portForwarding>
      <userData>1</userData>
      <securityGroup>0</securityGroup>
    </physicalNetworkServiceProvider>
  </physicalNetworkServiceProviders>

  <virtualRouterProviders>
    <virtualRouterProvider>
        <id>1</id>
        <nspId>1</nspId>
        <type>VirtualRouter</type>
    </virtualRouterProvider>
  </virtualRouterProviders>

-->
  <!--
    ipAddressRange:  It is possible to specify a single IP address.  For example, to add 192.168.1.1
    as the only address, specify as <ipAddressRange>192.168.1.1<ipAddressRange>.  To specify 192.168.1.1
    to 192.168.1.150 specify as <ipAddressRange>192.168.1.1-192.168.1.150</ipAddressRange>

    At the moment there is no way to specify a different netmask for each pod.  The netmask
    is controlled by the private.net.mask parameter further down this file.
   -->
 <!-- <pods>
    <pod>
      <id>1</id>
      <name>NM</name>
      <zoneId>1</zoneId>
      <gateway>10.91.28.1</gateway>
      <cidr>10.91.28.0/24</cidr>
      <ipAddressRange>10.91.28.160-10.91.28.179</ipAddressRange>
    </pod>
  </pods> -->
<!--
<storagePools>
<storagePool>
<zoneId>1</zoneId>
<podId>1</podId>
<name>idc-ss</name>
<hostAddress>10.91.28.6</hostAddress>
<hostPath>/export/home/nitin/primary</hostPath>
</storagePool>
</storagePools>
-->

<!--
<secondaryStorages>
<secondaryStorage>
<zoneId>1</zoneId>
<podId>1</podId>
<url>nfs://10.91.28.6/export/home/nitin/secondary</url>
</secondaryStorage>
</secondaryStorages>
-->

 <!-- <vlans>
    <vlan>
      <zoneId>1</zoneId>
      <physicalNetworkId>200</physicalNetworkId>
      <vlanId>30</vlanId>
      <vlanType>VirtualNetwork</vlanType>
      <gateway>10.91.30.1</gateway>
      <netmask>255.255.255.0</netmask>
      <ipAddressRange>10.91.30.160-10.91.30.179</ipAddressRange>
    </vlan>
  </vlans>-->
<!--
    <vlan>
      <zoneId>1</zoneId>
      <vlanId>31</vlanId>
      <vlanType>VirtualNetwork</vlanType>
      <gateway>192.168.31.1</gateway>
      <netmask>255.255.255.0</netmask>
      <ipAddressRange>192.168.31.10-192.168.31.19</ipAddressRange>
    </vlan>
  -->
  <!--
    * id is the unique id of the service offering
    * name is the name of the service offering
    * displayText is the text that will be shown in the UI (usually as a dropdown list)
    * cpu is the number of CPUs for the offering
    * ramSize is total memory in MB
    * speed is the CPU speed for each core in MHZ
    * diskSpace is the storage space in MB
    * enableHA is a true/false value to determine if HA should be turned on for vms with this service offering.  Default is false.
  -->
  <serviceOfferings>
    <serviceOffering>
      <id>1</id>
      <name>Small Instance</name>
      <displayText>Small Instance [500MHZ CPU, 512MB MEM, 16GB Disk] - $0.10 per hour</displayText>
      <cpu>1</cpu>
      <ramSize>512</ramSize>
      <speed>500</speed>
    </serviceOffering>
    <serviceOffering>
      <id>2</id>
      <name>Medium Instance</name>
      <displayText>Medium Instance [2GHZ CPU, 2GB MEM, 32GB Disk] - $0.20 per hour</displayText>
      <cpu>1</cpu>
      <ramSize>2048</ramSize>
      <speed>2000</speed>
    </serviceOffering>
    <serviceOffering>
      <id>3</id>
      <name>Large Instance</name>
      <displayText>Large Instance [2GHZ CPU, 4GB MEM, 64GB Disk] - $0.30 per hour</displayText>
      <cpu>2</cpu>
      <ramSize>4096</ramSize>
      <speed>2000</speed>
    </serviceOffering>
  </serviceOfferings>

  <diskOfferings>
    <diskOffering>
      <id>1</id>
      <domainId>1</domainId>
      <name>Small Disk</name>
      <displayText>Small Disk [16GB Disk]</displayText>
      <diskSpace>16384</diskSpace>
    </diskOffering>
    <diskOffering>
      <id>2</id>
      <domainId>1</domainId>
      <name>Medium Disk</name>
      <displayText>Medium Disk [32GB Disk]</displayText>
      <diskSpace>32768</diskSpace>
    </diskOffering>
    <diskOffering>
      <id>3</id>
      <domainId>1</domainId>
      <name>Large Disk</name>
      <displayText>Large Disk [64GB Disk]</displayText>
      <diskSpace>65536</diskSpace>
    </diskOffering>
  </diskOfferings>

  <!--
    This is the user section.  Use this to create users for your fresh setup.

    * firstname/lastname are optional parameters
    * id and email, however, are *required*
  -->
  <users>
    <user>
      <id>2</id>
      <username>admin</username>
      <password>password</password>
      <firstname>Admin</firstname>
      <lastname>User</lastname>
      <email>admin@mailprovider.com</email>
    </user>
  </users>

  <!--
    This is the configuration section.  It contains various configuration settings
    unrelated between each other, but influencing the operation of the cloud.
  -->

  <configurationEntries>
    <!--
    The default.zone parameter controls in which zone machines are created by default,
    if you do not specify a zone.
    -->
    <configuration>
      <name>default.zone</name>
      <value>ZONE1</value>
    </configuration>
    <!--
    The guest.domain.suffix parameter...
    -->    <configuration>
      <name>guest.domain.suffix</name>
      <value>qatest-vmops.com</value>
    </configuration>
    <!--
    Enable Dynamic RBAC by default for fresh installations
    -->
    <configuration>
      <name>dynamic.apichecker.enabled</name>
      <value>true</value>
    </configuration>
    <!--
    Enable RootCA auth strictness for fresh installations
    -->
    <configuration>
      <name>ca.plugin.root.auth.strictness</name>
      <value>true</value>
    </configuration>
    <!--
    The instance.name parameter is tacked to the end of the names of the VMs you create.
    So, for example, with the TEST value as it ships by default, your VMs would be named:
    i-X-Y-TEST, where X is the account ID and Y is the serially incrementing VM ID.
    -->
    <configuration>
      <name>instance.name</name>
      <value>TEST</value>
    </configuration>
    <!--
    The integration.api.port parameter controls on which port the REST API listens.
    -->
    <configuration>
      <name>integration.api.port</name>
      <value>8096</value>
    </configuration>
    <!--
    The memory.capacity.threshold is a percentage value (e.g. 0.85 is 85%).  Whenever
    the Percent Used memory in a pod exceeds this threshold, our software will alert
    you.
    -->
    <configuration>
      <name>memory.capacity.threshold</name>
      <value>0.85</value>
    </configuration>
    <!--
    This parameter is similar to memory.capacity.threshold, but for CPU capacity.
    -->
    <configuration>
      <name>cpu.capacity.threshold</name>
      <value>0.85</value>
    </configuration>
    <!--
    The following two parameters:
    1. storage.capacity.threshold
    2. storage.allocated.capacity.threshold
    are similar to the last two parameters, but apply to storage.  If at any point,
    the Storage Used (actual data size used in the storage volume) or Storage
    Allocated (total storage configured across a pod) exceeds these thresholds,
    our software will alert you.
    -->
    <configuration>
      <name>storage.capacity.threshold</name>
      <value>0.85</value>
    </configuration>
    <configuration>
      <name>storage.allocated.capacity.threshold</name>
      <value>0.85</value>
    </configuration>
    <!--
    The following two parameters operate in a similar fashion to the earlier
    thresholds.  If the percentage of allocated IPs vs. available IPs exceed
    these thresholds, you will be alerted.
    -->
    <configuration>
      <name>public.ip.capacity.threshold</name>
      <value>0.85</value>
    </configuration>
    <configuration>
      <name>private.ip.capacity.threshold</name>
      <value>0.85</value>
    </configuration>
    <!--
    capacity.check.period tells the Management Server how often to check the
    available capacity.  The value is expressed in milliseconds.
    -->
    <configuration>
      <name>capacity.check.period</name>
      <value>300000</value>
    </configuration>
    <!--
    expunge.interval is the number of seconds after which destroyed VMs will be
    cleaned out of the storage server and no longer recoverable.
    -->
    <configuration>
      <name>expunge.interval</name>
      <value>86400</value>
    </configuration>
    <!--
    The wait parameter expresses how many seconds a command can be sitting in the queue.
    Commands to the different participants in the cloud are serialized through a single-
    consumer queue, to coordinate several multi-step actions.  If, theoretically, a
    command in the queue is holding the subsequent commands up for too long (by default,
    as you can see, half an hour), then the queue itself is cleaned up and you
    get a failure alert in your Management UI.
    -->
    <configuration>
      <name>wait</name>
      <value>1800</value>
    </configuration>

    <!--
    The upgrade URL is the URL of the management server that agents will connect to
    in order to automatically upgrade.  This should be the configured host/port of
    either a load balancer if clustering is used, or the management server if a single
    server is installed.  If the port to use is 80, the ":8080" portion of the
    value below can be removed.

    In the vast majority of cases, all you need to change is the host, from example.com
    to whatever IP address or host name of your management server / load balancer.
    -->
    <configuration>
      <name>upgrade.url</name>
      <value>http://example.com:8080/client/agent/update.zip</value>
    </configuration>

    <!--
    The following two throttling parameters are expressed in Mb/s (mega*bits* per second).

    Each value is the default limit for each user (as a whole) in terms of served bandwidth
    rate.  To be more precise: users' downloads to their VMs are *not* limited; these
    parameters govern the limits of outbound traffic.

    The first one is the overall limit.  The second limit applies only to multicast traffic.
    -->
    <configuration>
      <name>network.throttling.rate</name>
      <value>200</value>
    </configuration>
    <configuration>
      <name>multicast.throttling.rate</name>
      <value>10</value>
    </configuration>
    <configuration>
      <name>secstorage.encrypt.copy</name>
      <value>false</value>
    </configuration>

    <!--
    usage.aggregation.timezone is the timezone to use for aggregating usage.  This timezone
    will specify the boundaries for one day, i.e. when daily usage records are generated, it will
    be one day's worth of usage in this timezone's day.  The value of must be a valid Java 1.6
    timezone id, a list of timezone ids is here (but not guaranteed to be 100% accurate)
    http://www.java2s.com/Tutorial/Java/0120__Development/GettingallthetimezonesIDs.htm

    usage.stats.job.exec.time is the time at which the usage statistics aggregation job will run.
    The value is specified as an HH24:MM time, e.g. 00:30 to run at 12:30am (server time).  The
    default value is configured to run at 12:15am and will aggregate usage data from the previous
    day.
    -->
    <configuration>
      <name>usage.aggregation.timezone</name>
      <value>GMT</value>
    </configuration>
    <configuration>
      <name>usage.stats.job.exec.time</name>
      <value>00:15</value>
    </configuration>
    <configuration>
      <name>system.vm.local.storage.required</name>
      <value>false</value>
    </configuration>
    <!--
    <configuration>
      <name>hypervisor.type</name>
      <value></value>
    </configuration>
    -->
    <configuration>
      <name>secondary.storage.vm</name>
      <value>false</value>
    </configuration>

    <!--
        The following are for configuring alerts and a proper email (where system
        alerts will be sent to) and smtp server needs to be
        configured before enabling this feature.
    -->
    <!--
    <configuration>
      <name>alert.smtp.host</name>
      <value>smtp.host.com</value>
    </configuration>
    <configuration>
      <name>alert.smtp.port</name>
      <value>25</value>
    </configuration>
    <configuration>
      <name>alert.smtp.useAuth</name>
      <value>false</value>
    </configuration>
    <configuration>
      <name>alert.smtp.username</name>
      <value>some.user@example.com</value>
    </configuration>
    <configuration>
      <name>alert.smtp.password</name>
      <value>password</value>
    </configuration>
    <configuration>
      <name>alert.email.sender</name>
      <value>some.user@example.com</value>
    </configuration>
    <configuration>
      <name>alert.email.addresses</name>
      <value>some.admin@example.com</value>
    </configuration>
    <configuration>
      <name>alert.smtp.debug</name>
      <value>false</value>
    </configuration>
    -->
    <!--
    	mount.parent determines where secondary storage is mounted on the management server.
    -->
    <!--
    <configuration>
      <name>mount.parent</name>
      <value>/var/cloudstack/mnt</value>
    </configuration>
    -->
  </configurationEntries>
</data>
