【已评审】Storage/Drive相关资源支持redfish新标准

背景

当前redfish标准接口存在缺失,需要新增redfish标准接口以及资源协作接口属性。

关联ISSUE

[需求]: Storage/Drive/相关资源支持redfish新标准

评审点

评审点1:
新增URI:/redfish/v1/Systems/{ComputerSystemId}/Storage/{StorageId}

评审点2:
新增URI:/redfish/v1/Systems/{ComputerSystemId}/Storage/{StorageId}/Volumes/{VolumeId}

评审点3:
新增URI接口属性:/redfish/v1/Chassis/{ChassisId}/Drives/{DrivesId}

详细描述

评审点1:
URI:/redfish/v1/Systems/{ComputerSystemId}/Storage/{StorageId}
变化类型:新增URI
操作类型: GET
应用场景:获取存储控制器信息
说明:
1.新增URI相关属性与URI:/redfish/v1/Systems/{ComputerSystemId}/Storages/{StorageId} 保持一致
2.新增Controllers {@odata.id},
其中@odata.id为:/redfish/v1/Systems/{ComputerSystemId}/Storage/{StorageId}/Controllers

RspBody响应体结构:

一级属性 二级属性 类型 属性说明
Controllers @odata.id string 指向storage controllers资源的链接,/redfish/v1/Systems/{ComputerSystemId}/Storage/{StorageId}/Controllers

schema说明:
新增schema文件storage.v1_20_0.json

                "Controllers": {
                    "$ref": "http://redfish.dmtf.org/schemas/v1/StorageControllerCollection.json#/definitions/StorageControllerCollection",
                    "description": "The set of controllers instantiated by this storage subsystem.",
                    "longDescription": "This property shall contain a link to a resource collection of type StorageControllerCollection that contains the set of storage controllers allocated to this storage subsystem.",
                    "readonly": true,
                    "versionAdded": "v1_9_0"
                }

RspBody响应体示例:

{
    "@odata.context": "/redfish/v1/$metadata#Storage.Storage",
    "@odata.id": "/redfish/v1/Systems/1/Storage/RAIDStorage0",
    "@odata.type": "#Storage.v1_20_0.Storage",
    "Id": "RAIDStorage0",
    "Name": "RAIDStorage0",
    "StorageControllers@odata.count": 1,
    "StorageControllers": [
        {
            "MemberId": "0",
            "@odata.id": "/redfish/v1/Systems/1/Storage/RAIDStorage0#/StorageControllers/0",
            "@odata.type": "#Storage.v1_7_0.StorageController",
            "Name": "PCIe Card 3 (9560-16i) Controller",
            "Description": "RAID Controller",
            "Status": {
                "State": "Enabled",
                "Oem": {
                    "openUBMC": {
                        "Severity": "Informational",
                        "FaultDetails": null
                    }
                },
                "Health": "OK"
            },
            "FirmwareVersion": "5.200.02-3681",
            "SupportedDeviceProtocols": [
                "SAS"
            ],
            "SpeedGbps": 12,
            "SerialNumber": "SKC2546973",
            "Manufacturer": "Broadcom",
            "Model": "MegaRAID 9560-16i 8GB",
            "CacheSummary": {
                "TotalCacheSizeMiB": 8192
            },
            "SupportedRAIDTypes": [
                "RAID0",
                "RAID1",
                "RAID5",
                "RAID6",
                "RAID10",
                "RAID50",
                "RAID60"
            ],
            "Oem": {
                "openUBMC": {
                    "SupportedRAIDLevels": [
                        "RAID0",
                        "RAID1",
                        "RAID5",
                        "RAID6",
                        "RAID10",
                        "RAID50",
                        "RAID60"
                    ],
                    "SupportedModes": [
                        "RAID",
                        "JBOD"
                    ],
                    "VolumeSupported": true,
                    "ReadPolicy": {
                        "Configurable": true,
                        "SupportedPolicy": [
                            "NoReadAhead",
                            "ReadAhead"
                        ]
                    },
                    "WritePolicy": {
                        "Configurable": true,
                        "SupportedPolicy": [
                            "WriteThrough",
                            "WriteBackWithBBU",
                            "WriteBack"
                        ]
                    },
                    "CachePolicy": {
                        "Configurable": true,
                        "SupportedPolicy": [
                            "CachedIO",
                            "DirectIO"
                        ]
                    },
                    "AccessPolicy": {
                        "Configurable": true,
                        "SupportedPolicy": [
                            "ReadWrite",
                            "ReadOnly",
                            "Blocked"
                        ]
                    },
                    "DriveCachePolicy": {
                        "Configurable": true,
                        "SupportedPolicy": [
                            "Unchanged",
                            "Enabled",
                            "Disabled"
                        ]
                    },
                    "AssociatedCard": {
                        "@odata.id": "/redfish/v1/Chassis/1/PCIeDevices/PCIeCard3"
                    },
                    "Mode": "RAID",
                    "CachePinnedState": false,
                    "Type": "SAS3916",
                    "SASAddress": "500062b20f5bfd00",
                    "ConfigurationVersion": "5.2000.00-0541",
                    "PCIeLinkWidth": null,
                    "ReadCachePercent": null,
                    "SpareActivationMode": null,
                    "NoBatteryWriteCacheEnabled": null,
                    "BootDevices": [
                        "Volume239",
                        "None"
                    ],
                    "WriteCachePolicy": null,
                    "MemorySizeMiB": 8192,
                    "MaintainPDFailHistory": true,
                    "CopyBackState": true,
                    "SmarterCopyBackState": false,
                    "JBODState": null,
                    "VolumeConsistencyCheckConfig": {
                        "Enabled": false,
                        "PeriodOfHours": 0,
                        "Rate": "",
                        "AutoRepairEnabled": false,
                        "RunningStatus": "",
                        "TotalVolumeCounts": 0,
                        "CompletedVolumeCounts": 0,
                        "DelayToStart": 0
                    },
                    "OOBSupport": true,
                    "CapacitanceName": "N/A",
                    "CapacitanceStatus": {
                        "State": "Absent",
                        "Health": null
                    },
                    "DriverInfo": {
                        "DriverName": null,
                        "DriverVersion": null
                    },
                    "DDRECCCount": 0,
                    "MinStripeSizeBytes": 65536,
                    "MaxStripeSizeBytes": 1048576,
                    "PHYStatus": [
                        {
                            "RunningDisparityErrorCount": 0,
                            "PhyId": 0,
                            "InvalidDwordCount": 0,
                            "LossDwordSyncCount": 0,
                            "PhyResetProblemCount": 0
                        },
                        {
                            "RunningDisparityErrorCount": 0,
                            "PhyId": 1,
                            "InvalidDwordCount": 0,
                            "LossDwordSyncCount": 0,
                            "PhyResetProblemCount": 0
                        },
                        {
                            "RunningDisparityErrorCount": 0,
                            "PhyId": 2,
                            "InvalidDwordCount": 0,
                            "LossDwordSyncCount": 0,
                            "PhyResetProblemCount": 0
                        },
                        {
                            "RunningDisparityErrorCount": 0,
                            "PhyId": 3,
                            "InvalidDwordCount": 0,
                            "LossDwordSyncCount": 0,
                            "PhyResetProblemCount": 0
                        },
                        {
                            "RunningDisparityErrorCount": 0,
                            "PhyId": 4,
                            "InvalidDwordCount": 0,
                            "LossDwordSyncCount": 0,
                            "PhyResetProblemCount": 0
                        },
                        {
                            "RunningDisparityErrorCount": 0,
                            "PhyId": 5,
                            "InvalidDwordCount": 0,
                            "LossDwordSyncCount": 0,
                            "PhyResetProblemCount": 0
                        },
                        {
                            "RunningDisparityErrorCount": 0,
                            "PhyId": 6,
                            "InvalidDwordCount": 0,
                            "LossDwordSyncCount": 0,
                            "PhyResetProblemCount": 0
                        },
                        {
                            "RunningDisparityErrorCount": 0,
                            "PhyId": 7,
                            "InvalidDwordCount": 0,
                            "LossDwordSyncCount": 0,
                            "PhyResetProblemCount": 0
                        },
                        {
                            "RunningDisparityErrorCount": 0,
                            "PhyId": 8,
                            "InvalidDwordCount": 0,
                            "LossDwordSyncCount": 0,
                            "PhyResetProblemCount": 0
                        },
                        {
                            "RunningDisparityErrorCount": 0,
                            "PhyId": 9,
                            "InvalidDwordCount": 0,
                            "LossDwordSyncCount": 0,
                            "PhyResetProblemCount": 0
                        },
                        {
                            "RunningDisparityErrorCount": 0,
                            "PhyId": 10,
                            "InvalidDwordCount": 0,
                            "LossDwordSyncCount": 0,
                            "PhyResetProblemCount": 0
                        },
                        {
                            "RunningDisparityErrorCount": 0,
                            "PhyId": 11,
                            "InvalidDwordCount": 0,
                            "LossDwordSyncCount": 0,
                            "PhyResetProblemCount": 0
                        },
                        {
                            "RunningDisparityErrorCount": 0,
                            "PhyId": 12,
                            "InvalidDwordCount": 0,
                            "LossDwordSyncCount": 0,
                            "PhyResetProblemCount": 0
                        },
                        {
                            "RunningDisparityErrorCount": 0,
                            "PhyId": 13,
                            "InvalidDwordCount": 0,
                            "LossDwordSyncCount": 0,
                            "PhyResetProblemCount": 0
                        },
                        {
                            "RunningDisparityErrorCount": 0,
                            "PhyId": 14,
                            "InvalidDwordCount": 0,
                            "LossDwordSyncCount": 0,
                            "PhyResetProblemCount": 0
                        },
                        {
                            "RunningDisparityErrorCount": 0,
                            "PhyId": 15,
                            "InvalidDwordCount": 0,
                            "LossDwordSyncCount": 0,
                            "PhyResetProblemCount": 0
                        }
                    ],
                    "BDF": "0000:16:00.0",
                    "VenderID": "0x1000",
                    "DeviceID": "0x10e2",
                    "SubsystemVenderID": "0x1000",
                    "SubsystemDeviceID": "0x4000"
                }
            }
        }
    ],
    "Drives@odata.count": 4,
    "Drives": [
        {
            "@odata.id": "/redfish/v1/Chassis/1/Drives/HDDPlaneDisk2",
            "Id": "HDDPlaneDisk2",
            "Name": "Disk2",
            "MediaType": "HDD",
            "CapacityBytes": 599584145408,
            "Oem": {
                "openUBMC": {
                    "DriveID": 2,
                    "FirmwareStatus": "UnconfiguredGood",
                    "IsEPD": false,
                    "RelatedArrayInfo": null
                }
            }
        },
        {
            "@odata.id": "/redfish/v1/Chassis/1/Drives/HDDPlaneDisk3",
            "Id": "HDDPlaneDisk3",
            "Name": "Disk3",
            "MediaType": "HDD",
            "CapacityBytes": 599584145408,
            "Oem": {
                "openUBMC": {
                    "DriveID": 3,
                    "FirmwareStatus": "UnconfiguredGood",
                    "IsEPD": false,
                    "RelatedArrayInfo": null
                }
            }
        },
        {
            "@odata.id": "/redfish/v1/Chassis/1/Drives/HDDPlaneDisk0",
            "Id": "HDDPlaneDisk0",
            "Name": "Disk0",
            "MediaType": "SSD",
            "CapacityBytes": 479559942144,
            "Oem": {
                "openUBMC": {
                    "DriveID": 0,
                    "FirmwareStatus": "Online",
                    "IsEPD": false,
                    "RelatedArrayInfo": {
                        "Members": [
                            "Disk0"
                        ],
                        "FreeSpaceMiBPerDrive": 0,
                        "TotalFreeSpaceMiB": 0,
                        "FreeBlocksSpaceMiB": [],
                        "NumDrivePerSpan": 1,
                        "VolumeRaidLevel": "RAID0"
                    }
                }
            }
        },
        {
            "@odata.id": "/redfish/v1/Chassis/1/Drives/HDDPlaneDisk1",
            "Id": "HDDPlaneDisk1",
            "Name": "Disk1",
            "MediaType": "HDD",
            "CapacityBytes": 599584145408,
            "Oem": {
                "openUBMC": {
                    "DriveID": 1,
                    "FirmwareStatus": "UnconfiguredGood",
                    "IsEPD": false,
                    "RelatedArrayInfo": null
                }
            }
        }
    ],
    "Controllers": {
        "@odata.id": "/redfish/v1/Systems/1/Storage/RAIDStorage0/Controllers"
    },
    "Volumes": {
        "@odata.id": "/redfish/v1/Systems/1/Storage/RAIDStorage0/Volumes"
    },
    "Actions": {
        "Oem": {
            "openUBMC": {
                "#Storage.RestoreStorageControllerDefaultSettings": {
                    "target": "/redfish/v1/Systems/1/Storage/RAIDStorage0/Actions/Oem/openUBMC/Storage.RestoreStorageControllerDefaultSettings",
                    "@Redfish.ActionInfo": "/redfish/v1/Systems/1/Storage/RAIDStorage0/RestoreStorageControllerDefaultSettingsActionInfo"
                },
                "#Storage.ImportForeignConfig": {
                    "target": "/redfish/v1/Systems/1/Storage/RAIDStorage0/Actions/Oem/openUBMC/Storage.ImportForeignConfig",
                    "@Redfish.ActionInfo": "/redfish/v1/Systems/1/Storage/RAIDStorage0/ImportForeignConfigActionInfo"
                },
                "#Storage.ClearForeignConfig": {
                    "target": "/redfish/v1/Systems/1/Storage/RAIDStorage0/Actions/Oem/openUBMC/Storage.ClearForeignConfig",
                    "@Redfish.ActionInfo": "/redfish/v1/Systems/1/Storage/RAIDStorage0/ClearForeignConfigActionInfo"
                }
            }
        }
    }
}

