All of lore.kernel.org
 help / color / mirror / Atom feed
* entity-manager unexpected handling of template parameters
@ 2019-08-09 16:53 Patrick Venture
  2019-08-09 18:22 ` James Feist
  0 siblings, 1 reply; 11+ messages in thread
From: Patrick Venture @ 2019-08-09 16:53 UTC (permalink / raw)
  To: James Feist; +Cc: OpenBMC Maillist

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@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.

Thanks,
Patrick

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: entity-manager unexpected handling of template parameters
  2019-08-09 16:53 entity-manager unexpected handling of template parameters Patrick Venture
@ 2019-08-09 18:22 ` James Feist
  2019-08-09 18:33   ` Patrick Venture
  0 siblings, 1 reply; 11+ messages in thread
From: James Feist @ 2019-08-09 18:22 UTC (permalink / raw)
  To: Patrick Venture; +Cc: OpenBMC Maillist

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@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.

-James
> 
> Thanks,
> Patrick
> 

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: entity-manager unexpected handling of template parameters
  2019-08-09 18:22 ` James Feist
@ 2019-08-09 18:33   ` Patrick Venture
  2019-08-09 18:45     ` James Feist
  0 siblings, 1 reply; 11+ messages in thread
From: Patrick Venture @ 2019-08-09 18:33 UTC (permalink / raw)
  To: James Feist; +Cc: OpenBMC Maillist

On Fri, Aug 9, 2019 at 11:22 AM James Feist <james.feist@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@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.

>
> -James
> >
> > Thanks,
> > Patrick
> >

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: entity-manager unexpected handling of template parameters
  2019-08-09 18:33   ` Patrick Venture
@ 2019-08-09 18:45     ` James Feist
  2019-08-09 18:50       ` Patrick Venture
  0 siblings, 1 reply; 11+ messages in thread
From: James Feist @ 2019-08-09 18:45 UTC (permalink / raw)
  To: openbmc

On 8/9/19 11:33 AM, Patrick Venture wrote:
> On Fri, Aug 9, 2019 at 11:22 AM James Feist <james.feist@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@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
>>>

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: entity-manager unexpected handling of template parameters
  2019-08-09 18:45     ` James Feist
@ 2019-08-09 18:50       ` Patrick Venture
  2019-08-09 18:57         ` Patrick Venture
  0 siblings, 1 reply; 11+ messages in thread
From: Patrick Venture @ 2019-08-09 18:50 UTC (permalink / raw)
  To: James Feist; +Cc: OpenBMC Maillist

On Fri, Aug 9, 2019 at 11:45 AM James Feist <james.feist@linux.intel.com> wrote:
>
> On 8/9/19 11:33 AM, Patrick Venture wrote:
> > On Fri, Aug 9, 2019 at 11:22 AM James Feist <james.feist@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@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

Thanks, that's where I'm now looking --

>
> foundDevice should be your fru.... and should be populated here:
>
> https://github.com/openbmc/entity-manager/blob/b295e1d8385544f12a436ef63153d373ff8de625/src/EntityManager.cpp#L425

I did not think to look here, thanks!

