<?xml version="1.0" encoding="ISO-8859-1" ?>

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

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
	xmlns:cl="cluster" targetNamespace="cluster" elementFormDefault="qualified">

	<!-- definition of simple types -->
	<xs:element name="instance_name" type="xs:string" />
	<xs:element name="cluster_name" type="xs:string" />
	<xs:element name="log_dir" type="xs:string" />
	<xs:element name="txn_log_dir" type="xs:string" />
	<xs:element name="id" type="xs:string" />
	<xs:element name="client_ip" type="xs:string" />
	<xs:element name="cluster_ip" type="xs:string" />
	<xs:element name="key" type="xs:string" />
	<xs:element name="value" type="xs:string" />
	<xs:element name="dir" type="xs:string" />
	<xs:element name="NFS" type="xs:boolean" />
	<xs:element name="store" type="xs:string" />
	<xs:element name="iodevices" type="xs:string" />
	<xs:element name="java_home" type="xs:string" />
	<xs:element name="username" type="xs:string" />
	<xs:element name="web_port" type="xs:string" />
	<xs:element name="client_port" type="xs:integer" />
	<xs:element name="cluster_port" type="xs:integer" />
	<xs:element name="http_port" type="xs:integer" />
	<xs:element name="debug_port" type="xs:integer" />
	<xs:element name="metadata_node" type="xs:string" />
	<xs:element name="enabled" type="xs:boolean" />
	<xs:element name="replication_port" type="xs:integer" />
	<xs:element name="replication_factor" type="xs:integer" />
	<xs:element name="auto_failover" type="xs:boolean" />
	<xs:element name="replication_time_out" type="xs:integer" />
    <xs:element name="heartbeat_period" type="xs:integer" />
    <xs:element name="max_heartbeat_lapse_periods" type="xs:integer" />
    <xs:element name="profile_dump_period" type="xs:integer" />
    <xs:element name="default_max_job_attempts" type="xs:integer" />
    <xs:element name="job_history_size" type="xs:integer" />
    <xs:element name="result_time_to_live" type="xs:long" />
    <xs:element name="result_sweep_threshold" type="xs:long" />
    <xs:element name="cc_root" type="xs:string" />

	<!-- definition of complex elements -->
	<xs:element name="working_dir">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="cl:dir" />
				<xs:element ref="cl:NFS" />
			</xs:sequence>
		</xs:complexType>
	</xs:element>

	<xs:element name="master_node">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="cl:id" />
				<xs:element ref="cl:client_ip" />
				<xs:element ref="cl:cluster_ip" />
				<xs:element ref="cl:java_home" minOccurs="0" />
				<xs:element ref="cl:log_dir" minOccurs="0" />
				<xs:element ref="cl:client_port" />
				<xs:element ref="cl:cluster_port" />
				<xs:element ref="cl:http_port" />
				<xs:element ref="cl:debug_port" minOccurs="0" />
			</xs:sequence>
		</xs:complexType>
	</xs:element>

	<xs:element name="data_replication">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="cl:enabled" />
				<xs:element ref="cl:replication_port" />
				<xs:element ref="cl:replication_factor" />
				<xs:element ref="cl:auto_failover" />
				<xs:element ref="cl:replication_time_out" />
			</xs:sequence>
		</xs:complexType>
	</xs:element>

	<xs:element name="property">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="cl:key" />
				<xs:element ref="cl:value" />
			</xs:sequence>
		</xs:complexType>
	</xs:element>

	<xs:element name="env">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="cl:property" minOccurs="0" maxOccurs="unbounded" />
			</xs:sequence>
		</xs:complexType>
	</xs:element>

	<xs:element name="node">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="cl:id" />
				<xs:element ref="cl:cluster_ip" />
				<xs:element ref="cl:java_home" minOccurs="0" />
				<xs:element ref="cl:log_dir" minOccurs="0" />
				<xs:element ref="cl:txn_log_dir" minOccurs="0" />
				<xs:element ref="cl:iodevices" minOccurs="0" />
				<xs:element ref="cl:debug_port" minOccurs="0" />
				<xs:element ref="cl:replication_port" minOccurs="0" />
			</xs:sequence>
		</xs:complexType>
	</xs:element>

	<xs:element name="substitute_nodes">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="cl:node" maxOccurs="unbounded" />
			</xs:sequence>
		</xs:complexType>
	</xs:element>

	<xs:element name="cluster">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="cl:instance_name" />
				<xs:element ref="cl:cluster_name" />
				<xs:element ref="cl:username" />
				<xs:element ref="cl:env" minOccurs="0" />
				<xs:element ref="cl:java_home" minOccurs="0" />
				<xs:element ref="cl:log_dir" minOccurs="0" />
				<xs:element ref="cl:txn_log_dir" minOccurs="0" />
				<xs:element ref="cl:store" minOccurs="0" />
				<xs:element ref="cl:iodevices" minOccurs="0" />
				<xs:element ref="cl:working_dir" />
				<xs:element ref="cl:metadata_node" />
				<xs:element ref="cl:data_replication" minOccurs="0" />
				<xs:element ref="cl:master_node" />
				<xs:element ref="cl:node" maxOccurs="unbounded" />
				<xs:element ref="cl:substitute_nodes" />
                <xs:element ref="cl:heartbeat_period" minOccurs="0" />
                <xs:element ref="cl:max_heartbeat_lapse_periods" minOccurs="0" />
                <xs:element ref="cl:profile_dump_period" minOccurs="0" />
                <xs:element ref="cl:default_max_job_attempts" minOccurs="0" />
                <xs:element ref="cl:job_history_size" minOccurs="0" />
                <xs:element ref="cl:result_time_to_live" minOccurs="0" />
                <xs:element ref="cl:result_sweep_threshold" minOccurs="0" />
                <xs:element ref="cl:cc_root" minOccurs="0" />
			</xs:sequence>
		</xs:complexType>
	</xs:element>

</xs:schema>     
