D-Bus interface to provide data to entity manager
Thomaiyar, Richard Marian
richard.marian.thomaiyar at linux.intel.com
Fri May 29 20:33:56 AEST 2020
On 5/29/2020 4:00 PM, Deepak Kodihalli wrote:
> On 29/05/20 3:49 pm, Deepak Kodihalli wrote:
>> On 29/05/20 2:33 pm, Thomaiyar, Richard Marian wrote:
>>>
>>> On 5/29/2020 1:01 PM, Deepak Kodihalli wrote:
>>>> On 29/05/20 12:47 pm, Thomaiyar, Richard Marian wrote:
>>>>>
>>>>> On 5/29/2020 10:39 AM, Deepak Kodihalli wrote:
>>>>>> On 28/05/20 11:35 pm, Patrick Williams wrote:
>>>>>>> On Thu, May 28, 2020 at 10:12:19PM +0530, Thomaiyar, Richard
>>>>>>> Marian wrote:
>>>>>>>>
>>>>>>>> On 5/28/2020 5:54 PM, Deepak Kodihalli wrote:
>>>>>>>>> On 28/05/20 5:33 pm, Patrick Williams wrote:
>>>>>>>
>>>>>>>> Why do we need to have 2 different interfaces to represent the
>>>>>>>> same
>>>>>>>> information for FRU-to-inventory transformational (say
>>>>>>>> ProductName). This
>>>>>>>> will make inventory manager to be updated for every FRU
>>>>>>>> producer?. Many of
>>>>>>>> the properties are common, and we can form a common interface
>>>>>>>> for that, and
>>>>>>>> rest can be maintained in it's specific interface. I understand
>>>>>>>> that current
>>>>>>>> FRU to Entity-manager interface seems to be private, but we
>>>>>>>> must make a
>>>>>>>> common interface to represent like Product Name, PartNumer,
>>>>>>>> Serial Number
>>>>>>>> etc. (instead of maintaining it in different interface saying
>>>>>>>> IPMI / PLDM
>>>>>>>> Source, with different types). How about?
>>>>>>
>>>>>> Richard, I have concerns with this approach. Like I mentioned in
>>>>>> one my earlier emails, and Patrick also alludes to below, if you
>>>>>> try to make this common (event if it's for a subset of the
>>>>>> properties) then you basically arrive at the existing phosphor
>>>>>> Inventory interfaces (eg Inventory.Decorator.Asset).
>>>>>>
>>>>>> My question in my earlier mail was, if you do such a thing, then
>>>>>> why do you even need inventory producers? FruDevice and PLDM
>>>>>> could have hosted inventory on their own. If they still rely on
>>>>>> the inventory producers (EM and PIM) with this "common interface"
>>>>>> approach, then it's basically re-implementation/duplications of
>>>>>> the (Inventory.Decorator.Asset like) interface by two processes.
>>>>
>>>> Richard, what is your thought on the re-implementation/duplication
>>>> concern above? I'm not sure if you answered that and I missed.
>>> [Richard]: FRU Consumers must be aware about each and every Format
>>> specifically, even though it conveys same meaning.
>>
>> I agree with that, but my question was about FRU producers.
>>
>>
>>>>> [Richard]: Basically FRU information (either IPMI/PLDM) is needed
>>>>> for the inventory producers to expose configuration, which FRU
>>>>> will not have. Say, based on FRU Product name, either we will
>>>>> expose 4 temp sensor / 2 (Now along with this one, we need to
>>>>> inform the product name through Inventory.Decorator.Asset). Now
>>>>> from Redfish point of it, Inventory.Decorator is what it uses.
>>>>> This is what i was asking with 2 options in earlier mail (whether
>>>>> to change or stick with it (recommended)).
>>>>
>>>>>>
>>>>>> The idea is for apps like FruDevice and PLDM, which are aware of
>>>>>> a specific FRU format, to host data in *that* format, to be
>>>>>> consumed *solely* by inventory producers (like EM and PIM).
>>>>>>
>>>>> [Richard]: Yes, but it doesn't need to expose those in that format?
>>>>
>>>> Why not?
>>> [Richard]: What's the advantage in keeping it in that format itself?
>>
>> The advantage I see is basically what you said on the next line.
>>
>>> This is used only by EM / PIM, and not by redfish directly right?
>>> Where the intelligence must reside in the producer or consumer (With
>>> producer, consumers can be in common form)
>>
>>>>> Say Manufacturer Name, it doesn't mater whether it is coming from
>>>>> PLDM FRU / IPMI FRU. Say we have a special handling for a
>>>>> particular manufacture / product, then irrespective of inventory
>>>>> producers both can handle the same.
>>>>
>>>> This is what the Inventory.Decorator.Asset interface is for.
>>> [Richard]: Yes, That is exposed by EM / PIM in our case. Why EM /
>>> PIM must rely on 2 different stuff, for common things is the
>>> question here.
>>>>
>>>>> If we have 2 different interface, then inventory producer may need
>>>>> to be aware about both and probe it accordingly.
>>>>
>>>> No, the "FRU" properties producer needs to be concerned only about
>>>> the format it understands.
>>>
>>> [Richard]: FRU property producer must know the format and produce
>>> the interface with data (in common form as much as possible). E.g.
>>> IPMI FRU Producer (say xyz.openbmc_project.FruDevice service) will
>>> read device A FRU, and expose the Manufacturer name (It can read the
>>> EEPROM content and decode it as per the IPMI FRU format, but the
>>> data it produces is Manufacturer name). Simiarly PLDM FRU Producer
>>> (say xyz.openbmc_project.PLDM.FruDevice service) will read the data
>>> using PLDM FRU commands, and expose the Manufacturer name. Now why
>>> this 2 service need to have 2 different interface(one from
>>> Inventory.Source.PLDM & another from Inventory.Source.IPMI, to
>>> expose the Manufacturer name. ? Why Entity manager / PIM need to
>>> read the same information from 2 different interface and expose it
>>> in Inventory.Decorator.Asset. (It can do it with same interface).
>>
>> What is that interface?
>
>
> @Richard - to elaborate further - on Gerrit you suggest moving things
> like Serial Number and Part Number to Inventory.Decorator.Asset.
> However, note that these are already present in
> Inventory.Decorator.Asset. Hence the question - why do want FruDevice,
> PLDM, EM, PIM to all implement Inventory.Decorator.Asset?
[Richard]: No. What i meant was to use Inventory.Source.Common for
serial Number, part number etc (Fru to Inventory) and inventory producer
will use the inventory.Decorator.Asset for redfish exposure.
>
>
>>> What Entity manager / PIM needs to do is using Object Mapper query
>>> all the FruDevices (IPMI / PLDM FRU), and accordingly expose the
>>> Inventory
>>>>> FRU producers code must be written in such a way that for these
>>>>> common properties it does the necessary conversion (Say make
>>>>> manufacturer as string, irrespective of any format it read
>>>>> through). Note: Specific stuff, we need to create a separate
>>>>> interface (as phosphor-dbus-interface at present doesn't support
>>>>> dynamic property addition/deletion). (Tomorrow, if we have any
>>>>> other proprietary way of producing FRU data, we can still work
>>>>> with this approach, with less or no change for other layers).
>>>>>
>>>>>> Also note that (as James pointed out in his email), the IPMI FRU
>>>>>> format distinguishes Board/Chassis/Product areas. PLDM FRU format
>>>>>> does not. So there are differences. If a new FRU format is
>>>>>> introduced, then yes we would expect a new interface to show up
>>>>>> under Inventory/Source/<FruFormat>
>>>>> [Richard]: Fru producers should do this conversion.
>>>>
>>>> I'm of the opinion that the inventory producer (like EM and PIM)
>>>> should perform this conversion. Consider
>>>> https://github.com/openbmc/entity-manager/blob/master/configurations/Intel%20Front%20Panel.json#L55
>>>> for example. I don't think it's up to the FruDevice/PLDM kind of
>>>> apps to decide that this is actually a Panel. You can design it
>>>> that way, but like I said above that means the config knowledge
>>>> moves into these apps, which I don't think we should head towards,
>>>> since then every FRU producer app needs to do this. This is why we
>>>> have apps like EM.
>>> [Richard]: Exactly. What we need to make sure is create abstraction
>>> between Entity manager and FRU Producers as much as possible. FRU
>>> Producer responsibility is to read the FRU in decode the FRU data as
>>> per the spec and expose it in common form which Entity-manager / PIM
>>> will rely on.
>>
>> I don't see why the abstraction is necessary. There already is
>> abstraction in terms of the phosphor interfaces.
>>
>>>>> Say Chassis Type (Irrespective of what area it comes from it is
>>>>> same). PLDM FRU mostly represents the product as a whole, but
>>>>> technically we can point it to all the needed using the Fru Record
>>>>> set to the Entity type mapping in the PDR record. Accordingly it
>>>>> needs to be exposed.
>>>>>>
>>>>>>
>>>>>>> Yes, I am in favor of common interfaces for this where ever
>>>>>>> possible.
>>>>>>>
>>>>>>> Is there someone that knows the existing FruDevice
>>>>>>> implementation well
>>>>>>> enough that can be included in this work to propose common
>>>>>>> interfaces
>>>>>>> where it is appropriate?
>>>>>>>
>>>>>>>> Inventory/Source/General/Fru (Maintain common things here
>>>>>>>> Product Name.
>>>>>>>> This can be used by Inventory manager to advertise it (instead
>>>>>>>> of searching
>>>>>>>> it in multiple interfaces/properties))
>>>>>>>
>>>>>>> Minor tweak here of 'Source/Common'? When we have an existing
>>>>>>> Inventory
>>>>>>> interface for this information should we mimic what is already in
>>>>>>> Inventory? At some point are we trying to be too common that we're
>>>>>>> effectively reimplementing Inventory instances under a different
>>>>>>> name?
>>>>>>>
>>>>> [Richard]: Yes, currently, FRU to inventory and inventory to upper
>>>>> layer is what used. If we want to change it, we need to go with
>>>>> differnt option of using FRU to upper layer, but many of existing
>>>>> code will require change.
>>>>
>>>>
>>>>> Regards,
>>>>>
>>>>> Richard
>>>>>
>>>>
>>
>
More information about the openbmc
mailing list