1description: >
2    Implement to provide drive state management.
3
4properties:
5    - name: Rebuilding
6      type: boolean
7      default: false
8      description: >
9          Describes if the drive is currently rebuilding.
10    - name: RequestedDriveTransition
11      type: enum[self.Transition]
12      default: "NotSupported"
13      description: >
14          The desired Drive transition
15    - name: CurrentDriveState
16      type: enum[self.DriveState]
17      default: "Unknown"
18      description: >
19          The current state of the Drive and is a read-only property.
20      flags:
21          - readonly
22    - name: LastRebootTime
23      type: uint64
24      default: maxint
25      description: >
26          Time when the Drive last rebooted represented in EpochTime.
27          The time reference should be based on the BMC's time.
28          If not supported, it will be represented as maxint.
29      flags:
30          - readonly
31
32enumerations:
33    - name: Transition
34      description: >
35          The desired transition for the Drive
36      values:
37          - name: "Reboot"
38            description: >
39                The Drive should be rebooted.
40          - name: "HardReboot"
41            description: >
42                The Drive should be non-gracefully rebooted.
43          - name: "Powercycle"
44            description: >
45                The Drive should be powercycled.
46          - name: "None"
47            description: >
48                No transition is in progress.
49          - name: "NotSupported"
50            description: >
51                Transition request is not supported.
52
53    - name: DriveState
54      description: >
55          The current state of the Drive
56      values:
57          - name: "Unknown"
58            description: >
59                The Drive State is unknown.
60          - name: "Ready"
61            description: >
62                Ready implies all services started and are running successfully
63          - name: "NotReady"
64            description: >
65                Not ready implies not all services have started or are not
66                running successfully
67          - name: "Offline"
68            description: >
69                The Drive is ready, but waiting for external action to enable it
70          - name: "Debug"
71            description: >
72                The Drive is ready and in debug mode. The functionalities might
73                be limited
74          - name: "UpdateInProgress"
75            description: >
76                UpdateInProgress implies the Drive is in firmware update mode.
77                Current DriveState will be set to "UpdateInProgress" while
78                starting firmware download and reset to "Ready", once activation
79                is done or error occurs during update process.
80