<!--
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.
-->
<vmsynctest>

<!-- 1. Deploy two VMs, One HA enabled, One HA disabled -->
<!-- 1.1 Deploy HA enabled VM -->
<command>
		    <name>deployVirtualMachine</name>  <!--deploy vm 1-->
            <testcase>deploy HA enabled VM test case</testcase>

         <parameters>
			<item getparam="true">
			    <name>diskofferingid</name>
				<param>globaldiskofferingid</param>
			</item>
			<item getparam="true">
			    <name>serviceofferingid</name>
				<param>globalserviceofferingid</param>
			</item>
			<item getparam="true">
			    <name>templateid</name>
				<param>globaltemplateid</param>
			</item>
			<item getparam="true">
			    <name>zoneid</name>
				<param>globalzoneid</param>
			</item>
			<item>
				<name>displayname</name>
				<value>HAenabledVM</value>
			</item>
			<item>
				<name>account</name>
				<value>admin</value>
			</item>
			<item>
				<name>domainid</name>
				<value>1</value>
			</item>
			<item>
				<name>group</name>
				<value>group1</value>
			</item>
			<item getparam="true">
				<name>networkids</name>
				<param>globalnetworkid</param>
			</item>
		</parameters>
		<returnvalue>
			<item setparam="true">
				<name>id</name>
				<param>vmid_en</param>
			</item>
			<item setparam="true">
				<name>name</name>
				<param>vmname_en</param>
			</item>
			<item setparam="true">
				<name>hostid</name>
				<param>hostid_en</param>
			</item>
		</returnvalue>
</command>

<!-- 1.2 Deploy the HA disabled VM -->
<command>
		    <name>deployVirtualMachine</name>  <!--deploy vm 1-->
            <testcase>deploy HA disabled VM test case</testcase>

         <parameters>
			<item getparam="true">
			    <name>diskofferingid</name>
				<param>globaldiskofferingid</param>
			</item>
			<item getparam="true">
			    <name>serviceofferingid</name>
				<param>globalserviceofferingid</param>
			</item>
			<item getparam="true">
			    <name>templateid</name>
				<param>globaltemplateid</param>
			</item>
			<item getparam="true">
			    <name>zoneid</name>
				<param>globalzoneid</param>
			</item>
			<item>
				<name>displayname</name>
				<value>HAdisabledVM</value>
			</item>
			<item>
				<name>account</name>
				<value>admin</value>
			</item>
			<item>
				<name>domainid</name>
				<value>1</value>
			</item>
			<item>
				<name>group</name>
				<value>group1</value>
			</item>
			<item getparam="true">
				<name>networkids</name>
				<param>globalnetworkid</param>
			</item>
		</parameters>
		<returnvalue>
			<item setparam="true">
				<name>id</name>
				<param>vmid_db</param>
			</item>
			<item setparam="true">
				<name>name</name>
				<param>vmname_db</param>
			</item>
			<item setparam="true">
				<name>hostid</name>
				<param>hostid_db</param>
			</item>
		</returnvalue>
</command>

<!-- 2. Enable and disable HA on the VMs respectively -->
<!-- 2.1 Enable HA -->
<command>
		<name>updateVirtualMachine</name>
		<testcase>HA enable virtual machine</testcase>
		<parameters>
			<item getparam="true">
				<name>id</name>
				<param>vmid_en</param>
			</item>
			<item>
				<name>displayname</name>
				<value>HAenabledVirtualMachine</value>
			</item>
			<item>
				<name>haenable</name>
				<value>true</value>
			</item>
		</parameters>
</command>

<!-- 2.2 Disable HA -->
<command>
		<name>updateVirtualMachine</name>
		<testcase>HA disable virtual machine</testcase>
		<parameters>
			<item getparam="true">
				<name>id</name>
				<param>vmid_db</param>
			</item>
			<item>
				<name>displayname</name>
				<value>HAdisabledVirtualMachine</value>
			</item>
			<item>
				<name>haenable</name>
				<value>false</value>
			</item>
		</parameters>
</command>

<!--  3. Obtain the Host IP addresses for the Hosts accommodating the VMs -->
<!-- 3.1 Obtains the Host IP address of the HA enabled VM's Host machine -->
<command>
		<name>listHosts</name>
		<testcase>Obtain IP address of ha disabled VM's Host Test Case</testcase>
		<parameters>
			<item getparam="true">
				<name>id</name>
				<param>hostid_db</param>
			</item>
		</parameters>
		<returnvalue>
			<item setparam="true">
				<name>ipaddress</name>
				<param>ipaddress_db</param>
			</item>
		</returnvalue>
	</command>

<!-- 3.2 Obtains the Host IP address of the HA disabled VM's Host machine -->

