|
Post by nschellenberger on Jul 24, 2023 20:57:40 GMT
I'm probably making this more complicated than it actually is, but I'm uncertain as to how to represent the canonical URI for the value of the navigation property FabricAdapter/Ports/EnvironmentMetrics.
Since none of the uses of EnvironmentMetrics appear to have a ContainsTartget=true and there is neither a Singleton nor EntityContainer for the default entity-set (nor an EnvironmentMetrics property in ServiceRoot) I'm not certain what the canonical, normative Redfish entity-id, Read URL, or navigationLink ought to be.
In our particular case, having the default ContainsTarget=false is actually entirely reasonable, since multiple ports can ride the same QSFP, but does that mean we should use an Oem URI, one for each physical QSFP? (Aside: why is the Port/SFP property a ComplexType rather than a navigation property to an EntityType?) Or can we just treat each of these as though they each defined an implicit entity set and have a notionally uniquely identifiable EnvironmentMetrics, one for each port (even if implemented as a single temperature read from the QSFP in our firmware, so are physically the same thing) via Port/EnvironmentMetrics/{EnvironmentMetricsId}.
Note that, as usual, we don't really mind how this is modelled, we're just trying to avoid making a trivial mistake in doing so.
|
|
|
Post by mraineri on Jul 25, 2023 15:04:44 GMT
The lack of ContainsTarget=true is a mistake; each EnvironmentMetrics resource is certainly contained by the respective parent resource. However, from a Redfish perspective, we've never latched onto the strict usage of this term, especially since it's an element that doesn't translate to other schema languages. Specifically for EnvironmentMetrics subordinate to FabricAdapter/Ports, it would follow one of these two patterns (depending on where you've placed FabricAdapter resources in your implementation):
- /redfish/v1/Systems/{ComputerSystemId}/FabricAdapters/{FabricAdapterId}/Ports/{PortId}/EnvironmentMetrics
- /redfish/v1/Chassis/{ChassisId}/FabricAdapters/{FabricAdapterId}/Ports/{PortId}/EnvironmentMetrics
We used a single SFP object in port because the intent is a port contains a single plug. Even in the QSFP case, there's still one port (strictly from the perspective of the receptacle). In your case, you would use the "Width" property to show it has 4 links into the fabric adapter.
|
|