|
Post by edward on Jul 19, 2022 7:31:11 GMT
I'm implementing Redfish service to let the host to create a NetworkInterface and a NetworkAdapter. The NetworkInterface will contain a link to the NetworkAdapter.
The URI to create a NetworkInterface: /redfish/v1/Systems/{ComputerSystemId}/NetworkInterfaces
The URI to crate a NetworkAdapter: /redfish/v1/Chassis/{ChassisId}/NetworkAdapters
I don't know how to bind the NetworkInterface with NetworkAdapter. Should the Redfish service give the same Id to them?
|
|
|
Post by mraineri on Jul 19, 2022 13:10:02 GMT
The NetworkAdapter model was designed such that adapters could be partitioned and allocated to different systems, which is why the adapters are within a Chassis resource. NetworkInterface is a construct used to show what resources on a particular NetworkAdapter belong to the ComputerSystem (the network functions and ports) while also giving the user a reference to the physical adapter the interface is consuming (the Id properties don't need to be the same). It can look something like this:
{ "@odata.type": "#NetworkInterface.v1_2_1.NetworkInterface", "Id": "4AWAII", "Name": "Network Interface", "Ports": { "@odata.id": "/redfish/v1/Systems/437XR1138R2/NetworkInterfaces/4AWAII/Ports" }, "NetworkDeviceFunctions": { "@odata.id": "/redfish/v1/Systems/437XR1138R2/NetworkInterfaces/4AWAII/NetworkDeviceFunctions" }, "Links": { "NetworkAdapter": { "@odata.id": "/redfish/v1/Chassis/Card1/NetworkAdapters/Slot1" } }, "@odata.id": "/redfish/v1/Systems/437XR1138R2/NetworkInterfaces/4AWAII", "@Redfish.Copyright": "Copyright 2014-2021 DMTF. For the full DMTF copyright policy, see http://www.dmtf.org/about/policies/copyright." }
There is a short video here that walks through the model: www.youtube.com/watch?v=jJeHgvnUc3w
|
|
|
Post by edward on Jul 20, 2022 4:19:34 GMT
Thanks for your reply. To my understanding, NetworkAdapter and NetworkDeviceFunction are physically at Chassis. NetworkInterface should show which NetworkAdapter and NetworkDeviceFunction are assigned to its ComputerSystem. In our scenario, those instances are created by the host through HTTP POST. The host uses /redfish/v1/Chassis/{ChassisId}/NetworkAdapters and /redfish/v1/Chassis/{ChassisId}/NetworkAdapters/{NetworkAdapterId}/NetworkDeviceFunctions to create NetworkAdapter and NetworkDeviceFunction. Our Redfish server can find out the relationship according to the URIs.
The @odata.id properties are read-only in NetworkInterface, so the host only can set Status property when creating the instance. How does Redfish server know which NetworkAdapter an NetworkDeviceFunction are bound to this NetworkInterface? Is there any other Redfish API can let the host do the assignment?
|
|
|
Post by mraineri on Jul 20, 2022 14:13:51 GMT
In today's model, a user cannot add new members to the NetworkInterfaceCollection. In most cases, the mapping is performed under the covers and is going to be dependent on the system architecture; the host really isn't involved in this process. Maybe BIOS does device probing of some sort and pushes data to the BMC to describe how devices are mapped to the system. Maybe the BMC has this intelligence directly from side-band access methods.
There are more complex designs that support composability and fabric management where the BMC has more control over how cross-chassis connections are routed. In these cases users would configure fabric zones to dictate routable traffic or request dynamic creation of systems based on a set of disaggregated hardware available in the infrastructure. However, this is not the typical rackmount server type of design with pluggable HBAs for the host.
|
|
|
Post by edward on Jul 21, 2022 1:36:41 GMT
Okay, thanks.
|
|