Thanks for the feedback. I intend to keep the current dict format. This concise ID-name mapping is quite helpful and easy to read especially when there are massive ports, which is exactly the main purpose why I submitted this patch.
In my opinion, adopting OData-style query would require architecture-level refactoring of telemetry framework, which is way too heavy for this simple requirement. For complex query demands, we can implement them by extending the upper-layer Python telemetry script instead. So I suggest we keep this simple form here. Thanks. On 5/20/2026 10:58 PM, Bruce Richardson wrote: > On Wed, May 20, 2026 at 03:29:36PM +0200, Morten Brørup wrote: >>> From: Chengwen Feng [mailto:[email protected]] >>> Sent: Wednesday, 20 May 2026 11.38 >>> >>> Add /ethdev/list_names telemetry endpoint which returns a dictionary >>> keyed by port ID with device name as the value, so users can >>> identify ports by name directly from the telemetry output. >>> >>> Original /ethdev/list output: >>> {"/ethdev/list": [0, 1]} >>> >>> New /ethdev/list_names output: >>> {"/ethdev/list_names": {"0": "0000:7d:00.0", >>> "1": "0000:7d:00.1"}} >>> >> >> <rant> >> >> Unfortunately, the telemetry protocol in DPDK is not using a common design, >> but takes parameters specific to each path. >> It should have used OData or something similar, to standardize listing, >> filtering, etc. >> Then we could have queried this like: >> /ethdev/info?$select=port_id,name > > If you are up for implementing something like that, it should be possible > to have syntax like the above work alongside our existing syntax too. > The current telemetry scheme was set up with the overarching objective > being simplicity. > >> And return something like: >> [ >> { >> "port_id": 0, >> "name": "0000:7d:00.0" >> }, >> { >> "port_id": 1, >> "name": "0000:7d:00.1" >> } >> ] >> or: >> [ >> { >> 0, >> "0000:7d:00.0" >> }, >> { >> 1, >> "0000:7d:00.1" >> } >> ] >> >> But now we are stuck with what we have. >> >> </rant> >> >> So /etdev/list_names is OK. >> >> I'm not really familiar with the DPDK telemetry, so I wonder if indexed >> arrays are normally returned as an object, like in this patch? >> >> I would have expected a list function (such as list_names) to return an >> array. >> Either a simple list: >> { >> "/ethdev/list_names": >> [ >> "0000:7d:00.0", >> "0000:7d:00.1" >> ] >> } >> > > I think it would prefer this, but it does get a bit harder to read with a > long list. > >> Or a list of objects: >> { >> "/ethdev/list_names": >> [ >> { >> "port_id": 0, >> "name": "0000:7d:00.0" >> }, >> { >> "port_id": 1, >> "name": "0000:7d:00.1" >> } >> ] >> } >> > > Agree that this also would be slightly better. > > However, a *completely* different approach would be to instead solve this > issue by adding additional functionality to the interactive telemetry > script itself. After all, the data for the list of names of ethdevs is > already available from the telemetry endpoints already present in DPDK. All > we need to do is to extend the python script to have "virtual endpoints" if > you will, which do the necessary queries in the background and then present > the data to the user. I think that would be a cleaner approach to things > like this, rather than always adding more C code. > > /Bruce >

