<!--
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.
-->
<vmapi>	

<!-- 
		KEEP IN MIND: EXPUNGE INTERVAL, PASSWORD ENABLED TEMPLATE
	
		STEPS/TEST CASES COVERED:
		1. Deploy a Virtual Machine in admin account
		2. Destroy the Virtual Machine
		3. List the Destroyed Virtual Machine
		4. Check that the Destroyed VM cannot be started
		5. Check that a non-existing VM cannot be listed (Id doesn't exist)
		6. Create the Account and a User for the account (List VM for a Removed User exercise BEGIN)
		7. List the Created User
		8. Creating default network
		9. Deploy Virtual Machine in the New Account
		10. Delete User
		11. Delete Account
		12. Check that no VMs present under the Account(List VM for a Removed User exercise END)
		13. updateVirtualMachine api: should deny to update Destroyed vms
		14. Verify that one can't enable HA for non-existing vm
		15. Recover the Destroyed VM
		16. Verify that one can reset password for VM in stopped state
		17. Verify that one can enable HA for VM in stopped state
		18. Start Virtual Machine (reset password for VM in running state exercise BEGIN)
		19. Verify that one can reset password for VM in running state
		20. Verify that one can disable HA for VM in running state
		21. Destroy Virtual Machine (reset password on a destroyed VM exercise BEGIN)
		22. Verify that one can't reset password for VM in destroyed state
		23. Verify that one can't reboot destroyed VM
		24. Deploy Virtual Machine to test reset password negative case
		25. Check whether password can be reset on virtual machine made from password disabled VM
		26. Try to change service offering for VM in running state
		27. Stop the Virtual machine to change its Service Offering
		28. Try to change service offering to the one that VM already has -ve case
		29. Try to reboot stopped virtual machine - Negative case
		30. Try to recover stopped virtual machine
		31. Start the Virtual Machine
		32. Try to recover running virtual machine
		33. Try to deploy vm and assign it to non-existing account -ve case
		34. Try to deploy vm and assign it to removed account -ve case
		35. Try to send destroy command for non-existing vm -ve case
		36. Try to send reboot command for non-existing vm -ve case
		37. Try to send start command for non-existing vm -ve case
		38. Destroy Virtual Machine as part of Clean up
		
	 -->


<!-- Test case #72 - verify that listVm command doesn't display VM in expunging state but displays a VM in destroyed state -->
	<command>
		<name>deployVirtualMachine</name>
		<testcase>	[Deploy Virtual Machine in Admin Account]</testcase>
		<parameters>
			<item getparam="true">
			    <name>zoneid</name>
				<param>globalzoneid</param>
			</item>
			<item getparam="true">
			    <name>serviceofferingid</name>
				<param>globalserviceofferingid</param>
			</item>
			<item getparam="true">
			    <name>diskofferingid</name>
				<param>globaldiskofferingid</param>
			</item>	
			<item getparam="true">
				<name>templateid</name>
				<param>globaltemplateid</param>
			</item>
			<item>
				<name>account</name>
				<value>admin</value>
			</item>
			<item>
				<name>domainid</name>
				<value>1</value>
			</item>
			<item>
				<name>displayname</name>
				<value>VMapis-VM</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</param>
			</item>
			<item setparam="true">
				<name>name</name>
				<param>vmname</param>
			</item>
			<item setparam="true">
				<name>ipaddress</name>
				<param>vmipaddress</param>
			</item>
		</returnvalue>
	</command>
	
	<command>
		<name>destroyVirtualMachine</name>
		<testcase>	[Destroy Virtual Machine]</testcase>
		<parameters>
			<item getparam="true">
				<name>id</name>
				<param>vmid</param>
			</item>
		</parameters>
	</command>
	
	<command>
		<name>listVirtualMachines</name>
		<testcase>72  [List the Destroyed Virutal Machine]</testcase>
		<parameters>
			<item>
				<name>account</name>
				<value>admin</value>
			</item>
			<item getparam="true">
				<name>name</name>
				<param>vmname</param>
			</item>
		</parameters>
	</command>
	
<!-- Test case #92 - verify that you can't start destroyed virtual machine -->
	<command>
		<name>startVirtualMachine</name>
		<testcase>92  [Check that the Destroyed VM cannot be started]</testcase>
		<error>true</error>
		<parameters>
			<item getparam="true">
				<name>id</name>
				<param>vmid</param>
			</item>
		</parameters>
	</command>
	
<!-- Test case #73 - verify that listVm returns nothing when id of non-existing VM is specified -->
	<command>
		<name>listVirtualMachines</name>
		<testcase>73  [Check that a non-existing VM cannot be listed (Id doesn't exist)]</testcase>
		<parameters>
			<item>
				<name>account</name>
				<value>admin</value>
			</item>
			<item>
				<name>id</name>
				<value>100000000</value>
			</item>
		</parameters>
	</command>
	
<!-- Test case #74 - verify that listVm returns empty response when account=removedAccount is specified -->	

	<command>
		<name>createAccount</name>
		<testcase>    [Create the Account and a User for the account (List VM for a Removed User exercise BEGIN)]</testcase>
		<parameters>
			<item setparam="true" random="true">
				<name>account</name>
				<param>accountname</param>
			</item>
			<item>
				<name>accounttype</name>
				<value>0</value>
			</item>
			<item>
				<name>domainid</name>
				<value>1</value>
			</item>
			<item>
				<name>email</name>
				<value>testcase74@gmail.com</value>
			</item>
			<item>
				<name>firstname</name>
				<value>testcase74</value>
			</item>
			<item>
				<name>lastname</name>
				<value>testcase74lastname</value>
			</item>
			<item random="true">
				<name>username</name>
			</item>
			<item>
				<name>password</name>
				<value>password</value>
			</item>
		</parameters>
		<returnvalue>
			<item setparam="true">
				<name>id</name>
				<param>accountid</param>
			</item>
			<item getparam="true">
				<name>name</name>
				<param>accountname</param>
			</item>			
		</returnvalue>
	</command>

	<!-- Test case #5 - listUsers command -->
	<command>
		<name>listUsers</name>
		<testcase>    [List the Created User]</testcase>
		<parameters>
			<item getparam="true">
				<name>account</name>
				<param>accountname</param>
			</item>
		</parameters>
		
		<returnvalue>
			<item setparam="true">
				<name>id</name>
				<param>userid</param>
			</item>
			<item setparam="true">
				<name>username</name>
				<param>usernameparam</param>
			</item>
		</returnvalue>
	</command>


<!-- 
	<command>
		<name>createUser</name>
		<parameters>
			<item random="true">
			    <name>username</name>
			</item>
			<item>
			    <name>password</name>
				<value>testcase74</value>
			</item>
			<item>
				<name>firstname</name>
				<value>testcase74</value>
			</item>
			<item>
				<name>lastname</name>
				<value>testcase74</value>
			</item>
			<item>
				<name>email</name>
				<value>testcase74@gmail.com</value>
			</item>
			<item>
				<name>accounttype</name>
				<value>0</value>
			</item>
		</parameters>
		<returnvalue>
			<item verify="false" setparam="true">
				<name>account</name>
				<param>accountname</param>
			</item>
			<item verify="false" setparam="true">
				<name>id</name>
				<param>userid</param>
			</item>
		</returnvalue>
	</command>
-->	

	<command>
		<name>createNetwork</name>
		<testcase>	[Creating default network for the account]</testcase>
		<parameters>
			<item getparam="true">
			    <name>zoneid</name>
				<param>globalzoneid</param>
			</item>
			<item getparam="true">
			    <name>networkOfferingId</name>
				<param>globalnetworkofferingid</param>
			</item>
			<item getparam="true">
				<name>account</name>
				<param>accountname</param>
			</item>
			<item>
				<name>domainid</name>
				<value>1</value>
			</item>
			<item>
				<name>name</name>
				<value>vmapi_network</value>
			</item>
			<item>
				<name>displaytext</name>
				<value>vmapi_network</value>
			</item>
		</parameters>
		<returnvalue>
			<item setparam="true">
				<name>id</name>
				<param>networkid</param>
			</item>
		</returnvalue>
	</command>
	
	<command>
		<name>deployVirtualMachine</name>
		<testcase>	[Deploy Virtual Machine in the new Account]</testcase>
		<parameters>
			<item getparam="true">
			    <name>zoneid</name>
				<param>globalzoneid</param>
			</item>
			<item getparam="true">
			    <name>serviceofferingid</name>
				<param>globalserviceofferingid</param>
			</item>
			<item getparam="true">
			    <name>diskofferingid</name>
				<param>globaldiskofferingid</param>
			</item>	
			<item getparam="true">
				<name>templateid</name>
				<param>globaltemplateid</param>
			</item>
			<item getparam="true">
				<name>account</name>
				<param>accountname</param>
			</item>
			<item>
				<name>domainid</name>
				<value>1</value>
			</item>
			<item>
				<name>displayname</name>
				<value>VMapis-VM-2</value>
			</item>
			<item>
				<name>group</name>
				<value>group1</value>
			</item>
			<item getparam="true">
				<name>networkids</name>
				<param>networkid</param>
			</item>
		</parameters>
		<returnvalue>
			<item setparam="true">
				<name>id</name>
				<param>vmid2</param>
			</item>
			<item setparam="true">
				<name>name</name>
				<param>vmname</param>
			</item>
			<item setparam="true">
				<name>ipaddress</name>
				<param>vmipaddress</param>
			</item>
		</returnvalue>
	</command>
	
	<command>
		<name>deleteUser</name>
		<testcase>    [Delete User]</testcase>
		<parameters>
			<item getparam="true">
			    <name>id</name>
				<param>userid</param>
			</item>
		</parameters>
	</command>	

	<command>
		<name>deleteAccount</name>
		<testcase>    [Delete Account]</testcase>
		<parameters>
			<item getparam="true">
			    <name>id</name>
				<param>accountid</param>
			</item>
		</parameters>
	</command>	
	
		<command>
		<name>listVirtualMachines</name>
		<testcase>74  [Check that no VMs present under the Account(List VM for a Removed User exercise END)]</testcase>
		<error>true</error>
		<parameters>
			<item getparam="true">
				<name>account</name>
				<param>accountname</param>
			</item>
			<item>
				<name>domainid</name>
				<value>1</value>
			</item>
		</parameters>
	</command>
	
<!-- Test case #77 - verify that you can't enable HA for VM in destroyed state -->
	<command>
		<name>updateVirtualMachine</name>
		<testcase>77 - Bug 3237 [updateVirtualMachine api: should deny to update Destroyed vms]</testcase>
		<error>true</error>
		<parameters>
			<item getparam="true">
				<name>id</name>
				<param>vmid</param>
			</item>
			<item>
				<name>haenable</name>
				<value>true</value>
			</item>
		</parameters>
	</command>	
	
	<!-- Test case #592 - verify that you can't enable HA for non-existing vm -->
	<command>
		<name>updateVirtualMachine</name>
		<testcase>592 [Verify that you can't enable HA for non-existing vm]</testcase>
		<error>true</error>
		<parameters>
			<item>
				<name>id</name>
				<value>1000000</value>
			</item>
			<item>
				<name>haenable</name>
				<value>true</value>
			</item>
		</parameters>
	</command>	
	

<!-- Test case #79 - verify that you can reset password for VM in stopped state -->	
	<command>
		<name>recoverVirtualMachine</name>
		<testcase>    [Recover the Destroyed VM]</testcase>
		<parameters>
			<item getparam="true">
				<name>id</name>
				<param>vmid</param>
			</item>
		</parameters>
	</command>
	
	<command>
		<name>resetPasswordForVirtualMachine</name>
		<testcase>79-1 [Verify that one can reset password for VM in stopped state]</testcase>
		<parameters>
			<item getparam="true">
				<name>id</name>
				<param>vmid</param>
			</item>
		</parameters>
	</command>

<!-- Test case #76 - verify that you can enable HA for VM in stopped state -->	

	<command>
		<name>updateVirtualMachine</name>
		<testcase>76  [Verify that one can enable HA for VM in stopped state]</testcase>
		<parameters>
			<item getparam="true">
				<name>id</name>
				<param>vmid</param>
			</item>
			<item>
				<name>haenable</name>
				<value>true</value>
			</item>
		</parameters>
	</command>	


<!-- Test case #79 - verify that you can reset password for VM in running state -->	
	<command>
		<name>startVirtualMachine</name>
		<testcase>    [Start Virtual Machine (reset password for VM in running state exercise BEGIN)]</testcase>
		<parameters>
			<item getparam="true">
				<name>id</name>
				<param>vmid</param>
			</item>
		</parameters>
	</command>
	
	<command>
		<name>resetPasswordForVirtualMachine</name>
		<testcase>79-2 [Verify that one can reset password for VM in running state]</testcase>
		<parameters>
			<item getparam="true">
				<name>id</name>
				<param>vmid</param>
			</item>
		</parameters>
	</command>
	

<!-- Test case #76 - verify that you can disable HA for VM in running state -->
	<command>
		<name>updateVirtualMachine</name>
		<testcase>76  [Verify that one can disable HA for VM in running state]</testcase>
		<parameters>
			<item getparam="true">
				<name>id</name>
				<param>vmid</param>
			</item>
			<item>
				<name>haenable</name>
				<value>false</value>
			</item>
		</parameters>
	</command>	
	
	
<!-- Test case #80 - verify that you can't reset password for VM in destroyed state -->
		<command>
		<name>destroyVirtualMachine</name>
		<testcase>    [Destroy Virtual Machine (reset password on a destroyed VM exercise BEGIN)]</testcase>
		<parameters>
			<item getparam="true">
				<name>id</name>
				<param>vmid</param>
			</item>
		</parameters>
	</command>
	
	<command>
		<name>resetPasswordForVirtualMachine</name>
		<testcase>80  [Verify that one can't reset password for VM in destroyed state]</testcase>
		<error>true</error>
		<parameters>
			<item getparam="true">
				<name>id</name>
				<param>vmid</param>
			</item>
		</parameters>
	</command>
	
<!-- Test case #89 - verify that you can't reboot destroyed VM -->	
	<command>
		<name>rebootVirtualMachine</name>
		<testcase>89  [Verify that one can't reboot destroyed VM]</testcase>
		<error>true</error>
		<parameters>
			<item getparam="true">
				<name>id</name>
				<param>vmid</param>
			</item>
		</parameters>
	</command>

	
<!-- Test case #81 - resetpassword for virtual machine which was made of template with password disabled - Negative case -->
	<command>
		<name>deployVirtualMachine</name>
		<testcase>    [Deploy Virtual Machine to test reset password negative case]</testcase>
		<parameters>
			<item getparam="true">
			    <name>zoneid</name>
				<param>globalzoneid</param>
			</item>
			<item getparam="true">
			    <name>serviceofferingid</name>
				<param>globalserviceofferingid</param>
			</item>
			<item getparam="true">
			    <name>diskofferingid</name>
				<param>globaldiskofferingid</param>
			</item>	
			<item getparam="true">
				<name>templateid</name>
				<param>globaltemplateid</param>
			</item>
			<item>
				<name>account</name>
				<value>admin</value>
			</item>
			<item>
				<name>domainid</name>
				<value>1</value>
			</item>
			<item>
				<name>displayname</name>
				<value>VMapis-VM-3</value>
			</item>
			<item>
				<name>group</name>
				<value>group1</value>
			</item>
			<item getparam="true">
				<name>networkids</name>
				<param>networkid</param>
			</item>
		</parameters>
		<returnvalue>
			<item setparam="true">
				<name>id</name>
				<param>windowsvmid</param>
			</item>
			<item setparam="true">
				<name>name</name>
				<param>windowsvmname</param>
			</item>
			<item setparam="true">
				<name>ipaddress</name>
				<param>windowsvmipaddress</param>
			</item>
		</returnvalue>
	</command>
	
	<command>
		<name>resetPasswordForVirtualMachine</name>
		<testcase>81  [Check whether password can be reset on virtual machine made from password disabled VM]</testcase>
		<error>true</error>
		<parameters>
			<item getparam="true">
				<name>id</name>
				<param>windowsvmid</param>
			</item>
		</parameters>
	</command>
	
<!-- Test case #82 - try to change service offering for VM in running state - should fail - Negative case -->
	<command>
		<name>changeServiceForVirtualMachine</name>
		<testcase>82 [Try to change service offering for VM in running state]</testcase>
		<error>true</error>
		<parameters>
			<item getparam="true">
				<name>id</name>
				<param>windowsvmid</param>
			</item>
			<item getparam="true">
				<name>serviceofferingid</name>
				<param>mediumglobalserviceofferingid</param>
			</item>
		</parameters>
	</command>

<!-- Test case #83 - try to change service offering to the one that VM already has - should fail - Negative case -->
	<command>
		<name>stopVirtualMachine</name>
		<testcase>    [Stop the Virtual machine to change its Service Offering]</testcase>
		<parameters>
			<item getparam="true">
				<name>id</name>
				<param>windowsvmid</param>
			</item>
		</parameters>
	</command>
	
	<command>
		<name>changeServiceForVirtualMachine</name>
		<testcase>83  [Try to change service offering to the one that VM already has -ve case]</testcase>
		<error>true</error>
		<parameters>
			<item getparam="true">
				<name>id</name>
				<param>windowsvmid</param>
			</item>
			<item getparam="true">
				<name>serviceofferingid</name>
				<value>globalserviceofferingid</value>
			</item>
		</parameters>
	</command>
	
	
<!-- Test case #90 - try to reboot stopped virtual machine - should fail - Negative case -->
	<command>
		<name>rebootVirtualMachine</name>
		<testcase>90  [Try to reboot stopped virtual machine - Negative case]</testcase>
		<error>true</error>
		<parameters>
			<item getparam="true">
				<name>id</name>
				<param>windowsvmid</param>
			</item>
		</parameters>
	</command>
		

<!-- Test case #95 - try to recover stopped/running virtual machine - should fail -->
	<command>
		<name>recoverVirtualMachine</name>
		<testcase>813 [Try to recover stopped virtual machine]</testcase>
		<error>true</error>
		<parameters>
			<item getparam="true">
				<name>id</name>
				<param>windowsvmid</param>
			</item>
		</parameters>
	</command>
	
	<command>
		<name>startVirtualMachine</name>
		<testcase>    [Start virtual machine]</testcase>
		<parameters>
			<item getparam="true">
				<name>id</name>
				<param>windowsvmid</param>
			</item>
		</parameters>
	</command>
	
	<command>
		<name>recoverVirtualMachine</name>
		<testcase>813 [Try to recover running virtual machine]</testcase>
		<error>true</error>
		<parameters>
			<item getparam="true">
				<name>id</name>
				<param>windowsvmid</param>
			</item>
		</parameters>
	</command>


<!-- Test case #84 - try to deploy vm and assign it to non-existing account - should fail - Negative case -->
	<command>
		<name>deployVirtualMachine</name>
		<testcase>84  [Try to deploy vm and assign it to non-existing account -ve case]</testcase>
		<error>true</error>
		<parameters>
			<item getparam="true">
			    <name>zoneid</name>
				<param>globalzoneid</param>
			</item>
			<item getparam="true">
			    <name>serviceofferingid</name>
				<param>globalserviceofferingid</param>
			</item>
			<item getparam="true">
			    <name>diskofferingid</name>
				<param>globaldiskofferingid</param>
			</item>		
			<item getparam="true">
				<name>templateid</name>
				<param>globaltemplateid</param>
			</item>
			<item>
				<name>account</name>
				<value>blahblah-invaliduser</value>
			</item>
			<item>
				<name>domainid</name>
				<value>1</value>
			</item>
			<item>
				<name>displayname</name>
				<value>VMapis-VM-4</value>
			</item>
			<item>
				<name>group</name>
				<value>group1</value>
			</item>
			<item getparam="true">
				<name>networkids</name>
				<param>globalnetworkid</param>
			</item>
		</parameters>
	</command>	
	
<!-- Test case #85 - try to deploy vm and assign it to removed account - should fail - Negative case -->
	<command>
		<name>deployVirtualMachine</name>
		<testcase>85  [Try to deploy vm and assign it to removed account -ve case]</testcase>
		<error>true</error>
		<parameters>
			<item getparam="true">
			    <name>zoneid</name>
				<param>globalzoneid</param>
			</item>
			<item getparam="true">
			    <name>serviceofferingid</name>
				<param>globalserviceofferingid</param>
			</item>
			<item getparam="true">
			    <name>diskofferingid</name>
				<param>globaldiskofferingid</param>
			</item>	
			<item getparam="true">
				<name>templateid</name>
				<param>globaltemplateid</param>
			</item>
			<item getparam="true">
				<name>account</name>
				<param>accountname</param>
			</item>
			<item>
				<name>domainid</name>
				<value>1</value>
			</item>
			<item>
				<name>displayname</name>
				<value>VMapis-VM-5</value>
			</item>
			<item>
				<name>group</name>
				<value>group1</value>
			</item>
			<item getparam="true">
				<name>networkids</name>
				<param>networkid</param>
			</item>
		</parameters>
	</command>	
	
<!-- Test case #87 - try to send destroy command for non-existing vm - should fail - Negative case -->
	<command>
		<name>destroyVirtualMachine</name>
		<testcase>87  [Try to send destroy command for non-existing vm -ve case]</testcase>
		<error>true</error>
		<parameters>
			<item>
				<name>id</name>
				<value>100000</value>
			</item>
		</parameters>
	</command>
	
<!-- Test case #88 - try to send reboot command for non-existing vm - should fail - Negative case -->
	<command>
		<name>rebootVirtualMachine</name>
		<testcase>88  [Try to send reboot command for non-existing vm -ve case]</testcase>
		<error>true</error>
		<parameters>
			<item>
				<name>id</name>
				<value>100000</value>
			</item>
		</parameters>
	</command>
	
<!-- Test case #91 - try to send start command for non-existing vm - should fail - Negative case -->
	<command>
		<name>startVirtualMachine</name>
		<testcase>88  [Try to send start command for non-existing vm -ve case]</testcase>
		<error>true</error>
		<parameters>
			<item>
				<name>id</name>
				<value>100000</value>
			</item>
		</parameters>
	</command>

<!-- Execute cleanup - destroy the VM-->
	<command>
		<name>destroyVirtualMachine</name>
		<testcase>    [Destroy Virtual Machine as part of Clean up]</testcase>
		<parameters>
			<item getparam="true">
				<name>id</name>
				<param>windowsvmid</param>
			</item>
		</parameters>
	</command>
	
	
</vmapi>		
