背景
当前redfish标准接口存在缺失,需要评审新增redfish标准接口以及资源协作接口属性。
关联ISSUE
NetworkDeviceFunctionMetrics相关资源支持redfish新标准
ThermalEquipment相关资源支持redfish新标准
ThermalSubsystem相关资源支持redfish新标准
Port相关资源支持redfish新标准
评审点
评审点1:
新增URI:/redfish/v1/Chassis/{ChassisId}/NetworkAdapters/{NetworkAdapterId}/NetworkDeviceFunctions/{NetworkDeviceFunctionId}/Metrics
评审点2:
在 /redfish/v1 资源下新增ThermalEquipment属性
新增URI:/redfish/v1/ThermalEquipment
评审点3:
/redfish/v1/Chassis/{ChassisId}/ThermalSubsystem 资源下新增属性
评审点4:
新增URI:/redfish/v1/Chassis/{ChassisId}/NetworkAdapters/{NetworkAdapterId}/Ports
评审点5:
新增URI:/redfish/v1/Chassis/{ChassisId}/NetworkAdapters/{NetworkAdapterId}/Ports/{PortId}
详细描述
评审点1:
URI:/redfish/v1/Chassis/{ChassisId}/NetworkAdapters/{NetworkAdapterId}/NetworkDeviceFunctions/{NetworkDeviceFunctionId}/Metrics
变化类型:新增URI
操作类型:GET
应用场景:Redfish 接口查询网络设备功能下的流量度量指标
| 属性名称 | 类型 | 易变属性 | 读写 & 权限 | 默认值 | 属性说明 |
|---|---|---|---|---|---|
| @odata.context | string | 否 | 只读,读权限:ReadOnly | /redfish/v1/$metadata#NetworkDeviceFunctionMetrics.NetworkDeviceFunctionMetrics | 网络设备功能度量信息资源模型的 OData 描述信息 |
| @odata.id | string | 否 | 只读,读权限:ReadOnly | /redfish/v1/Chassis/{ChassisId}/NetworkAdapters/{NetworkAdapterId}/NetworkDeviceFunctions/{NetworkDeviceFunctionId}/Metrics | 网络设备功能度量信息资源的访问路径 |
| @odata.type | string | 否 | 只读,读权限:ReadOnly | #NetworkDeviceFunctionMetrics.v1_2_0.NetworkDeviceFunctionMetrics | 网络设备功能度量信息资源的类型 |
| Name | string | 否 | 只读,读权限:ReadOnly | Network Device Function Metrics | 网络设备功能度量信息资源名称 |
| Id | string | 否 | 只读,读权限:ReadOnly | NetworkDeviceFunctionMetrics | 网络设备功能度量信息资源 ID |
| RXFrames | integer | 是 | 只读,读权限:ReadOnly | 网络设备功能接收到的帧总数 | |
| RXMulticastFrames | integer | 是 | 只读,读权限:ReadOnly | 网络设备功能接收到的多播帧数量 | |
| RXUnicastFrames | integer | 是 | 只读,读权限:ReadOnly | 网络设备功能接收到的单播帧数量 | |
| TXFrames | integer | 是 | 只读,读权限:ReadOnly | 网络设备功能发送的帧总数 | |
| TXMulticastFrames | integer | 是 | 只读,读权限:ReadOnly | 网络设备功能发送的多播帧数量 | |
| TXUnicastFrames | integer | 是 | 只读,读权限:ReadOnly | 网络设备功能发送的单播帧数量 |
schema说明:
新增schema文件NetworkDeviceFunctionMetrics.v1_2_0.json
"RXFrames": {
"description": "The total number of frames received on a network function.",
"longDescription": "This property shall contain the total number of frames received on a network function.",
"readonly": true,
"type": [
"integer",
"null"
]
},
"RXMulticastFrames": {
"description": "The total number of good multicast frames received on a network function since reset.",
"longDescription": "This property shall contain the total number of good multicast frames received on a network function since reset, including host and remote management passthrough traffic.",
"readonly": true,
"type": [
"integer",
"null"
]
},
"RXUnicastFrames": {
"description": "The total number of good unicast frames received on a network function since reset.",
"longDescription": "This property shall contain the total number of good unicast frames received on a network function since reset.",
"readonly": true,
"type": [
"integer",
"null"
]
},
"TXFrames": {
"description": "The total number of frames sent on a network function.",
"longDescription": "This property shall contain the total number of frames sent on a network function.",
"readonly": true,
"type": [
"integer",
"null"
]
},
"TXMulticastFrames": {
"description": "The total number of good multicast frames transmitted on a network function since reset.",
"longDescription": "This property shall contain the total number of good multicast frames transmitted on a network function since reset, including host and remote management passthrough traffic.",
"readonly": true,
"type": [
"integer",
"null"
]
},
"TXUnicastFrames": {
"description": "The total number of good unicast frames transmitted on a network function since reset.",
"longDescription": "This property shall contain the total number of good unicast frames transmitted on a network function since reset, including host and remote management passthrough traffic.",
"readonly": true,
"type": [
"integer",
"null"
]
}
RspBody响应体示例:
{
"@odata.context": "/redfish/v1/$metadata#NetworkDeviceFunctionMetrics.NetworkDeviceFunctionMetrics",
"@odata.id": "/redfish/v1/Chassis/1/NetworkAdapters/chassisNIC1(SF221Q)/NetworkDeviceFunctions/4/Metrics",
"@odata.type": "#NetworkDeviceFunctionMetrics.v1_2_0.NetworkDeviceFunctionMetrics",
"Id": "NetworkDeviceFunctionMetrics",
"Name": "Network Device Function Metrics",
"RXFrames": 0,
"RXMulticastFrames": 4,
"RXUnicastFrames": 4,
"TXFrames": 0,
"TXMulticastFrames": 2,
"TXUnicastFrames": 3
}
评审点2:
URI: /redfish/v1(已有)
变化类型:新增ThermalEquipment属性
应用场景:redfish接口获取ThermalEquipment相关资源集合信息
| 一级属性 | 二级属性 | 类型 | 操作权限 | 默认值 | 属性说明 |
|---|---|---|---|---|---|
| ThermalEquipment | object | ReadOnly | 包含服务器所有冷却硬件集合的 ThermalEquipment 类型资源 |
||
| @odata.id | string | ReadOnly | /redfish/v1/ThermalEquipment | ThermalEquipment 资源的访问路径 |
URI:/redfish/v1/ThermalEquipment
变化类型:新增URI
操作类型:GET
应用场景:redfish接口获取ThermalEquipment相关资源集合信息
| 一级属性 | 二级属性 | 类型 | 操作权限 | 默认值 | 属性说明 |
|---|---|---|---|---|---|
| CoolingLoopRedundancy | array | ReadOnly | 此属性应包含与此设备相连的一组冷却回路的冗余信息,为 CoolingLoops 组成冗余组的信息 | ||
| Status | object | ReadOnly | 该资源及其从属或附属部分的状况和健康状况资源 | ||
| State | string | ReadOnly | Enabled | 该资源及其从属或附属部分的状况 | |
| Health | string | ReadOnly | OK | 该资源及其从属或附属部分的健康状况 |
schema说明:
新增schema文件ThermalEquipment.v1_2_0.json
"CoolingLoopRedundancy": {
"description": "The redundancy information for cooling loops attached to this equipment.",
"items": {
"$ref": "http://redfish.dmtf.org/schemas/v1/Redundancy.json#/definitions/RedundantGroup"
},
"longDescription": "This property shall contain redundancy information for the set of cooling loops attached to this equipment. The values of the `RedundancyGroup` array shall reference resources of type `CoolingLoop`.",
"type": "array",
"versionAdded": "v1_1_0"
},
"Status": {
"$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Status",
"description": "The status and health of the resource and its subordinate or dependent resources.",
"longDescription": "This property shall contain any status or health properties of the resource."
}
RspBody响应体示例:
{
"@odata.context": "/redfish/v1/$metadata#ThermalEquipment.ThermalEquipment",
"@odata.id": "/redfish/v1/ThermalEquipment",
"@odata.type": "#ThermalEquipment.v1_2_0.ThermalEquipment",
"Id": "ThermalEquipment",
"Name": "Cooling Equipment",
"CoolingLoopRedundancy": [],
"Status": {
"State": "Enabled",
"HealthRollup": "OK"
}
}
评审点3:
URI:/redfish/v1/Chassis/{ChassisId}/ThermalSubsystem(已有)
变化类型:新增属性
| 属性名称 | 类型 | 操作权限 | 易变属性 | 属性说明 |
|---|---|---|---|---|
| CoolantConnectorRedundancy | array | ReadOnly | 否 | 本子系统中冷却器连接器的冗余信息 。该属性应包含连接到此设备的冷却器连接器集合的冗余信息,冗余组数组内的值需引用冷却器连接器类型的资源。 |
schema说明:
schema文件ThermalSubsystem.v1_3_2.json
"CoolantConnectorRedundancy": {
"description": "The redundancy information for the coolant connectors in this subsystem.",
"items": {
"$ref": "http://redfish.dmtf.org/schemas/v1/Redundancy.json#/definitions/RedundantGroup"
},
"longDescription": "This property shall contain redundancy information for the set of coolant connectors attached to this equipment. The values of the `RedundancyGroup` array shall reference resources of type `CoolantConnector`.",
"type": "array",
"versionAdded": "v1_3_0"
},
RspBody响应体示例:
{
"@odata.context": "/redfish/v1/$metadata#ThermalSubsystem.ThermalSubsystem",
"@odata.id": "/redfish/v1/Chassis/1/ThermalSubsystem",
"@odata.type": "#ThermalSubsystem.v1_3_2.ThermalSubsystem",
"CoolantConnectorRedundancy": [],
"Id": "ThermalSubsystem",
"Name": "ThermalSubsystem"
}
评审点4:
URI:/redfish/v1/Chassis/{ChassisId}/NetworkAdapters/{NetworkAdapterId}/Ports
变化类型:新增URI
操作类型:GET
应用场景:redfish 接口查询网络适配器下的端口资源集合信息
| 属性名称 | 类型 | 操作权限 | 默认值 | 属性说明 |
|---|---|---|---|---|
| @odata.id | string | ReadOnly | /redfish/v1/Chassis/{ChassisId}/NetworkAdapters/{NetworkAdapterId}/Ports | 端口集合资源的访问路径 |
| @odata.type | string | ReadOnly | #PortCollection.PortCollection | 端口集合资源的类型标识 |
| Name | string | ReadOnly | Port Collection | 端口集合资源的名称 |
| Members | array | ReadOnly | 指向 Port 集合中各个 Port 资源的链接数组 | |
| Members@odata.count | integer | ReadOnly | Members 数组中 Port 资源的数量 |
评审点5:
URI:/redfish/v1/Chassis/{ChassisId}/NetworkAdapters/{NetworkAdapterId}/Ports/{PortId}
变化类型:新增URI
操作类型:GET
应用场景:redfish接口获取Port相关资源集合信息
| 一级属性 | 二级属性 | 三级属性 | 类型 | 枚举范围 | 操作权限 | 默认值 | 属性说明 |
|---|---|---|---|---|---|---|---|
| @odata.context | string | ReadOnly | /redfish/v1/$metadata#Port.Port | 单个端口资源模型的 OData 描述信息 | |||
| @odata.id | string | ReadOnly | /redfish/v1/Chassis/{ChassisId}/NetworkAdapters/{NetworkAdapterId}/Ports/{PortId} | 单个端口资源的访问路径 | |||
| @odata.type | string | ReadOnly | #Port.v1_16_0.Port | 单个端口资源的类型标识 | |||
| Name | string | ReadOnly | ${Uri/portid} | 单个端口资源的名称 | |||
| Id | string | ReadOnly | ${Uri/portid} | 单个端口资源的唯一标识 | |||
| LinkStatus | string | [“LinkUp”,“NoLink”,“LinkDown”] | ReadOnly | 端口当前的链路连接状态 | |||
| LinkNetworkTechnology | string | [“Ethernet”,“InfiniBand”,“FibreChannel”] | ReadOnly | 该端口当前使用的链路网络技术类型 | |||
| CurrentSpeedGbps | integer | ReadOnly | 该端口当前协商运行的速率,单位为 Gbit/s | ||||
| Ethernet | object | ReadOnly | 该端口的以太网相关配置与状态信息 | ||||
| AssociatedMACAddresses | array | ReadOnly | 与该网络端口关联的已配置 MAC 地址数组 | ||||
| LLDPEnabled | boolean | ReadWrite | 该端口的 LLDP 协议功能启用状态 | ||||
| LLDPReceive | object | ReadOnly | 从网络交换机接收到的 LLDP 协议相关信息 | ||||
| ChassisId | string | ReadOnly | 从网络交换机接收到的机箱标识 ID | ||||
| ChassisIdSubtype | string | [“ChassisComp”,“IfAlias”,“PortComp”,“MacAddr”,“NetworkAddr”,“IfName”,“LocalAssign”] | ReadOnly | 从网络交换机接收到的机箱标识类型 | |||
| ManagementVlanId | integer | ReadOnly | 从网络交换机接收到的管理 VLAN 编号 | ||||
| PortId | string | ReadOnly | 从网络交换机接收到的端口标识 ID | ||||
| PortIdSubtype | string | [“IfAlias”,“PortComp”,“MacAddr”,“NetworkAddr”,“IfName”,“AgentId”,“LocalAssign”] | ReadOnly | 从网络交换机接收到的端口标识类型 | |||
| SystemName | string | ReadOnly | 从网络交换机接收到的设备系统名称 | ||||
| Metrics | object | ReadOnly | 该端口的度量指标相关子资源 | ||||
| @odata.id | string | ReadOnly | /redfish/v1/Chassis/{ChassisId}/NetworkAdapters/{NetworkAdapterId}/Ports/{PortId}/Metrics | 端口度量指标子资源的访问路径 |
schema说明:
新增schema文件Port.v1_16_0.json
"Status": {
"$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Status",
"description": "The status and health of the resource and its subordinate or dependent resources.",
"longDescription": "This property shall contain any status or health properties of the resource.",
"versionAdded": "v1_4_0"
},
"LinkStatus": {
"$ref": "#/definitions/LinkStatus",
"description": "The link status for this interface.",
"longDescription": "This property shall contain the link status for this interface.",
"readonly": true,
"versionAdded": "v1_2_0"
},
"LinkNetworkTechnology": {
"anyOf": [
{
"$ref": "#/definitions/LinkNetworkTechnology"
},
{
"type": "null"
}
],
"description": "The link network technology for this link configuration.",
"longDescription": "This property shall contain the link network technology for this link configuration.",
"readonly": true,
"versionAdded": "v1_16_0"
},
"CurrentSpeedGbps": {
"description": "The current speed of this port.",
"longDescription": "This property shall contain the unidirectional speed of this port currently negotiated and running. This value includes overhead associated with the protocol.",
"readonly": true,
"type": [
"number",
"null"
],
"units": "Gbit/s"
},
"AssociatedMACAddresses": {
"description": "An array of configured MAC addresses that are associated with this network port, including the programmed address of the lowest-numbered network device function, the configured but not active address, if applicable, the address for hardware port teaming, or other network addresses.",
"items": {
"type": [
"string",
"null"
]
},
"longDescription": "This property shall contain an array of configured MAC addresses that are associated with this network port, including the programmed address of the lowest-numbered network device function, the configured but not active address if applicable, the address for hardware port teaming, or other network addresses.",
"pattern": "^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$",
"readonly": true,
"type": "array",
"versionAdded": "v1_4_0"
},
"LLDPEnabled": {
"description": "Enable/disable LLDP for this port.",
"longDescription": "This property shall contain the state indicating whether to enable LLDP for a port. If LLDP is disabled at the adapter level, this property shall be ignored.",
"readonly": false,
"type": "boolean",
"versionAdded": "v1_4_0"
},
"ChassisId": {
"description": "Link Layer Data Protocol (LLDP) chassis ID.",
"longDescription": "This property shall contain the chassis ID to be transmitted from this endpoint. If no such chassis ID is to be transmitted, this value shall be an empty string.",
"readonly": false,
"type": [
"string",
"null"
],
"versionAdded": "v1_4_0"
},
"ChassisIdSubtype": {
"anyOf": [
{
"$ref": "#/definitions/IEEE802IdSubtype"
},
{
"type": "null"
}
],
"description": "The type of identifier used for the chassis ID received from the remote partner across this link.",
"longDescription": "This property shall contain the IEEE 802.1AB-2009 chassis ID subtype received from the remote partner across this link. If no such chassis ID subtype has been received, this property should not be present.",
"readonly": true,
"versionAdded": "v1_4_0"
},
"ManagementVlanId": {
"description": "The management VLAN ID received from the remote partner across this link.",
"longDescription": "This property shall contain the management VLAN ID received from the remote partner across this link. If no such management VLAN ID has been received, this property should not be present.",
"maximum": 4095,
"minimum": 0,
"readonly": true,
"type": [
"integer",
"null"
],
"versionAdded": "v1_4_0"
},
"PortId": {
"description": "A colon-delimited string of hexadecimal octets identifying a port.",
"longDescription": "This property shall contain a colon-delimited string of hexadecimal octets identifying the port received from the remote partner across this link. If no such port ID has been received, this property should not be present.",
"pattern": "^([0-9A-F]{2})([:]([0-9A-F]){2}){0,63}$",
"readonly": true,
"type": [
"string",
"null"
],
"versionAdded": "v1_4_0"
},
"PortIdSubtype": {
"anyOf": [
{
"$ref": "#/definitions/IEEE802IdSubtype"
},
{
"type": "null"
}
],
"description": "The port ID subtype received from the remote partner across this link.",
"longDescription": "This property shall contain the port ID subtype from IEEE 802.1AB-2009 Table 8-3 received from the remote partner across this link. If no such port ID subtype has been received, this property should not be present.",
"readonly": true,
"versionAdded": "v1_4_0"
},
"SystemName": {
"description": "The system name received from the remote partner across this link.",
"longDescription": "This property shall contain the system name received from the remote partner across this link. If no such system name has been received, this property shall not be present.",
"readonly": true,
"type": [
"string",
"null"
],
"versionAdded": "v1_8_0"
}
RspBody响应体示例:
{
"@odata.context": "/redfish/v1/$metadata#Port.Port",
"@odata.id": "/redfish/v1/Chassis/1/NetworkAdapters/chassisNIC1(SF221Q)/Ports/1",
"@odata.type": "#Port.v1_16_0.Port",
"Id": "1",
"Name": "1",
"LinkStatus": "Disconnected",
"LinkNetworkTechnology": "Ethernet",
"CurrentSpeedGbps": 4294967.295,
"Ethernet": {
"AssociatedMACAddresses": [
"B0:4F:A6:FD:5D:B7"
],
"LLDPEnabled": false,
"LLDPReceive": {
"ChassisId": "123",
"ChassisIdSubtype": "3",
"ManagementVlanId": 0,
"PortId": "PortId",
"PortIdSubtype": "Subtype",
"SystemName": "SystemName"
}
},
"Metrics": {
"@odata.id": "/redfish/v1/Chassis/1/NetworkAdapters/chassisNIC1(SF221Q)/Ports/1/Metrics"
}
}
评审结论
1、同意新增URI:/redfish/v1/Chassis/{ChassisId}/NetworkAdapters/{NetworkAdapterId}/NetworkDeviceFunctions/{NetworkDeviceFunctionId}/Metrics,并支持新增属性RXFrames、RXMulticastFrames、RXUnicastFrames、TXFrames、TXMulticastFrames、TXUnicastFrames,属性类型为integer,操作权限:ReadOnly,支持GET操作
2、同意在 /redfish/v1 资源下新增ThermalEquipment属性,操作权限:ReadOnly;同意新增URI:/redfish/v1/ThermalEquipment,并新增属性CoolingLoopRedundancy和Status,操作权限:ReadOnly,支持GET操作
3、同意在URI:/redfish/v1/Chassis/{ChassisId}/ThermalSubsystem 资源下新增CoolantConnectorRedundancy属性,类型为array,操作权限:ReadOnly,支持GET操作
4、同意新增URI:/redfish/v1/Chassis/{ChassisId}/NetworkAdapters/{NetworkAdapterId}/Ports,并支持新增属性 Members、Members@odata.count,操作权限:ReadOnly,支持GET操作
5、同意新增URI:/redfish/v1/Chassis/{ChassisId}/NetworkAdapters/{NetworkAdapterId}/Ports/{PortId},包括GET操作,操作权限:ReadOnly (详情见 评审点5)