<!--
 ! Copyright 2009-2013 by The Regents of the University of California
 ! Licensed 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 from
 ! 
 !     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.
 !-->
<cluster-topology>
	<network-switch name="all">
		<network-switch name="rack1">
			<terminal name="10.0.0.1" />
			<terminal name="10.0.0.5" />
			<terminal name="10.0.0.9" />
			<terminal name="10.0.0.13" />
			<terminal name="10.0.0.17" />
		</network-switch>
		<network-switch name="rack2">
			<terminal name="10.0.0.2" />
			<terminal name="10.0.0.6" />
			<terminal name="10.0.0.10" />
			<terminal name="10.0.0.14" />
			<terminal name="10.0.0.18" />
		</network-switch>
		<network-switch name="rack3">
			<terminal name="10.0.0.3" />
			<terminal name="10.0.0.7" />
			<terminal name="10.0.0.11" />
			<terminal name="10.0.0.15" />
			<terminal name="10.0.0.19" />
		</network-switch>
		<network-switch name="rack4">
			<terminal name="10.0.0.4" />
			<terminal name="10.0.0.8" />
			<terminal name="10.0.0.12" />
			<terminal name="10.0.0.16" />
			<terminal name="10.0.0.20" />
		</network-switch>
	</network-switch>
</cluster-topology>