>
> Hope that helps
>
> -James
>
>
>
> >
> >>
> >> -James
> >>>
> >>> Thanks,
> >>> Patrick
> >>>

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: entity-manager unexpected handling of template parameters
  2019-08-09 18:50       ` Patrick Venture
@ 2019-08-09 18:57         ` Patrick Venture
  2019-08-09 19:20           ` Patrick Venture
  0 siblings, 1 reply; 11+ messages in thread
From: Patrick Venture @ 2019-08-09 18:57 UTC (permalink / raw)
  To: James Feist; +Cc: OpenBMC Maillist

On Fri, Aug 9, 2019 at 11:50 AM Patrick Venture <venture@google.com> wrote:
>
> On Fri, Aug 9, 2019 at 11:45 AM James Feist <james.feist@linux.intel.com> wrote:
> >
> > On 8/9/19 11:33 AM, Patrick Venture wrote:
> > > On Fri, Aug 9, 2019 at 11:22 AM James Feist <james.feist@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@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
>
> Thanks, that's where I'm now looking --

I deleted everything from /var/configuration/ rebooted, and added some
debug to dig into the specific template replacement:

Aug 09 18:51:47 semitruck entity-manager[2700]: strPtr value:
'$BOARD_MANUFACTURER'
Aug 09 18:51:47 semitruck entity-manager[2700]: templateName:
$BOARD_MANUFACTURER, find: true
Aug 09 18:51:47 semitruck entity-manager[2700]: keyPair.value(): "Inventec"

Aug 09 18:51:47 semitruck entity-manager[2700]: strPtr value:
'$BOARD_PRODUCT_NAME'
Aug 09 18:51:47 semitruck entity-manager[2700]: templateName:
$BOARD_PRODUCT_NAME, find: true
Aug 09 18:51:47 semitruck entity-manager[2700]: keyPair.value(): "Altie"



>
> >
> > foundDevice should be your fru.... and should be populated here:
> >
> > https://github.com/openbmc/entity-manager/blob/b295e1d8385544f12a436ef63153d373ff8de625/src/EntityManager.cpp#L425
>
> I did not think to look here, thanks!
>
> >
> > Hope that helps
> >
> > -James
> >
> >
> >
> > >
> > >>
> > >> -James
> > >>>
> > >>> Thanks,
> > >>> Patrick
> > >>>

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: entity-manager unexpected handling of template parameters
  2019-08-09 18:57         ` Patrick Venture
@ 2019-08-09 19:20           ` Patrick Venture
  2019-08-09 19:24             ` Patrick Venture
  0 siblings, 1 reply; 11+ messages in thread
From: Patrick Venture @ 2019-08-09 19:20 UTC (permalink / raw)
  To: James Feist; +Cc: OpenBMC Maillist

On Fri, Aug 9, 2019 at 11:57 AM Patrick Venture <venture@google.com> wrote:
>
> On Fri, Aug 9, 2019 at 11:50 AM Patrick Venture <venture@google.com> wrote:
> >
> > On Fri, Aug 9, 2019 at 11:45 AM James Feist <james.feist@linux.intel.com> wrote:
> > >
> > > On 8/9/19 11:33 AM, Patrick Venture wrote:
> > > > On Fri, Aug 9, 2019 at 11:22 AM James Feist <james.feist@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@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
> >
> > Thanks, that's where I'm now looking --
>
> I deleted everything from /var/configuration/ rebooted, and added some
> debug to dig into the specific template replacement:
>
> Aug 09 18:51:47 semitruck entity-manager[2700]: strPtr value:
> '$BOARD_MANUFACTURER'
> Aug 09 18:51:47 semitruck entity-manager[2700]: templateName:
> $BOARD_MANUFACTURER, find: true
> Aug 09 18:51:47 semitruck entity-manager[2700]: keyPair.value(): "Inventec"
>
> Aug 09 18:51:47 semitruck entity-manager[2700]: strPtr value:
> '$BOARD_PRODUCT_NAME'
> Aug 09 18:51:47 semitruck entity-manager[2700]: templateName:
> $BOARD_PRODUCT_NAME, find: true
> Aug 09 18:51:47 semitruck entity-manager[2700]: keyPair.value(): "Altie"

So the visitor is finding and applying the value to the template, but
that change isn't propagating up.  It works for the card that's found
afterwards...  The only real difference is, the other profile also
Exposes, whereas this one doesn't.  Is there a step that's skipped if
there isn't an "Exposes" key?

