<!--
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.
-->
<flatnetworkstress>
	
	<command>
	<name>createAccount</name>
	<testcase>    [Create the Account and a User for the account]</testcase>
	<parameters>
		<item setparam="true" random="true">
			<name>account</name>
			<param>accountname</param>
		</item>
		<item getparam="true">
			<name>accounttype</name>
			<param>globalaccttype</param>
		</item>
		<item getparam="true">
			<name>domainid</name>
			<param>globaldomainid</param>
		</item>
		<item>
			<name>email</name>
			<value>firstuser@gmail.com</value>
		</item>
		<item>
			<name>firstname</name>
			<value>firstuser</value>
		</item>
		<item>
			<name>lastname</name>
			<value>firstuserlastname</value>
		</item>
		<item random="true" setparam="true">
			<name>username</name>
			<param>getusernameparam1</param>
		</item>
		<item>
			<name>password</name>
			<value>password</value>
		</item>
	</parameters>
	<returnvalue>
		<item setparam="true">
			<name>id</name>
			<param>getaccountid</param>
		</item>
		<item>
			<name>state</name>
			<value>enabled</value>
		</item>
	</returnvalue>
	</command>
	
	<command>
	<name>listUsers</name>
	<testcase>    [List the User of the account]</testcase>
	<parameters>
		<item getparam="true">
			<name>account</name>
			<param>accountname</param>
		</item>
		<item getparam="true">
			<name>accounttype</name>
			<param>globalaccttype</param>
		</item>
		<item getparam="true">
			<name>domainid</name>
			<param>globaldomainid</param>
		</item>
		<item getparam="true">
			<name>username</name>
			<param>getusernameparam1</param>
		</item>
	</parameters>
	<returnvalue>
		<item setparam="true">
			<name>id</name>
			<param>getuserid1</param>
		</item>
		<item>
			<name>state</name>
			<value>enabled</value>
		</item>
	</returnvalue>
	</command>
			
	<command>
		<name>registerUserKeys</name>
		<testcase>Registering the First User</testcase>
		<parameters>
			<item getparam="true">
			    <name>id</name>
				<param>getuserid1</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>createSecurityGroup</name>
		<usercommand>true</usercommand>
		<testcase>Creating First Security group for the Account</testcase>
		<parameters>
			<item setparam="true" random="true">
				<name>name</name>
				<param>getsecuritygroupname1</param>
			</item>
			<item random="true">
				<name>description</name>
			</item>
<!-- 		<item getparam="true">
				<name>account</name>
				<param>accountname</param>
			</item>
			<item getparam="true">
				<name>domainid</name>
				<param>globaldomainid</param>
			</item>
-->		</parameters>
		<returnvalue>
			<item setparam="true">
				<name>id</name>
				<param>getsecuritygroupid1</param>
			</item>
		</returnvalue>
	</command>
	
	<command>
		<name>authorizeSecurityGroupIngress</name>
		<usercommand>true</usercommand>
		<testcase>Authorizing First network group ingress rule for the First Security Group</testcase>
		<parameters>
			<item getparam="true">
				<name>securitygroupid</name>
				<param>getsecuritygroupid1</param>
			</item>
			<item getparam="true">
				<name>cidrlist</name>
				<param>globalcidrlist</param>
			</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 getparam="true">
				<name>domainid</name>
				<param>globaldomainid</param>
			</item>
-->		</parameters>
	</command>
	
	<command>
		<name>listSecurityGroups</name>
		<usercommand>true</usercommand>
		<testcase> List the Security group and get the ingress rule ID </testcase>
		<parameters>
			<item getparam="true">
				<name>securitygroupid</name>
				<param>getsecuritygroupid1</param>
			</item>
<!--		<item getparam="true">
				<name>account</name>
				<param>accountname</param>
			</item>
			<item getparam="true">
				<name>domainid</name>
				<param>globaldomainid</param>
			</item>
