From 1e25f60fd3302a851171229c9bdcf71a563b40f5 Mon Sep 17 00:00:00 2001
From: Ilya Etingof <etingof@gmail.com>
Date: Wed, 6 Nov 2019 17:04:35 +0100
Subject: [PATCH] Ensure `isolinux.bin` is present and configured in devstack

When devstack boots a node over virtual media in BIOS boot mode,
`isolinux.bin` boot loader needs to be present for grilling hybrid
ISO images.

This patch makes devstack pulling necessary packages and configure
ironic accordingly.

Change-Id: I2f4e582aa05fc54610a4c43695124219714368c2
---
 devstack/files/debs/ironic | 1 +
 devstack/files/rpms/ironic | 1 +
 devstack/lib/ironic        | 5 +++++
 3 files changed, 7 insertions(+)

diff --git a/devstack/files/debs/ironic b/devstack/files/debs/ironic
index e769a2d7f9..e9907b0be5 100644
--- a/devstack/files/debs/ironic
+++ b/devstack/files/debs/ironic
@@ -15,6 +15,7 @@ docker.io
 ipmitool
 iptables
 ipxe
+isolinux
 gnupg
 libguestfs0
 libguestfs-tools
diff --git a/devstack/files/rpms/ironic b/devstack/files/rpms/ironic
index ebc75c3d71..8ac5f7acc0 100644
--- a/devstack/files/rpms/ironic
+++ b/devstack/files/rpms/ironic
@@ -14,6 +14,7 @@ openvswitch
 sgabios
 shellinabox
 syslinux
+syslinux-nonlinux
 tftp-server
 xinetd
 squashfs-tools
diff --git a/devstack/lib/ironic b/devstack/lib/ironic
index 0d99f1cef8..32cecf6ddb 100644
--- a/devstack/lib/ironic
+++ b/devstack/lib/ironic
@@ -1566,6 +1566,11 @@ function configure_ironic_conductor {
     iniset $IRONIC_CONF_FILE dhcp dhcp_provider $IRONIC_DHCP_PROVIDER
 
     iniset $IRONIC_CONF_FILE deploy default_boot_option $IRONIC_DEFAULT_BOOT_OPTION
+
+    isolinux=$(find -L /usr /opt /etc -type f -name "isolinux.bin" | head -1)
+    if [[ -n "$isolinux" ]]; then
+        iniset $IRONIC_CONF_FILE DEFAULT isolinux_bin "$isolinux"
+    fi
 }
 
 # create_ironic_cache_dir() - Part of the init_ironic() process