>
>
>
> >
> > >
> > > foundDevice should be your fru.... and should be populated here:
> > >
> > > https://github.com/openbmc/entity-manager/blob/b295e1d8385544f12a436ef63153d373ff8de625/src/EntityManager.cpp#L425
> >
> > I did not think to look here, thanks!
> >
> > >
> > > Hope that helps
> > >
> > > -James
> > >
> > >
> > >
> > > >
> > > >>
> > > >> -James
> > > >>>
> > > >>> Thanks,
> > > >>> Patrick
> > > >>>

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: entity-manager unexpected handling of template parameters
  2019-08-09 19:20           ` Patrick Venture
@ 2019-08-09 19:24             ` Patrick Venture
  2019-08-09 19:30               ` Patrick Venture
  0 siblings, 1 reply; 11+ messages in thread
From: Patrick Venture @ 2019-08-09 19:24 UTC (permalink / raw)
  To: James Feist; +Cc: OpenBMC Maillist

On Fri, Aug 9, 2019 at 12:20 PM Patrick Venture <venture@google.com> wrote:
>
> On Fri, Aug 9, 2019 at 11:57 AM Patrick Venture <venture@google.com> wrote:
> >
> > On Fri, Aug 9, 2019 at 11:50 AM Patrick Venture <venture@google.com> wrote:
> > >
> > > On Fri, Aug 9, 2019 at 11:45 AM James Feist <james.feist@linux.intel.com> wrote:
> > > >
> > > > On 8/9/19 11:33 AM, Patrick Venture wrote:
> > > > > On Fri, Aug 9, 2019 at 11:22 AM James Feist <james.feist@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@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
> > >
> > > Thanks, that's where I'm now looking --
> >
> > I deleted everything from /var/configuration/ rebooted, and added some
> > debug to dig into the specific template replacement:
> >
> > Aug 09 18:51:47 semitruck entity-manager[2700]: strPtr value:
> > '$BOARD_MANUFACTURER'
> > Aug 09 18:51:47 semitruck entity-manager[2700]: templateName:
> > $BOARD_MANUFACTURER, find: true
> > Aug 09 18:51:47 semitruck entity-manager[2700]: keyPair.value(): "Inventec"
> >
> > Aug 09 18:51:47 semitruck entity-manager[2700]: strPtr value:
> > '$BOARD_PRODUCT_NAME'
> > Aug 09 18:51:47 semitruck entity-manager[2700]: templateName:
> > $BOARD_PRODUCT_NAME, find: true
> > Aug 09 18:51:47 semitruck entity-manager[2700]: keyPair.value(): "Altie"
>
> So the visitor is finding and applying the value to the template, but
> that change isn't propagating up.  It works for the card that's found
> afterwards...  The only real difference is, the other profile also
> Exposes, whereas this one doesn't.  Is there a step that's skipped if
> there isn't an "Exposes" key?

Looks like this part is skipped:
https://github.com/openbmc/entity-manager/blob/b295e1d8385544f12a436ef63153d373ff8de625/src/EntityManager.cpp#L1618

_systemConfiguration[recordName] = record;
logDeviceAdded(record);
foundDeviceIdx++;

Hm.

>
> >
> >
> >
> > >
> > > >
> > > > foundDevice should be your fru.... and should be populated here:
> > > >
> > > > https://github.com/openbmc/entity-manager/blob/b295e1d8385544f12a436ef63153d373ff8de625/src/EntityManager.cpp#L425
> > >
> > > I did not think to look here, thanks!
> > >
> > > >
> > > > Hope that helps
> > > >
> > > > -James
> > > >
> > > >
> > > >
> > > > >
> > > > >>
> > > > >> -James
> > > > >>>
> > > > >>> Thanks,
> > > > >>> Patrick
> > > > >>>

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: entity-manager unexpected handling of template parameters
  2019-08-09 19:24             ` Patrick Venture
@ 2019-08-09 19:30               ` Patrick Venture
  2019-08-09 20:21                 ` James Feist
  0 siblings, 1 reply; 11+ messages in thread
From: Patrick Venture @ 2019-08-09 19:30 UTC (permalink / raw)
  To: James Feist; +Cc: OpenBMC Maillist

