From 43ccb17e15c564b30fc3a924d9acf80c209bea76 Mon Sep 17 00:00:00 2001
From: Steve Baker <sbaker@redhat.com>
Date: Fri, 20 Oct 2023 11:04:11 +1300
Subject: [PATCH] [api-ref] Add firmware fields to driver API

Change-Id: Ic97833fc836afd643d296fd98cf204317f55dd51
---
 api-ref/source/baremetal-api-v1-drivers.inc         | 12 ++++++++++++
 api-ref/source/parameters.yaml                      | 13 +++++++++++++
 api-ref/source/samples/driver-get-response.json     |  4 ++++
 .../samples/drivers-list-detail-response.json       |  8 ++++++++
 4 files changed, 37 insertions(+)

diff --git a/api-ref/source/baremetal-api-v1-drivers.inc b/api-ref/source/baremetal-api-v1-drivers.inc
index c680aa0ec3..a8bde33fd8 100644
--- a/api-ref/source/baremetal-api-v1-drivers.inc
+++ b/api-ref/source/baremetal-api-v1-drivers.inc
@@ -82,12 +82,17 @@ drivers supported by this Ironic service.
   If the request has the "detail" URL parameter set to true, each
   driver will also include the following fields.
 
+.. versionadded:: 1.86
+  Introduced the ``default_firmware_interface`` and
+  ``enabled_firmware_interfaces`` fields.
+
 .. rest_parameters:: parameters.yaml
 
    - default_bios_interface: default_bios_interface
    - default_boot_interface: default_boot_interface
    - default_console_interface: default_console_interface
    - default_deploy_interface: default_deploy_interface
+   - default_firmware_interface: default_firmware_interface
    - default_inspect_interface: default_inspect_interface
    - default_management_interface: default_management_interface
    - default_network_interface: default_network_interface
@@ -100,6 +105,7 @@ drivers supported by this Ironic service.
    - enabled_boot_interfaces: enabled_boot_interfaces
    - enabled_console_interfaces: enabled_console_interfaces
    - enabled_deploy_interfaces: enabled_deploy_interfaces
+   - enabled_firmware_interfaces: enabled_firmware_interfaces
    - enabled_inspect_interfaces: enabled_inspect_interfaces
    - enabled_management_interfaces: enabled_management_interfaces
    - enabled_network_interfaces: enabled_network_interfaces
@@ -132,6 +138,10 @@ Shows details for a driver.
 .. versionadded:: 1.77
   Added ``fields`` selector to query for particular fields.
 
+.. versionadded:: 1.86
+  Introduced the ``default_firmware_interface`` and
+  ``enabled_firmware_interfaces`` fields.
+
 Normal response codes: 200
 
 Request
@@ -154,6 +164,7 @@ Response Parameters
    - default_boot_interface: default_boot_interface
    - default_console_interface: default_console_interface
    - default_deploy_interface: default_deploy_interface
+   - default_firmware_interface: default_firmware_interface
    - default_inspect_interface: default_inspect_interface
    - default_management_interface: default_management_interface
    - default_network_interface: default_network_interface
@@ -166,6 +177,7 @@ Response Parameters
    - enabled_boot_interfaces: enabled_boot_interfaces
    - enabled_console_interfaces: enabled_console_interfaces
    - enabled_deploy_interfaces: enabled_deploy_interfaces
+   - enabled_firmware_interfaces: enabled_firmware_interfaces
    - enabled_inspect_interfaces: enabled_inspect_interfaces
    - enabled_management_interfaces: enabled_management_interfaces
    - enabled_network_interfaces: enabled_network_interfaces
diff --git a/api-ref/source/parameters.yaml b/api-ref/source/parameters.yaml
index 3109b8d0ff..7d5992a8df 100644
--- a/api-ref/source/parameters.yaml
+++ b/api-ref/source/parameters.yaml
@@ -760,6 +760,13 @@ default_deploy_interface:
   in: body
   required: true
   type: string
+default_firmware_interface:
+  description: |
+    The default firmware interface used for a node with a dynamic driver, if no
+    firmware interface is specified for the node.
+  in: body
+  required: true
+  type: string
 default_inspect_interface:
   description: |
     The default inspection interface used for a node with a dynamic driver, if
@@ -944,6 +951,12 @@ enabled_deploy_interfaces:
   in: body
   required: true
   type: list
+enabled_firmware_interfaces:
+  description: |
+    The enabled firmware interfaces for this driver.
+  in: body
+  required: true
+  type: list
 enabled_inspect_interfaces:
   description: |
     The enabled inspection interfaces for this driver.
diff --git a/api-ref/source/samples/driver-get-response.json b/api-ref/source/samples/driver-get-response.json
index 14175beabc..ef60e713d1 100644
--- a/api-ref/source/samples/driver-get-response.json
+++ b/api-ref/source/samples/driver-get-response.json
@@ -3,6 +3,7 @@
   "default_boot_interface": "pxe",
   "default_console_interface": "no-console",
   "default_deploy_interface": "direct",
+  "default_firmware_interface": "no-firmware",
   "default_inspect_interface": "no-inspect",
   "default_management_interface": "ipmitool",
   "default_network_interface": "flat",
@@ -24,6 +25,9 @@
     "ansible",
     "direct"
   ],
+  "enabled_firmware_interface": [
+    "no-firmware"
+  ],
   "enabled_inspect_interfaces": [
     "no-inspect"
   ],
diff --git a/api-ref/source/samples/drivers-list-detail-response.json b/api-ref/source/samples/drivers-list-detail-response.json
index 3ba03200ba..1a9e86390c 100644
--- a/api-ref/source/samples/drivers-list-detail-response.json
+++ b/api-ref/source/samples/drivers-list-detail-response.json
@@ -5,6 +5,7 @@
       "default_boot_interface": null,
       "default_console_interface": null,
       "default_deploy_interface": null,
+      "default_firmware_interface": null,
       "default_inspect_interface": null,
       "default_management_interface": null,
       "default_network_interface": null,
@@ -17,6 +18,7 @@
       "enabled_boot_interfaces": null,
       "enabled_console_interfaces": null,
       "enabled_deploy_interfaces": null,
+      "enabled_firmware_interfaces": null,
       "enabled_inspect_interfaces": null,
       "enabled_management_interfaces": null,
       "enabled_network_interfaces": null,
@@ -56,6 +58,7 @@
       "default_boot_interface": null,
       "default_console_interface": null,
       "default_deploy_interface": null,
+      "default_firmware_interface": null,
       "default_inspect_interface": null,
       "default_management_interface": null,
       "default_network_interface": null,
@@ -68,6 +71,7 @@
       "enabled_boot_interfaces": null,
       "enabled_console_interfaces": null,
       "enabled_deploy_interfaces": null,
+      "enabled_firmware_interfaces": null,
       "enabled_inspect_interfaces": null,
       "enabled_management_interfaces": null,
       "enabled_network_interfaces": null,
@@ -107,6 +111,7 @@
       "default_boot_interface": "pxe",
       "default_console_interface": "no-console",
       "default_deploy_interface": "direct",
+      "default_firmware_interface": "no-firmware",
       "default_inspect_interface": "no-inspect",
       "default_management_interface": "ipmitool",
       "default_network_interface": "flat",
@@ -128,6 +133,9 @@
         "ansible",
         "direct"
       ],
+      "enabled_firmware_interface": [
+        "no-firmware"
+      ],
       "enabled_inspect_interfaces": [
         "no-inspect"
       ],