summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHemanth Nakkina <nh863p@att.com>2018-08-01 10:42:52 +0530
committerHemanth Nakkina <nh863p@att.com>2018-10-26 14:25:15 +0530
commit81ca8411fef89dcadbc5b3ce79b6f691c76e9dea (patch)
treebd75893c5769e39af205bc681cdf40e7d826ec9c
parent2bbe9a4cf88d0fd9d6d37bbba6923180206cd5d9 (diff)
Add support for BIOS configuration
This spec outlines the details to support BIOS configuration via Drydock. Change-Id: I0fcd480ed03a20a320819482d2d631ab42a492c8
Notes
Notes (review): Code-Review+1: Rodolfo Pacheco <jezogwza@gmail.com> Code-Review+2: Bryan Strassner <bryan.strassner@gmail.com> Code-Review+2: Matt McEuen <matt.mceuen@att.com> Workflow+1: Matt McEuen <matt.mceuen@att.com> Verified+2: Zuul Submitted-by: Zuul Submitted-at: Tue, 30 Oct 2018 18:57:04 +0000 Reviewed-on: https://review.openstack.org/587689 Project: openstack/airship-specs Branch: refs/heads/master
-rw-r--r--specs/approved/drydock_support_bios_configuration.rst224
1 files changed, 224 insertions, 0 deletions
diff --git a/specs/approved/drydock_support_bios_configuration.rst b/specs/approved/drydock_support_bios_configuration.rst
new file mode 100644
index 0000000..25fbf67
--- /dev/null
+++ b/specs/approved/drydock_support_bios_configuration.rst
@@ -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============================================================
13Drydock: Support BIOS configuration using Redfish OOB driver
14============================================================
15
16Proposal to add support for configuring BIOS settings of baremetal node
17via Drydock. This blueprint is intended to extend functionality of redfish
18OOB driver to support BIOS configuration.
19
20Links
21=====
22
23https://storyboard.openstack.org/#!/story/2002912
24
25Problem description
26===================
27
28Currently drydock does not provide a mechanism to configure BIOS settings on
29a baremetal node. The BIOS settings need to be configured manually prior to
30triggering deployment via Airship.
31
32Impacted components
33===================
34
35The following Airship components would be impacted by this solution:
36
37#. Drydock - Updates to Orchestrator actions and Redfish OOB driver
38
39Proposed change
40===============
41
42The idea is to provide user an option to specify the BIOS configuration of
43baremetal nodes as part of HardwareProfile yaml in site definition documents.
44Drydock gets this information from manifest documents and whenever
45Orchestrator action PrepareNodes is triggered, drydock initiates BIOS
46configuration via OOB drivers. As there are no new Orchestrator actions
47introduced, the workflow from Shipyard --> Drydock remains the same.
48
49This spec only supports BIOS configuration via Redfish OOB driver. Documents
50having BIOS configuration with oob type other than Redfish (ipmi, libvirt)
51should result in an error during document validation. This can be achieved by
52adding new Validator in Drydock.
53
54Manifest changes
55----------------
56
57A new parameter ``bios_settings`` will be added to the HardwareProfile. The
58parameter takes a dictionary of strings as its value. Each key/value pair
59corresponds to a BIOS setting that need to be configured. This provides
60the deployment engineers the flexibility to modify the BIOS settings that
61need to be configured on baremetal node.
62
63Sample 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
103Update the HardwareProfile schema to include a new property ``bios_settings``
104of type object. The property should be optional to support backward
105compatibility.
106
107Following will be added as part of HardwareProfile schema properties::
108
109 bios_settings:
110 type: 'object'
111
112Redfish driver updates
113----------------------
114
115Following 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
121To support the above actions, following redfish commands will be added -
122set_bios_settings, get_bios_settings
123
124Redfish 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
137The request and response objects for the above operations differ for vendors
138HP and Dell. Above mentioned request/response objects are for Dell. In case
139of HP the request/response object will be::
140
141 {
142 "setting1": "value1",
143 "setting2": "value2"
144 }
145
146In case of failures in setting BIOS configuration, the Redfish server sends
147the error message along with error code. The ConfigBios action should mark
148the task as failure and add the error message in the task status message.
149
150Orchestrator action updates
151---------------------------
152
153PrepareNodes 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
162PrepareNodes should execute the new OOB driver action as its initial step
163``hd_fields.OrchestratorAction.ConfigBIOS``. PrepareNodes creates subtasks
164to execute ConfigBios action for each node and collects the subtask status
165until drydock timeout ``conf.timeouts.drydock_timeout``. In case of any
166failure of ConfigBios subtask for a node, further driver actions wont be
167executed for that node. This is in sync with the existing design and no
168changes required. ConfigBios action is not retried in case of failures.
169
170Security impact
171---------------
172
173None
174
175Performance impact
176------------------
177
178BIOS configuration update takes around 35 seconds when invoked from a node
179on same rack. This includes establishing a session, running the configuration
180API and logging out the session. Time for system restart is not included.
181Similarly retrieving BIOS configuration takes around 18 seconds.
182
183Alternatives
184------------
185
186This spec only implements BIOS configuration support for Redfish OOB
187driver.
188
189Implementation
190==============
191
192Work 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
206Assignee(s):
207------------
208
209Primary Assignee:
210 Hemanth Nakkina
211
212Other contributors:
213 Gurpreet Singh
214
215Dependencies
216============
217
218This spec depends on ``Introduce Redfish based OOB Driver for Drydock``
219https://storyboard.openstack.org/#!/story/2003007
220
221References
222==========
223
224.. _Redfish_standard: https://www.dmtf.org/standards/redfish