On Fri, Aug 9, 2019 at 12:24 PM Patrick Venture <venture@google.com> wrote:
>
> On Fri, Aug 9, 2019 at 12:20 PM Patrick Venture <venture@google.com> wrote:
> >
> > On Fri, Aug 9, 2019 at 11:57 AM Patrick Venture <venture@google.com> wrote:
> > >
> > > On Fri, Aug 9, 2019 at 11:50 AM Patrick Venture <venture@google.com> wrote:
> > > >
> > > > On Fri, Aug 9, 2019 at 11:45 AM James Feist <james.feist@linux.intel.com> wrote:
> > > > >
> > > > > On 8/9/19 11:33 AM, Patrick Venture wrote:
> > > > > > On Fri, Aug 9, 2019 at 11:22 AM James Feist <james.feist@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@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
> > > >
> > > > Thanks, that's where I'm now looking --
> > >
> > > I deleted everything from /var/configuration/ rebooted, and added some
> > > debug to dig into the specific template replacement:
> > >
> > > Aug 09 18:51:47 semitruck entity-manager[2700]: strPtr value:
> > > '$BOARD_MANUFACTURER'
> > > Aug 09 18:51:47 semitruck entity-manager[2700]: templateName:
> > > $BOARD_MANUFACTURER, find: true
> > > Aug 09 18:51:47 semitruck entity-manager[2700]: keyPair.value(): "Inventec"
> > >
> > > Aug 09 18:51:47 semitruck entity-manager[2700]: strPtr value:
> > > '$BOARD_PRODUCT_NAME'
> > > Aug 09 18:51:47 semitruck entity-manager[2700]: templateName:
> > > $BOARD_PRODUCT_NAME, find: true
> > > Aug 09 18:51:47 semitruck entity-manager[2700]: keyPair.value(): "Altie"
> >
> > So the visitor is finding and applying the value to the template, but
> > that change isn't propagating up.  It works for the card that's found
> > afterwards...  The only real difference is, the other profile also
> > Exposes, whereas this one doesn't.  Is there a step that's skipped if
> > there isn't an "Exposes" key?
>
> Looks like this part is skipped:
> https://github.com/openbmc/entity-manager/blob/b295e1d8385544f12a436ef63153d373ff8de625/src/EntityManager.cpp#L1618
>
> _systemConfiguration[recordName] = record;
> logDeviceAdded(record);
> foundDeviceIdx++;

I think foundDeviceIdx is the culprit because it isnt' always
incremented.  So, I've moved that before the contnue.

