<?xml version="1.0" encoding="UTF-8"?>
<!--  ALTRAN_PROLOG_BEGIN_TAG                                                    -->
<!--  This is an automatically generated prolog.                                  -->
<!--                                                                              -->
<!--  Copyright (C) Altran ACT S.A.S. 2018,2019,2021.  All rights reserved.  -->
<!--                                                                              -->
<!--  ALTRAN_PROLOG_END_TAG                                                      -->
<!--                                                                              -->
<!-- IBM_PROLOG_BEGIN_TAG                                                   -->
<!-- This is an automatically generated prolog.                             -->
<!--                                                                        -->
<!-- 61haes_r714 src/43haes/usr/sbin/cluster/sa/db2/config/db2_config.xsd 1.1 -->
<!--                                                                        -->
<!-- Licensed Materials - Property of IBM                                   -->
<!--                                                                        -->
<!-- COPYRIGHT International Business Machines Corp. 2010                   -->
<!-- All Rights Reserved                                                    -->
<!--                                                                        -->
<!-- US Government Users Restricted Rights - Use, duplication or            -->
<!-- disclosure restricted by GSA ADP Schedule Contract with IBM Corp.      -->
<!--                                                                        -->
<!-- IBM_PROLOG_END_TAG                                                     -->
<!--  @(#)  7d4c34b 43haes/usr/sbin/cluster/sa/db2/config/db2_config.xsd, 726, 2147A_aha726, Feb 05 2021 09:50 PM                                          -->

<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'>

 <xs:element name="smartassistconfig">
  <xs:complexType>
   <xs:sequence>
     <xs:element ref="properties" minOccurs='1' maxOccurs='1' />
   </xs:sequence>
   <xs:attribute name="id" type="xs:string" fixed="DB2"/>
   <xs:attribute name="name" type="xs:string" use="required"/>
 </xs:complexType>
</xs:element>

 <xs:element name="properties">
  <xs:complexType>
   <xs:sequence>
     <xs:element name="DSE_INSTALL_DIR" type='pathType' minOccurs='1' maxOccurs='1'/>
     <xs:element name="INSTANCE_NAME" type='instanceType' minOccurs='1' maxOccurs='1'/>
     <xs:element name="DATABASE_NAME" type='dbType' minOccurs='1' maxOccurs='1'/>
     <xs:element name="PrimaryNode" type='nodeNameType' minOccurs='1' maxOccurs='1'/>
     <xs:element name="TakeoverNodes" type="takeoverNodesType" minOccurs='1' maxOccurs='1'/>
     <xs:element ref="DB2_SERVICE_IPS" minOccurs='1' maxOccurs='1'/>
   </xs:sequence>
  </xs:complexType>
 </xs:element>

 <xs:element name="DB2_SERVICE_IPS">
  <xs:complexType>
   <xs:sequence>
     <xs:element ref="DB2_SERVICE_IP" minOccurs='1' maxOccurs='unbounded'/>
   </xs:sequence>
  </xs:complexType>
 </xs:element>


 <xs:element name="DB2_SERVICE_IP">
  <xs:complexType>
   <xs:sequence>
     <xs:element name="IPAddress_or_name" type="serviceIPType" minOccurs='1' maxOccurs='1' />
     <xs:element name="Service_Network" type="nameType" minOccurs='1' maxOccurs='1' />
     <xs:element name="Prefix_or_Netmask" type="netmaskType" minOccurs='1' maxOccurs='1' />
   </xs:sequence>
  </xs:complexType>
 </xs:element>


<!-- Data types defination -->

  <xs:simpleType name="instanceType">
    <xs:restriction base="xs:string">
      <xs:pattern value="([a-zA-Z])([a-zA-Z0-9]){0,63}"/>
    </xs:restriction>
  </xs:simpleType>
  
  <!-- Allow 127 databases(comma separated) with each
       having a length of no more than 64, starting with an alphabet-->
  <xs:simpleType name="dbType">
    <xs:restriction base="xs:string">
      <xs:pattern value="(([a-zA-Z])([a-zA-Z0-9]){0,63},){0,126}([a-zA-Z])([a-zA-Z0-9]){0,63}"/>
    </xs:restriction>
  </xs:simpleType>



  <xs:simpleType name="nodeNameType">
    <xs:restriction base="xs:string">
      <xs:pattern value="([a-zA-Z])([a-zA-Z0-9]){0,63}"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="takeoverNodesType">
    <xs:restriction base="xs:string">
      <xs:pattern value="(([a-zA-Z])([a-zA-Z0-9]){0,63},){0,31}([a-zA-Z])([a-zA-Z0-9]){0,63}"/>
    </xs:restriction>
  </xs:simpleType>


  <xs:simpleType name="pathType">
    <xs:restriction base="xs:string">
      <xs:pattern value="(([a-zA-Z0-9_./]){1,}){1,}"/>
      <xs:pattern value=""/>
    </xs:restriction>
  </xs:simpleType>


  <xs:simpleType name="serviceIPType">
    <xs:restriction base="xs:string">
      <xs:pattern value="[a-zA-Z0-9_-]{1,31}"/>
      <xs:pattern value="[0-9][0-9]?[0-9]?\.[0-9][0-9]?[0-9]?\.[0-9][0-9]?[0-9]?\.[0-9][0-9]?[0-9]?"/>
      <xs:pattern value="([0-9a-f][0-9a-f][0-9a-f][0-9a-f]:){7}([0-9a-f][0-9a-f][0-9a-f][0-9a-f])"/>
      <xs:pattern value="([0-9a-f][0-9a-f]?[0-9a-f]?[0-9a-f]?:){7}([0-9a-f][0-9a-f]?[0-9a-f]?[0-9a-f]?)"/>
      <xs:pattern value="([0-9a-f][0-9a-f]?[0-9a-f]?[0-9a-f]?:){0,6}([0-9a-f][0-9a-f]?[0-9a-f]?[0-9a-f]?)(::)"/>
      <xs:pattern value="(::)([0-9a-f][0-9a-f]?[0-9a-f]?[0-9a-f]?:){0,6}([0-9a-f][0-9a-f]?[0-9a-f]?[0-9a-f])"/>
      <xs:pattern value="([0-9a-f][0-9a-f]?[0-9a-f]?[0-9a-f]?:)([0-9a-f][0-9a-f]?[0-9a-f]?[0-9a-f]?::)([0-9a-f][0-9a-f]?[0-9a-f]?[0-9a-f]?:){0,4}([0-9a-f][0-9a-f]?[0-9a-f]?[0-9a-f]?)"/>
      <xs:pattern value="([0-9a-f][0-9a-f]?[0-9a-f]?[0-9a-f]?:){2}([0-9a-f][0-9a-f]?[0-9a-f]?[0-9a-f]?::)([0-9a-f][0-9a-f]?[0-9a-f]?[0-9a-f]?:){0,3}([0-9a-f][0-9a-f]?[0-9a-f]?[0-9a-f]?)"/>
      <xs:pattern value="([0-9a-f][0-9a-f]?[0-9a-f]?[0-9a-f]?:){3}([0-9a-f][0-9a-f]?[0-9a-f]?[0-9a-f]?::)([0-9a-f][0-9a-f]?[0-9a-f]?[0-9a-f]?:){0,2}([0-9a-f][0-9a-f]?[0-9a-f]?[0-9a-f]?)"/>
      <xs:pattern value="([0-9a-f][0-9a-f]?[0-9a-f]?[0-9a-f]?:){4}([0-9a-f][0-9a-f]?[0-9a-f]?[0-9a-f]?::)([0-9a-f][0-9a-f]?[0-9a-f]?[0-9a-f]?:){0,1}([0-9a-f][0-9a-f]?[0-9a-f]?[0-9a-f]?)"/>
      <xs:pattern value="([0-9a-f][0-9a-f]?[0-9a-f]?[0-9a-f]?:){5}([0-9a-f][0-9a-f]?[0-9a-f]?[0-9a-f]?::)([0-9a-f][0-9a-f]?[0-9a-f]?[0-9a-f]?)"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="nameType">
    <xs:restriction base="xs:normalizedString">
      <xs:pattern value=""/>
      <xs:pattern value="([a-zA-Z])([a-zA-Z0-9_]){0,63}"/>
      <xs:whiteSpace value="collapse"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="netmaskType">
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:pattern value="[0-9][0-9]?[0-9]?\.[0-9][0-9]?[0-9]?\.[0-9][0-9]?[0-9]?\.[0-9][0-9]?[0-9]?"/>
          <xs:pattern value=""/>
        </xs:restriction>
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="xs:int">
          <xs:minInclusive value="0" />
          <xs:maxInclusive value="126" />
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>

</xs:schema>
