diff options
-rw-r--r-- | .gitmodules | 4 | ||||
-rw-r--r-- | Makefile | 6 | ||||
-rwxr-xr-x | ci/deploy.sh | 3 | ||||
-rw-r--r-- | patches/fuel-astute/0001-Erase-EFI-boot-entry-on-EFI-systems.patch | 43 | ||||
-rw-r--r-- | patches/fuel-library/0015-Set-net.ipv4.ip_nonlocal_bind-1-for-vrouter-namespace.patch | 54 | ||||
-rw-r--r-- | patches/opnfv-fuel/0002-deploy-Delete-old-Fuel-env-if-present.patch | 58 | ||||
m--------- | upstream/fuel | 0 | ||||
m--------- | upstream/fuel-astute | 0 | ||||
m--------- | upstream/yardstick | 0 |
9 files changed, 110 insertions, 58 deletions
diff --git a/.gitmodules b/.gitmodules index af8593d5..5b1bd073 100644 --- a/.gitmodules +++ b/.gitmodules @@ -38,3 +38,7 @@ path = upstream/yardstick url = https://gerrit.opnfv.org/gerrit/yardstick.git branch = master +[submodule "fuel-astute"] + path = upstream/fuel-astute + url = https://github.com/openstack/fuel-astute.git + branch = stable/mitaka @@ -64,8 +64,8 @@ build: make \ BUILD_FUEL_PLUGINS="f_odlpluginbuild f_bgpvpn-pluginbuild" \ UBUNTU_ARCH="amd64 arm64" \ - FUELLIB_REPO=${root}/upstream/fuel-library \ - FUELLIB_COMMIT=HEAD \ + ASTUTE_REPO=${root}/upstream/fuel-astute \ + ASTUTE_COMMIT=HEAD \ NAILGUN_REPO=${root}/upstream/fuel-web \ NAILGUN_COMMIT=HEAD \ FUEL_AGENT_REPO=${root}/upstream/fuel-agent \ @@ -74,6 +74,8 @@ build: FUEL_NAILGUN_AGENT_COMMIT=HEAD \ FUEL_MIRROR_REPO=${root}/upstream/fuel-mirror \ FUEL_MIRROR_COMMIT=HEAD \ + FUELLIB_REPO=${root}/upstream/fuel-library \ + FUELLIB_COMMIT=HEAD \ ODL_REPO=${root}/upstream/fuel-plugin-opendaylight \ ODL_BRANCH=armband-workbench \ ODL_CHANGE= \ diff --git a/ci/deploy.sh b/ci/deploy.sh index 8ad11663..40abe67d 100755 --- a/ci/deploy.sh +++ b/ci/deploy.sh @@ -10,8 +10,7 @@ set -e cd $WORKSPACE -make submodules-init -make patches-import +make submodules-clean submodules-init patches-import # source local environment variables if ! [ -z $LAB_CONFIG_URL ]; then 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() diff --git a/upstream/fuel b/upstream/fuel -Subproject dfda6c2155a647bd78467c6cc8926c5d9c3a323 +Subproject 264623809055c5ade26fc615d1255302f0b7c30 diff --git a/upstream/fuel-astute b/upstream/fuel-astute new file mode 160000 +Subproject f0f05f9ddbe1edebee7ab239abab0bfd3b05c24 diff --git a/upstream/yardstick b/upstream/yardstick -Subproject e6277570188829687b2ecf48adbd10bc3c9d46b +Subproject 1e6ca0bfaaeadff7ce8ac9b1693b03d122e58a7 |