-->		</parameters>
		<returnvalue>
			<item setparam="true">
				<name>ruleid</name>
				<param>getingressruleid1</param>
			</item>
		</returnvalue>
	</command>
	
	<command>
		<name>deployVirtualMachine</name>
		<usercommand>true</usercommand>
		<testcase>Deploying VM for the First Account</testcase>
		<parameters>
			<item getparam="true">
				<name>zoneId</name>
				<param>globalzoneid</param>
			</item>
			<item getparam="true">
				<name>hypervisor</name>
				<param>globalhypervisortype</param>
			</item>
			<item getparam="true">
				<name>templateId</name>
				<param>globaltemplateid</param>
			</item>
			<item getparam="true">
				<name>serviceOfferingId</name>
				<param>globalserviceofferingid</param>
			</item>
			<item getparam="true">
				<name>securitygroupids</name>
				<param>getsecuritygroupid1</param>
			</item>
<!-- 		<item getparam="true">
				<name>account</name>
				<param>accountname</param>
			</item>
			<item getparam="true">
				<name>domainid</name>
				<param>globaldomainid</param>
			</item>	
-->			</parameters>
			<returnvalue>
				<item setparam="true">
					<name>id</name>
					<param>getvmid1</param>
				</item>
				<item setparam="true">
					<name>ipaddress</name>
					<param>getvmip1</param>
				</item>		
			</returnvalue>
	</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>getvmip1</param>
			</item>
			<item>
			    <name>p</name>
				<value>password</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>revokeSecurityGroupIngress</name>
		<usercommand>true</usercommand>
		<testcase>Revoking network group igress</testcase>
		<parameters>
			<item getparam="true">
				<name>id</name>
				<param>getingressruleid1</param>
			</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>getvmip1</param>
			</item>
			<item>
			    <name>p</name>
				<value>password</value>
			</item>
		</parameters>
	</command>
-->	

<!-- SECOND GROUP -->
	
	<command>
		<name>createSecurityGroup</name>
		<usercommand>true</usercommand>
		<testcase>Creating a Second Security group for the Account</testcase>
		<parameters>
			<item setparam="true" random="true">
				<name>name</name>
				<param>getsecuritygroupname2</param>
			</item>
			<item random="true">
				<name>description</name>
			</item>
<!-- 		<item getparam="true">
				<name>account</name>
				<param>accountname</param>
			</item>
			<item getparam="true">
				<name>domainid</name>
				<param>globaldomainid</param>
			</item>
-->		</parameters>
		<returnvalue>
			<item setparam="true">
				<name>id</name>
				<param>getsecuritygroupid2</param>
			</item>
		</returnvalue>
	</command>
	
	<command>
		<name>authorizeSecurityGroupIngress</name>
		<usercommand>true</usercommand>
		<testcase>Authorizing network group ingress for the second Security group</testcase>
		<parameters>
			<item getparam="true">
				<name>securitygroupid</name>
				<param>getsecuritygroupid2</param>
			</item>
			<item getparam="true">
				<name>usersecuritygrouplist[0].account</name>
				<param>accountname</param>
			</item>
			<item getparam="true">
				<name>usersecuritygrouplist[0].group</name>
				<param>getsecuritygroupname1</param>
			</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 getparam="true">
				<name>domainid</name>
				<param>globaldomainid</param>
			</item>
-->		</parameters>
	</command>
	
		
	<command>
		<name>authorizeSecurityGroupIngress</name>
		<usercommand>true</usercommand>
		<testcase>Authorizing one more network group ingress rule for the Second Security Group </testcase>
		<parameters>
			<item getparam="true">
				<name>securitygroupid</name>
				<param>getsecuritygroupid2</param>
			</item>
			<item getparam="true">
				<name>cidrlist</name>
				<param>globalcidrlist</param>
			</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 getparam="true">
				<name>domainid</name>
				<param>globaldomainid</param>
			</item>
-->		</parameters>
	</command>
	
	<command>
		<name>listSecurityGroups</name>
		<usercommand>true</usercommand>
		<testcase> List the Security group and get the first ingress rule ID </testcase>
		<parameters>
			<item getparam="true">
				<name>securitygroupid</name>
				<param>getsecuritygroupid2</param>
			</item>
