<?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: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>     