>
> Hm.
>
> >
> > >
> > >
> > >
> > > >
> > > > >
> > > > > foundDevice should be your fru.... and should be populated here:
> > > > >
> > > > > https://github.com/openbmc/entity-manager/blob/b295e1d8385544f12a436ef63153d373ff8de625/src/EntityManager.cpp#L425
> > > >
> > > > I did not think to look here, thanks!
> > > >
> > > > >
> > > > > Hope that helps
> > > > >
> > > > > -James
> > > > >
> > > > >
> > > > >
> > > > > >
> > > > > >>
> > > > > >> -James
> > > > > >>>
> > > > > >>> Thanks,
> > > > > >>> Patrick
> > > > > >>>

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: entity-manager unexpected handling of template parameters
  2019-08-09 19:30               ` Patrick Venture
@ 2019-08-09 20:21                 ` James Feist
  2019-08-09 21:10                   ` Patrick Venture
  0 siblings, 1 reply; 11+ messages in thread
From: James Feist @ 2019-08-09 20:21 UTC (permalink / raw)
  To: Patrick Venture; +Cc: OpenBMC Maillist

On 8/9/19 12:30 PM, Patrick Venture wrote:
> On Fri, Aug 9, 2019 at 12:24 PM Patrick Venture <venture@google.com> wrote:
>>
>> On Fri, Aug 9, 2019 at 12:20 PM Patrick Venture <venture@google.com> wrote:
>>>
>>> On Fri, Aug 9, 2019 at 11:57 AM Patrick Venture <venture@google.com> wrote:
>>>>
>>>> On Fri, Aug 9, 2019 at 11:50 AM Patrick Venture <venture@google.com> wrote:
>>>>>
>>>>> On Fri, Aug 9, 2019 at 11:45 AM James Feist <james.feist@linux.intel.com> wrote:
>>>>>>
>>>>>> On 8/9/19 11:33 AM, Patrick Venture wrote:
>>>>>>> On Fri, Aug 9, 2019 at 11:22 AM James Feist <james.feist@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@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
>>>>>
>>>>> Thanks, that's where I'm now looking --
>>>>
>>>> I deleted everything from /var/configuration/ rebooted, and added some
>>>> debug to dig into the specific template replacement:
>>>>
>>>> Aug 09 18:51:47 semitruck entity-manager[2700]: strPtr value:
>>>> '$BOARD_MANUFACTURER'
>>>> Aug 09 18:51:47 semitruck entity-manager[2700]: templateName:
>>>> $BOARD_MANUFACTURER, find: true
>>>> Aug 09 18:51:47 semitruck entity-manager[2700]: keyPair.value(): "Inventec"
>>>>
>>>> Aug 09 18:51:47 semitruck entity-manager[2700]: strPtr value:
>>>> '$BOARD_PRODUCT_NAME'
>>>> Aug 09 18:51:47 semitruck entity-manager[2700]: templateName:
>>>> $BOARD_PRODUCT_NAME, find: true
>>>> Aug 09 18:51:47 semitruck entity-manager[2700]: keyPair.value(): "Altie"
>>>
>>> So the visitor is finding and applying the value to the template, but
>>> that change isn't propagating up.  It works for the card that's found
>>> afterwards...  The only real difference is, the other profile also
>>> Exposes, whereas this one doesn't.  Is there a step that's skipped if
>>> there isn't an "Exposes" key?
>>
>> Looks like this part is skipped:
>> https://github.com/openbmc/entity-manager/blob/b295e1d8385544f12a436ef63153d373ff8de625/src/EntityManager.cpp#L1618
>>
>> _systemConfiguration[recordName] = record;
>> logDeviceAdded(record);
>> foundDeviceIdx++;
> 
> I think foundDeviceIdx is the culprit because it isnt' always
> incremented.  So, I've moved that before the contnue.

I think you're close.. I think this line is your issue if you have no 
exposes:

https://github.com/openbmc/entity-manager/blob/b295e1d8385544f12a436ef63153d373ff8de625/src/EntityManager.cpp#L1539

you need to hit here regardless:
https://github.com/openbmc/entity-manager/blob/b295e1d8385544f12a436ef63153d373ff8de625/src/EntityManager.cpp#L1619

That continue should just be removed.


> 
>>
>> Hm.
>>
>>>
>>>>
>>>>
>>>>
>>>>>
>>>>>>
>>>>>> foundDevice should be your fru.... and should be populated here:
>>>>>>
>>>>>> https://github.com/openbmc/entity-manager/blob/b295e1d8385544f12a436ef63153d373ff8de625/src/EntityManager.cpp#L425
>>>>>
>>>>> I did not think to look here, thanks!
>>>>>
>>>>>>
>>>>>> Hope that helps
>>>>>>
>>>>>> -James
>>>>>>
>>>>>>
>>>>>>
>>>>>>>
>>>>>>>>
>>>>>>>> -James
>>>>>>>>>
>>>>>>>>> Thanks,
>>>>>>>>> Patrick
>>>>>>>>>

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: entity-manager unexpected handling of template parameters
  2019-08-09 20:21                 ` James Feist
