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 ファイルにより要求が検証され、設定が完了します。