aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--TODO.md1
-rw-r--r--patches/fuel-agent/0010-UX-Update-bootstrap-target-build-time-estimate.patch33
-rw-r--r--patches/opnfv-fuel/0026-deploy.sh-accept-a-timeout-flag-T.patch81
-rw-r--r--patches/opnfv-fuel/0027-UX-Update-bootstrap-target-build-time-estimate.patch33
-rw-r--r--patches/opnfv-fuel/0027-deploy-reap.py-Dump-extra-interfaces-information.patch90
5 files changed, 237 insertions, 1 deletions
diff --git a/TODO.md b/TODO.md
index ad9c4937..ae2da275 100644
--- a/TODO.md
+++ b/TODO.md
@@ -3,7 +3,6 @@ List of missing features and things to do
Cleanup tasks
=========================================
-* [arm64-master] Find `puppetlabs-products` repo for arm64.
* [arm64-master] Fix license in ubuntu_1404_arm64.pp
* [arm64-master] Look into default ubuntu_debootstrap change in cobbler.pp
* [arm64-master] [fuel-agent] Package and repo update for arm64 in [2] (?)
diff --git a/patches/fuel-agent/0010-UX-Update-bootstrap-target-build-time-estimate.patch b/patches/fuel-agent/0010-UX-Update-bootstrap-target-build-time-estimate.patch
new file mode 100644
index 00000000..d8a7588f
--- /dev/null
+++ b/patches/fuel-agent/0010-UX-Update-bootstrap-target-build-time-estimate.patch
@@ -0,0 +1,33 @@
+From: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
+Date: Mon, 9 May 2016 17:08:06 +0200
+Subject: [PATCH] UX: Update bootstrap/target build time estimate.
+
+While building for a different architecture (e.g. AArch64 on x86_64),
+the bootstrap/target image build may take longer, due to latency
+introduced by using qemu-user-static.
+
+Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
+---
+ .../fuel_bootstrap_cli/fuel_bootstrap/utils/bootstrap_image.py | 9 ++++++---
+ 1 file changed, 6 insertions(+), 3 deletions(-)
+
+diff --git a/contrib/fuel_bootstrap/fuel_bootstrap_cli/fuel_bootstrap/utils/bootstrap_image.py b/contrib/fuel_bootstrap/fuel_bootstrap_cli/fuel_bootstrap/utils/bootstrap_image.py
+index 6e60fb8..95bc08a 100644
+--- a/contrib/fuel_bootstrap/fuel_bootstrap_cli/fuel_bootstrap/utils/bootstrap_image.py
++++ b/contrib/fuel_bootstrap/fuel_bootstrap_cli/fuel_bootstrap/utils/bootstrap_image.py
+@@ -180,9 +180,12 @@ def make_bootstrap(data):
+ OSLO_CONF = cfg.CONF
+ OSLO_CONF(opts, project='fuel-agent')
+ mngr = manager.Manager(bootdata)
+- LOG.info("Build process is in progress. Usually it takes 15-20 minutes."
+- " It depends on your internet connection and hardware"
+- " performance.")
++ LOG.info("Build process is in progress. Usually it takes 15-20 minutes for"
++ " a native build (x86_64) and/or 30-45 minutes for each"
++ " cross-build (e.g. AArch64)."
++ " It depends on your internet connection, hardware performance"
++ " and selected bootstrap architecture(s)."
++ " This ISO supports AArch64 only.")
+ mngr.do_mkbootstrap()
+
+ return bootdata['bootstrap']['uuid'], bootdata['output']
diff --git a/patches/opnfv-fuel/0026-deploy.sh-accept-a-timeout-flag-T.patch b/patches/opnfv-fuel/0026-deploy.sh-accept-a-timeout-flag-T.patch
new file mode 100644
index 00000000..19651467
--- /dev/null
+++ b/patches/opnfv-fuel/0026-deploy.sh-accept-a-timeout-flag-T.patch
@@ -0,0 +1,81 @@
+From: Josep Puigdemont <josep.puigdemont@enea.com>
+Date: Mon, 9 May 2016 11:05:58 +0200
+Subject: [PATCH] deploy.sh: accept a timeout flag (-T)
+
+Signed-off-by: Josep Puigdemont <josep.puigdemont@enea.com>
+---
+ ci/deploy.sh | 19 +++++++++++++++----
+ 1 file changed, 15 insertions(+), 4 deletions(-)
+
+diff --git a/ci/deploy.sh b/ci/deploy.sh
+index c9b836b..5f06a19 100755
+--- a/ci/deploy.sh
++++ b/ci/deploy.sh
+@@ -29,7 +29,7 @@ cat << EOF
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ `basename $0`: Deploys the Fuel@OPNFV stack
+
+-usage: `basename $0` -b base-uri [-B PXE Bridge] [-f] [-F] [-H] -l lab-name -p pod-name -s deploy-scenario [-S image-dir] -i iso
++usage: `basename $0` -b base-uri [-B PXE Bridge] [-f] [-F] [-H] -l lab-name -p pod-name -s deploy-scenario [-S image-dir] [-T timeout] -i iso
+ -s deployment-scenario [-S optional Deploy-scenario path URI]
+ [-R optional local relen repo (containing deployment Scenarios]
+
+@@ -46,6 +46,7 @@ OPTIONS:
+ -p Pod-name
+ -s Deploy-scenario short-name/base-file-name
+ -S Storage dir for VM images
++ -T Timeout, in minutes, for the deploy.
+ -i iso url
+
+ Description:
+@@ -76,6 +77,8 @@ Input parameters to the build script is:
+ or a deployment short-name as defined by scenario.yaml in the deployment
+ scenario path.
+ -S Storage dir for VM images, default is fuel/deploy/images
++-T Timeout, in minutes, for the deploy. It defaults to using the DEPLOY_TIMEOUT
++ environment variable when defined, or to the default in deploy.py otherwise
+ -i .iso image to be deployed (needs to be provided in a URI
+ style, it can be a local resource: file:// or a remote resource http(s)://)
+
+@@ -111,6 +114,11 @@ FUEL_CREATION_ONLY=''
+ NO_DEPLOY_ENVIRONMENT=''
+ STORAGE_DIR=''
+ DRY_RUN=0
++if ! [ -z $DEPLOY_TIMEOUT ]; then
++ DEPLOY_TIMEOUT="-dt $DEPLOY_TIMEOUT"
++else
++ DEPLOY_TIMEOUT=""
++fi
+ #
+ # END of variables to customize
+ ############################################################################
+@@ -118,7 +126,7 @@ DRY_RUN=0
+ ############################################################################
+ # BEGIN of main
+ #
+-while getopts "b:B:dfFHl:p:s:S:i:he" OPTION
++while getopts "b:B:dfFHl:p:s:S:T:i:he" OPTION
+ do
+ case $OPTION in
+ b)
+@@ -166,6 +174,9 @@ do
+ STORAGE_DIR="-s ${OPTARG}"
+ fi
+ ;;
++ T)
++ DEPLOY_TIMEOUT="-dt ${OPTARG}"
++ ;;
+ i)
+ ISO=${OPTARG}
+ if [[ ! $ISO == file://* ]] && \
+@@ -227,8 +238,8 @@ if [ $DRY_RUN -eq 0 ]; then
+ ISO=${SCRIPT_PATH}/ISO/image.iso
+ fi
+ # Start deployment
+- echo "python deploy.py $STORAGE_DIR $PXE_BRIDGE $USE_EXISTING_FUEL $FUEL_CREATION_ONLY $NO_HEALTH_CHECK $NO_DEPLOY_ENVIRONMENT -dea ${SCRIPT_PATH}/config/dea.yaml -dha ${SCRIPT_PATH}/config/dha.yaml -iso $ISO"
+- python deploy.py $STORAGE_DIR $PXE_BRIDGE $USE_EXISTING_FUEL $FUEL_CREATION_ONLY $NO_HEALTH_CHECK $NO_DEPLOY_ENVIRONMENT -dea ${SCRIPT_PATH}/config/dea.yaml -dha ${SCRIPT_PATH}/config/dha.yaml -iso $ISO
++ echo "python deploy.py $STORAGE_DIR $PXE_BRIDGE $USE_EXISTING_FUEL $FUEL_CREATION_ONLY $NO_HEALTH_CHECK $NO_DEPLOY_ENVIRONMENT -dea ${SCRIPT_PATH}/config/dea.yaml -dha ${SCRIPT_PATH}/config/dha.yaml -iso $ISO $DEPLOY_TIMEOUT"
++ python deploy.py $STORAGE_DIR $PXE_BRIDGE $USE_EXISTING_FUEL $FUEL_CREATION_ONLY $NO_HEALTH_CHECK $NO_DEPLOY_ENVIRONMENT -dea ${SCRIPT_PATH}/config/dea.yaml -dha ${SCRIPT_PATH}/config/dha.yaml -iso $ISO $DEPLOY_TIMEOUT
+ fi
+ popd > /dev/null
+
diff --git a/patches/opnfv-fuel/0027-UX-Update-bootstrap-target-build-time-estimate.patch b/patches/opnfv-fuel/0027-UX-Update-bootstrap-target-build-time-estimate.patch
new file mode 100644
index 00000000..9791f595
--- /dev/null
+++ b/patches/opnfv-fuel/0027-UX-Update-bootstrap-target-build-time-estimate.patch
@@ -0,0 +1,33 @@
+From: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
+Date: Mon, 9 May 2016 17:05:53 +0200
+Subject: [PATCH] UX: Update bootstrap/target build time estimate.
+
+While building for a different architecture (e.g. AArch64 on x86_64),
+the bootstrap/target image build may take longer, due to latency
+introduced by using qemu-user-static.
+
+Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
+---
+ build/f_isoroot/f_bootstrap/bootstrap_admin_node.sh | 9 ++++++---
+ 1 file changed, 6 insertions(+), 3 deletions(-)
+
+diff --git a/build/f_isoroot/f_bootstrap/bootstrap_admin_node.sh b/build/f_isoroot/f_bootstrap/bootstrap_admin_node.sh
+index 744f352..7395af3 100755
+--- a/build/f_isoroot/f_bootstrap/bootstrap_admin_node.sh
++++ b/build/f_isoroot/f_bootstrap/bootstrap_admin_node.sh
+@@ -29,9 +29,12 @@ and added to cluster. \
+ For more information please visit \
+ https://docs.mirantis.com/openstack/fuel/fuel-master/"
+ bs_progress_message="There is no active bootstrap. Bootstrap image building \
+-is in progress. Usually it takes 15-20 minutes. It depends on your internet \
+-connection and hardware performance. Please reboot failed to discover nodes \
+-after bootstrap image become available."
++is in progress. Usually it takes 15-20 minutes for a native build (x86_64) \
++and/or 30-45 minutes for each cross-build (e.g. AArch64). \
++It depends on your internet connection, hardware performance and selected \
++bootstrap architecture(s). This ISO supports AArch64 only. Please reboot \
++failed to discover nodes after bootstrap image become available."
++
+ bs_done_message="Default bootstrap image building done. Now you can boot new \
+ nodes over PXE, they will be discovered and become available for installing \
+ OpenStack on them"
diff --git a/patches/opnfv-fuel/0027-deploy-reap.py-Dump-extra-interfaces-information.patch b/patches/opnfv-fuel/0027-deploy-reap.py-Dump-extra-interfaces-information.patch
new file mode 100644
index 00000000..fba7e713
--- /dev/null
+++ b/patches/opnfv-fuel/0027-deploy-reap.py-Dump-extra-interfaces-information.patch
@@ -0,0 +1,90 @@
+From: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
+Date: Wed, 4 May 2016 18:31:09 +0200
+Subject: [PATCH] deploy/reap.py: Dump extra interfaces information.
+
+Since on AArch64, Ubuntu local mirror lacks arm64 packages (see [1]),
+Fuel master requires internet connectivity during deploy, and hence
+a way to setup such a public (extra) interface automatically.
+
+Previous commit "transplant: Generate extra interfaces config file"
+introduced support for passing this information via DEA (override),
+which may define a IFCGF_<interface> section in its 'fuel:'
+section, containing the necessary keys to produce a ifcfg-<interface>
+file, like in this example:
+
+fuel:
+ IFCFG_ETH1:
+ device: eth1
+ ipaddress: 10.0.1.10
+ netmask: 255.255.255.0
+ gateway: 10.0.1.254
+
+In order for Network Manager to use the newly added interfaces
+for outgoing traffic and honor their GATEWAY setting (e.g. if we just
+added one public interface), the default route on admin iface (most of
+the time called eth0) is disabled when extra interfaces are present.
+
+FIXME: Only supports lowercase interface names, but so does Fuel,
+see related bug report [2].
+
+[1] https://jira.opnfv.org/browse/ARMBAND-35
+[2] https://jira.opnfv.org/browse/FUEL-136
+
+Signed-off-by: Alexandu Avadanii <alexandru.avadanii@enea.com>
+Signed-off-by: Josep Puigdemont <josep.puigdemont@enea.com>
+---
+ deploy/reap.py | 34 ++++++++++++++++++++++++++++++++++
+ 1 file changed, 34 insertions(+)
+
+diff --git a/deploy/reap.py b/deploy/reap.py
+index bf64d40..6feaf17 100755
+--- a/deploy/reap.py
++++ b/deploy/reap.py
+@@ -15,6 +15,8 @@ import yaml
+ import glob
+ import shutil
+ import tempfile
++import re
++import netaddr
+
+ from common import (
+ N,
+@@ -245,6 +247,38 @@ class Reap(object):
+ if key not in ['ipaddress', 'netmask',
+ 'dhcp_pool_start', 'dhcp_pool_end']:
+ del fuel['ADMIN_NETWORK'][key]
++
++ ## FIXME(armband): Factor in support for adding public/other interfaces.
++ ## TODO: Following block expects interface name(s) to be lowercase only
++ interfaces_list = exec_cmd('ip -o -4 a | grep -e "e[nt][hopsx].*"')
++ for interface in re.split('\n', interfaces_list):
++ # Sample output line from above cmd:
++ # 3: eth1 inet 10.0.2.10/24 scope global eth1 valid_lft forever ...
++ ifcfg = re.split(r'\s+', interface)
++ ifcfg_name = ifcfg[1]
++ ifcfg_ipaddr = ifcfg[3]
++
++ # Filter out admin interface (device name is not known, match IP)
++ current_network = netaddr.IPNetwork(ifcfg_ipaddr)
++ if str(current_network.ip) == fuel['ADMIN_NETWORK']['ipaddress']:
++ continue
++
++ # Read ifcfg-* network interface config file, write IFCFG_<IFNAME>
++ ifcfg_sec = 'IFCFG_%s' % ifcfg_name.upper()
++ fuel[ifcfg_sec] = {}
++ ifcfg_data = {}
++ ifcfg_f = ('/etc/sysconfig/network-scripts/ifcfg-%s' % ifcfg_name)
++ with open(ifcfg_f) as f:
++ for line in f:
++ (key, val) = line.split('=')
++ ifcfg_data[key.lower()] = val.rstrip()
++
++ # Keep only needed info (e.g. filter-out type=Ethernet).
++ fuel[ifcfg_sec]['ipaddress'] = ifcfg_data['ipaddr']
++ fuel[ifcfg_sec]['device'] = ifcfg_data['device']
++ fuel[ifcfg_sec]['netmask'] = str(current_network.netmask)
++ fuel[ifcfg_sec]['gateway'] = ifcfg_data['gateway']
++
+ self.write_yaml(self.dea_file, {'fuel': fuel})
+
+ def reap_network_settings(self):