1{
2    "$id": "http://redfish.dmtf.org/schemas/v1/StorageControllerMetrics.v1_0_3.json",
3    "$ref": "#/definitions/StorageControllerMetrics",
4    "$schema": "http://redfish.dmtf.org/schemas/v1/redfish-schema-v1.json",
5    "copyright": "Copyright 2014-2024 DMTF. For the full DMTF copyright policy, see http://www.dmtf.org/about/policies/copyright",
6    "definitions": {
7        "Actions": {
8            "additionalProperties": false,
9            "description": "The available actions for this resource.",
10            "longDescription": "This type shall contain the available actions for this resource.",
11            "patternProperties": {
12                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_]*$": {
13                    "description": "This property shall specify a valid odata or Redfish property.",
14                    "type": [
15                        "array",
16                        "boolean",
17                        "integer",
18                        "number",
19                        "null",
20                        "object",
21                        "string"
22                    ]
23                }
24            },
25            "properties": {
26                "Oem": {
27                    "$ref": "#/definitions/OemActions",
28                    "description": "The available OEM-specific actions for this resource.",
29                    "longDescription": "This property shall contain the available OEM-specific actions for this resource."
30                }
31            },
32            "type": "object"
33        },
34        "EGCriticalWarningSummary": {
35            "additionalProperties": false,
36            "description": "The Endurance Group critical warnings summary.",
37            "longDescription": "The object shall contain the NVMe-defined 'Endurance Group Critical Warning Summary'.",
38            "patternProperties": {
39                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_]*$": {
40                    "description": "This property shall specify a valid odata or Redfish property.",
41                    "type": [
42                        "array",
43                        "boolean",
44                        "integer",
45                        "number",
46                        "null",
47                        "object",
48                        "string"
49                    ]
50                }
51            },
52            "properties": {
53                "NamespacesInReadOnlyMode": {
54                    "description": "An indication of whether namespaces in one or more Endurance Groups are in read-only mode not as a result of a change in the write protection state of a namespace.",
55                    "longDescription": "This property shall indicate whether namespaces in one or more Endurance Groups are in read-only mode not as a result of a change in the write protection state of a namespace.",
56                    "readonly": true,
57                    "type": [
58                        "boolean",
59                        "null"
60                    ]
61                },
62                "ReliabilityDegraded": {
63                    "description": "An indication of whether the reliability of one or more Endurance Groups is degraded due to significant media-related errors or any internal error that degrades the NVM subsystem reliability.",
64                    "longDescription": "This property shall indicate whether the reliability of one or more Endurance Groups is degraded due to significant media-related errors or any internal error that degrades the NVM subsystem reliability.",
65                    "readonly": true,
66                    "type": [
67                        "boolean",
68                        "null"
69                    ]
70                },
71                "SpareCapacityUnderThreshold": {
72                    "description": "An indication of whether the available spare capacity of one or more Endurance Groups is below the threshold.",
73                    "longDescription": "This property shall indicate whether the available spare capacity of one or more Endurance Groups is below the threshold.",
74                    "readonly": true,
75                    "type": [
76                        "boolean",
77                        "null"
78                    ]
79                }
80            },
81            "type": "object"
82        },
83        "NVMeSMARTMetrics": {
84            "additionalProperties": false,
85            "description": "The NVMe SMART metrics.",
86            "longDescription": "This object shall contain the NVMe SMART metrics as defined by the NVMe SMART/Health Information log page.",
87            "patternProperties": {
88                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_]*$": {
89                    "description": "This property shall specify a valid odata or Redfish property.",
90                    "type": [
91                        "array",
92                        "boolean",
93                        "integer",
94                        "number",
95                        "null",
96                        "object",
97                        "string"
98                    ]
99                }
100            },
101            "properties": {
102                "AvailableSparePercent": {
103                    "description": "The normalized percentage of the remaining spare capacity available.",
104                    "longDescription": "This property shall contain the NVMe-defined 'Available Spare', which represents the normalized percentage, `0` to `100`, of the remaining spare capacity available.",
105                    "maximum": 100,
106                    "minimum": 0,
107                    "readonly": true,
108                    "type": [
109                        "number",
110                        "null"
111                    ],
112                    "units": "%"
113                },
114                "AvailableSpareThresholdPercent": {
115                    "description": "The available spare threshold as a normalized percentage.",
116                    "longDescription": "This property shall contain the NVMe-defined 'Available Spare Threshold' as a percentage, `0` to `100`.  When the available spare falls below this value, an asynchronous event completion may occur.",
117                    "maximum": 100,
118                    "minimum": 0,
119                    "readonly": true,
120                    "type": [
121                        "number",
122                        "null"
123                    ],
124                    "units": "%"
125                },
126                "CompositeTemperatureCelsius": {
127                    "description": "The composite temperature (C).",
128                    "longDescription": "This property shall contain the composite temperature in degree Celsius units for this storage controller.  Services shall derive this value from the NVMe-defined 'Composite Temperature', which represents a composite temperature in kelvin units of the controller and namespaces associated with that controller.",
129                    "readonly": true,
130                    "type": [
131                        "number",
132                        "null"
133                    ],
134                    "units": "Cel"
135                },
136                "ControllerBusyTimeMinutes": {
137                    "description": "The total time the controller is busy with I/O commands in minutes.",
138                    "longDescription": "This property shall contain the NVMe-defined 'Controller Busy Time', which represents the total time the controller is busy with I/O commands in minutes.",
139                    "readonly": true,
140                    "type": [
141                        "integer",
142                        "null"
143                    ]
144                },
145                "CriticalCompositeTempTimeMinutes": {
146                    "description": "The amount of time in minutes that the controller has been operational and that the composite temperature has been greater than or equal to the critical composite temperature threshold.",
147                    "longDescription": "This property shall contain the NVMe-defined 'Critical Composite Temperature Time', which represents the amount of time in minutes that the controller has been operational and that the composite temperature has been greater than or equal to the critical composite temperature threshold.",
148                    "readonly": true,
149                    "type": [
150                        "integer",
151                        "null"
152                    ]
153                },
154                "CriticalWarnings": {
155                    "$ref": "http://redfish.dmtf.org/schemas/v1/StorageController.json#/definitions/NVMeSMARTCriticalWarnings",
156                    "description": "The NVMe SMART critical warnings.",
157                    "longDescription": "The property shall contain the NVMe-defined 'Critical Warning'."
158                },
159                "DataUnitsRead": {
160                    "description": "The number of 512 byte data units the host has read from the controller as part of processing a SMART Data Units Read Command in units of one thousand.",
161                    "longDescription": "This property shall contain the NVMe-defined 'Data Units Read', which represents the number of 512 byte data units the host has read from the controller as part of processing a SMART Data Units Read Command in units of one thousand.",
162                    "readonly": true,
163                    "type": [
164                        "integer",
165                        "null"
166                    ]
167                },
168                "DataUnitsWritten": {
169                    "description": "The number of 512 byte data units the host has written to the controller as part of processing a User Data Out Command in units of one thousand.",
170                    "longDescription": "This property shall contain the NVMe-defined 'Data Units Written', which represents the number of 512 byte data units the host has written to the controller as part of processing a User Data Out Command in units of one thousand.",
171                    "readonly": true,
172                    "type": [
173                        "integer",
174                        "null"
175                    ]
176                },
177                "EGCriticalWarningSummary": {
178                    "$ref": "#/definitions/EGCriticalWarningSummary",
179                    "description": "The Endurance Group critical warnings summary.",
180                    "longDescription": "The property shall contain the NVMe-defined 'Endurance Group Critical Warning Summary'."
181                },
182                "HostReadCommands": {
183                    "description": "The number of SMART Host Read Commands completed by the controller.",
184                    "longDescription": "This property shall contain the NVMe-defined 'Host Read Commands', which represents the number of SMART Host Read Commands completed by the controller.",
185                    "readonly": true,
186                    "type": [
187                        "integer",
188                        "null"
189                    ]
190                },
191                "HostWriteCommands": {
192                    "description": "The number of User Data Out Commands completed by the controller.",
193                    "longDescription": "This property shall contain the NVMe-defined 'Host Write Commands', which represents the number of User Data Out Commands completed by the controller.",
194                    "readonly": true,
195                    "type": [
196                        "integer",
197                        "null"
198                    ]
199                },
200                "MediaAndDataIntegrityErrors": {
201                    "description": "The number of occurrences where the controller detected an unrecovered data integrity error.",
202                    "longDescription": "This property shall contain the NVMe-defined 'Media and Data Integrity Errors', which represents the number of occurrences where the controller detected an unrecovered data integrity error.",
203                    "readonly": true,
204                    "type": [
205                        "integer",
206                        "null"
207                    ]
208                },
209                "NumberOfErrorInformationLogEntries": {
210                    "description": "The number of error information log entries over the life of the controller.",
211                    "longDescription": "This property shall contain the NVMe-defined 'Number of Error Information Log Entries', which represents the number of error information log entries over the life of the controller.",
212                    "readonly": true,
213                    "type": [
214                        "integer",
215                        "null"
216                    ]
217                },
218                "PercentageUsed": {
219                    "description": "The percentage of the NVM subsystem life used.",
220                    "longDescription": "This property shall contain the NVMe-defined 'Percentage Used', which represents a vendor-specific estimate of the percentage of the NVM subsystem life used based on the actual usage and the manufacturer's prediction of NVM life.  A value of `100` indicates that the estimated endurance of the NVM in the NVM subsystem has been consumed, but this may not indicate an NVM subsystem failure.  The value is allowed to exceed `100`.  Percentages greater than `254` shall be represented as `255`.",
221                    "maximum": 255,
222                    "minimum": 0,
223                    "readonly": true,
224                    "type": [
225                        "number",
226                        "null"
227                    ],
228                    "units": "%"
229                },
230                "PowerCycles": {
231                    "description": "The number of power cycles.",
232                    "longDescription": "This property shall contain the NVMe-defined 'Power Cycles', which represents the number of power cycles.",
233                    "readonly": true,
234                    "type": [
235                        "integer",
236                        "null"
237                    ]
238                },
239                "PowerOnHours": {
240                    "description": "The number of power-on hours.",
241                    "longDescription": "This property shall contain the NVMe-defined 'Power On Hours', which represents the number of power-on hours.",
242                    "readonly": true,
243                    "type": [
244                        "number",
245                        "null"
246                    ]
247                },
248                "TemperatureSensorsCelsius": {
249                    "description": "The temperature sensor readings in degree Celsius units for this storage controller.",
250                    "items": {
251                        "type": [
252                            "number",
253                            "null"
254                        ]
255                    },
256                    "longDescription": "This property shall contain an array of temperature sensor readings in degree Celsius units for this storage controller.  Services shall derive each array member from the NVMe-defined 'Temperature Sensor' values, which represent a temperature sensor reading in kelvin units.",
257                    "readonly": true,
258                    "type": "array",
259                    "units": "Cel"
260                },
261                "ThermalMgmtTemp1TotalTimeSeconds": {
262                    "description": "The number of seconds the controller transitioned to lower power states or performed vendor-specific thermal-management actions while minimizing the impact on performance in order to attempt to reduce the composite temperature.",
263                    "longDescription": "This property shall contain the NVMe-defined 'Total Time For Thermal Management Temperature 1', which represents the number of seconds the controller transitioned to lower power states or performed vendor-specific thermal-management actions while minimizing the impact on performance in order to attempt to reduce the composite temperature.",
264                    "readonly": true,
265                    "type": [
266                        "integer",
267                        "null"
268                    ]
269                },
270                "ThermalMgmtTemp1TransitionCount": {
271                    "description": "The number of times the controller transitioned to lower power states or performed vendor-specific thermal-management actions while minimizing the impact on performance in order to attempt to reduce the composite temperature.",
272                    "longDescription": "This property shall contain the NVMe-defined 'Thermal Management Temperature 1 Transition Count', which represents the number of times the controller transitioned to lower power states or performed vendor-specific thermal-management actions while minimizing the impact on performance in order to attempt to reduce the composite temperature.",
273                    "readonly": true,
274                    "type": [
275                        "integer",
276                        "null"
277                    ]
278                },
279                "ThermalMgmtTemp2TotalTimeSeconds": {
280                    "description": "The number of seconds the controller transitioned to lower power states or performed vendor-specific thermal-management actions regardless of the impact on performance in order to attempt to reduce the composite temperature.",
281                    "longDescription": "This property shall contain the NVMe-defined 'Total Time For Thermal Management Temperature 2', which represents the number of seconds the controller transitioned to lower power states or performed vendor-specific thermal-management actions regardless of the impact on performance in order to attempt to reduce the composite temperature.",
282                    "readonly": true,
283                    "type": [
284                        "integer",
285                        "null"
286                    ]
287                },
288                "ThermalMgmtTemp2TransitionCount": {
289                    "description": "The number of times the controller transitioned to lower power states or performed vendor-specific thermal-management actions regardless of the impact on performance in order to attempt to reduce the composite temperature.",
290                    "longDescription": "This property shall contain the NVMe-defined 'Thermal Management Temperature 2 Transition Count', which represents the number of times the controller transitioned to lower power states or performed vendor-specific thermal-management actions regardless of the impact on performance in order to attempt to reduce the composite temperature.",
291                    "readonly": true,
292                    "type": [
293                        "integer",
294                        "null"
295                    ]
296                },
297                "UnsafeShutdowns": {
298                    "description": "The number of unsafe shutdowns.",
299                    "longDescription": "This property shall contain the NVMe-defined 'Unsafe Shutdowns', which represents the number of times when the controller does not report it is safe to power down prior to loss of main power.",
300                    "readonly": true,
301                    "type": [
302                        "integer",
303                        "null"
304                    ]
305                },
306                "WarningCompositeTempTimeMinutes": {
307                    "description": "The amount of time in minutes that the controller has been operational and that the composite temperature has been greater than or equal to the warning composite temperature threshold.",
308                    "longDescription": "This property shall contain the NVMe-defined 'Warning Composite Temperature Time', which represents the amount of time in minutes that the controller has been operational and that the composite temperature has been greater than or equal to the warning composite temperature threshold.",
309                    "readonly": true,
310                    "type": [
311                        "integer",
312                        "null"
313                    ]
314                }
315            },
316            "type": "object"
317        },
318        "OemActions": {
319            "additionalProperties": true,
320            "description": "The available OEM-specific actions for this resource.",
321            "longDescription": "This type shall contain the available OEM-specific actions for this resource.",
322            "patternProperties": {
323                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_]*$": {
324                    "description": "This property shall specify a valid odata or Redfish property.",
325                    "type": [
326                        "array",
327                        "boolean",
328                        "integer",
329                        "number",
330                        "null",
331                        "object",
332                        "string"
333                    ]
334                }
335            },
336            "properties": {},
337            "type": "object"
338        },
339        "StorageControllerMetrics": {
340            "additionalProperties": false,
341            "description": "The usage and health statistics for a storage controller.",
342            "longDescription": "The `StorageControllerMetrics` schema shall contain the usage and health statistics for a storage controller in a Redfish implementation.",
343            "patternProperties": {
344                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_]*$": {
345                    "description": "This property shall specify a valid odata or Redfish property.",
346                    "type": [
347                        "array",
348                        "boolean",
349                        "integer",
350                        "number",
351                        "null",
352                        "object",
353                        "string"
354                    ]
355                }
356            },
357            "properties": {
358                "@odata.context": {
359                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata-v4.json#/definitions/context"
360                },
361                "@odata.etag": {
362                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata-v4.json#/definitions/etag"
363                },
364                "@odata.id": {
365                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata-v4.json#/definitions/id"
366                },
367                "@odata.type": {
368                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata-v4.json#/definitions/type"
369                },
370                "Actions": {
371                    "$ref": "#/definitions/Actions",
372                    "description": "The available actions for this resource.",
373                    "longDescription": "This property shall contain the available actions for this resource."
374                },
375                "CorrectableECCErrorCount": {
376                    "description": "The number of correctable errors for the lifetime of the memory of the storage controller.",
377                    "longDescription": "This property shall contain the number of correctable errors for the lifetime of memory of the storage controller.",
378                    "readonly": true,
379                    "type": [
380                        "integer",
381                        "null"
382                    ]
383                },
384                "CorrectableParityErrorCount": {
385                    "description": "The number of correctable parity errors for the lifetime of the memory of the storage controller.",
386                    "longDescription": "This property shall contain the number of correctable errors for the lifetime of memory of the storage controller.",
387                    "readonly": true,
388                    "type": [
389                        "integer",
390                        "null"
391                    ]
392                },
393                "Description": {
394                    "anyOf": [
395                        {
396                            "$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Description"
397                        },
398                        {
399                            "type": "null"
400                        }
401                    ],
402                    "readonly": true
403                },
404                "Id": {
405                    "$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Id",
406                    "readonly": true
407                },
408                "NVMeSMART": {
409                    "$ref": "http://redfish.dmtf.org/schemas/v1/StorageControllerMetrics.json#/definitions/NVMeSMARTMetrics",
410                    "description": "The NVMe SMART metrics for this storage controller.",
411                    "longDescription": "This property shall contain the NVMe SMART metrics for this storage controller as defined by the NVMe SMART/Health Information log page.  This property shall only be present for NVMe storage controllers."
412                },
413                "Name": {
414                    "$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Name",
415                    "readonly": true
416                },
417                "Oem": {
418                    "$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Oem",
419                    "description": "The OEM extension property.",
420                    "longDescription": "This property shall contain the OEM extensions.  All values for properties that this object contains shall conform to the Redfish Specification-described requirements."
421                },
422                "StateChangeCount": {
423                    "description": "The number of state changes for this storage controller.",
424                    "longDescription": "This property shall contain the number of times the `State` property within the `Status` property of the parent `StorageController` resource changed.",
425                    "readonly": true,
426                    "type": [
427                        "integer",
428                        "null"
429                    ]
430                },
431                "UncorrectableECCErrorCount": {
432                    "description": "The number of uncorrectable errors for the lifetime of the memory of the storage controller.",
433                    "longDescription": "This property shall contain the number of uncorrectable errors for the lifetime of memory of the storage controller.",
434                    "readonly": true,
435                    "type": [
436                        "integer",
437                        "null"
438                    ]
439                },
440                "UncorrectableParityErrorCount": {
441                    "description": "The number of uncorrectable parity errors for the lifetime of the memory of the storage controller.",
442                    "longDescription": "This property shall contain the number of uncorrectable errors for the lifetime of memory of the storage controller.",
443                    "readonly": true,
444                    "type": [
445                        "integer",
446                        "null"
447                    ]
448                }
449            },
450            "required": [
451                "@odata.id",
452                "@odata.type",
453                "Id",
454                "Name"
455            ],
456            "type": "object"
457        }
458    },
459    "language": "en",
460    "owningEntity": "DMTF",
461    "release": "2023.1",
462    "title": "#StorageControllerMetrics.v1_0_3.StorageControllerMetrics"
463}