Implement Ethernet Interface Properties

Spencer Ku (古世瑜) Spencer.Ku at quantatw.com
Thu Jan 20 19:42:50 AEDT 2022


Hi All,

We finally decide to implement six properties to Ethernet interface: 
RxPackets, TxPackets, RxBytes, TxBytes, RxDropped, and TxDropped.

Those information come from Ethernet statistics and we can read the file 
to get the property value directly. (under /sys/class/net/<Ethernet name>/statistics)

For the suitable property in EthernetInterface model, we got the feedback 
form Redfish forum and they said OEM properties would be the only other 
option at this time. For more discussion detail:
https://redfishforum.com/thread/579/additional-information-ethernet-interface

The following output is the result of my currently OEM implement:
https://${bmc}/redfish/v1/Managers/bmc/EhernetInterfaces/eth0
{
  "@odata.id": "/redfish/v1/Managers/bmc/EthernetInterfaces/eth0",
  ...
  "Oem": {
    "Statistics": [
      {
        "RxBytes": 48244026,
        "RxDropped": 222856,
        "RxPackets": 484315,
        "TxBytes": 825845,
        "TxDropped": 0,
        "TxPackets": 5472
      }
    ]
  },
  "SpeedMbps": 100,
  ...
}

But it cannot pass the Redfish validator, and here is the error messages:
ERROR - This complex object RxBytes should be a dictionary or None, but it's of type ...
ERROR - RxBytes: Could not finish check on this property ('int' object is not iterable)

Is there anything I didn't notice? Or has there any spec or example that I can follow to implement? 

I had already push the implementation to gerrit and mark as WIP. Here is the link:
https://gerrit.openbmc-project.xyz/c/openbmc/bmcweb/+/50522

We are willing to see any suggestions and alternatives as well. Thanks!

Sincerely,
Spencer Ku


More information about the openbmc mailing list