Browse Source

Add support for BIOS configuration

This spec outlines the details to support BIOS configuration via
Drydock.

Change-Id: I0fcd480ed03a20a320819482d2d631ab42a492c8
Hemanth Nakkina 8 months ago
parent
commit
81ca8411fe
1 changed files with 224 additions and 0 deletions
  1. 224
    0
      specs/approved/drydock_support_bios_configuration.rst

+ 224
- 0
specs/approved/drydock_support_bios_configuration.rst View File

@@ -0,0 +1,224 @@
1
+..
2
+  This work is licensed under a Creative Commons Attribution 3.0 Unported
3
+  License.
4
+
5
+  http://creativecommons.org/licenses/by/3.0/legalcode
6
+
7
+.. index::
8
+   single: drydock
9
+   single: redfish
10
+   single: BIOS configuration
11
+
12
+============================================================
13
+Drydock: Support BIOS configuration using Redfish OOB driver
14
+============================================================
15
+
16
+Proposal to add support for configuring BIOS settings of baremetal node
17
+via Drydock. This blueprint is intended to extend functionality of redfish
18
+OOB driver to support BIOS configuration.
19
+
20
+Links
21
+=====
22
+
23
+https://storyboard.openstack.org/#!/story/2002912
24
+
25
+Problem description
26
+===================
27
+
28
+Currently drydock does not provide a mechanism to configure BIOS settings on
29
+a baremetal node. The BIOS settings need to be configured manually prior to
30
+triggering deployment via Airship.
31
+
32
+Impacted components
33
+===================
34
+
35
+The following Airship components would be impacted by this solution:
36
+
37
+#. Drydock - Updates to Orchestrator actions and Redfish OOB driver
38
+
39
+Proposed change
40
+===============
41
+
42
+The idea is to provide user an option to specify the BIOS configuration of
43
+baremetal nodes as part of HardwareProfile yaml in site definition documents.
44
+Drydock gets this information from manifest documents and whenever
45
+Orchestrator action PrepareNodes is triggered, drydock initiates BIOS
46
+configuration via OOB drivers. As there are no new Orchestrator actions
47
+introduced, the workflow from Shipyard --> Drydock remains the same.
48
+
49
+This spec only supports BIOS configuration via Redfish OOB driver. Documents
50
+having BIOS configuration with oob type other than Redfish (ipmi, libvirt)
51
+should result in an error during document validation. This can be achieved by
52
+adding new Validator in Drydock.
53
+
54
+Manifest changes
55
+----------------
56
+
57
+A new parameter ``bios_settings`` will be added to the HardwareProfile. The
58
+parameter takes a dictionary of strings as its value. Each key/value pair
59
+corresponds to a BIOS setting that need to be configured. This provides
60
+the deployment engineers the flexibility to modify the BIOS settings that
61
+need to be configured on baremetal node.
62
+
63
+Sample HardwareProfile with bios_settings::
64
+
65
+    ---
66
+    schema: 'drydock/HardwareProfile/v1'
67
+    metadata:
68
+      schema: 'metadata/Document/v1'
69
+      name: dell_r640_test
70
+      storagePolicy: 'cleartext'
71
+      layeringDefinition:
72
+        abstract: false
73
+        layer: global
74
+    data:
75
+      vendor: 'Dell'
76
+      generation: '8'
77
+      hw_version: '3'
78
+      bios_version: '2.2.3'
79
+      boot_mode: bios
80
+      bootstrap_protocol: pxe
81
+      pxe_interface: 0
82
+      bios_settings:
83
+        BootMode: Bios
84
+        BootSeqRetry: Disabled
85
+        InternalUsb: Off
86
+        SriovGlobalEnable: Disabled
87
+        SysProfile: PerfOptimized
88
+        AcPwrRcvry: Last
89
+        AcPwrRcvryDelay: Immediate
90
+      device_aliases:
91
+        pxe_nic01:
92
+          # eno3
93
+          address: '0000:01:00.0'
94
+          dev_type: 'Gig NIC'
95
+          bus_type: 'pci'
96
+      cpu_sets:
97
+        kvm: '4-43,48-87'
98
+      hugepages:
99
+        dpdk:
100
+          size: '1G'
101
+          count: 300
102
+
103
+Update the HardwareProfile schema to include a new property ``bios_settings``
104
+of type object. The property should be optional to support backward
105
+compatibility.
106
+
107
+Following will be added as part of HardwareProfile schema properties::
108
+
109
+    bios_settings:
110
+      type: 'object'
111
+
112
+Redfish driver updates
113
+----------------------
114
+
115
+Following OOB driver actions are introduced as part of this spec.
116
+
117
+#. hd_fields.OrchestratorAction.ConfigBIOS
118
+   To configure the BIOS settings on the node based on HardwareProfile
119
+   manifest document
120
+
121
+To support the above actions, following redfish commands will be added -
122
+set_bios_settings, get_bios_settings
123
+
124
+Redfish rest api calls to handle the above commands::
125
+
126
+    Command:   get_bios_settings
127
+    Request:   GET https://<OOB IP>/redfish/v1/Systems/<System_name>/Bios
128
+    Response:  dict["Attributes"]
129
+
130
+    Command:   set_bios_settings
131
+    Request:   PATCH https://<OOB IP>/redfish/v1/Systems/<System_name>/Bios/Settings
132
+               { "Attributes": {
133
+                   "setting1": "value1",
134
+                   "setting2": "value2"
135
+               }}
136
+
137
+The request and response objects for the above operations differ for vendors
138
+HP and Dell. Above mentioned request/response objects are for Dell. In case
139
+of HP the request/response object will be::
140
+
141
+   {
142
+       "setting1": "value1",
143
+       "setting2": "value2"
144
+   }
145
+
146
+In case of failures in setting BIOS configuration, the Redfish server sends
147
+the error message along with error code. The ConfigBios action should mark
148
+the task as failure and add the error message in the task status message.
149
+
150
+Orchestrator action updates
151
+---------------------------
152
+
153
+PrepareNodes Action currently run the following driver actions in sequence
154
+
155
+#. hd_fields.OrchestratorAction.SetNodeBoot on OOB driver
156
+   To set the boot mode to PXE
157
+#. hd_fields.OrchestratorAction.PowerCycleNode on OOB driver
158
+   To powercycle the node
159
+#. hd_fields.OrchestratorAction.IdentifyNode on Node driver
160
+   To identify the node in node driver like maas
161
+
162
+PrepareNodes should execute the new OOB driver action as its initial step
163
+``hd_fields.OrchestratorAction.ConfigBIOS``. PrepareNodes creates subtasks
164
+to execute ConfigBios action for each node and collects the subtask status
165
+until drydock timeout ``conf.timeouts.drydock_timeout``. In case of any
166
+failure of ConfigBios subtask for a node, further driver actions wont be
167
+executed for that node. This is in sync with the existing design and no
168
+changes required. ConfigBios action is not retried in case of failures.
169
+
170
+Security impact
171
+---------------
172
+
173
+None
174
+
175
+Performance impact
176
+------------------
177
+
178
+BIOS configuration update takes around 35 seconds when invoked from a node
179
+on same rack. This includes establishing a session, running the configuration
180
+API and logging out the session. Time for system restart is not included.
181
+Similarly retrieving BIOS configuration takes around 18 seconds.
182
+
183
+Alternatives
184
+------------
185
+
186
+This spec only implements BIOS configuration support for Redfish OOB
187
+driver.
188
+
189
+Implementation
190
+==============
191
+
192
+Work Items
193
+----------
194
+
195
+- Update Hardware profile schema to support new attribute bios_setting
196
+
197
+- Update Hardware profile objects
198
+
199
+- Update Orchestrator action PrepareNodes to call OOB driver for BIOS
200
+  configuration
201
+
202
+- Update Redfish OOB driver to support new action ConfigBIOS
203
+
204
+- Add unit test cases
205
+
206
+Assignee(s):
207
+------------
208
+
209
+Primary Assignee:
210
+  Hemanth Nakkina
211
+
212
+Other contributors:
213
+  Gurpreet Singh
214
+
215
+Dependencies
216
+============
217
+
218
+This spec depends on ``Introduce Redfish based OOB Driver for Drydock``
219
+https://storyboard.openstack.org/#!/story/2003007
220
+
221
+References
222
+==========
223
+
224
+.. _Redfish_standard: https://www.dmtf.org/standards/redfish

Loading…
Cancel
Save