<?xml version="1.0" encoding="gb2312" ?>
<xs:schema targetNamespace="http://www.h3c.com/netconf/data:1.0"
                  elementFormDefault="qualified"
                  xmlns="http://www.h3c.com/netconf/data:1.0"
                  xmlns:base="http://www.h3c.com/netconf/base:1.0" 
                  xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:import schemaLocation="basetype.xsd" namespace="http://www.h3c.com/netconf/base:1.0"></xs:import>
  <xs:complexType name="DeviceNodeType">
    <xs:all>
      <xs:element name="Chassis" type="base:UnsignedShort" minOccurs="0" nillable="true" />
      <xs:element name="Slot" type="base:UnsignedShort" minOccurs="0" nillable="true" />
      <xs:element name="CPUID" type="base:UnsignedShort" minOccurs="0" nillable="true" />
    </xs:all>
  </xs:complexType>

  <!-- boot-loaderlist current:0 main: 1 backup: 2 -->
  <xs:complexType name="BootListTypeEnum">
    <xs:simpleContent>
      <xs:restriction base="base:UnsignedInteger32">
        <xs:enumeration value="0"></xs:enumeration>
        <xs:enumeration value="1"></xs:enumeration>
        <xs:enumeration value="2"></xs:enumeration>
      </xs:restriction> 
    </xs:simpleContent>
  </xs:complexType>
  
  <xs:complexType name="ExtendLoadTypeEnum">
    <xs:simpleContent>
      <xs:restriction base="base:UnsignedInteger32">
        <xs:enumeration value="1"></xs:enumeration>
        <xs:enumeration value="2"></xs:enumeration>
      </xs:restriction> 
    </xs:simpleContent>
  </xs:complexType>
  
  <!-- issu string 0-63 -->
  <xs:complexType name="IssuStringType0_63">
    <xs:simpleContent >
      <xs:restriction base="base:String">
        <xs:minLength value="0" />
        <xs:maxLength value="63" />
      </xs:restriction> 
    </xs:simpleContent>
  </xs:complexType>
  
  <!-- issu string 0-127 -->
  <xs:complexType name="IssuStringType0_127">
    <xs:simpleContent >
      <xs:restriction base="base:String">
        <xs:minLength value="0" />
        <xs:maxLength value="127" />
      </xs:restriction> 
    </xs:simpleContent>
  </xs:complexType>
  
  <!-- failed reason -->
  <xs:complexType name="FailedReasonType">
    <xs:simpleContent >
      <xs:restriction base="base:String">
        <xs:minLength value="0" />
        <xs:maxLength value="192" />
      </xs:restriction> 
    </xs:simpleContent>
  </xs:complexType>
  
  <!-- issu type 1:none 2:reboot 3:seqenceReboot 4:issuReboot 5:serviceUpgrade 6:fileUpgrade 7:incompatibleUpgrade -->
  <xs:complexType name="UpgradeTypeEnum">
    <xs:simpleContent>
      <xs:restriction base="base:UnsignedInteger32">
        <xs:enumeration value="1"></xs:enumeration>
        <xs:enumeration value="2"></xs:enumeration>
        <xs:enumeration value="3"></xs:enumeration>
        <xs:enumeration value="4"></xs:enumeration>
        <xs:enumeration value="5"></xs:enumeration>
        <xs:enumeration value="6"></xs:enumeration>
        <xs:enumeration value="7"></xs:enumeration>
      </xs:restriction> 
    </xs:simpleContent>
  </xs:complexType>
  
  <!-- issu board status  1:waiting 2:inProcess 3:success 4:failed -->
  <xs:complexType name="DevStatusType">
    <xs:simpleContent>
      <xs:restriction base="base:UnsignedInteger32">
        <xs:enumeration value="1"></xs:enumeration>
        <xs:enumeration value="2"></xs:enumeration>
        <xs:enumeration value="3"></xs:enumeration>
        <xs:enumeration value="4"></xs:enumeration>
      </xs:restriction> 
    </xs:simpleContent>
  </xs:complexType>
  
  <!-- issu status 1:init 2:loading 3:loaded 4:switching 5:switchover 6:commiting 7:committed 8:rollbacking 9:rollbacked-->
  <xs:complexType name="UpgradeStatusType">
    <xs:simpleContent>
      <xs:restriction base="base:UnsignedInteger32">
        <xs:enumeration value="1"></xs:enumeration>
        <xs:enumeration value="2"></xs:enumeration>
        <xs:enumeration value="3"></xs:enumeration>
        <xs:enumeration value="4"></xs:enumeration>
        <xs:enumeration value="5"></xs:enumeration>
        <xs:enumeration value="6"></xs:enumeration>
        <xs:enumeration value="7"></xs:enumeration>
        <xs:enumeration value="8"></xs:enumeration>
        <xs:enumeration value="9"></xs:enumeration>
      </xs:restriction> 
    </xs:simpleContent>
  </xs:complexType>
  
  <!-- ISSU action type as follows:   none: 1 test:2 install:3 rollback: 4  -->
  <xs:complexType name="IssuActionType">
    <xs:simpleContent>
      <xs:restriction base="base:UnsignedInteger32">
        <xs:enumeration value="1"></xs:enumeration>
        <xs:enumeration value="2"></xs:enumeration>
        <xs:enumeration value="3"></xs:enumeration>
        <xs:enumeration value="4"></xs:enumeration>
      </xs:restriction> 
    </xs:simpleContent>
  </xs:complexType>
  
  <!-- imagelist image type bin:0 patch:1 -->
  <xs:complexType name="ImageType">
    <xs:simpleContent>
      <xs:restriction base="base:UnsignedInteger32">
        <xs:enumeration value="0"></xs:enumeration>
        <xs:enumeration value="1"></xs:enumeration>
      </xs:restriction> 
    </xs:simpleContent>
  </xs:complexType>
  
  <!-- imagelist image service boot:1 system:2 feature:3 -->
  <xs:complexType name="ImageService">
    <xs:simpleContent>
      <xs:restriction base="base:UnsignedInteger32">
        <xs:enumeration value="1"></xs:enumeration>
        <xs:enumeration value="2"></xs:enumeration>
        <xs:enumeration value="3"></xs:enumeration>
      </xs:restriction> 
    </xs:simpleContent>
  </xs:complexType>
  
  <xs:complexType name="ImageFileType0_63">
    <xs:all>
      <xs:element name="FileName" type="IssuStringType0_63" minOccurs="0"  nillable="true" />
    </xs:all>
  </xs:complexType>
  
  <!-- Package  -->
  <xs:element name="Package">
    <xs:complexType>
      <xs:choice maxOccurs="unbounded">
      
      <!-- boot-loader list -->
        <xs:element name="BootLoaderList" minOccurs="0">
          <xs:complexType>
            <xs:choice maxOccurs="unbounded">
              <xs:element name="BootList" minOccurs="0" maxOccurs="unbounded">
                <xs:complexType>
                  <xs:all>
                    <xs:element name="DeviceNode" minOccurs="0" type="DeviceNodeType" nillable="true" />
                    <xs:element name="BootType" minOccurs="0" type="BootListTypeEnum" nillable="true" />
                    <xs:element name="ImageFiles" type = "ImageFileType0_63" minOccurs="0" nillable="true" />
                  </xs:all>
                </xs:complexType>
              </xs:element>
            </xs:choice>
            <xs:attributeGroup ref="base:TableAttributeGroup"></xs:attributeGroup>
          </xs:complexType> 
        </xs:element>
        
        <!-- Extend Start up list -->
        <xs:element name="ExtendStartupList" minOccurs="0">
          <xs:complexType>
            <xs:choice maxOccurs="unbounded">
              <xs:element name="ExtendList" minOccurs="0">
                <xs:complexType>
                  <xs:all>
                    <xs:element name="Model" minOccurs="0" type="IssuStringType0_63" nillable="true" />
                    <xs:element name="BootType" minOccurs="0" type="ExtendLoadTypeEnum" nillable="true" />
                    <xs:element name="ImageFiles" type = "ImageFileType0_63" minOccurs="0" nillable="true" />
                  </xs:all>
                </xs:complexType>
              </xs:element>
            </xs:choice>
            <xs:attributeGroup ref="base:TableAttributeGroup"></xs:attributeGroup>
          </xs:complexType> 
        </xs:element>
        
        <!-- issu operation result -->
        <xs:element name="IssuOpResult" minOccurs="0">
          <xs:complexType> 
            <xs:choice maxOccurs="unbounded">
              <xs:element name="OpResult" minOccurs="0">
                <xs:complexType>
                  <xs:all>
                    <xs:element name="DeviceNode" minOccurs="0" type="DeviceNodeType" nillable="true" />
                    <xs:element name="UpgradeType" minOccurs="0" type="UpgradeTypeEnum" nillable="true" />
                    <xs:element name="DevStatus" minOccurs="0" type="DevStatusType" nillable="true" />
                    <xs:element name="UpgradeStatus" minOccurs="0" type="UpgradeStatusType" nillable="true" />
                    <xs:element name="FailedReason" minOccurs="0" type="FailedReasonType" nillable="true" />
                  </xs:all>
                </xs:complexType> 
              </xs:element>
            </xs:choice>
            <xs:attributeGroup ref="base:TableAttributeGroup"></xs:attributeGroup>
          </xs:complexType> 
        </xs:element>
        
        <!-- ISSU mpu  file list -->
        <xs:element name="IssuMPUFileList" minOccurs="0">
          <xs:complexType>
            <xs:all>
              <xs:element name="ImageFiles" type = "ImageFileType0_63" minOccurs="0" nillable="true" />
              <xs:element name="OverwriteLocalFile" type="base:Boolean" minOccurs="0"  nillable="true" />
              <xs:element name="DeleteIPEFile" type="base:Boolean" minOccurs="0" nillable="true" />     
            </xs:all>
            <xs:attributeGroup ref="base:TableAttributeGroup"></xs:attributeGroup>
          </xs:complexType>
        </xs:element>
        
        <!-- ISSU Extend file list -->
        <xs:element name="IssuExtendFileList" minOccurs="0">
           <xs:complexType>
            <xs:choice maxOccurs="unbounded">
              <xs:element name="IssuExtendFile" minOccurs="0"> 
                <xs:complexType>
                  <xs:all>
                    <xs:element name="Model" minOccurs="0" type="IssuStringType0_63" nillable="true" />
                    <xs:element name="ImageFiles" type="ImageFileType0_63" minOccurs="0" nillable="true" />
                  </xs:all>
                </xs:complexType>
              </xs:element>
            </xs:choice>
            <xs:attributeGroup ref="base:TableAttributeGroup"></xs:attributeGroup>
          </xs:complexType>
        </xs:element>
        
        <!-- IssuUpgrade  -->
        <xs:element name="IssuUpgrade" minOccurs="0">
          <xs:complexType>
            <xs:all>
              <xs:element name="Action" minOccurs="0" type="IssuActionType" nillable="true" />
              <xs:element name="Timeout" minOccurs="0" nillable="true">
                <xs:complexType>
                  <xs:simpleContent>
                    <xs:restriction base="base:UnsignedInteger32">
                      <xs:minInclusive value="0" />
                      <xs:maxInclusive value="120" />
                    </xs:restriction> 
                  </xs:simpleContent>
                </xs:complexType>
              </xs:element>
              <xs:element name="Status" minOccurs="0" nillable="true">
                <xs:complexType>
                  <xs:simpleContent>
                    <xs:restriction base="base:UnsignedInteger32">
                      <xs:enumeration value="1"></xs:enumeration>
                      <xs:enumeration value="2"></xs:enumeration>
                      <xs:enumeration value="3"></xs:enumeration>
                      <xs:enumeration value="4"></xs:enumeration>
                      <xs:enumeration value="5"></xs:enumeration>
                      <xs:enumeration value="6"></xs:enumeration>
                    </xs:restriction> 
                  </xs:simpleContent>
                </xs:complexType>
              </xs:element>
              <xs:element name="FailedReason" type="FailedReasonType" minOccurs="0" nillable="true" />
              <xs:element name="Delay" minOccurs="0" nillable="true">
                <xs:complexType>
                  <xs:simpleContent>
                    <xs:restriction base="base:UnsignedInteger32">
                      <xs:minInclusive value="0" />
                      <xs:maxInclusive value="1440" />
                    </xs:restriction> 
                  </xs:simpleContent>
                </xs:complexType>
              </xs:element>
            </xs:all>
            <xs:attributeGroup ref="base:TableAttributeGroup"></xs:attributeGroup>
          </xs:complexType>
        </xs:element>
        
        <!-- IPE information  -->
        <xs:element name="IPEInfo" minOccurs="0">
          <xs:complexType>
            <xs:choice maxOccurs="unbounded">
              <xs:element name="InfoList" minOccurs="0">
                <xs:complexType>
                  <xs:all>
                    <xs:element name="IPEFileName" type="IssuStringType0_127" minOccurs="0" nillable="true" />
                    <xs:element name="FileName" minOccurs="0" type="IssuStringType0_63" nillable="true" />
                    <xs:element name="Model" minOccurs="0" type="IssuStringType0_63" nillable="true" /> 
                    <xs:element name="Type" minOccurs="0" type="ImageType" nillable="true" /> 
                    <xs:element name="Service" minOccurs="0" type="ImageService" nillable="true" />
                    <xs:element name="FilePlatVersion" minOccurs="0" type="IssuStringType0_63" nillable="true" />
                    <xs:element name="FileProductVersion" minOccurs="0" type="IssuStringType0_63" nillable="true" />
                  </xs:all>
                </xs:complexType>
              </xs:element>
            </xs:choice>
            <xs:attributeGroup ref="base:TableAttributeGroup"></xs:attributeGroup>
          </xs:complexType>
        </xs:element>
        
        <!-- imagelists  -->
        <xs:element name="ImageLists" minOccurs="0">
          <xs:complexType>
            <xs:choice maxOccurs="unbounded">
              <xs:element name="ImageList" minOccurs="0">
                <xs:complexType>
                  <xs:all>
                    <xs:element name="FileName" minOccurs="0" type="IssuStringType0_127" nillable="true" />
                    <xs:element name="Model" minOccurs="0" type="IssuStringType0_63" nillable="true" /> 
                    <xs:element name="Type" minOccurs="0" type="ImageType" nillable="true" /> 
                    <xs:element name="Service" minOccurs="0" type="ImageService" nillable="true" />
                    <xs:element name="FilePlatVersion" minOccurs="0" type="IssuStringType0_63" nillable="true" />
                    <xs:element name="FileProductVersion" minOccurs="0" type="IssuStringType0_63" nillable="true" />
                  </xs:all>
                </xs:complexType>
              </xs:element>
            </xs:choice>
            <xs:attributeGroup ref="base:TableAttributeGroup"></xs:attributeGroup>
          </xs:complexType>
        </xs:element>
        
      </xs:choice>
      <xs:attributeGroup ref="base:NodeAttributeGroup"></xs:attributeGroup>
    </xs:complexType>
  </xs:element>
</xs:schema>
