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

<!--  CREATE ALL USERS -->

<!--  Create 3 domains -->
	<command>
		<name>createDomain</name>
		<parameters>
			<item>
			    <name>name</name>
			    <value>0-1</value>
			</item>
		</parameters>
		<returnvalue>
			<item setparam="true">
				<name>id</name>
				<param>level1domain1id</param>
			</item>
		</returnvalue>
	</command>

	<command>
		<name>createDomain</name>
		<parameters>
			<item>
			    <name>name</name>
			    <value>0-2</value>
			</item>
		</parameters>
		<returnvalue>
			<item setparam="true">
				<name>id</name>
				<param>level1domain2id</param>
			</item>
		</returnvalue>
	</command>

	<command>
		<name>createDomain</name>
		<parameters>
			<item>
			    <name>name</name>
			    <value>0-1-1</value>
			</item>
			<item getparam="true">
				<name>parentdomainid</name>
				<param>level1domain1id</param>
			</item>
		</parameters>
		<returnvalue>
			<item setparam="true">
				<name>id</name>
				<param>level2domain1id</param>
			</item>
		</returnvalue>
	</command>

	<command>
		<name>createDomain</name>
		<parameters>
			<item>
			    <name>name</name>
			    <value>0-2-1</value>
			</item>
			<item getparam="true">
				<name>parentdomainid</name>
				<param>level1domain2id</param>
			</item>
		</parameters>
		<returnvalue>
			<item setparam="true">
				<name>id</name>
				<param>level2domain2id</param>
			</item>
		</returnvalue>
	</command>


<!-- Create root admin 1 -->
	<command>
		<name>createUser</name>
		<parameters>
			<item random="true">
			    <name>username</name>
			</item>
			<item>
			    <name>password</name>
				<value>123</value>
			</item>
			<item>
				<name>firstname</name>
				<value>123</value>
			</item>
			<item>
				<name>lastname</name>
				<value>123</value>
			</item>
			<item>
				<name>email</name>
				<value>123@gmail.com</value>
			</item>
			<item>
				<name>accounttype</name>
				<value>1</value>
			</item>
		</parameters>
		<returnvalue>
			<item setparam="true">
				<name>id</name>
				<param>rootadmin1id</param>
			</item>
			<item setparam="true">
				<name>account</name>
				<param>rootadmin1account</param>
			</item>
		</returnvalue>
	</command>

<!-- Create root admin 2 -->
	<command>
		<name>createUser</name>
		<parameters>
			<item random="true">
			    <name>username</name>
			</item>
			<item>
			    <name>password</name>
				<value>123</value>
			</item>
			<item>
				<name>firstname</name>
				<value>123</value>
			</item>
			<item>
				<name>lastname</name>
				<value>123</value>
			</item>
			<item>
				<name>email</name>
				<value>123@gmail.com</value>
			</item>
			<item>
				<name>accounttype</name>
				<value>1</value>
			</item>
		</parameters>
		<returnvalue>
			<item setparam="true">
				<name>id</name>
				<param>rootadmin2id</param>
			</item>
			<item setparam="true">
				<name>account</name>
				<param>rootadmin2account</param>
			</item>
		</returnvalue>
	</command>


<!-- Create domain admin for domain1 in level 1 -->
	<command>
		<name>createUser</name>
		<parameters>
			<item random="true">
			    <name>username</name>
			</item>
			<item>
			    <name>password</name>
				<value>123</value>
			</item>
			<item>
				<name>firstname</name>
				<value>123</value>
			</item>
			<item>
				<name>lastname</name>
				<value>123</value>
			</item>
			<item>
				<name>email</name>
				<value>123@gmail.com</value>
			</item>
			<item>
				<name>accounttype</name>
				<value>2</value>
			</item>
			<item getparam="true">
				<name>domainid</name>
				<param>level1domain1id</param>
			</item>
		</parameters>
		<returnvalue>
			<item setparam="true">
				<name>id</name>
				<param>domain11adminid</param>
			</item>
			<item setparam="true">
				<name>account</name>
				<param>domain11adminaccount</param>
			</item>
		</returnvalue>
	</command>


<!-- Create domain admin for domain2 in level 1 -->
	<command>
		<name>createUser</name>
		<parameters>
			<item random="true">
			    <name>username</name>
			</item>
			<item>
			    <name>password</name>
				<value>123</value>
			</item>
			<item>
				<name>firstname</name>
				<value>123</value>
			</item>
			<item>
				<name>lastname</name>
				<value>123</value>
			</item>
			<item>
				<name>email</name>
				<value>123@gmail.com</value>
			</item>
			<item>
				<name>accounttype</name>
				<value>2</value>
			</item>
			<item getparam="true">
				<name>domainid</name>
				<param>level1domain2id</param>
			</item>
		</parameters>
		<returnvalue>
			<item setparam="true">
				<name>id</name>
				<param>domain12adminid</param>
			</item>
			<item setparam="true">
				<name>account</name>
				<param>domain12adminaccount</param>
			</item>
		</returnvalue>
	</command>

<!-- Create domain admin for domain1 in level 2 -->
	<command>
		<name>createUser</name>
		<parameters>
			<item random="true">
			    <name>username</name>
			</item>
			<item>
			    <name>password</name>
				<value>123</value>
			</item>
			<item>
				<name>firstname</name>
				<value>123</value>
			</item>
			<item>
				<name>lastname</name>
				<value>123</value>
			</item>
			<item>
				<name>email</name>
				<value>123@gmail.com</value>
			</item>
			<item>
				<name>accounttype</name>
				<value>2</value>
			</item>
			<item getparam="true">
				<name>domainid</name>
				<param>level2domain1id</param>
			</item>
		</parameters>
		<returnvalue>
			<item setparam="true">
				<name>id</name>
				<param>domain21adminid</param>
			</item>
			<item setparam="true">
				<name>account</name>
				<param>domain21adminaccount</param>
			</item>
		</returnvalue>
	</command>


</delegatedadmin>