评审点2:
URI:/redfish/v1/Systems/{ComputerSystemId}/Storage/{StorageId}/Volumes/{VolumeId}
变化类型:新增URI
操作类型: GET
应用场景:获取逻辑盘信息
说明:
1.新增URI相关属性与URI:/redfish/v1/Systems/{ComputerSystemId}/Storages/{StorageId}/Volumes/{VolumeId} 保持一致。
2.同时新增DisplayName、MediaSpanCount、RAIDType、ReadCachePolicy、WriteCachePolicy五个属性

新增属性说明

属性名称 取值类型 操作权限 默认值 取值范围 说明 是否频繁变化并需要屏蔽变化事件 约束
DisplayName string,null ReadOnly 博通卡逻辑盘最大长度15;PMC卡逻辑盘最大长度64;自研卡逻辑盘最大长度20 逻辑磁盘名 需要RAID卡支持此功能配置
MediaSpanCount number,null ReadOnly 1 0-255 逻辑盘包含的子组数 需要RAID卡支持此功能配置
RAIDType string,null ReadOnly RAID0 RAID0,RAID1,RAID5,RAID6,RAID10,RAID50,RAID60 RAID类型 需要RAID卡支持此功能配置
ReadCachePolicy string,null ReadWrite ReadAhead ReadAhead,off,AdaptiveReadAhead 读cache策略 需要RAID卡支持此功能配置
WriteCachePolicy string,null ReadWrite WriteThrough WriteThrough, ProtectedWriteBack, UnprotectedWriteBack 写cache策略 需要RAID卡支持此功能配置

schema说明:
新增schema文件Volume.v1_10_2.json

                "DisplayName": {
                    "description": "A user-configurable string to name the volume.",
                    "longDescription": "This property shall contain a user-configurable string to name the volume.",
                    "readonly": false,
                    "type": [
                        "string",
                        "null"
                    ],
                    "versionAdded": "v1_4_0"
                },
                "MediaSpanCount": {
                    "description": "Indicates the number of media elements used per span in the secondary RAID for a hierarchical RAID type.",
                    "longDescription": "This property shall indicate the number of media elements used per span in the secondary RAID for a hierarchical RAID type.",
                    "readonly": true,
                    "type": [
                        "integer",
                        "null"
                    ],
                    "versionAdded": "v1_4_0"
                },
                "RAIDType": {
                    "anyOf": [
                        {
                            "$ref": "http://redfish.dmtf.org/schemas/swordfish/v1/Volume.json#/definitions/RAIDType"
                        },
                        {
                            "type": "null"
                        }
                    ],
                    "description": "The RAID type of this volume.",
                    "longDescription": "This property shall contain the RAID type of the associated Volume.",
                    "readonly": true,
                    "versionAdded": "v1_3_1"
                },
                "ReadCachePolicy": {
                    "anyOf": [
                        {
                            "$ref": "http://redfish.dmtf.org/schemas/swordfish/v1/Volume.json#/definitions/ReadCachePolicyType"
                        },
                        {
                            "type": "null"
                        }
                    ],
                    "description": "Indicates the read cache policy setting for the Volume.",
                    "longDescription": "This property shall contain a boolean indicator of the read cache policy for the Volume.",
                    "readonly": false,
                    "versionAdded": "v1_4_0"
                },
                "WriteCachePolicy": {
                    "anyOf": [
                        {
                            "$ref": "http://redfish.dmtf.org/schemas/swordfish/v1/Volume.json#/definitions/WriteCachePolicyType"
                        },
                        {
                            "type": "null"
                        }
                    ],
                    "description": "Indicates the write cache policy setting for the Volume.",
                    "longDescription": "This property shall contain a boolean indicator of the write cache policy for the Volume.",
                    "readonly": false,
                    "versionAdded": "v1_4_0"
                },

RspBody响应体示例:

{
    "@odata.context": "/redfish/v1/$metadata#Volume.Volume",
    "@odata.id": "/redfish/v1/Systems/1/Storage/RAIDStorage0/Volumes/LogicalDrive239",
    "@odata.type": "#Volume.v1_10_2.Volume",
    "Id": "LogicalDrive239",
    "Name": "LogicalDrive239",
    "CapacityBytes": 479559942144,
    "VolumeType": "NonRedundant",
    "OptimumIOSizeBytes": 65536,
    "StripSizeBytes": 65536,
    "ReadCachePolicy": "NoReadAhead",
    "WriteCachePolicy": "WriteThrough",
    "RAIDType": "RAID0",
    "MediaSpanCount": 1,
    "DisplayName": "",
    "Status": {
        "State": "Enabled",
        "Oem": {
            "openUBMC": {
                "Severity": "Informational"
            }
        },
        "Health": "OK"
    },
    "Operations": [],
    "Oem": {
        "openUBMC": {
            "State": "Optimal",
            "VolumeName": "",
            "RaidControllerID": 0,
            "VolumeRaidLevel": "RAID0",
            "DefaultReadPolicy": "NoReadAhead",
            "DefaultWritePolicy": "WriteThrough",
            "DefaultCachePolicy": "DirectIO",
            "ConsistencyCheck": false,
            "SpanNumber": 1,
            "NumDrivePerSpan": 1,
            "Spans": [
                {
                    "Drives": [
                        {
                            "@odata.id": "/redfish/v1/Chassis/1/Drives/HDDPlaneDisk0"
                        }
                    ],
                    "SpanName": "Span0"
                }
            ],
            "CurrentReadPolicy": "NoReadAhead",
            "CurrentWritePolicy": "WriteThrough",
            "CurrentCachePolicy": "DirectIO",
            "AccessPolicy": "ReadWrite",
            "BootPriority": "Primary",
            "BootEnable": true,
            "BGIEnable": true,
            "SSDCachecadeVolume": false,
            "SSDCachingEnable": false,
            "AssociatedCacheCadeVolume": [],
            "DriveCachePolicy": "Unchanged",
            "OSDriveName": null,
            "InitializationMode": "UnInit",
            "AccelerationMethod": null,
            "CacheLineSizeKB": null,
            "RebuildState": null
        }
    },
    "Links": {
        "Drives@odata.count": 1,
        "Drives": [
            {
                "@odata.id": "/redfish/v1/Chassis/1/Drives/HDDPlaneDisk0"
            }
        ]
    },
    "Actions": {
        "#Volume.Initialize": {
            "target": "/redfish/v1/Systems/1/Storage/RAIDStorage0/Volumes/LogicalDrive239/Actions/Volume.Initialize",
            "@Redfish.ActionInfo": "/redfish/v1/Systems/1/Storage/RAIDStorage0/Volumes/LogicalDrive239/InitializeActionInfo"
        }
    }
}

