aboutsummaryrefslogtreecommitdiffstats
path: root/patches
diff options
context:
space:
mode:
Diffstat (limited to 'patches')
-rw-r--r--patches/fuel-astute/0001-Erase-EFI-boot-entry-on-EFI-systems.patch43
-rw-r--r--patches/fuel-library/0015-Set-net.ipv4.ip_nonlocal_bind-1-for-vrouter-namespace.patch54
-rw-r--r--patches/opnfv-fuel/0002-deploy-Delete-old-Fuel-env-if-present.patch58
3 files changed, 101 insertions, 54 deletions
diff --git a/patches/fuel-astute/0001-Erase-EFI-boot-entry-on-EFI-systems.patch b/patches/fuel-astute/0001-Erase-EFI-boot-entry-on-EFI-systems.patch
new file mode 100644
index 00000000..905834df
--- /dev/null
+++ b/patches/fuel-astute/0001-Erase-EFI-boot-entry-on-EFI-systems.patch
@@ -0,0 +1,43 @@
+From: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
+Date: Mon, 18 Jul 2016 16:02:20 +0200
+Subject: [PATCH] Erase EFI boot entry on EFI systems.
+
+On EFI-enabled systemd, grub-install from grub-efi-* package
+installs a boot entry named "ubuntu".
+
+Since this boot entry is saved in board flash memory, erasing
+the MBR bootloader code and/or partition signature will not
+clear the ubuntu boot entry, leaving it pointing to a loader
+on the ESP (EFI System Partition) that will try to load the
+kernel/initrd from an erased partition.
+
+In Fuel 8.0, the whole disk was erased, so the ubuntu EFI boot
+entry was skipped due to missing ESP, while for Fuel 9.0 and
+above we have to explicitly remove it to keep the system in a
+sane state.
+
+Note: efibootmgr is installed automatically on EFI systems
+as a dependency of grub-efi-*.
+
+Closes: ARMBAND-47
+
+Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
+---
+ mcagents/erase_node.rb | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/mcagents/erase_node.rb b/mcagents/erase_node.rb
+index 3eb98e8..3bac36f 100644
+--- a/mcagents/erase_node.rb
++++ b/mcagents/erase_node.rb
+@@ -112,6 +112,10 @@ module MCollective
+ File.open('/proc/sys/kernel/panic','w') {|file| file.write("10\n")}
+
+ begin
++ # clear out EFI boot entry on EFI-enabled systems
++ system("(which efibootmgr > /dev/null 2>&1 && efibootmgr | "\
++ "grep -oP '(?<=Boot)[0-9]+(?=.*ubuntu)' | "\
++ "xargs -I{} efibootmgr --delete-bootnum --bootnum {}) || true")
+ get_devices(type='all').each do |dev|
+ debug_msg("erasing bootstrap code area in MBR of #{dev[:name]}")
+ # clear out the boot code in MBR
diff --git a/patches/fuel-library/0015-Set-net.ipv4.ip_nonlocal_bind-1-for-vrouter-namespace.patch b/patches/fuel-library/0015-Set-net.ipv4.ip_nonlocal_bind-1-for-vrouter-namespace.patch
deleted file mode 100644
index 86318bb0..00000000
--- a/patches/fuel-library/0015-Set-net.ipv4.ip_nonlocal_bind-1-for-vrouter-namespace.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From: Bartosz Kupidura <bkupidura@mirantis.com>
-Date: Mon, 27 Jun 2016 13:12:29 +0200
-Subject: [PATCH] Set net.ipv4.ip_nonlocal_bind=1 for vrouter namespace
-
-Change-Id: I123af7e3b53f9a53fcd9d2818640c0bd4699e024
-Closes-Bug: #1595957
-(cherry picked from commit 244456a3b77074a6cd85fa9d33ebb03ac25decf8)
----
- files/fuel-ha-utils/ocf/ns_dns | 3 ++-
- files/fuel-ha-utils/ocf/ns_vrouter | 3 ++-
- 2 files changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/files/fuel-ha-utils/ocf/ns_dns b/files/fuel-ha-utils/ocf/ns_dns
-index cdd814c..49cbd17 100644
---- a/files/fuel-ha-utils/ocf/ns_dns
-+++ b/files/fuel-ha-utils/ocf/ns_dns
-@@ -140,7 +140,7 @@ exit $OCF_SUCCESS
-
- check_ns() {
- local ns=`ip netns list | grep "$OCF_RESKEY_ns"`
-- [ $ns != $OCF_RESKEY_ns ] && return $OCF_ERR_GENERIC
-+ [ "$ns" != $OCF_RESKEY_ns ] && return $OCF_ERR_GENERIC
- return $OCF_SUCCESS
- }
-
-@@ -150,6 +150,7 @@ get_ns() {
-
- ocf_run ip netns add $OCF_RESKEY_ns
- rc=$?
-+ ocf_run $RUN_IN_NS /sbin/sysctl -w net.ipv4.ip_nonlocal_bind=1
- ocf_run $RUN_IN_NS ip link set up dev lo
-
- return $rc
-diff --git a/files/fuel-ha-utils/ocf/ns_vrouter b/files/fuel-ha-utils/ocf/ns_vrouter
-index a65e9cf..5cc6c98 100644
---- a/files/fuel-ha-utils/ocf/ns_vrouter
-+++ b/files/fuel-ha-utils/ocf/ns_vrouter
-@@ -186,7 +186,7 @@ check_ns() {
- local LH="${LL} check_ns():"
- local ns=`ip netns list | grep "$OCF_RESKEY_ns"`
- ocf_log debug "${LH} recieved netns list: ${ns}"
-- [[ $ns != $OCF_RESKEY_ns ]] && return $OCF_ERR_GENERIC
-+ [[ "$ns" != $OCF_RESKEY_ns ]] && return $OCF_ERR_GENERIC
- return $OCF_SUCCESS
- }
-
-@@ -197,6 +197,7 @@ get_ns() {
-
- ocf_run ip netns add $OCF_RESKEY_ns
- rc=$?
-+ ocf_run $RUN_IN_NS /sbin/sysctl -w net.ipv4.ip_nonlocal_bind=1
- ocf_run $RUN_IN_NS ip link set up dev lo
- ocf_log debug "${LH} added netns ${OCF_RESKEY_ns} and set up lo"
-
diff --git a/patches/opnfv-fuel/0002-deploy-Delete-old-Fuel-env-if-present.patch b/patches/opnfv-fuel/0002-deploy-Delete-old-Fuel-env-if-present.patch
new file mode 100644
index 00000000..e7867d48
--- /dev/null
+++ b/patches/opnfv-fuel/0002-deploy-Delete-old-Fuel-env-if-present.patch
@@ -0,0 +1,58 @@
+From: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
+Date: Mon, 18 Jul 2016 17:42:48 +0200
+Subject: [PATCH] deploy: Delete old Fuel env if present
+
+In order to clean up old partitioning and boot entries on target
+nodes, before removing the Fuel Master, try ssh-ing into it and
+removing all environments/nodes.
+
+This is especially important for EFI systems, where old boot
+entries are left behind without a proper env delete, leading to
+target nodes failing to PXE boot on Fuel Master re-install.
+
+This change assumes that:
+- all Fuel Master information is unchanged between old and new
+ deploy (fuel IP, password etc.);
+- Fuel Master is up and running, in a sane state (target nodes
+ are also online), when deploy starts;
+
+Closes: ARMBAND-51
+
+Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
+---
+ deploy/deploy.py | 15 +++++++++++++++
+ 1 file changed, 15 insertions(+)
+
+diff --git a/deploy/deploy.py b/deploy/deploy.py
+index 48a53c3..184510f 100755
+--- a/deploy/deploy.py
++++ b/deploy/deploy.py
+@@ -110,6 +110,20 @@ class AutoDeploy(object):
+ self.iso_file = new_iso
+ self.install_iso()
+
++ def delete_old_fuel_env(self):
++ log('Delete old Fuel Master environments if present')
++ try:
++ old_dep = CloudDeploy(self.dea, self.dha, self.fuel_conf['ip'],
++ self.fuel_username, self.fuel_password,
++ self.dea_file, self.fuel_plugins_conf_dir,
++ WORK_DIR, self.no_health_check,
++ self.deploy_timeout,
++ self.no_deploy_environment, self.deploy_log)
++ with old_dep.ssh:
++ old_dep.check_previous_installation()
++ except Exception as e:
++ log('Could not delete old env: %s' % str(e))
++
+ def install_iso(self):
+ fuel = InstallFuelMaster(self.dea_file, self.dha_file,
+ self.fuel_conf['ip'], self.fuel_username,
+@@ -227,6 +241,7 @@ class AutoDeploy(object):
+ def deploy(self):
+ self.collect_fuel_info()
+ if not self.no_fuel:
++ self.delete_old_fuel_env()
+ self.setup_execution_environment()
+ self.create_tmp_dir()
+ self.install_fuel_master()