From 053965c6db3e2fefc1d05b4b57c9b7618c817bb9 Mon Sep 17 00:00:00 2001
From: Derek Higgins <derekh@redhat.com>
Date: Wed, 12 Dec 2018 12:59:39 +0000
Subject: [PATCH] Switch the default NIC driver to e1000

The version if qemu-ipxe on bionic doesn't attempt
to network boot when using virtio-net.

Change-Id: I335a2a0a8a82bb43a06202f96e629aa72d10cfac
Story: #2004604
Task: #28498
---
 devstack/lib/ironic                          | 5 ++++-
 devstack/tools/ironic/scripts/create-node.sh | 2 +-
 zuul.d/ironic-jobs.yaml                      | 7 +++++--
 3 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/devstack/lib/ironic b/devstack/lib/ironic
index 740ca632b7..4f9961ee80 100644
--- a/devstack/lib/ironic
+++ b/devstack/lib/ironic
@@ -1616,6 +1616,9 @@ function create_bridge_and_vms {
 
     if [[ -n "$LIBVIRT_NIC_DRIVER" ]]; then
         vm_opts+=" -D $LIBVIRT_NIC_DRIVER"
+    elif [[ "$IRONIC_BOOT_MODE" == "uefi" || "$IRONIC_STORAGE_INTERFACE" == "cinder" ]]; then
+        # Note(derekh) Both UEFI and BVF for the moment don't work with the e1000 net driver
+        vm_opts+=" -D virtio"
     fi
 
     local bridge_mac
@@ -1629,7 +1632,7 @@ function create_bridge_and_vms {
         sudo -E su -p $STACK_USER -c "PATH=$PATH $IRONIC_SCRIPTS_DIR/create-node.sh -n $vm_name \
             -c $IRONIC_VM_SPECS_CPU -m $IRONIC_VM_SPECS_RAM -d $IRONIC_VM_SPECS_DISK \
             -a $IRONIC_VM_SPECS_CPU_ARCH -b $IRONIC_VM_NETWORK_BRIDGE $vm_opts -p $vbmc_port -o $pdu_outlet \
-            -i $IRONIC_VM_INTERFACE_COUNT -f $IRONIC_VM_SPECS_DISK_FORMAT  -M $PUBLIC_BRIDGE_MTU $log_arg" >> $IRONIC_VM_MACS_CSV_FILE
+            -i $IRONIC_VM_INTERFACE_COUNT -f $IRONIC_VM_SPECS_DISK_FORMAT -M $PUBLIC_BRIDGE_MTU $log_arg" >> $IRONIC_VM_MACS_CSV_FILE
         echo " ${bridge_mac} $IRONIC_VM_NETWORK_BRIDGE" >> $IRONIC_VM_MACS_CSV_FILE
 
         vbmc_port=$((vbmc_port+1))
diff --git a/devstack/tools/ironic/scripts/create-node.sh b/devstack/tools/ironic/scripts/create-node.sh
index f40186b588..908aadca53 100755
--- a/devstack/tools/ironic/scripts/create-node.sh
+++ b/devstack/tools/ironic/scripts/create-node.sh
@@ -44,7 +44,7 @@ if [ -z "$UEFI_LOADER" ] && [ ! -z "$UEFI_NVRAM" ]; then
     exit 1
 fi
 
-LIBVIRT_NIC_DRIVER=${NIC_DRIVER:-"virtio"}
+LIBVIRT_NIC_DRIVER=${NIC_DRIVER:-"e1000"}
 LIBVIRT_STORAGE_POOL=${LIBVIRT_STORAGE_POOL:-"default"}
 LIBVIRT_CONNECT_URI=${LIBVIRT_CONNECT_URI:-"qemu:///system"}
 
diff --git a/zuul.d/ironic-jobs.yaml b/zuul.d/ironic-jobs.yaml
index 94a0d505de..128b51150e 100644
--- a/zuul.d/ironic-jobs.yaml
+++ b/zuul.d/ironic-jobs.yaml
@@ -2,7 +2,7 @@
     name: ironic-base
     description: Base job for devstack/tempest based ironic jobs.
     parent: devstack-tempest
-    nodeset: openstack-single-node-xenial
+    nodeset: openstack-single-node-bionic
     timeout: 10800
     required-projects:
       - openstack/ironic
@@ -144,6 +144,7 @@
     name: ironic-tempest-dsvm-ipa-partition-redfish-tinyipa
     description: ironic-tempest-dsvm-ipa-partition-redfish-tinyipa
     parent: ironic-base
+    nodeset: openstack-single-node-xenial
     timeout: 5400
     vars:
       devstack_localrc:
@@ -194,6 +195,7 @@
     name: ironic-tempest-dsvm-ipa-partition-uefi-pxe_ipmitool-tinyipa
     description: ironic-tempest-dsvm-ipa-partition-uefi-pxe_ipmitool-tinyipa
     parent: ironic-base
+    nodeset: openstack-single-node-xenial
     timeout: 5400
     vars:
       devstack_localrc:
@@ -205,6 +207,7 @@
     name: ironic-tempest-dsvm-ipa-partition-pxe_ipmitool-tinyipa-python3
     description: ironic-tempest-dsvm-ipa-partition-pxe_ipmitool-tinyipa-python3
     parent: ironic-base
+    nodeset: openstack-single-node-xenial
     timeout: 5400
     vars:
       devstack_localrc:
@@ -214,6 +217,7 @@
     name: ironic-tempest-dsvm-bfv
     description: ironic-tempest-dsvm-bfv
     parent: ironic-base
+    nodeset: openstack-single-node-xenial
     timeout: 9600
     vars:
       tempest_test_regex: baremetal_boot_from_volume
@@ -325,7 +329,6 @@
     name: ironic-tempest-dsvm-ipa-wholedisk-direct-tinyipa-multinode
     description: ironic-tempest-dsvm-ipa-wholedisk-direct-tinyipa-multinode
     parent: tempest-multinode-full
-    nodeset: openstack-two-node-xenial
     pre-run: playbooks/ci-workarounds/set-stack-key.yaml
     timeout: 10800
     required-projects: