2012-11-29 36 views
3

我正在使用Common Information Model (CIM)來對基礎架構進行建模。該模型爲不同的IT系統描述了許多類。它是全面的,所以它由一系列層次而不是一個層次組成。例如,要表示物理服務器機箱,請定義一個CIM_Chassis實例。然後,爲了表示將在該硬件上運行的邏輯服務器,您可以定義一個CIM_ComputerSystem實例。然後,您應該將這兩者與CIM_SystemPackaging的一個實例相關聯,注意其中一個由另一個提供。在任何一類中都沒有財產,您可以將其中一個作爲另一個財產。他們是兩個不同的班級,由第三班班級相關。該模型將用XML進行描述,並由CIM的當前XML模式進行驗證。我不明白從XSD的CIM_SystemPackaging,它應該包含什麼內容。如何在xmlCIM中關聯實例?

此XML說明了問題(底盤是CIM_Chassis.xsd別名等):

<chassis:CIM_Chassis> 
    <chassis:CreationClassName>CIM_Chassis</chassis:CreationClassName>  
    <chassis:Manufacturer>Cisco</chassis:Manufacturer> 
    <chassis:Model>Catalyst 6000</chassis:Model> 
    <chassis:Tag>6548431</chassis:Tag> 
</chassis:CIM_Chassis> 

<computer:CIM_ComputerSystem> 
    <computer:CreationClassName>CIM_ComputerSystem</computer:CreationClassName> 
    <computer:Name>Switch1</computer:Name> 
</computer:CIM_ComputerSystem> 

<sp:CIM_SystemPackaging> 
    <sp:Antecedent>?</sp:Antecedent> 
    <sp:Dependent>?</sp:Dependent> 
</sp:CIM_SystemPackaging> 

我應該放哪裏了?是?架構文檔沒有提到這個問題,網絡上似乎沒有XML示例。這不驗證:

​​

在模式,依賴和先行的類型cimReference,它是:

<xs:complexType name="cimReference"> 
    <xs:sequence> 
    <xs:any namespace="##other" maxOccurs="unbounded" processContents="lax"/> 
    </xs:sequence> 
    <xs:anyAttribute namespace="##any" processContents="lax"/> 
</xs:complexType> 

所以這並不能幫助我很多。我想知道是否我的意圖是將實例嵌入到先行程序中:

<sp:CIM_SystemPackaging> 
    <sp:Antecedent> 
    <chassis:CIM_Chassis> 
     ...etc... 
    </chassis:CIM_Chassis> 
    </sp:Antecedent> 
    <sp:Dependent> 
    <computer:CIM_ComputerSystem> 
     ...etc... 
    </computer:CIM_ComputerSystem> 
    </sp:Dependent> 
</sp:CIM_SystemPackaging> 

這驗證了OK,但似乎沒有縮放。由於機箱內部的每個硬件都可能存在一個對象,並且它們都需要與具有類似關聯類的機箱相關聯,所以很快就不可能實現。它似乎也違背了整個關聯模式。有沒有人熟悉CIM來解釋它應該如何工作?

回答

1

我最終發現下面DSP0230

「的XS:任何元件在該定義[CIM:cimReference]表示唯一 標識位置的單傳送基準的結構,以哪些消息可以被引導對於引用的實體,如果運輸引用需要多個元素來唯一標識一個位置,則此結構可以是表示完整傳輸引用的單個元素,也可以是表示元素序列的單個元素。

給出的例子:

<AssociatedComponent xmlns:wsa="http://www.w3.org/2005/08/addressing"> 
    <wsa:Address>. . .</wsa:Address> 
</AssociatedComponent> 

鑑於CIM的目的是爲過度的網絡管理而不是靜態表示,這有點是有道理的,這將是一個參考其他地方,而不是別的東西。我得出結論:我可以放入任何我喜歡的東西,並且需要在我的應用程序邏輯中處理引用。由於大多數對象有一個實例id元素,我將用其作爲參考目標:

<chassis:CIM_Chassis> 
    <chassis:CreationClassName>CIM_Chassis</chassis:CreationClassName>  
    <chassis:InstanceID>uniqueid1</chassis:InstanceID> 
    <chassis:Manufacturer>Cisco</chassis:Manufacturer> 
    <chassis:Model>Catalyst 6000</chassis:Model> 
    <chassis:Tag>6548431</chassis:Tag> 
</chassis:CIM_Chassis> 

<computer:CIM_ComputerSystem> 
    <computer:CreationClassName>CIM_ComputerSystem</computer:CreationClassName> 
    <computer:InstanceID>uniqueid2</computer:InstanceID> 
    <computer:Name>Switch1</computer:Name> 
</computer:CIM_ComputerSystem> 

<sp:CIM_SystemPackaging> 
    <sp:Antecedent> 
    <chassis:InstanceID>unqiueid1</chassis:InstanceID> 
    </sp:Antecedent> 
    <sp:Dependent> 
    <computer:InstanceID>unqiueid2</computer:InstanceID> 
    </sp:Dependent> 
</sp:CIM_SystemPackaging> 
+0

爲了跟上這個,我最終決定CIM對於建模基礎設施來說太複雜了,並且建立了我自己的數據模型。您需要大約10個CIM對象來模擬一臺計算機。 –

0

儘管你對CIM放棄,我覺得我應該回答這個爲他人謀取利益。 (1)在你的問題中,關聯的價值是什麼:你找到了正確的答案,該值是對CIM實例的引用,在DSP0230中定義的XML使用WS-Addressing時,該值就是一個引用。在DSP0004中描述了CIM的一般概念,包括參考文獻。 (2)在將CIM用於IT元素的靜態表示時:CIM(模型)能夠做到這一點。但是,您需要將鍵值分配給表示的CIM實例(就像您一樣)。您基本上可以模擬在從WBEM服務器(如WMI或其他)上檢索CIM實例時在運行時發生的情況。

(3)您可以選擇表示格式。您使用了DSP0230中描述的WS-CIM,它具有XSD取決於型號的屬性。這對你來說可能是好事或壞事,取決於你想做什麼。還有CIM-XML(DSP0201,DSP8044),它具有固定的XML模式(但由於這一點,當然比WS-CIM更臃腫)。 DSP0211中描述的更新的JSON表示僅用於WBEM操作的協議表示,但不支持表示CIM Schema。

(4)如果您想從CIM模式定義中瞭解CIM模型,可能會遇到困難。有一個叫做「管理檔案」的概念。他們確切地定義了CIM Schema中的類如何用於特定管理領域。請參閱management profiles published by DMTF

Andy

+0

剛發現這個 - 謝謝你花時間回答,安迪, –

相關問題