评审点3:
URI:/redfish/v1/Chassis/{ChassisId}/Drives/{DriveId}
变化类型:URI属性新增
操作类型: GET
应用场景:获取硬盘信息
说明:
1.新增属性PhysicalLocation、PartNumber、LocationIndicatorActive、DriveFormFactor;
2.新增属性Metrics {@odata.id}
其中@odata.id为:/redfish/v1/Chassis/{ChassisId}/Drives/{DriveId}/Metrics

属性说明

属性名称 取值类型 操作权限 默认值 取值范围 说明 是否频繁变化并需要屏蔽变化事件
PhysicalLocation\PartLocationContext string,null ReadOnly 无特殊限制 阵列中硬盘的相对位置
PartNumber string,null ReadOnly N/A 无特殊限制 硬盘资产部件编号
LocationIndicatorActive bool ReadWrite false false,true 硬盘定位状态
DriveFormFactor string,null ReadOnly Drive3_5, Drive2_5,M2,OEM 硬盘尺寸

schema说明:
新增schema文件drive.v1_21_0.json

                "PhysicalLocation": {
                    "$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Location",
                    "description": "The location of the drive.",
                    "longDescription": "This property shall contain location information of the associated drive.",
                    "versionAdded": "v1_4_0"
                },
                "WriteCacheEnabled": {
                    "description": "An indication of whether the drive write cache is enabled.",
                    "longDescription": "This property shall indicate whether the drive write cache is enabled.",
                    "readonly": false,
                    "type": [
                        "boolean",
                        "null"
                    ],
                    "versionAdded": "v1_7_0"
                },
                "PartNumber": {
                    "description": "The part number for this drive.",
                    "longDescription": "This property shall contain the part number assigned by the organization that is responsible for producing or manufacturing the drive.",
                    "readonly": true,
                    "type": [
                        "string",
                        "null"
                    ]
                },
                "LocationIndicatorActive": {
                    "description": "An indicator allowing an operator to physically locate this resource.",
                    "longDescription": "This property shall contain the state of the indicator used to physically identify or locate this resource.  A write to this property shall update the value of IndicatorLED in this resource, if supported, to reflect the implementation of the locating function.",
                    "readonly": false,
                    "type": [
                        "boolean",
                        "null"
                    ],
                    "versionAdded": "v1_11_0"
                },
                "DriveFormFactor": {
                    "anyOf": [
                        {
                            "$ref": "#/definitions/FormFactor"
                        },
                        {
                            "type": "null"
                        }
                    ],
                    "description": "The form factor of the drive inserted in this slot.",
                    "longDescription": "This property shall contain the form factor of the drive inserted in this slot.",
                    "readonly": true,
                    "versionAdded": "v1_16_0"
                }

