CQL és associator filter összefűzése

+3 votes
asked Apr 8, 2014 in IRF tantárgy by klinton (47 points)  

Sziasztok!

A wsman parancs associator opcióval való használatakor meg kell adnom egy filter, ha azt szeretném, hogy egy bizonyos osztály példányait kérdezze le nekem. Viszont az így kapott megoldás rengeteg attribútumot tartalmaz, ezért szeretném még hozzá venni CQL-el, hogy csak 3 attribútumot adjon vissza. A kérdésem az lenne, hogy ez lehetséges-e, illetve ha igen, akkor hogyan? Nagyon sokféle módon próbáltam már bűvölni ezt a filtert, de valahogy nem tudom bele csempészni a SELECT utasítást.

Köszönöm a segítséget!

commented Apr 9, 2014 by micskeiz (2,873 points)  
Ez érdekes kérdés, így elsőre az az érzésem, hogy a kettőt nem lehet kombinálni. De még ránézek.

1 Answer

+2 votes
answered Apr 9, 2014 by micskeiz (2,873 points)  
selected Apr 23, 2014 by klinton
 
Best answer

Ez nem elvárás a HF-ben.

Érdekesnek tűnt, mepróbáltam én is utánanézni.

Az associators lekérdezésnek ez a hivatalos szintaxisa (DSP0227 WS-Management CIM Binding Specification):

<wsen:Enumerate>
  <wsman:Filter 
  Dialect="http://schemas.dmtf.org/wbem/wsman/1/cimbinding/associationFilter">  
    <wsmb:AssociatedInstances>  
      <wsmb:Object> xs:any </wsmb:Object>  
      <wsmb:AssociationClassName> xs:NCName </wsmb:AssociationClassName> ?
      <wsmb:Role> xs:NCName </wsmb:Role> ?
      <wsmb:ResultClassName> xs:NCName </wsmb:ResultClassName> ?
      <wsmb:ResultRole> xs:NCName </wsmb:ResultRole> ?
      <wsmb:IncludeResultProperty> xs:NCName </wsmb:IncludeResultProperty> *
   </wsmb:AssociatedInstances> 
 </wsman:Filter>
</wsen:Enumerate>

Itt az IncludeResultProperty hivatalosan ez:

If the query includes one or more IncludeResultProperty elements, the service shall return each instance representation using the wsman:XmlFragment element. Within the wsman:XmlFragment element, the service shall return property values using the property GEDs defined in the WS-CIM Mapping Specification.

Ez elvileg lehetőséget adna ilyesmire. De, csak elvileg:)

A wsmancli támogatja is, a 2.2.4-es verzióba került bele a lekérdezés lehetősége:

Enhance enumerate with association filter to have the ability to specify the optional elements namely: AssociationClassName, Role, ResultClassName, ResultRole and IncludeResultProperty. (IncludeResultProperty is a list, specify it as a comma separated
list in the “U” option.)

Kipróbáltam egy lekérdezésben egy openwsman kiszolgálóval, és nekem nem volt változás, az összes tulajdonságot visszaadta, nem csak a kértet:

wsman -R -h localhost -u meres -p LaborImage associators 'http://schemas.dmtf.org/wbem/wscim/1/*' --filter 'http://sblim.sf.net/wbem/wscim/1/cim-schema/2/Linux_ComputerSystem?Name="irfserver.(none)",CreationClassName=Linux_ComputerSystem,AssociationClassName=Linux_CSProcessor' -U "Name,Family"

Pedig a kérésbe szépen belekerül ilyenkor az IncludeResultProperty:

<wsen:Enumerate>
  <wsman:Filter Dialect="http://schemas.dmtf.org/wbem/wsman/1/cimbinding/associationFilter">
    <wsmb:AssociatedInstances>
      <wsmb:Object>
        <wsa:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address>
        <wsa:ReferenceParameters>
          <wsman:ResourceURI>http://sblim.sf.net/wbem/wscim/1/cim-schema/2/Linux_ComputerSystem</wsman:ResourceURI>
          <wsman:SelectorSet>
            <wsman:Selector Name="Name">irfserver.(none)</wsman:Selector>
            <wsman:Selector Name="CreationClassName">Linux_ComputerSystem</wsman:Selector>
          </wsman:SelectorSet>
        </wsa:ReferenceParameters>
      </wsmb:Object>
      <wsmb:AssociationClassName>Linux_CSProcessor</wsmb:AssociationClassName>
      <wsmb:IncludeResultProperty>Name</wsmb:IncludeResultProperty>
      <wsmb:IncludeResultProperty>Family</wsmb:IncludeResultProperty>
    </wsmb:AssociatedInstances>
  </wsman:Filter>
</wsen:Enumerate>

Hasonló módon kipróbálva egy távoli Windows esetén ez a lekérdezés:

wsman associators -h 10.6.17.82 -u meres -p LaborImage --auth basic 'http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/*' --filter 'http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_LogicalDisk?DeviceID=C:,AssociationClassName=Win32_LogicalDiskToPartition' -U "DeviceID,Index"

A válasz hibaüzenet:

The data source could not process the filter. The filter might be missing or it might be invalid. Change the filter and try the request again.

Szóval a WinRM legalább szól, hogy nem tudja feldolgozni a kérést. (A Microsoft MS-WSMV specifikációjában csak annyi van, hogy támogatják az Association Queries dialektust.)

...