<command>
		<name>listHosts</name>
		<testcase>Obtain IP address of ha enabled VM's Host Test Case</testcase>
		<parameters>
			<item getparam="true">
				<name>id</name>
				<param>hostid_en</param>
			</item>
		</parameters>
		<returnvalue>
			<item setparam="true">
				<name>ipaddress</name>
				<param>ipaddress_en</param>
			</item>
		</returnvalue>
</command>

<!-- 4. Get VM instance name of the VMs from the db -->
	<command>
		<name>select instance_name from vm_instance</name>
		<mysql>true</mysql>
		<testcase>Obtaining the internal instance name for the ha disabled VM Test Case</testcase>
		<parameters>
			<item getparam="true">
			    <name>id</name>
				<param>vmid_db</param>
			</item>
		</parameters>
		<returnvalue>
			<item setparam="true">
			    <name>instance_name</name>
				<param>instance_name_db</param>
			</item>
		</returnvalue>
	</command>

	<command>
		<name>select instance_name from vm_instance</name>
		<mysql>true</mysql>
		<testcase>Obtaining the internal instance name for the ha enabled VM Test Case</testcase>
		<parameters>
			<item getparam="true">
			    <name>id</name>
				<param>vmid_en</param>
			</item>
		</parameters>
		<returnvalue>
			<item setparam="true">
			    <name>instance_name</name>
				<param>instance_name_en</param>
			</item>
		</returnvalue>
	</command>

<!-- 5. Kill the two VMs -->

<command>
	<name>killvm.sh</name>
	<testcase>Kill the HA enabled VM</testcase>
	<script>true</script>

	<parameters>
		<item getparam="true">
			<name>n</name>
			<param>instance_name_en</param>
		</item>

		<item getparam="true">
			<name>h</name>
			<param>ipaddress_en</param>
		</item>
	</parameters>
</command>


<command>
	<name>killvm.sh</name>
	<testcase>Kill the HA disabled VM</testcase>
	<script>true</script>

	<parameters>
		<item getparam="true">
			<name>n</name>
			<param>instance_name_db</param>
		</item>

		<item getparam="true">
			<name>h</name>
			<param>ipaddress_db</param>
		</item>
	</parameters>
</command>

<!--6. Wait for some time for the management server to respond -->
	<command>
		<name>sleep.sh</name>
		<script>true</script>
		<testcase>Sleep for some time</testcase>
		<parameters>
			<item>
			    <name>s</name>
				<value>300</value>
			</item>
		</parameters>
	</command>

<!--  Check that States of the vms at the database and at the agents - verify both api and backend  -->
<!-- 7. Check the Management Server Database for the states of the killed VMs -->

	<command>
		<name>listVirtualMachines</name>
		<testcase>List virtual machine with ha disabled</testcase>
		<parameters>
			<item getparam="true">
			    <name>id</name>
				<param>vmid_db</param>
			</item>
		</parameters>
		<returnvalue>
			<item>
				<name>state</name>
				<value>Stopped</value>
			</item>
		</returnvalue>
	</command>

	<command>
		<name>listVirtualMachines</name>
		<testcase>List virtual machine with ha enabled</testcase>
		<parameters>
			<item getparam="true">
			    <name>id</name>
				<param>vmid_en</param>
			</item>
		</parameters>
		<returnvalue>
			<item>
				<name>state</name>
				<value>Running</value>
			</item>
			<item setparam="true">			<!-- HA enabled VM may be restarted on any hosts -->
				<name>hostid</name>
				<param>hostid_en</param>
			</item>
		</returnvalue>
	</command>

<!-- 9. Find the host IP address of the ha enabled VM -->
<command>
		<name>listHosts</name>
		<testcase>List host with ha enabled machine</testcase>
		<parameters>
			<item getparam="true">
				<name>id</name>
				<param>hostid_en</param>
			</item>
		</parameters>
		<returnvalue>
			<item setparam="true">
				<name>ipaddress</name>
				<param>ipaddress_en</param>
			</item>
		</returnvalue>
</command>

<!-- 10. Verify whether the HA enabled VM is actually running on the host -->
<command>
		<name>listvm.sh</name>
		<script>true</script>
		<testcase>List ha enabled machine</testcase>
		<parameters>
		<item getparam="true">
			    <name>h</name>
				<param>ipaddress_en</param>
			</item>
			<item getparam="true">
			    <name>n</name>
				<param>instance_name_en</param>
			</item>
		</parameters>
</command>

<!--  Cleanup section -->
<!-- 11. Destroy VMs-->
<command>
		<name>destroyVirtualMachine</name>
		<testcase>Destroy ha disabled vm as a part of cleanup</testcase>
		<parameters>
			<item getparam="true">
				<name>id</name>
				<param>vmid_db</param>
			</item>
		</parameters>
</command>

<command>
		<name>destroyVirtualMachine</name>
		<testcase>Destroy ha enabled vm as a part of cleanup</testcase>
		<parameters>
			<item getparam="true">
				<name>id</name>
				<param>vmid_en</param>
			</item>
		</parameters>
</command>
</vmsynctest>
