<!--
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.
-->
<flatnetwork>
	<command>
		<name>createUser</name>
		<testcase>Creating user</testcase>
		<parameters>
			<item random="true">
			    <name>username</name>
			</item>
			<item>
			    <name>password</name>
				<value>apiuser</value>
			</item>
			<item>
				<name>firstname</name>
				<value>apiuser</value>
			</item>
			<item>
				<name>lastname</name>
				<value>apiuser</value>
			</item>
			<item>
				<name>email</name>
				<value>apiuser@gmail.com</value>
			</item>
			<item>
				<name>accounttype</name>
				<value>0</value>
			</item>
		</parameters>
		<returnvalue>
			<item setparam="true">
				<name>id</name>
				<param>userid</param>
			</item>
			<item setparam="true">
				<name>account</name>
				<param>accountname</param>
			</item>
		</returnvalue>
	</command>

	<command>
		<name>registerUserKeys</name>
		<testcase>Registering the user</testcase>
		<parameters>
			<item getparam="true">
			    <name>id</name>
				<param>userid</param>
			</item>
		</parameters>
		<returnvalue>
			<item setparam="true">
				<name>apikey</name>
				<param>apikey</param>
			</item>
			<item setparam="true">
				<name>secretkey</name>
				<param>secretkey</param>
			</item>
		</returnvalue>
	</command>

	<command>
		<name>createNetworkGroup</name>
		<usercommand>true</usercommand>
		<testcase>Creating a network group</testcase>
		<parameters>
			<item getparam="true">
				<name>name</name>
				<param>accountname</param>
			</item>
		</parameters>
	</command>

	<command>
		<name>authorizeNetworkGroupIngress</name>
		<testcase>Authorizing network group ingress</testcase>
		<parameters>
			<item getparam="true">
				<name>networkgroupname</name>
				<param>accountname</param>
			</item>
			<item>
				<name>cidrlist</name>
				<value>192.168.1.143/32</value>
			</item>
			<item>
				<name>endport</name>
				<value>22</value>
			</item>
			<item>
				<name>startport</name>
				<value>22</value>
			</item>
			<item>
				<name>protocol</name>
				<value>tcp</value>
			</item>
			<item getparam="true">
				<name>account</name>
				<param>accountname</param>
			</item>
			<item>
				<name>domainid</name>
				<value>1</value>
			</item>
		</parameters>
	</command>

	<command>
		<name>deployVirtualMachine</name>
		<usercommand>true</usercommand>
		<testcase>Deploying vm</testcase>
		<parameters>
			<item getparam="true">
			    <name>zoneid</name>
				<param>globalzoneid</param>
			</item>
			<item getparam="true">
			    <name>serviceofferingid</name>
				<param>flatnetworkserviceofferingid</param>
			</item>
			<item getparam="true">
			    <name>networkgrouplist</name>
				<param>accountname</param>
			</item>
			<item getparam="true">
				<name>templateid</name>
				<param>globaltemplateid</param>
			</item>
		</parameters>
		<returnvalue>
			<item setparam="true">
				<name>id</name>
				<param>vmid</param>
			</item>
			<item setparam="true">
				<name>ipaddress</name>
				<param>vmip</param>
			</item>
		</returnvalue>
	</command>

	<command>
		<name>deployVirtualMachine</name>
		<usercommand>true</usercommand>
		<testcase>Deploying vm</testcase>
		<parameters>
			<item getparam="true">
			    <name>zoneid</name>
				<param>globalzoneid</param>
			</item>
			<item getparam="true">
			    <name>serviceofferingid</name>
				<param>flatnetworkserviceofferingid</param>
			</item>
			<item getparam="true">
			    <name>networkgrouplist</name>
				<param>accountname</param>
			</item>
			<item getparam="true">
				<name>templateid</name>
				<param>globaltemplateid</param>
			</item>
		</parameters>
		<returnvalue>
			<item setparam="true">
				<name>id</name>
				<param>vmid1</param>
			</item>
		</returnvalue>
	</command>

	<command>
		<name>createVolume</name>
		<usercommand>true</usercommand>
		<testcase>Creating a volume</testcase>
		<parameters>
			<item random="true">
				<name>name</name>
			</item>
			<item getparam="true">
				<name>zoneid</name>
				<param>globalzoneid</param>
			</item>
			<item getparam="true">
				<name>diskofferingid</name>
				<param>flatnetworkdiskofferingid</param>
			</item>
		</parameters>
		<returnvalue>
			<item setparam="true">
				<name>id</name>
				<param>volumeid</param>
			</item>
		</returnvalue>
	</command>


	<command>
		<name>attachVolume</name>
		<usercommand>true</usercommand>
		<testcase>Attaching the volume</testcase>
		<parameters>
			<item getparam="true">
				<name>id</name>
				<param>volumeid</param>
			</item>
			<item getparam="true">
				<name>virtualmachineid</name>
				<param>vmid</param>
			</item>
		</parameters>
	</command>

	<command>
		<name>sleep.sh</name>
		<script>true</script>
		<testcase>Sleep for 2 min</testcase>
		<parameters>
			<item>
			    <name>s</name>
				<value>120</value>
			</item>
		</parameters>
	</command>

	<command>
		<name>ssh.sh</name>
		<script>true</script>
		<testcase>Ssh test for the vm</testcase>
		<parameters>
		<item getparam="true">
			    <name>h</name>
				<param>vmip</param>
			</item>
			<item>
			    <name>p</name>
				<value>rs-ccb35ea5</value>
			</item>
		</parameters>
	</command>

	<command>
		<name>sleep.sh</name>
		<script>true</script>
		<testcase>Sleep for 1 min</testcase>
		<parameters>
			<item>
			    <name>s</name>
				<value>60</value>
			</item>
		</parameters>
	</command>

	<command>
		<name>stopVirtualMachine</name>
		<usercommand>true</usercommand>
		<testcase>Stopping vm</testcase>
		<parameters>
			<item getparam="true">
				<name>id</name>
				<param>vmid</param>
			</item>
		</parameters>
	</command>

	<command>
		<name>startVirtualMachine</name>
		<usercommand>true</usercommand>
		<testcase>Starting vm</testcase>
		<parameters>
			<item getparam="true">
				<name>id</name>
				<param>vmid</param>
			</item>
		</parameters>
	</command>

	<command>
		<name>rebootVirtualMachine</name>
		<usercommand>true</usercommand>
		<testcase>Rebooting vm</testcase>
		<parameters>
			<item getparam="true">
				<name>id</name>
				<param>vmid</param>
			</item>
		</parameters>
	</command>

	<command>
		<name>detachVolume</name>
		<usercommand>true</usercommand>
		<testcase>Detaching volume</testcase>
		<parameters>
			<item getparam="true">
				<name>id</name>
				<param>volumeid</param>
			</item>
		</parameters>
	</command>

	<command>
		<name>attachVolume</name>
		<usercommand>true</usercommand>
		<testcase>Attaching the volume</testcase>
		<parameters>
			<item getparam="true">
				<name>id</name>
				<param>volumeid</param>
			</item>
			<item getparam="true">
				<name>virtualmachineid</name>
				<param>vmid1</param>
			</item>
		</parameters>
	</command>


		<command>
		<name>stopVirtualMachine</name>
		<usercommand>true</usercommand>
		<testcase>Stopping vm</testcase>
		<parameters>
			<item getparam="true">
				<name>id</name>
				<param>vmid</param>
			</item>
		</parameters>
	</command>

	<command>
		<name>startVirtualMachine</name>
		<usercommand>true</usercommand>
		<testcase>Starting vm</testcase>
		<parameters>
			<item getparam="true">
				<name>id</name>
				<param>vmid1</param>
			</item>
		</parameters>
	</command>

	<command>
		<name>rebootVirtualMachine</name>
		<usercommand>true</usercommand>
		<testcase>Rebooting vm</testcase>
		<parameters>
			<item getparam="true">
				<name>id</name>
				<param>vmid1</param>
			</item>
		</parameters>
	</command>

	<command>
		<name>detachVolume</name>
		<usercommand>true</usercommand>
		<testcase>Detaching volume</testcase>
		<parameters>
			<item getparam="true">
				<name>id</name>
				<param>volumeid</param>
			</item>
		</parameters>
	</command>


	<command>
		<name>deleteVolume</name>
		<usercommand>true</usercommand>
		<testcase>Deleting volume</testcase>
		<parameters>
			<item getparam="true">
				<name>id</name>
				<param>volumeid</param>
			</item>
		</parameters>
	</command>

	<command>
		<name>createVolume</name>
		<usercommand>true</usercommand>
		<testcase>Creating a new volume</testcase>
		<parameters>
			<item random="true">
				<name>name</name>
			</item>
			<item getparam="true">
				<name>zoneid</name>
				<param>globalzoneid</param>
			</item>
			<item getparam="true">
				<name>diskofferingid</name>
				<param>flatnetworkdiskofferingid</param>
			</item>
		</parameters>
		<returnvalue>
			<item setparam="true">
				<name>id</name>
				<param>volumeid</param>
			</item>
		</returnvalue>
	</command>


	<command>
		<name>attachVolume</name>
		<usercommand>true</usercommand>
		<testcase>Attaching the volume to the vm</testcase>
		<parameters>
			<item getparam="true">
				<name>id</name>
				<param>volumeid</param>
			</item>
			<item getparam="true">
				<name>virtualmachineid</name>
				<param>vmid</param>
			</item>
		</parameters>
	</command>


	<command>
		<name>revokeNetworkGroupIngress</name>
		<testcase>Revoking network group igress</testcase>
		<parameters>
			<item getparam="true">
				<name>networkgroupname</name>
				<param>accountname</param>
			</item>
			<item>
				<name>cidrlist</name>
				<value>192.168.1.143/32</value>
			</item>
			<item>
				<name>endport</name>
				<value>22</value>
			</item>
			<item>
				<name>startport</name>
				<value>22</value>
			</item>
			<item>
				<name>protocol</name>
				<value>tcp</value>
			</item>
			<item getparam="true">
				<name>account</name>
				<param>accountname</param>
			</item>
			<item>
				<name>domainid</name>
				<value>1</value>
			</item>
		</parameters>
	</command>


	<command>
		<name>ssh.sh</name>
		<script>true</script>
		<error>true</error>
		<testcase>Ssh test for the vm - should fail as network group is revoked</testcase>
		<parameters>
		<item getparam="true">
			    <name>h</name>
				<param>vmip</param>
			</item>
			<item>
			    <name>p</name>
				<value>password</value>
			</item>
		</parameters>
	</command>

	<command>
		<name>destroyVirtualMachine</name>
		<usercommand>true</usercommand>
		<testcase>Destroying virtual machine</testcase>
		<parameters>
			<item getparam="true">
				<name>id</name>
				<param>vmid</param>
			</item>
		</parameters>
	</command>

	<command>
		<name>sleep.sh</name>
		<script>true</script>
		<testcase>Sleep for 2 min</testcase>
		<parameters>
			<item>
			    <name>s</name>
				<value>120</value>
			</item>
		</parameters>
	</command>


<!--  Delete user as a part of cleanup -->
	<command>
		<name>deleteUser</name>
		<testcase>Deleting the user</testcase>
		<parameters>
			<item getparam="true">
			    <name>id</name>
				<param>userid</param>
			</item>
		</parameters>
	</command>

</flatnetwork>
