Menu

#1565 Property filters for interop and interopserver providers

pending-fixed
sfcb (1090)
5
2013-01-31
2009-04-16
No

I was teached following XML are valid empty array in mailing list.
I issue GetInstance with following PropertyList, I expect responces do not have any properties which is described in DSP0200.

a) Empty array 1
<IPARAMVALUE NAME="PropertyList">
<VALUE.ARRAY>
<VALUE/>
</VALUE.ARRAY>
</IPARAMVALUE>

b) Empty array 2
<IPARAMVALUE NAME="PropertyList">
<VALUE.ARRAY/>
</IPARAMVALUE>

About a), responce is filtered correctly.
But, b)'s responce has all properties that are not filtered, it is not comply DSP0200.

My proposal fix; in the case of b), Bison parser build same result object as a).

Discussion

  • Shigeyoshi Hashi

    It is a little bit complicated, because instances are handled by some providers.
    I verified following three providers;
    (1) InternalProvider
    I checked with CIM_RegisteredProfile Instance (InstanceId=CIM:SFCB_PR) which already exists.
    (2) InteropProvider
    I create CIM_IndicationFilter instance by using CIM-XML which is described in DSP0200 Appendix B.12. Subscription Example.
    (3) InteropServerProvider
    I used CIM_NameSpace Instance (Name=root/interop) which already exists.

    CIM-XML;
    (1) InternalProvider: Request
    <?xml version="1.0" encoding="utf-8"?>
    <CIM CIMVERSION="2.0" DTDVERSION="2.0">
    <MESSAGE ID="5328" PROTOCOLVERSION="1.0">
    <SIMPLEREQ>
    <IMETHODCALL NAME="GetInstance">
    <LOCALNAMESPACEPATH>
    <NAMESPACE NAME="root"/>
    <NAMESPACE NAME="interop"/>
    </LOCALNAMESPACEPATH>
    <IPARAMVALUE NAME="InstanceName">
    <INSTANCENAME CLASSNAME="CIM_RegisteredProfile">
    <KEYBINDING NAME="instanceid">
    <KEYVALUE>CIM:SFCB_PR</KEYVALUE>
    </KEYBINDING>
    </INSTANCENAME>
    </IPARAMVALUE>
    <IPARAMVALUE NAME="PropertyList">
    <VALUE.ARRAY/>
    </IPARAMVALUE>
    </IMETHODCALL>
    </SIMPLEREQ>
    </MESSAGE>
    </CIM>

    (1) InternalProvider: Response
    <?xml version="1.0" encoding="utf-8"?>
    <CIM CIMVERSION="2.0" DTDVERSION="2.0">
    <MESSAGE ID="5328" PROTOCOLVERSION="1.0">
    <SIMPLERSP>
    <IMETHODRESPONSE NAME="GetInstance">
    <IRETURNVALUE>
    <INSTANCE CLASSNAME="cim_registeredprofile">
    <PROPERTY.ARRAY NAME="AdvertiseTypeDescriptions" TYPE="string">
    </PROPERTY.ARRAY>
    <PROPERTY.ARRAY NAME="AdvertiseTypes" TYPE="uint16">
    <VALUE.ARRAY>
    <VALUE>3</VALUE>
    </VALUE.ARRAY>
    </PROPERTY.ARRAY>
    <PROPERTY NAME="RegisteredVersion" TYPE="string">
    <VALUE>1.0.0</VALUE>
    </PROPERTY>
    <PROPERTY NAME="RegisteredName" TYPE="string">
    <VALUE>Profile Registration</VALUE>
    </PROPERTY>
    <PROPERTY NAME="OtherRegisteredOrganization" TYPE="string">
    </PROPERTY>
    <PROPERTY NAME="RegisteredOrganization" TYPE="uint16">
    <VALUE>2</VALUE>
    </PROPERTY>
    <PROPERTY NAME="InstanceID" TYPE="string">
    <VALUE>CIM:SFCB_PR</VALUE>
    </PROPERTY>
    <PROPERTY NAME="Caption" TYPE="string">
    </PROPERTY>
    <PROPERTY NAME="Description" TYPE="string">
    </PROPERTY>
    <PROPERTY NAME="ElementName" TYPE="string">
    </PROPERTY>
    </INSTANCE>
    </IRETURNVALUE>
    </IMETHODRESPONSE>
    </SIMPLERSP>
    </MESSAGE>
    </CIM>

    (2) InteropProvider: Create Instance
    <?xml version="1.0" encoding="utf-8"?>
    <CIM CIMVERSION="2.0" DTDVERSION="2.0">
    <MESSAGE ID="5227" PROTOCOLVERSION="1.0">
    <SIMPLEREQ>
    <IMETHODCALL NAME="CreateInstance">
    <LOCALNAMESPACEPATH>
    <NAMESPACE NAME="root"/>
    <NAMESPACE NAME="interop"/>
    </LOCALNAMESPACEPATH>
    <IPARAMVALUE NAME="NewInstance">
    <INSTANCE CLASSNAME="CIM_IndicationFilter">
    <PROPERTY NAME="CreationClassName" TYPE="string">
    <VALUE>CIM_IndicationFilter</VALUE>
    </PROPERTY>
    <PROPERTY NAME="Name" TYPE="string">
    <VALUE>ACMESubscription12345</VALUE>
    </PROPERTY>
    <PROPERTY NAME="SystemCreationClassName" TYPE="string">
    <VALUE>CIM_UnitaryComputerSystem</VALUE>
    </PROPERTY>
    <PROPERTY NAME="SystemName" TYPE="string">
    <VALUE>server001.acme.com</VALUE>
    </PROPERTY>
    <PROPERTY NAME="Query" TYPE="string">
    <VALUE>SELECT Description, AlertType, PerceivedSeverity, ProbableCause, IndicationTime FROM CIM_AlertIndication WHERE PerceivedSeverity = 3</VALUE>
    </PROPERTY>
    <PROPERTY NAME="QueryLanguage" TYPE="string">
    <VALUE>WQL</VALUE>
    </PROPERTY>
    <PROPERTY NAME="SourceNamespace" TYPE="string">
    <VALUE>root/interop</VALUE>
    </PROPERTY>
    </INSTANCE>
    </IPARAMVALUE>
    </IMETHODCALL>
    </SIMPLEREQ>
    </MESSAGE>
    </CIM>

    (2) InteropProvider: Request
    <?xml version="1.0" encoding="utf-8"?>
    <CIM CIMVERSION="2.0" DTDVERSION="2.0">
    <MESSAGE ID="5315" PROTOCOLVERSION="1.0">
    <SIMPLEREQ>
    <IMETHODCALL NAME="GetInstance">
    <LOCALNAMESPACEPATH>
    <NAMESPACE NAME="root"/>
    <NAMESPACE NAME="interop"/>
    </LOCALNAMESPACEPATH>
    <IPARAMVALUE NAME="InstanceName">
    <INSTANCENAME CLASSNAME="CIM_IndicationFilter">
    <KEYBINDING NAME="creationclassname">
    <KEYVALUE>CIM_IndicationFilter</KEYVALUE>
    </KEYBINDING>
    <KEYBINDING NAME="name">
    <KEYVALUE>ACMESubscription12345</KEYVALUE>
    </KEYBINDING>
    <KEYBINDING NAME="systemcreationclassname">
    <KEYVALUE>CIM_UnitaryComputerSystem</KEYVALUE>
    </KEYBINDING>
    <KEYBINDING NAME="systemname">
    <KEYVALUE>server001.acme.com</KEYVALUE>
    </KEYBINDING>
    </INSTANCENAME>
    </IPARAMVALUE>
    <IPARAMVALUE NAME="PropertyList">
    <VALUE.ARRAY/>
    </IPARAMVALUE>
    </IMETHODCALL>
    </SIMPLEREQ>
    </MESSAGE>
    </CIM>

    (2) InteropProvider: Response
    <?xml version="1.0" encoding="utf-8"?>
    <CIM CIMVERSION="2.0" DTDVERSION="2.0">
    <MESSAGE ID="5315" PROTOCOLVERSION="1.0">
    <SIMPLERSP>
    <IMETHODRESPONSE NAME="GetInstance">
    <IRETURNVALUE>
    <INSTANCE CLASSNAME="CIM_IndicationFilter">
    <PROPERTY NAME="QueryLanguage" TYPE="string">
    <VALUE>WQL</VALUE>
    </PROPERTY>
    <PROPERTY NAME="Query" TYPE="string">
    <VALUE>SELECT Description, AlertType, PerceivedSeverity, ProbableCause, IndicationTime FROM CIM_AlertIndication WHERE PerceivedSeverity = 3</VALUE>
    </PROPERTY>
    <PROPERTY NAME="SourceNamespace" TYPE="string">
    <VALUE>root/interop</VALUE>
    </PROPERTY>
    <PROPERTY NAME="Name" TYPE="string">
    <VALUE>ACMESubscription12345</VALUE>
    </PROPERTY>
    <PROPERTY NAME="CreationClassName" TYPE="string">
    <VALUE>CIM_IndicationFilter</VALUE>
    </PROPERTY>
    <PROPERTY NAME="SystemName" TYPE="string">
    <VALUE>server001.acme.com</VALUE>
    </PROPERTY>
    <PROPERTY NAME="SystemCreationClassName" TYPE="string">
    <VALUE>CIM_UnitaryComputerSystem</VALUE>
    </PROPERTY>
    <PROPERTY NAME="Caption" TYPE="string">
    </PROPERTY>
    <PROPERTY NAME="Description" TYPE="string">
    </PROPERTY>
    <PROPERTY NAME="ElementName" TYPE="string">
    </PROPERTY>
    </INSTANCE>
    </IRETURNVALUE>
    </IMETHODRESPONSE>
    </SIMPLERSP>
    </MESSAGE>
    </CIM>

    (3) InteropServerProvider: Request
    <?xml version="1.0" encoding="utf-8"?>
    <CIM CIMVERSION="2.0" DTDVERSION="2.0">
    <MESSAGE ID="4959" PROTOCOLVERSION="1.0">
    <SIMPLEREQ>
    <IMETHODCALL NAME="GetInstance">
    <LOCALNAMESPACEPATH>
    <NAMESPACE NAME="root"/>
    <NAMESPACE NAME="interop"/>
    </LOCALNAMESPACEPATH>
    <IPARAMVALUE NAME="InstanceName">
    <INSTANCENAME CLASSNAME="CIM_Namespace">
    <KEYBINDING NAME="Name">
    <KEYVALUE>root/interop</KEYVALUE>
    </KEYBINDING>
    </INSTANCENAME>
    </IPARAMVALUE>
    <IPARAMVALUE NAME="PropertyList">
    <VALUE.ARRAY/>
    </IPARAMVALUE>
    </IMETHODCALL>
    </SIMPLEREQ>
    </MESSAGE>
    </CIM>

    (3) InteropServerProvider: Response
    <?xml version="1.0" encoding="utf-8"?>
    <CIM CIMVERSION="2.0" DTDVERSION="2.0">
    <MESSAGE ID="4959" PROTOCOLVERSION="1.0">
    <SIMPLERSP>
    <IMETHODRESPONSE NAME="GetInstance">
    <IRETURNVALUE>
    <INSTANCE CLASSNAME="CIM_Namespace">
    <PROPERTY NAME="DescriptionOfClassType" TYPE="string">
    </PROPERTY>
    <PROPERTY NAME="ClassTypeVersion" TYPE="string">
    </PROPERTY>
    <PROPERTY NAME="ClassType" TYPE="uint16">
    </PROPERTY>
    <PROPERTY NAME="DescriptionOfClassInfo" TYPE="string">
    </PROPERTY>
    <PROPERTY NAME="ClassInfo" TYPE="uint16">
    <VALUE>0</VALUE>
    </PROPERTY>
    <PROPERTY NAME="Name" TYPE="string">
    <VALUE>root/interop</VALUE>
    </PROPERTY>
    <PROPERTY NAME="CreationClassName" TYPE="string">
    <VALUE>CIM_Namespace</VALUE>
    </PROPERTY>
    <PROPERTY NAME="ObjectManagerName" TYPE="string">
    <VALUE>sfcb:NO-UUID-FILE-ubuntu-vm</VALUE>
    </PROPERTY>
    <PROPERTY NAME="ObjectManagerCreationClassName" TYPE="string">
    <VALUE>CIM_ObjectManager</VALUE>
    </PROPERTY>
    <PROPERTY NAME="SystemName" TYPE="string">
    <VALUE>ubuntu-vm</VALUE>
    </PROPERTY>
    <PROPERTY NAME="SystemCreationClassName" TYPE="string">
    <VALUE>CIM_ComputerSystem</VALUE>
    </PROPERTY>
    <PROPERTY NAME="Caption" TYPE="string">
    </PROPERTY>
    <PROPERTY NAME="Description" TYPE="string">
    </PROPERTY>
    <PROPERTY NAME="ElementName" TYPE="string">
    </PROPERTY>
    </INSTANCE>
    </IRETURNVALUE>
    </IMETHODRESPONSE>
    </SIMPLERSP>
    </MESSAGE>
    </CIM>

     
  • Shigeyoshi Hashi

    I would like to update patch, because I propose more fixes for InteropProvider and InteropServerProvider.

    About InteropProvider;
    InteropProvider calls getInstance() in brokerUpc.c. In this function, the empty array PropertyList is treated PropertyList=NULL, and it is not generate empty MsgSegment.
    My proposal is that it generates empty MsgSegment for empty array PropertyList.

    About InteropServerProvider;
    There is no PropertyList filter setting in the InteropServerProvider.
    I added SetPropertyFilter() function in GetInstance and EnumerateInstances.

     
  • Shigeyoshi Hashi

    Updated proposed fix

     
  • Shigeyoshi Hashi

    I would like to make more update as follows;
    (a) Add proposed fix for EnumerateInstances method of the InteropProvier.
    (b) Correct proposed fix for EnumerateInstances method of the InteropServerProvier.

     
  • Shigeyoshi Hashi

    4th proposed fix

     
  • Michael Chase-Salerno

    Moving to RTC product backlog.

     
  • Michael Chase-Salerno

    • status: open --> closed-later
     
  • Michael Chase-Salerno

    • summary: Treating of empty array does not comply DSP0200 --> Property filters for interop and interopserver providers
     
  • Michael Chase-Salerno

    It's correct that "Empty Array 1" in the examples does not properly filter properties for Interop and InteropServer providers. This feature isn't in those 2 providers.

    The "Empty Array 2" example is actually not a correct empty array. In DSP0200 in the VALUE.ARRAY section it states:
    "If the value of an array entry is NULL, the VALUE.NULL subelement must be used to represent the array
    entry. Otherwise, the VALUE subelement must be used."
    So the VALUE or VALUE.NULL subelements must be provided for an empty array.

    So this bug will be used to add the property filter support to the providers.

    So this bug

     
  • Michael Chase-Salerno

    • status: closed-later --> pending-fixed
     
  • Michael Chase-Salerno

    pushed to git master

     

Log in to post a comment.