<!--		<item getparam="true">
				<name>account</name>
				<param>accountname</param>
			</item>
			<item getparam="true">
				<name>domainid</name>
				<param>globaldomainid</param>
			</item>
-->		</parameters>
		<returnvalue>
			<item setparam="true">
				<name>ruleid</name>
				<param>getingressruleid2</param>
			</item>
		</returnvalue>
	</command>
	
	<command>
		<name>deployVirtualMachine</name>
		<usercommand>true</usercommand>
		<testcase>Deploying Second VM for the First Account</testcase>
		<parameters>
			<item getparam="true">
				<name>zoneId</name>
				<param>globalzoneid</param>
			</item>
			<item getparam="true">
				<name>hypervisor</name>
				<param>globalhypervisortype</param>
			</item>
			<item getparam="true">
				<name>templateId</name>
				<param>globaltemplateid</param>
			</item>
			<item getparam="true">
				<name>serviceOfferingId</name>
				<param>flatnetworkserviceofferingid</param>
			</item>
			<item getparam="true">
				<name>securitygroupids</name>
				<param>getsecuritygroupid2</param>
			</item>
<!-- 		<item getparam="true">
				<name>account</name>
				<param>accountname</param>
			</item>
			<item getparam="true">
				<name>domainid</name>
				<param>globaldomainid</param>
			</item>	
-->			</parameters>
			<returnvalue>
				<item setparam="true">
					<name>id</name>
					<param>getvmid2</param>
				</item>
				<item setparam="true">
					<name>ipaddress</name>
					<param>getvmip2</param>
				</item>		
			</returnvalue>
	</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>getvmip2</param>
			</item>
			<item>
			    <name>p</name>
				<value>password</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>revokeSecurityGroupIngress</name>
		<usercommand>true</usercommand>
		<testcase>Revoking Second Network group's First ingress rule</testcase>
		<parameters>
			<item getparam="true">
				<name>id</name>
				<param>getingressruleid2</param>
			</item>
		</parameters>
	</command>
	
	<command>
		<name>listSecurityGroups</name>
		<usercommand>true</usercommand>
		<testcase> List the Security group and get the second ingress rule ID </testcase>
		<parameters>
			<item getparam="true">
				<name>securitygroupid</name>
				<param>getsecuritygroupid2</param>
			</item>
<!--		<item getparam="true">
				<name>account</name>
				<param>accountname</param>
			</item>
			<item getparam="true">
				<name>domainid</name>
				<param>globaldomainid</param>
			</item>
-->		</parameters>
		<returnvalue>
			<item setparam="true">
				<name>ruleid</name>
				<param>getingressruleid2</param>
			</item>
		</returnvalue>
	</command>
	
	<command>
		<name>revokeSecurityGroupIngress</name>
		<usercommand>true</usercommand>
		<testcase>Revoking Second network group's second ingress rule</testcase>
		<parameters>
			<item getparam="true">
				<name>id</name>
				<param>getingressruleid2</param>
			</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>getvmip2</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>getvmid1</param>
			</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>destroyVirtualMachine</name>
		<usercommand>true</usercommand>
		<testcase>Destroying virtual machine</testcase>
		<parameters>
			<item getparam="true">
				<name>id</name>
				<param>getvmid2</param>
			</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>
		
	
<!--  Delete user as a part of cleanup -->	
	<command>
		<name>deleteUser</name>
		<testcase>Deleting the user</testcase>
		<parameters>
			<item getparam="true">
			    <name>id</name>
				<param>getuserid1</param>
			</item>
		</parameters>
	</command>	
	
	<command>
	<name>deleteAccount</name>
	<testcase> Delete Account </testcase>
	<parameters>
	<item getparam="true">
		<name>id</name>
		<param>getaccountid</param>
	</item>
	</parameters>
	
</command>	
</flatnetworkstress>
