Cisco IMC XML スキーマ定義ファイル

この章は、次の項で構成されています。

Cisco IMC XML スキーマ定義ファイルの概要

C シリーズ XML API には、すべてのモデル用の入力 XML スキーマ定義(xsd)ファイルと出力用のスキーマ定義ファイルが用意されています。

  • RACK-IN.xsd:このドキュメントでは、Cisco IMC XML API で受け入れられる有効な XML 要求の XML ドキュメント構造を定義しています。また、XML API configConfMo(設定)要求に指定できるクラスと属性も指定しています。

  • RACK-OUT.xsd:このドキュメントでは、Cisco IMC XML API で表示できる有効な XML 応答の XML ドキュメント構造を定義しています。また、XML API 応答に含まれていなければならないクラスと属性も指定しています。

これらのファイルは、次の Cisco IMC から入手できます。

RACK-IN.xsd — https://<Cisco IMC-IP>/visore/RACK-IN.xsd

RACK-OUT — https://<Cisco IMC-IP>/visore/RACK-OUT.xsd

また、これらのファイルを Cisco Developer Network(http://developer.cisco.com/web/unifiedcomputing/c-series-cimc-xml-api)からダウンロードすることもできます。

XML ドキュメントを XML スキーマ ファイルに照らし合わせて検証するには、使用可能ないずれかのオープン ソース ツールを使用できます。この項で使用している例では、検証用ツールとして、http://www.xmlsoft.org からダウンロードできる xmllint を使用しています。この検証には、プログラミング言語の XML スキーマ検証機能(たとえば、Java では xerces)を使用することもできます。

RACK-IN.xsd の使用例

RACK-IN.xsd を使用した XML 要求の検証

無効な configResolveClass 要求に対する RACK-IN.xsd の使用例

要求:

$cat myXMLRequest.xml
<configResolveClass cookie="1360626069/7189c2b0-d57b-157b-8002-f4759de53d50" 
inHierarchical="false"/>

要求の検証:

/usr/bin/xmllint –schema  ./RACK-IN.xsd  myXMLRequest.xml
<configResolveClass cookie="1360626069/7189c2b0-d57b-157b-8002-f4759de53d50" 
inHierarchical="false"/>

応答:

myXMLRequest.xml:1: element configResolveClass: 
Schemas validity error : Element 'configResolveClass': The attribute 'classId' is required but missing.
前の例では、要求に「classId」が欠けているため、XML 要求の検証が失敗し、エラーが表示されます。

有効な configResolveClass 要求に対する RACK-IN.xsd の使用例

要求:

$cat myXMLRequest.xml
<configResolveClass cookie="1360626069/7189c2b0-d57b-157b-8002-f4759de53d50" 
inHierarchical="false" classId="topSystem"/>

要求:

/usr/bin/xmllint -schema ./RACK-IN.xsd  myXMLRequest.xml
<configResolveClass cookie="1360626069/7189c2b0-d57b-157b-8002-f4759de53d50" 
inHierarchical="false" classId="topSystem"/>

前の例では、classResolveClass に対する XML 要求の検証が成功し、応答が表示されます。

無効な configConfMo 要求に対する RACK-IN.xsd の使用例

要求:

$cat setRackUnit.xml
<configConfMo cookie="1300242644/ad04d239-d1aa-498d-b074-ccb923066003" 
dn="sys/rack-unit-1" inHierarchical="false">
  <inConfig>
     <computeRackUnit adminPower="down" usrLbl="UCS server For Demo" 
      availableMemory="16384" dn="sys/rack-unit-1"/>
  </inConfig>
</configConfMo>

要求の検証:

/usr/bin/xmllint -schema ./RACK-IN.xsd  /setRackUnit.xml
<configConfMo  cookie="1300242644/ad04d239-d1aa-498d-b074-ccb923066003" 
dn="sys/rack-unit-1"inHierarchical="false">
  <inConfig>
    <computeRackUnit adminPower="down" usrLbl="UCS server For Demo" 
     availableMemory="16384" dn="sys/rack-unit-1"/>
  </inConfig>
</configConfMo>

応答:

/setRackUnit.xml:3: element computeRackUnit: Schemas validity error : 
Element 'computeRackUnit', attribute 'availableMemory': The attribute 'availableMemory' is not allowed.
/setRackUnit.xml fails to validate

availableMemory 属性は、computeRackUnit クラスでは読み取り専用です。configCongMo XML を使用して設定できる computeRackUnit の読み取り/書き込み属性を確認するには、RACK-IN.xsd で computeRackUnit 定義を調べてください。サンプル スニペットを次に示します。

<!--computeRackUnit-->
        <xs:element name="computeRackUnit" type="computeRackUnit" substitutionGroup="managedObject"/>
        <xs:complexType name="computeRackUnit" mixed="true">

            <xs:attribute name="adminPower">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                         <xs:enumeration value="up"/>
                         <xs:enumeration value="down"/>
                         <xs:enumeration value="soft-shut-down"/>
                         <xs:enumeration value="cycle-immediate"/>
                         <xs:enumeration value="hard-reset-immediate"/>
                         <xs:enumeration value="bmc-reset-immediate"/>
                         <xs:enumeration value="bmc-reset-default"/>
                         <xs:enumeration value="cmos-reset-immediate"/>
                         <xs:enumeration value="diagnostic-interrupt"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:attribute>

            <xs:attribute name="usrLbl">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                         <xs:pattern value="[ !#$%&\(\)\*\+,\-\./:;\?@\[\]_\{\|\}~a-zA-Z0-9]{0,64}"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:attribute>

            <xs:attribute name="dn" type="referenceObject"/>
            <xs:attribute name="rn" type="referenceRn"/>
            <xs:attribute name="status" type="objectStatus"/>
        </xs:complexType>

無効な configConfMo 要求に対する RACK-IN.xsd の使用例

要求:

$ cat setBootOrder.xml
<configConfMo cookie="1360205300/79c672f0-d519-1519-8004-30339ee53d50" 
inHierarchical="true" dn="sys/rack-unit-1/boot-policy">
  <inConfig>
    <lsbootDef dn="sys/rack-unit-1/boot-policy"   name="boot-policy"  purpose="operational" rebootOnUpdate="no">
      <lsbootVirtualMedia access="read-only" order="2" type="virtual-media" rn="vm-read-only"/>
      <lsbootVirtualMedia access="read-write" order="3" type="virtual-media" rn="vm-read-write"/>
      <lsbootLan rn="lan-read-only" access="read-only" order="4" prot="pxe" type="lan"/>
      <lsbootStorage rn="storage-read-write" access="read-write" order="1" type="storage">
       <lsbootLocalStorage rn="local-storage"/>
      </lsbootStorage>
      <lsbootEfi rn="efi-read-only" access="read-only" order="5" type="efi"/>
    </lsbootDef>
  </inConfig>
</configConfMo>

要求の検証:

/usr/bin/xmllint -schema ./RACK-IN.xsd ./setBootOrder.xml
<configConfMo cookie="1360205300/79c672f0-d519-1519-8004-30339ee53d50" 
inHierarchical="true" dn="sys/rack-unit-1/boot-policy">
  <inConfig>
    <lsbootDef dn="sys/rack-unit-1/boot-policy" name="boot-policy" purpose="operational" rebootOnUpdate="no">
      <lsbootVirtualMedia access="read-only" order="2" type="virtual-media" rn="vm-read-only"/>
      <lsbootVirtualMedia access="read-write" order="3" type="virtual-media" rn="vm-read-write"/>
      <lsbootLan rn="lan-read-only" access="read-only" order="4" prot="pxe" type="lan"/>
      <lsbootStorage rn="storage-read-write" access="read-write" order="1" type="storage">
        <lsbootLocalStorage rn="local-storage"/>
      </lsbootStorage>
      <lsbootEfi rn="efi-read-only" access="read-only" order="5" type="efi"/>
    </lsbootDef>
  </inConfig>
</configConfMo>

応答:

./setBootOrder.xml:3: element lsbootDef: Schemas validity error : 
Element 'lsbootDef', attribute 'name': The attribute 'name' is not allowed.
./setBootOrder.xml:3: element lsbootDef: Schemas validity error : 
Element 'lsbootDef', attribute 'purpose': The attribute 'purpose' is not allowed.
./setBootOrder.xml fails to validate

lsBootDef クラスの name および purpose 属性は読み取り専用のため、configConMo/set 要求で使用できません。

有効な configConfMo 要求に対する RACK-IN.xsd の使用例

要求:

usr/bin/xmllint -schema ./RACK-IN.xsd  /setRackUnit.xml
<configConfMo  cookie="1300242644/ad04d239-d1aa-498d-b074-ccb923066003" 
 dn="sys/rack-unit-1" inHierarchical="false">
  <inConfig>
    <computeRackUnit adminPower="down" usrLbl="UCS server For Demo" dn="sys/rack-unit-1"/>
</inConfig>
</configConfMo>

xsd ファイルにより要求が検証され、設定が完了します。

RACK-OUT.xsd の使用例

RACK_OUT.xsd を使用した XML 要求の検証

configResolveClass 要求に対する RACK-OUT.xsd の使用例

要求:

<configResolveClass cookie="1360632361/e892fa10-d57c-157c-8003-f4759de53d50" 
inHierarchical="false" classId="computeRackUnit"/>'     
https://172.xx.219.xx/nuova | xmllint -format -  |  xmllint -schema ./RACK-OUT.xsd - 

応答:

<configResolveClass cookie="1360632361/e892fa10-d57c-157c-8003-f4759de53d50" 
response="yes" classId="computeRackUnit">
  <outConfigs>
    <computeRackUnit dn="sys/rack-unit-1" adminPower="policy" availableMemory="16384" model="UCSC-server-name" 
     memorySpeed="1333" name="UCS server_name" numOfAdaptors="1" numOfCores="16" numOfCoresEnabled="16" numOfCpus="2" 
     numOfEthHostIfs="2" numOfFcHostIfs="3" numOfThreads="32" operPower="on" 
     originalUuid="2E5D2295-F32D-48C9-BE8E-BAD36BE174FB" presence="equipped" serverId="1" serial="FCH1551V030" 
     totalMemory="16384" usrLbl="SL2_=+@#$-;,./\" uuid="2E5D2295-F32D-48C9-BE8E-BAD36BE174FB" 
     vendor="Cisco Systems Inc"/>
  </outConfigs>
</configResolveClass>

RACK-OUT.xsd により出力の検証が正常に完了します。

configResolveClass 要求に対する RACK-OUT.xsd の使用例

要求:

$ /usr/bin/curl -k -d'<configResolveClass cookie="1361150931/a5bacff0-d5f5-15f5-8007-f4759de53d50" 
inHierarchical="true" classId="topSystem"/>'  https://172.29.219.74/nuova > Cxxx_complete_MIT.xml
real    0m35.065s
user    0m0.016s
sys     0m0.044s

応答の検証:

$ ls -l Cxxx_complete_MIT.xml
-rw-r--r--. 1 sajaffer eng58 64905 Feb 17 17:46 Cxxx_complete_MIT.xml

$ /usr/bin/xmllint -schema   RACK-OUT.xsd   Cxxx_complete_MIT.xml 1>/dev/null
Cxxx_complete_MIT.xml validates

上記の XML 要求は、C シリーズ サーバの完全な管理情報ツリーを取得し、RACK-OUT.xsd に照らし合わせて応答を検証します。