@ 2019-08-09 21:10                   ` Patrick Venture
  0 siblings, 0 replies; 11+ messages in thread
From: Patrick Venture @ 2019-08-09 21:10 UTC (permalink / raw)
  To: James Feist; +Cc: OpenBMC Maillist

On Fri, Aug 9, 2019 at 1:21 PM James Feist <james.feist@linux.intel.com> wrote:
>
> On 8/9/19 12:30 PM, Patrick Venture wrote:
> > On Fri, Aug 9, 2019 at 12:24 PM Patrick Venture <venture@google.com> wrote:
> >>
> >> On Fri, Aug 9, 2019 at 12:20 PM Patrick Venture <venture@google.com> wrote:
> >>>
> >>> On Fri, Aug 9, 2019 at 11:57 AM Patrick Venture <venture@google.com> wrote:
> >>>>
> >>>> On Fri, Aug 9, 2019 at 11:50 AM Patrick Venture <venture@google.com> wrote:
> >>>>>
> >>>>> On Fri, Aug 9, 2019 at 11:45 AM James Feist <james.feist@linux.intel.com> wrote:
> >>>>>>
> >>>>>> On 8/9/19 11:33 AM, Patrick Venture wrote:
> >>>>>>> On Fri, Aug 9, 2019 at 11:22 AM James Feist <james.feist@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@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
> >>>>>
> >>>>> Thanks, that's where I'm now looking --
> >>>>
> >>>> I deleted everything from /var/configuration/ rebooted, and added some
> >>>> debug to dig into the specific template replacement:
> >>>>
> >>>> Aug 09 18:51:47 semitruck entity-manager[2700]: strPtr value:
> >>>> '$BOARD_MANUFACTURER'
> >>>> Aug 09 18:51:47 semitruck entity-manager[2700]: templateName:
> >>>> $BOARD_MANUFACTURER, find: true
> >>>> Aug 09 18:51:47 semitruck entity-manager[2700]: keyPair.value(): "Inventec"
> >>>>
> >>>> Aug 09 18:51:47 semitruck entity-manager[2700]: strPtr value:
> >>>> '$BOARD_PRODUCT_NAME'
> >>>> Aug 09 18:51:47 semitruck entity-manager[2700]: templateName:
> >>>> $BOARD_PRODUCT_NAME, find: true
> >>>> Aug 09 18:51:47 semitruck entity-manager[2700]: keyPair.value(): "Altie"
> >>>
> >>> So the visitor is finding and applying the value to the template, but
> >>> that change isn't propagating up.  It works for the card that's found
> >>> afterwards...  The only real difference is, the other profile also
> >>> Exposes, whereas this one doesn't.  Is there a step that's skipped if
> >>> there isn't an "Exposes" key?
> >>
> >> Looks like this part is skipped:
> >> https://github.com/openbmc/entity-manager/blob/b295e1d8385544f12a436ef63153d373ff8de625/src/EntityManager.cpp#L1618
> >>
> >> _systemConfiguration[recordName] = record;
> >> logDeviceAdded(record);
> >> foundDeviceIdx++;
> >
> > I think foundDeviceIdx is the culprit because it isnt' always
> > incremented.  So, I've moved that before the contnue.
>
> I think you're close.. I think this line is your issue if you have no
> exposes:
>
> https://github.com/openbmc/entity-manager/blob/b295e1d8385544f12a436ef63153d373ff8de625/src/EntityManager.cpp#L1539
>
> you need to hit here regardless:
> https://github.com/openbmc/entity-manager/blob/b295e1d8385544f12a436ef63153d373ff8de625/src/EntityManager.cpp#L1619
>
> That continue should just be removed.

Yup, it should :D :D

xyz.openbmc_project.Inventory.Decorator.Asset interface -         -
                                    -
.Manufacturer                                 property  s
"Inventec"                               emits-change
.Model                                        property  s
"Altie"                                  emits-change
.PartNumber                                   property  s
"1051867-01"                             emits-change
.SerialNumber                                 property  s
"ALTIVT192700026"                        emits-change

>
>
> >
> >>
> >> Hm.
> >>
> >>>
> >>>>
> >>>>
> >>>>
> >>>>>
> >>>>>>
> >>>>>> foundDevice should be your fru.... and should be populated here:
> >>>>>>
> >>>>>> https://github.com/openbmc/entity-manager/blob/b295e1d8385544f12a436ef63153d373ff8de625/src/EntityManager.cpp#L425
> >>>>>
> >>>>> I did not think to look here, thanks!
> >>>>>
> >>>>>>
> >>>>>> Hope that helps
> >>>>>>
> >>>>>> -James
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>>
> >>>>>>>>
> >>>>>>>> -James
> >>>>>>>>>
> >>>>>>>>> Thanks,
> >>>>>>>>> Patrick
> >>>>>>>>>

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2019-08-09 21:11 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-08-09 16:53 entity-manager unexpected handling of template parameters Patrick Venture
2019-08-09 18:22 ` James Feist
2019-08-09 18:33   ` Patrick Venture
2019-08-09 18:45     ` James Feist
2019-08-09 18:50       ` Patrick Venture
2019-08-09 18:57         ` Patrick Venture
2019-08-09 19:20           ` Patrick Venture
2019-08-09 19:24             ` Patrick Venture
2019-08-09 19:30               ` Patrick Venture
2019-08-09 20:21                 ` James Feist
2019-08-09 21:10                   ` Patrick Venture

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.