entity-manager unexpected handling of template parameters
James Feist
james.feist at linux.intel.com
Sat Aug 10 04:45:17 AEST 2019
On 8/9/19 11:33 AM, Patrick Venture wrote:
> On Fri, Aug 9, 2019 at 11:22 AM James Feist <james.feist at linux.intel.com> wrote:
>>
>> On 8/9/19 9:53 AM, Patrick Venture wrote:
>>> Given the following:
>>>
>>> busctl introspect --no-pager xyz.openbmc_project.FruDevice
>>> /xyz/openbmc_project/FruDevice/Altie
>>> NAME TYPE SIGNATURE RESULT/VALUE
>>> FLAGS
>>> org.freedesktop.DBus.Introspectable interface - -
>>> -
>>> .Introspect method - s
>>> -
>>> org.freedesktop.DBus.Peer interface - -
>>> -
>>> .GetMachineId method - s
>>> -
>>> .Ping method - -
>>> -
>>> org.freedesktop.DBus.Properties interface - -
>>> -
>>> .Get method ss v
>>> -
>>> .GetAll method s a{sv}
>>> -
>>> .Set method ssv -
>>> -
>>> .PropertiesChanged signal sa{sv}as -
>>> -
>>> xyz.openbmc_project.FruDevice interface - -
>>> -
>>> .ADDRESS property u 82
>>> emits-change
>>> .BOARD_LANGUAGE_CODE property s "25"
>>> emits-change
>>> .BOARD_MANUFACTURER property s "Inventec"
>>> emits-change
>>> .BOARD_MANUFACTURE_DATE property s "Thu Jul 11
>>> 17:09:00 2019" emits-change
>>> .BOARD_PART_NUMBER property s "1051867-01"
>>> emits-change
>>> .BOARD_PRODUCT_NAME property s "Altie"
>>> emits-change
>>> .BOARD_SERIAL_NUMBER property s
>>> "ALTIVT192700026" emits-change
>>> .BUS property u 1
>>> emits-change
>>> .Common_Format_Version property s "1"
>>> emits-change
>>>
>>> I expected entity-manager with this profile to populate dbus properly:
>>> configurations/altie.json
>>> {
>>> "Name" : "Altie",
>>> "Probe" : "xyz.openbmc_project.FruDevice({'BOARD_PRODUCT_NAME': 'Altie'})",
>>> "Type": "Board",
>>> "xyz.openbmc_project.Inventory.Decorator.Asset": {
>>> "Manufacturer": "$BOARD_MANUFACTURER",
>>> "Model": "$BOARD_PRODUCT_NAME",
>>> "PartNumber": "$BOARD_PART_NUMBER",
>>> "SerialNumber": "$BOARD_SERIAL_NUMBER"
>>> }
>>> }
>>>
>>> Instead:
>>> root at semitruck:~# busctl introspect --no-pager
>>> xyz.openbmc_project.EntityManager
>>> /xyz/openbmc_project/inventory/system/board/Altie
>>> NAME TYPE SIGNATURE
>>> RESULT/VALUE FLAGS
>>> org.freedesktop.DBus.Introspectable interface - -
>>> -
>>> .Introspect method - s
>>> -
>>> org.freedesktop.DBus.Peer interface - -
>>> -
>>> .GetMachineId method - s
>>> -
>>> .Ping method - -
>>> -
>>> org.freedesktop.DBus.Properties interface - -
>>> -
>>> .Get method ss v
>>> -
>>> .GetAll method s
>>> a{sv} -
>>> .Set method ssv -
>>> -
>>> .PropertiesChanged signal sa{sv}as -
>>> -
>>> xyz.openbmc_project.AddObject interface - -
>>> -
>>> .AddObject method a{sv} -
>>> -
>>> xyz.openbmc_project.Inventory.Decorator.Asset interface - -
>>> -
>>> .Manufacturer property s
>>> "$BOARD_MANUFACTURER" emits-change
>>> .Model property s
>>> "$BOARD_PRODUCT_NAME" emits-change
>>> .PartNumber property s
>>> "$BOARD_PART_NUMBER" emits-change
>>> .SerialNumber property s
>>> "$BOARD_SERIAL_NUMBER" emits-change
>>> xyz.openbmc_project.Inventory.Item.Board interface - -
>>> -
>>> .Name property s
>>> "Altie" emits-change
>>> .Probe property s
>>> "xyz.openbmc_project.FruDevice({\'BOA... emits-change
>>> .Type property s
>>> "Board" emits-change
>>>
>>> I must be doing something obvious and silly. Please advise.
>>
>> Entity-manager caches the result and only updates if etc/os-release
>> changes. There is a version file in /var/configuration/version, if you
>> delete this it'll rescan fresh. It looks right to me.. so I imagine this
>> is what is happening.
>
> I deleted the /var/configuration/version file and rebooted the BMC.
> it didn't pick it up -- I decided a rescan was too subtle :)
>
> Any other ideas? I've started digging into entity-manager further.
Sorry I don't see anything obvious... it should all be happening in this
function
https://github.com/openbmc/entity-manager/blob/b295e1d8385544f12a436ef63153d373ff8de625/src/EntityManager.cpp#L1130
Specifically it should be making it to here:
https://github.com/openbmc/entity-manager/blob/b295e1d8385544f12a436ef63153d373ff8de625/src/EntityManager.cpp#L1291
foundDevice should be your fru.... and should be populated here:
https://github.com/openbmc/entity-manager/blob/b295e1d8385544f12a436ef63153d373ff8de625/src/EntityManager.cpp#L425
Hope that helps
-James
>
>>
>> -James
>>>
>>> Thanks,
>>> Patrick
>>>
More information about the openbmc
mailing list