RspBody响应体示例:

{
    "@odata.context": "/redfish/v1/$metadata#Drive.Drive",
    "@odata.id": "/redfish/v1/Chassis/1/Drives/HDDPlaneDisk0",
    "@odata.type": "#Drive.v1_21_0.Drive",
    "Id": "HDDPlaneDisk0",
    "Name": "Disk0",
    "Model": "HWE62ST3480L003N",
    "FirmwareVersion": "10B6",
    "Revision": "10B6",
    "Status": {
        "State": "Enabled",
        "Oem": {
            "openUBMC": {
                "Severity": "Informational"
            }
        },
        "Health": "OK"
    },
    "CapacityBytes": 479559942144,
    "BlockSizeBytes": 512,
    "FailurePredicted": false,
    "Protocol": "SATA",
    "MediaType": "SSD",
    "Manufacturer": "HUAWEI",
    "SerialNumber": "034QVV10P7108277",
    "CapableSpeedGbs": 6,
    "NegotiatedSpeedGbs": 6,
    "PredictedMediaLifeLeftPercent": 100,
    "IndicatorLED": "Off",
    "HotspareType": "None",
    "StatusIndicator": "OK",
    "PartNumber": null,
    "LocationIndicatorActive": false,
    "DriveFormFactor": null,
    "Metrics": {
        "@odata.id": "/redfish/v1/Chassis/1/Drives/HDDPlaneDisk0/Metrics"
    },
    "PhysicalLocation": {
        "Info": "Disk0",
        "InfoFormat": "DeviceName",
        "PartLocationContext": ""
    },
    "RotationSpeedRPM": null,
    "Oem": {
        "openUBMC": {
            "DriveID": 0,
            "RebuildState": "DoneOrNotRebuilt",
            "AssociatedResource": null,
            "PatrolState": "DoneOrNotPatrolled",
            "TemperatureCelsius": 37,
            "FirmwareStatus": "Online",
            "IsEPD": false,
            "SpareforLogicalDrives": [],
            "SASAddress": [
                "300062b20f5bfd00",
                "0000000000000000"
            ],
            "PowerState": "Spun Up",
            "Type": "Disk",
            "Position": "HDDPlane",
            "HoursOfPoweredUp": 8455,
            "SASSmartInformation": null,
            "SATASmartInformation": null,
            "CryptoEraseSupported": false,
            "RelatedArrayInfo": {
                "Members": [
                    "Disk0"
                ],
                "FreeSpaceMiBPerDrive": 0,
                "TotalFreeSpaceMiB": 0,
                "FreeBlocksSpaceMiB": [],
                "NumDrivePerSpan": 1,
                "VolumeRaidLevel": "RAID0"
            },
            "SlotNumber": 0,
            "EnclosureDeviceId": 252,
            "BootPriority": "None",
            "BootEnable": false,
            "EstimatedRemainingLifespan": null,
            "BDF": null,
            "RebuildProgress": null
        }
    },
    "Links": {
        "Volumes": [
            {
                "@odata.id": "/redfish/v1/Systems/1/Storages/RAIDStorage0/Volumes/LogicalDrive239"
            }
        ]
    },
    "Actions": {
        "Oem": {
            "openUBMC": {
                "#Drive.CryptoErase": {
                    "target": "/redfish/v1/Chass@odata.contextUs/1/Drives/HDDPlaneDisk0/Actions/Oem/openUBMC/Drive.CryptoErase"
                }
          @odata.context @odata.id
@odata.type     @odata.contextU }
    }
}

评审结论
通过。
1.同意新增URI:/redfish/v1/Systems/{ComputerSystemId}/Storage/{StorageId},获取存储控制器信息,属性功能与URI:/redfish/v1/Systems/{ComputerSystemId}/Storages/{StorageId} 保持一致,支持新增Controllers {@odata.id},其中@odata.id为:/redfish/v1/Systems/{ComputerSystemId}/Storage/{StorageId}/Controllers
2.同意新增URI:/redfish/v1/Systems/{ComputerSystemId}/Storage/{StorageId}/Volumes/{VolumeId},获取逻辑盘信息,属性功能与URI:/redfish/v1/Systems/{ComputerSystemId}/Storages/{StorageId}/Volumes/{VolumeId} 保持一致。支持新增DisplayName(逻辑磁盘名称,类型string)、MediaSpanCount(逻辑盘包含的子组数,类型number)、RAIDType(RAID卡类型,类型string)、ReadCachePolicy(读cache策略,类型string)、WriteCachePolicy(写cache策略,类型string)五个属性。ReadCachePolicy、WriteCachePolicy权限为ReadWrite,其余权限为Readonly
3.同意URI:/redfish/v1/Chassis/{ChassisId}/Drives/{DriveId}新增以下属性PhysicalLocation(当前硬盘所在背板在机箱相对位置,类型string)、PartNumber( 硬盘资产部件编号,类型string)、LocationIndicatorActive(硬盘定位状态,类型bool)、DriveFormFactor( 硬盘尺寸,类型string),以及新增
Metrics {@odata.id},其中@odata.id为:/redfish/v1/Chassis/{ChassisId}/Drives/{DriveId}/Metrics

整篇帖子请参考https://discuss.openubmc.cn/t/topic/3315,更新格式和内容,把需要评审的每个点写清楚

对涉及的内容进行类比修改

评审遗留问题:

1.schema—–版本更新

URI写错,跟协议不一致, 正确的是:

/redfish/v1/Systems/{ComputerSystemId}/Storage/{StorageId}/Volumes/{VolumeId}

类型是object不是string, 协议上面搜: /redfish/v1/Chassis/{ChassisId}/Drives/{DriveId}

1、Links下的Oem不实现就删除

2、把Status里 要实现的属性写出来,不要写通用Status,通用Status里有很多属性,但不是全部都要实现

3、嵌套子资源(比如:/redfish/v1/PowerEquipment/ElectricalBuses)如果没实现,这里不能出现ElectricalBuses属性,如果实现了,把对应的评审链接贴上来

问题1:

这里要再次确认下版本是否真的为1.9.0,当前Storage资源已经演进到1.20.0版本了

问题2:

你前面实现了Systems/{id}下的Storage资源,这里实现的Drives资源确定是挂在Chassis下吗?

Drives也可以挂在Storage下:/redfish/v1/Systems/{ComputerSystemId}/Storage/{StorageId}/Drives/{DriveId}

RAIDType当前规范定义的枚举比较多,要明确下本次实现要支持的枚举范围

WriteCachePolicy 和 ReadCachePolicyType也要明确下支持的枚举范围

FormFactor 要明确支持的枚举范围

更新storage schema 版本到v1_20_0,代码已提交。

帖子手误,已修改帖子。

1.帖子问题,已经修改帖子。
2.NVMeSMART 属性,已经确认是object, 包含二级三级属性,不是odata.id格式。代码不需要修改。

相关PR 已经关闭,和后续的子URI 的实现一起提交代码。

帖子已经添加相关属性的支持范围说明。

当前代码中,Drives资源是挂在Chassis下的。给到的需求就是在Chassis下的Drives URI 里面添加新的属性值支持。Storage 版本已经更新到最新v1_20_0了,代码已经更新提交。


把评审点4相关的从这个帖子摘出去,单独写个帖子评审,因为有部分不确定的实现