summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Makefile15
-rwxr-xr-xci/build.sh2
-rw-r--r--docs/buildprocedure/build.instruction.rst (renamed from docs/build-instruction.rst)154
-rw-r--r--docs/buildprocedure/index.rst16
-rw-r--r--docs/configguide/installerconfig.rst332
-rw-r--r--docs/configguide/postinstall.rst24
-rw-r--r--docs/img/addnodes.pngbin24624 -> 0 bytes
-rw-r--r--docs/img/compute.pngbin49919 -> 0 bytes
-rw-r--r--docs/img/computelist.pngbin70343 -> 0 bytes
-rw-r--r--docs/img/fuelmenu1.pngbin8766 -> 0 bytes
-rw-r--r--docs/img/fuelmenu2.pngbin9679 -> 0 bytes
-rw-r--r--docs/img/fuelmenu3.pngbin9634 -> 0 bytes
-rw-r--r--docs/img/fuelmenu4.pngbin9843 -> 0 bytes
-rw-r--r--docs/img/fuelmenu5.pngbin22548 -> 0 bytes
-rw-r--r--docs/img/fuelmenu6.pngbin10703 -> 0 bytes
-rw-r--r--docs/img/grub-1.pngbin381031 -> 0 bytes
-rw-r--r--docs/img/health.pngbin54348 -> 0 bytes
-rw-r--r--docs/img/interfaceconf.pngbin58890 -> 0 bytes
-rw-r--r--docs/img/network.pngbin53472 -> 0 bytes
-rw-r--r--docs/img/neutronl3.pngbin71846 -> 0 bytes
-rw-r--r--docs/img/other.pngbin71641 -> 0 bytes
-rw-r--r--docs/img/plugins_aarch64.pngbin34853 -> 0 bytes
-rw-r--r--docs/img/verifynet.pngbin61499 -> 0 bytes
-rw-r--r--docs/installationprocedure/img/addnodes.pngbin0 -> 24089 bytes
-rw-r--r--docs/installationprocedure/img/compute.pngbin0 -> 25978 bytes
-rw-r--r--docs/installationprocedure/img/computelist.pngbin0 -> 67975 bytes
-rw-r--r--docs/installationprocedure/img/fuelconsole1.png (renamed from docs/img/fuelconsole1.png)bin8269 -> 8269 bytes
-rw-r--r--docs/installationprocedure/img/fuelmenu1.pngbin0 -> 9276 bytes
-rw-r--r--docs/installationprocedure/img/fuelmenu2.pngbin0 -> 9774 bytes
-rw-r--r--docs/installationprocedure/img/fuelmenu2a.png (renamed from docs/img/fuelmenu2a.png)bin11511 -> 11511 bytes
-rw-r--r--docs/installationprocedure/img/fuelmenu3.pngbin0 -> 9783 bytes
-rw-r--r--docs/installationprocedure/img/fuelmenu4.pngbin0 -> 8843 bytes
-rw-r--r--docs/installationprocedure/img/fuelmenu5.pngbin0 -> 20442 bytes
-rw-r--r--docs/installationprocedure/img/fuelmenu6.pngbin0 -> 10322 bytes
-rw-r--r--docs/installationprocedure/img/fuelwsrepsst.png (renamed from docs/img/fuelwsrepsst.png)bin59206 -> 59206 bytes
-rw-r--r--docs/installationprocedure/img/grub-1.pngbin0 -> 388991 bytes
-rw-r--r--docs/installationprocedure/img/health.pngbin0 -> 51840 bytes
-rw-r--r--docs/installationprocedure/img/interfaceconf.pngbin0 -> 25676 bytes
-rw-r--r--docs/installationprocedure/img/interfaces.png (renamed from docs/img/interfaces.png)bin58851 -> 58851 bytes
-rw-r--r--docs/installationprocedure/img/network.pngbin0 -> 55423 bytes
-rw-r--r--docs/installationprocedure/img/neutronl3.pngbin0 -> 40478 bytes
-rw-r--r--docs/installationprocedure/img/newenv.png (renamed from docs/img/newenv.png)bin37483 -> 37483 bytes
-rw-r--r--docs/installationprocedure/img/nodes.png (renamed from docs/img/nodes.png)bin9155 -> 9155 bytes
-rw-r--r--docs/installationprocedure/img/offloadingmodes.png (renamed from docs/img/offloadingmodes.png)bin23017 -> 23017 bytes
-rw-r--r--docs/installationprocedure/img/other.pngbin0 -> 41526 bytes
-rw-r--r--docs/installationprocedure/img/plugin_install.png (renamed from docs/img/plugin_install.png)bin17431 -> 17431 bytes
-rw-r--r--docs/installationprocedure/img/plugins.pngbin0 -> 52382 bytes
-rw-r--r--docs/installationprocedure/img/plugins_aarch64.pngbin0 -> 59910 bytes
-rw-r--r--docs/installationprocedure/img/verifynet.pngbin0 -> 33162 bytes
-rw-r--r--docs/installationprocedure/index.rst15
-rw-r--r--docs/installationprocedure/installation.instruction.rst (renamed from docs/installation-instruction.rst)184
-rw-r--r--docs/releasenotes/index.rst (renamed from docs/index.rst)13
-rw-r--r--docs/releasenotes/release-notes.rst (renamed from docs/release-notes.rst)147
-rw-r--r--patches/fuel-library/0001-Add-arm64-templates-to-cobbler-and-nailgun.patch67
-rw-r--r--patches/fuel-library/0008-nova-Update-vga-console-defaults-for-armv7-aarch64.patch (renamed from patches/fuel-library/0009-Update-vga-console-defaults-for-armv7-and-aarch64.patch)2
-rw-r--r--patches/fuel-library/0009-nova-AArch64-enable-hugepage-support.patch93
-rw-r--r--patches/fuel-library/0017-Always-wait-for-MySQL-sync-on-service-refresh.patch60
-rw-r--r--patches/fuel-library/0018-Fix-MySQL-logging-dir-permissions-for-syslog.patch90
-rw-r--r--patches/fuel-plugin-opendaylight/0001-ODL-leveldb-leveldbjni-Enable-arm64-support.patch2
-rw-r--r--patches/fuel-plugin-ovs/0002-Cleanup-Use-dget-instead-of-wget-dpkg-source.patch48
-rw-r--r--patches/fuel-plugin-ovs/0003-Cleanup-Drop-git-dependency.patch99
-rw-r--r--patches/fuel-plugin-ovs/0004-build-apt-force-yes.patch87
-rw-r--r--patches/fuel-plugin-ovs/0005-pre_build_hook-Introduce-USE_DOCKER-option.patch77
-rw-r--r--patches/fuel-plugin-ovs/0006-build-install-pre_build_hook-Prepare-multiarch.patch381
-rw-r--r--patches/fuel-plugin-ovs/0007-AArch64-Add-native-build-support.patch150
-rw-r--r--patches/fuel-plugin-ovs/0008-AArch64-Add-support-for-downloading-prebuilt-DEBs.patch139
-rw-r--r--patches/fuel-plugin-ovs/0009-build-docker-Use-host-s-network-stack.patch30
-rw-r--r--patches/fuel-plugin-ovs/0010-HACK-build-prebuilt-DEBs-src-bin-ver-mismatch.patch72
-rw-r--r--patches/opnfv-fuel/0002-FIXME-deploy-EFI-Skip-re-ordering-boot-via-IPMI.patch31
-rw-r--r--patches/opnfv-fuel/0002-deploy-Delete-old-Fuel-env-if-present.patch58
-rw-r--r--patches/opnfv-fuel/0003-deploy.sh-accept-a-timeout-flag-T.patch86
-rw-r--r--patches/opnfv-fuel/0004-Fuel-VM-for-the-Enea-Armband-lab.patch10
-rw-r--r--patches/opnfv-fuel/0005-transplant-Generate-extra-interfaces-config-file.patch108
-rw-r--r--patches/opnfv-fuel/0008-deploy-reap.py-Dump-extra-interfaces-information.patch97
-rw-r--r--patches/opnfv-fuel/0021-Build-bootstrap-image-for-arm64.patch6
-rw-r--r--patches/opnfv-fuel/0027-UX-Update-bootstrap-target-build-time-estimate.patch6
-rw-r--r--patches/opnfv-fuel/0031-post-scripts-Enable-systemd-binfmt-for-first-boot.patch6
-rw-r--r--patches/opnfv-fuel/0036-repo-mirror-Allow-multi-arch-local-mirrors.patch136
-rw-r--r--patches/opnfv-fuel/0039-deploy-Fix-add-bootstrap-DEA-override-delay.patch15
-rw-r--r--patches/opnfv-fuel/0040-Backport-dpkg-checkbuilddeps-to-mk-build-deps.patch17
-rw-r--r--patches/opnfv-fuel/0041-build-Allow-PLUGINS-override.patch27
-rw-r--r--patches/opnfv-fuel/0042-build-Allow-MIRROR_MOS_UBUNTU-override.patch22
-rw-r--r--patches/opnfv-fuel/0043-build-Add-armband.mk-config.patch25
-rw-r--r--patches/opnfv-fuel/0044-build-cache-Allow-LOCAL_CACHE_ARCH_NAME-override.patch22
-rw-r--r--patches/opnfv-fuel/0045-build-cache-Consider-UBUNTU_ARCH-in-.cacheid.patch144
-rw-r--r--patches/opnfv-fuel/0047-build-ubuntu-mirror-blacklist-some-SE-mirrors.patch (renamed from patches/opnfv-fuel/0047-build-ubuntu-mirror-blacklist-ftp.acc.umu.se.patch)15
-rw-r--r--patches/opnfv-fuel/0048-fpb-Support-multiple-versions-of-packages.patch50
-rw-r--r--patches/opnfv-fuel/0054-net-check-add-support-for-faulty-operstate.patch63
-rw-r--r--patches/opnfv-fuel/0055-build-docker-Use-host-s-network-stack.patch28
m---------upstream/fuel0
m---------upstream/fuel-agent0
m---------upstream/fuel-astute0
m---------upstream/fuel-library0
m---------upstream/fuel-mirror0
m---------upstream/fuel-nailgun-agent0
m---------upstream/fuel-plugin-opendaylight0
m---------upstream/fuel-plugin-ovs0
m---------upstream/fuel-web0
m---------upstream/vswitchperf0
99 files changed, 1885 insertions, 1386 deletions
diff --git a/Makefile b/Makefile
index 519bce64..d3bc979a 100644
--- a/Makefile
+++ b/Makefile
@@ -79,14 +79,13 @@ patches-export: submodules-init
# For repos pinned in Fuel@OPNFV's config.mk, checkout pinned commit first
.PHONY: patches-import
patches-import: submodules-init
- @git -C ${FUEL_BASE} checkout -q master
- @git -C ${SUBMOD_DIR}/fuel-agent checkout -q ${FUEL_AGENT_COMMIT}
- @git -C ${SUBMOD_DIR}/fuel-astute checkout -q ${ASTUTE_COMMIT}
- @git -C ${SUBMOD_DIR}/fuel-library checkout -q ${FUELLIB_COMMIT}
- @git -C ${SUBMOD_DIR}/fuel-mirror checkout -q ${FUEL_MIRROR_COMMIT}
- @git -C ${SUBMOD_DIR}/fuel-nailgun-agent \
- checkout -q ${FUEL_NAILGUN_AGENT_COMMIT}
- @git -C ${SUBMOD_DIR}/fuel-web checkout -q ${NAILGUN_COMMIT}
+ @cd ${SUBMOD_DIR}/fuel-agent && git checkout -q ${FUEL_AGENT_COMMIT}
+ @cd ${SUBMOD_DIR}/fuel-astute && git checkout -q ${ASTUTE_COMMIT}
+ @cd ${SUBMOD_DIR}/fuel-library && git checkout -q ${FUELLIB_COMMIT}
+ @cd ${SUBMOD_DIR}/fuel-mirror && git checkout -q ${FUEL_MIRROR_COMMIT}
+ @cd ${SUBMOD_DIR}/fuel-nailgun-agent && \
+ git checkout -q ${FUEL_NAILGUN_AGENT_COMMIT}
+ @cd ${SUBMOD_DIR}/fuel-web && git checkout -q ${NAILGUN_COMMIT}
@git submodule -q foreach ' \
mkdir -p ${PATCH_DIR}/$$name; \
git tag armband-workbench-root; \
diff --git a/ci/build.sh b/ci/build.sh
index 3e372f0f..9ae43f30 100755
--- a/ci/build.sh
+++ b/ci/build.sh
@@ -5,6 +5,8 @@
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
+set -e
+
SCRIPT_DIR=$(readlink -f $(dirname ${BASH_SOURCE[0]}))
BUILD_BASE=$(readlink -e ${SCRIPT_DIR}/../upstream/fuel/build)
diff --git a/docs/build-instruction.rst b/docs/buildprocedure/build.instruction.rst
index e1ead30e..884fa590 100644
--- a/docs/build-instruction.rst
+++ b/docs/buildprocedure/build.instruction.rst
@@ -1,14 +1,10 @@
-=================================================================================================
-OPNFV Build instruction for the AArch64 Colorado 1.0 release of OPNFV when using Fuel as a deployment tool
-=================================================================================================
-
-License
-=======
-
-This work is licensed under a Creative Commons Attribution 4.0
-International License. .. http://creativecommons.org/licenses/by/4.0 ..
-(c) Jonas Bjurel (Ericsson AB) and others
+.. This document is protected/licensed under the following conditions
+.. (c) Jonas Bjurel (Ericsson AB)
+.. Licensed under a Creative Commons Attribution 4.0 International License.
+.. You should have received a copy of the license along with this work.
+.. If not, see <http://creativecommons.org/licenses/by/4.0/>.
+========
Abstract
========
@@ -16,6 +12,7 @@ This document describes how to build the Fuel deployment tool for the
AArch64 Colorado release of OPNFV build system, dependencies and
required system resources.
+============
Introduction
============
@@ -36,35 +33,36 @@ Due to early docker and nodejs support on AArch64, we will still use an
x86_64 Fuel Master to build and deploy an AArch64 target pool, as well
as an x86_64 build machine for building the OPNFV ISO.
+============
Requirements
============
Minimum Hardware Requirements
------------------------------
+=============================
- ~50 GB available disc
- 4 GB RAM
Minimum Software Requirements
------------------------------
+=============================
-The build host should run Ubuntu 14.04 (x86_64) operating system.
+The build host should run Ubuntu 14.04 or 16.04 (x86_64) operating system.
On the host, the following packages must be installed:
- An x86_64 host (Bare-metal or VM) with Ubuntu 14.04 LTS installed
- **Note:** Builds on Wily (Ubuntu 15.x) are currently not supported
-
- - A kernel equal- or later than 3.19 (Vivid), simply available through:
+ - A kernel equal- or later than 3.19 (Vivid), simply available through
.. code-block:: bash
$ sudo apt-get install linux-generic-lts-vivid
-- docker - see https://docs.docker.com/engine/installation/ubuntulinux/ for
- installation notes for Ubuntu 14.04. Tested against version 1.9.x and greater
+- docker - see https://docs.docker.com/installation/ubuntulinux/ for
+ installation notes for Ubuntu 14.04. Note: use the latest version from
+ Docker (docker-engine) and not the one in Ubuntu 14.04.
- git
@@ -81,11 +79,14 @@ simply available through:
$ sudo apt-get install git make curl fuseiso
+
+============
Preparations
============
Setting up the Docker build container
--------------------------------------
+=====================================
+
After having installed Docker, add yourself to the docker group:
.. code-block:: bash
@@ -109,7 +110,8 @@ Then restart docker:
$ sudo service docker restart
Setting up OPNFV Gerrit in order to being able to clone the code
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+----------------------------------------------------------------
+
- Start setting up OPNFV gerrit by creating a SSH key (unless you
don't already have one), create one with ssh-keygen
@@ -121,14 +123,15 @@ Setting up OPNFV Gerrit in order to being able to clone the code
your public key in.
Clone the armband@OPNFV code Git repository with your SSH key
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-------------------------------------------------------------
+
Now it is time to clone the code repository:
.. code-block:: bash
$ git clone ssh://<Linux foundation user>@gerrit.opnfv.org:29418/armband
-Now you should have the OPNFV ARMBAND repository with its
+Now you should have the OPNFV armband repository with its
directories stored locally on your build host.
Check out the Colorado release:
@@ -139,7 +142,8 @@ Check out the Colorado release:
$ git checkout colorado.1.0
Clone the armband@OPNFV code Git repository without a SSH key
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-------------------------------------------------------------
+
You can also opt to clone the code repository without a SSH key:
.. code-block:: bash
@@ -149,16 +153,17 @@ You can also opt to clone the code repository without a SSH key:
Make sure to checkout the release tag as described above.
Support for building behind a http/https/rsync proxy
-----------------------------------------------------
+====================================================
The build system is able to make use of a web proxy setup if the
http_proxy, https_proxy, no_proxy (if needed) and RSYNC_PROXY or
RSYNC_CONNECT_PROG environment variables have been set before invoking make.
-The proxy setup must permit port 80 (http), 443 (https) and 873 (rsync).
+The proxy setup must permit port 80 (http) and 443 (https).
+Rsync protocol is currently not used during build process.
Important note about the host Docker daemon settings
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+----------------------------------------------------
The Docker daemon on the host must be configured to use the http proxy
for it to be able to pull the base Ubuntu 14.04 image from the Docker
@@ -172,7 +177,7 @@ like:
to </etc/default/docker> and restarting the Docker daemon.
Setting proxy environment variables prior to build
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+--------------------------------------------------
The build system will make use the following environment variables
that needs to be exported to subshells by using export (bash) or
@@ -180,11 +185,11 @@ setenv (csh/tcsh).
.. code-block:: bash
- http_proxy (or HTTP_PROXY)
- https_proxy (or HTTP_PROXY)
- no_proxy (or NO_PROXY)
- RSYNC_PROXY
- RSYNC_CONNECT_PROG
+ http_proxy (or HTTP_PROXY)
+ https_proxy (or HTTP_PROXY)
+ no_proxy (or NO_PROXY)
+ RSYNC_PROXY
+ RSYNC_CONNECT_PROG
As an example, these are the settings that were put in the user's
.bashrc when verifying the proxy build functionality:
@@ -197,7 +202,7 @@ As an example, these are the settings that were put in the user's
export no_proxy=localhost,127.0.0.1,.consultron.com,.sock
Using a ssh proxy for the rsync connection
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+------------------------------------------
If the proxy setup is not allowing the rsync protocol, an alternative
solution is to use a SSH tunnel to a machine capable of accessing the
@@ -210,22 +215,6 @@ Make sure that the ssh command also refers to the user on the remote
system, as the command itself will be run from the Docker build container
as the root user (but with the invoking user's SSH keys).
-Disabling the Ubuntu repo cache if rsync is not allowed
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-During the build phase, a local Ubuntu package repository is fetched
-from upstream in order to be added to the OPNFV Fuel ISO and for parts
-of this process rsync is used.
-
-If neither of the two available methods for proxying rsync are
-available, the last resort is to turn off the caching of the Ubuntu
-packages in the build system. This is done by removing the
-"f_repobuild" from SUBDIRS in the beginning of the
-<armband/upstream/fuel/build/f_isoroot/Makefile>.
-
-Note! Doing this will require the Fuel master node to have Internet
-access when installing the ISO artifact built as no Ubuntu package
-cache will be on the ISO!
Note! Armband build system uses git submodules to track fuel and
other upstream repos, so in order to apply the above change, one
@@ -234,35 +223,37 @@ should first initialize the submodules and apply armband patches
.. code-block:: bash
- $ make submodules-init
$ make patches-import
+
Configure your build environment
---------------------------------
+================================
** Configuring the build environment should not be performed if building
standard Colorado release **
Select the versions of the components you want to build by editing the
-<armband/upstream/fuel/build/config.mk> file.
+<armband/upstream/fuel/build/config.mk> and
+<armband/upstream/fuel/build/armband.mk> files.
Note! The same observation as above, before altering Makefile, run:
.. code-block:: bash
- $ make submodules-init patches-import
+ $ make patches-import
+
Non official build: Selecting which plugins to build
-----------------------------------------------------
+====================================================
+
In order to cut the build time for unofficial builds (made by an
individual developer locally), the selection if which Fuel plugins to
build (if any) can be done by environment variable
"BUILD_FUEL_PLUGINS" prior to building.
-Only the plugin targets from
-<armband/upstream/fuel/build/f_isoroot/Makefile> that are
-specified in the environment variable will then be built. In order to
-completely disable the building of plugins, the environment variable
+Only the plugin targets from <armband/upstream/fuel/build/armband.mk> that
+are specified in the environment variable will then be built. In order
+to completely disable the building of plugins, the environment variable
is set to " ". When using this functionality, the resulting iso file
will be prepended with the prefix "unofficial-" to clearly indicate
that this is not a full build.
@@ -270,17 +261,21 @@ that this is not a full build.
This method of plugin selection is not meant to be used from within
Gerrit!
-Note! Not all plugins are ported to AArch64. Full list of supported plugins is in release notes.
+Note! So far, only ODL, OVS and BGPVPN plugins were ported to AArch64.
+========
Building
========
-There is only one preffered method available for building Fuel for AArch64:
+There are two methods available for building Fuel:
- A low level method using Make
+- An abstracted method using build.sh
+
Low level build method using make
----------------------------------
+=================================
+
The low level method is based on Make:
From the <armband> directory, invoke <make [target]>
@@ -289,11 +284,9 @@ Following targets exist:
- release - this will do the same as:
- - make submodules-clean clean-docker clean-build
+ - make submodules-clean patches-import build
- - make submodules-init patches-import build
-
-- none/all/build - this will:
+- none/all/build - this will:
- Initialize the docker build environment
@@ -309,36 +302,43 @@ Following targets exist:
- Reconstruct a fuel .iso image
-- submodules-init - Initialize git submodules (fuel@OPNFV, fuel-library etc.)
+- clean - this will remove all artifacts from earlier builds.
-- submodules-clean - cleanup git submodules (fuel@OPNFV, fuel-library etc.)
+- debug - this will simply enter the build container without starting a build, from here you can start a build by enter "make iso"
-- patches-import - this will apply armband@OPNFV patches to git submodules
+If the build is successful, you will find the generated ISO file in
+the <armband/upstream/fuel/build/release> subdirectory!
-- patches-export - this will export git submodules changes as armband patches
+Abstracted build method using build.sh
+======================================
-- clean-build - this will remove all artifacts from earlier builds.
+The abstracted build method uses the <armband/ci/build.sh> script which
+allows you to:
-- clean-docker - this will remove all docker caches from earlier builds.
+- Create and use a build cache - significantly speeding up the
+ build time if upstream repositories have not changed.
-If the build is successful, you will find the generated ISO file in
-the <armband/upstream/fuel/build/release> subdirectory!
+- push/pull cache and artifacts to an arbitrary URI (http(s):, file:, ftp:)
+
+For more info type <armband/ci/build.sh -h>.
+=========
Artifacts
=========
The artifacts produced are:
-- <OPNFV_XXXX.iso> - Which represents the bootable (x86_64) Fuel for AArch64
- image, XXXX is replaced with the build identity provided to the build system
+- <OPNFV_XXXX.iso> - Which represents the bootable Fuel for AArch64 image,
+ XXXX is replaced with the build identity provided to the build system
- <OPNFV_XXXX.iso.txt> - Which holds version metadata.
+==========
References
==========
-1) `OPNFV Installation instruction for the AArch64 Colorado 1.0 release of OPNFV when using Fuel as a deployment tool <http://artifacts.opnfv.org/armband/docs/installation-instruction.html>`_
+1) `OPNFV Installation instruction for the AArch64 Colorado release of OPNFV when using Fuel as a deployment tool <http://artifacts.opnfv.org/armband/colorado/docs/installationprocedure/index.html>`_: http://artifacts.opnfv.org/armband/colorado/docs/installationprocedure/index.html
-2) `OPNFV Build instruction for the AArch64 Colorado 1.0 release of OPNFV when using Fuel as a deployment tool <http://artifacts.opnfv.org/armband/docs/build-instruction.html>`_
+2) `OPNFV Build instruction for the AArch64 Colorado release of OPNFV when using Fuel as a deployment tool <http://artifacts.opnfv.org/armband/colorado/docs/buildprocedure/index.html>`_: http://artifacts.opnfv.org/armband/colorado/docs/buildprocedure/index.html
-3) `OPNFV Release Note for the AArch64 Colorado 1.0 release of OPNFV when using Fuel as a deployment tool <http://artifacts.opnfv.org/armband/docs/release-notes.html>`_
+3) `OPNFV Release Note for the AArch64 Colorado release of OPNFV when using Fuel as a deployment tool <http://artifacts.opnfv.org/armband/colorado/docs/releasenotes/index.html>`_: http://artifacts.opnfv.org/armband/colorado/docs/releasenotes/index.html
diff --git a/docs/buildprocedure/index.rst b/docs/buildprocedure/index.rst
new file mode 100644
index 00000000..49f64c31
--- /dev/null
+++ b/docs/buildprocedure/index.rst
@@ -0,0 +1,16 @@
+.. This document is protected/licensed under the following conditions
+.. (c) Jonas Bjurel (Ericsson AB)
+.. Licensed under a Creative Commons Attribution 4.0 International License.
+.. You should have received a copy of the license along with this work.
+.. If not, see <http://creativecommons.org/licenses/by/4.0/>.
+
+********************************************
+Build instruction for Fuel\@OPNFV on AArch64
+********************************************
+
+.. toctree::
+ :numbered:
+ :maxdepth: 2
+
+ build.instruction.rst
+
diff --git a/docs/configguide/installerconfig.rst b/docs/configguide/installerconfig.rst
deleted file mode 100644
index 83fc605d..00000000
--- a/docs/configguide/installerconfig.rst
+++ /dev/null
@@ -1,332 +0,0 @@
-.. This document is protected/licensed under the following conditions
-.. (c) Jonas Bjurel (Ericsson AB)
-.. Licensed under a Creative Commons Attribution 4.0 International License.
-.. You should have received a copy of the license along with this work.
-.. If not, see <http://creativecommons.org/licenses/by/4.0/>.
-
-Fuel configuration
-==================
-This section provides guidelines on how to install and
-configure the Colorado release of OPNFV when using Fuel as a
-deployment tool including required software and hardware
-configurations.
-
-For detailed instructions on how to install the Colorado release using
-Fuel, see *Reference 13* in section *"Fuel associated references"* below.
-
-Pre-configuration activities
-----------------------------
-
-Planning the deployment
-
-Before starting the installation of the Colorado release of
-OPNFV when using Fuel as a deployment tool, some planning must be
-done.
-
-Familiarize yourself with the Fuel by reading the
-following documents:
-
-- Fuel planning guide, please see *Reference: 8* in section *"Fuel associated references"* below.
-
-- Fuel quick start guide, please see *Reference: 9* in section *"Fuel associated references"* below.
-
-- Fuel operations guide, please see *Reference: 10* in section *"Fuel associated references"* below.
-
-- Fuel Plugin Developers Guide, please see *Reference: 11* in section *"Fuel associated references"* below.
-
-Before the installation can start, a number of deployment specific parameters must be collected, those are:
-
-#. Provider sub-net and gateway information
-
-#. Provider VLAN information
-
-#. Provider DNS addresses
-
-#. Provider NTP addresses
-
-#. Network overlay you plan to deploy (VLAN, VXLAN, FLAT)
-
-#. Monitoring Options you want to deploy (Ceilometer, Syslog, etc.)
-
-#. How many nodes and what roles you want to deploy (Controllers, Storage, Computes)
-
-#. Other options not covered in the document are available in the links above
-
-
-Retrieving the ISO image
-^^^^^^^^^^^^^^^^^^^^^^^^
-First of all, the Fuel deployment ISO image needs to be retrieved, the
-Fuel .iso image of the Colorado release can be found at *Reference: 2*
-
-Alternatively, you may build the .iso from source by cloning the
-opnfv/fuel git repository. Detailed instructions on how to build
-a Fuel OPNFV .iso can be found in *Reference: 14* at section *"Fuel associated references"* below.
-
-Hardware requirements
----------------------
-Following high level hardware requirements must be met:
-
-+--------------------+------------------------------------------------------+
-| **HW Aspect** | **Requirement** |
-| | |
-+====================+======================================================+
-| **# of nodes** | Minimum 5 (3 for non redundant deployment): |
-| | |
-| | - 1 Fuel deployment master (may be virtualized) |
-| | |
-| | - 3(1) Controllers (1 colocated mongo/ceilometer |
-| | role, 2 Ceph-OSD roles) |
-| | |
-| | - 1 Compute (1 co-located Ceph-OSD role) |
-| | |
-+--------------------+------------------------------------------------------+
-| **CPU** | Minimum 1 socket x86_AMD64 with Virtualization |
-| | support |
-+--------------------+------------------------------------------------------+
-| **RAM** | Minimum 16GB/server (Depending on VNF work load) |
-| | |
-+--------------------+------------------------------------------------------+
-| **Disk** | Minimum 256GB 10kRPM spinning disks |
-| | |
-+--------------------+------------------------------------------------------+
-| **Networks** | 4 Tagged VLANs (PUBLIC, MGMT, STORAGE, PRIVATE) |
-| | |
-| | 1 Un-Tagged VLAN for PXE Boot - ADMIN Network |
-| | |
-| | note: These can be run on single NIC - or spread out |
-| | over other nics as your hardware supports |
-+--------------------+------------------------------------------------------+
-
-For information on compatible hardware types available for use, please see
-*Reference: 11* in section *"Fuel associated references"* below.
-
-Top of the rack (TOR) Configuration requirements
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-The switching infrastructure provides connectivity for the OPNFV
-infrastructure operations, tenant networks (East/West) and provider
-connectivity (North/South); it also provides needed
-connectivity for the Storage Area Network (SAN). To avoid traffic
-congestion, it is strongly suggested that three physically separated
-networks are used, that is: 1 physical network for administration and
-control, one physical network for tenant private and public networks,
-and one physical network for SAN. The switching connectivity can (but
-does not need to) be fully redundant, in such case it and comprises a
-redundant 10GE switch pair for each of the three physically separated
-networks.
-
-The physical TOR switches are **not** automatically configured from
-the OPNFV reference platform. All the networks involved in the OPNFV
-infrastructure as well as the provider networks and the private tenant
-VLANs needs to be manually configured.
-
-Jumphost configuration
-----------------------
-The Jumphost server, also known as the "Fuel master" provides needed
-services/functions to deploy an OPNFV/OpenStack cluster as well functions
-for cluster life-cycle management (extensions, repair actions and upgrades).
-
-The Jumphost server requires 2 (4 if redundancy is required) Ethernet
-interfaces - one for external management of the OPNFV installation,
-and another for jump-host communication with the OPNFV cluster.
-
-Install the Fuel jump-host
-^^^^^^^^^^^^^^^^^^^^^^^^^^
-Mount the Fuel Colorado ISO file as a boot device to the jump host
-server, reboot it, and install the Fuel Jumphost in accordance with installation instructions, see *Reference 13* in section *"Fuel associated references"*
-below.
-
-
-Platform components configuration
----------------------------------
-
-Fuel-Plugins
-^^^^^^^^^^^^
-Fuel plugins enable you to install and configure additional capabilities for
-your Fuel OPNFV based cloud, such as additional storage types, networking
-functionality, or NFV features developed by OPNFV.
-
-Fuel offers an open source framework for creating these plugins, so there’s
-a wide range of capabilities that you can enable Fuel to add to your OpenStack
-clouds.
-
-The OPNFV Colorado version of Fuel provides a set of pre-packaged plugins
-developed by OPNFV:
-
-+--------------------+------------------------------------------------------+
-| **Plugin name** | **Short description** |
-| | |
-+====================+======================================================+
-| OpenDaylight | OpenDaylight provides an open-source SDN Controller |
-| | providing networking features such as L2 and L3 |
-| | network control, "Service Function Chaining", |
-| | routing, networking policies, etc. |
-| | More information on OpenDaylight in the OPNFV |
-| | Colorado release can be found in a separate |
-| | section in this document. |
-+--------------------+------------------------------------------------------+
-| ONOS | ONOS is another open-source SDN controller which |
-| | in essense fill the same role as OpenDaylight. |
-| | More information on ONOS in the OPNFV |
-| | Colorado release can be found in a separate |
-| | section in this document. |
-| | |
-+--------------------+------------------------------------------------------+
-| BGP-VPN | BGP-VPN provides an BGP/MPLS VPN service |
-| | More information on BGP-VPN in the OPNFV |
-| | Colorado release can be found in a separate |
-| | section in this document. |
-| | |
-+--------------------+------------------------------------------------------+
-| OVS-NSH | OVS-NSH provides a variant of Open-vSwitch |
-| | which supports "Network Service Headers" needed |
-| | for the "Service function chaining" feature |
-| | More information on "Service Function Chaining" |
-| | in the OPNFV Colorado release can be found in a |
-| | in a separate section in this document. |
-| | |
-+--------------------+------------------------------------------------------+
-| OVS-NFV | OVS-NFV provides a variant of Open-vSwitch |
-| | with carrier grade characteristics essential for |
-| | NFV workloads. |
-| | More information on OVS-NFV |
-| | in the OPNFV Colorado release can be found in a |
-| | in a separate section in this document. |
-| | |
-+--------------------+------------------------------------------------------+
-| KVM-NFV | KVM-NFV provides a variant of KVM with improved |
-| | virtualization characteristics essential for NFV |
-| | workloads. |
-| | More information on KVM-NFV |
-| | in the OPNFV Colorado release can be found in a |
-| | in a separate section in this document. |
-| | |
-+--------------------+------------------------------------------------------+
-| VSPERF | VSPERF provides a networking characteristics test |
-| | bench that facilitates characteristics/performance |
-| | evaluation of vSwithches |
-| | More information on VSPERF |
-| | in the OPNFV Colorado release can be found in a |
-| | in a separate section in this document. |
-| | |
-+--------------------+------------------------------------------------------+
-
-*Additional third-party plugins can be found here:*
-*https://www.mirantis.com/products/openstack-drivers-and-plugins/fuel-plugins/*
-**Note: Plugins are not necessarilly compatible with each other, see section
-"Configuration options, OPNFV scenarios" for compatibility information**
-
-The plugins come prepackaged, ready to install. To do so follow the
-installation instructions provided in *Reference 13* provided in section
-*"Fuel associated references"* below.
-
-Fuel environment
-^^^^^^^^^^^^^^^^
-A Fuel environment is an OpenStack instance managed by Fuel,
-one Fuel instance can manage several OpenStack instances/environments
-with different configurations, etc.
-
-To create a Fuel instance, follow the instructions provided in the installation
-instructions, see *Reference 13* in section *"Fuel associated references"* below.
-
-Provisioning of aditional features and services
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-Although the plugins have already previously been installed,
-they are not per default enabled for the environment we just created.
-The plugins of your choice need to be enabled and configured.
-
-To enable a plugin, follow the installation instructions found in
-*Reference 13*, provided in section *"Fuel associated references"* below.
-
-For configuration of the plugins, please see section "Feature Configuration".
-
-Networking
-^^^^^^^^^^
-All the networking aspects need to be configured in terms of:
-- Interfaces/NICs
-- VLANs
-- Sub-nets
-- Gateways
-- User network segmentation (VLAN/VXLAN)
-- DNS
-- NTP
-- etc.
-
-For guidelines on how to configure networking, please refer to the
-installation instructions found in *Reference 13* provided in section
-*"Fuel associated references"* below.
-
-Node allocation
-^^^^^^^^^^^^^^^
-Now, it is time to allocate the nodes in your OPNFV cluster to OpenStack-,
-SDN-, and other feature/service roles. Some roles may require redundancy,
-while others don't; Some roles may be co-located with other roles, while
-others may not. The Fuel GUI will guide you in the allocation of roles and
-will not permit you to perform invalid allocations.
-
-For detailed guide-lines on node allocation, please refer to the installation instructions found in *Reference 13*, provided in section *"Fuel associated references"* below.
-
-Off-line deployment
-^^^^^^^^^^^^^^^^^^^
-The OPNFV Colorado version of Fuel can be deployed using on-line upstream
-repositories (default) or off-line using built-in local repositories on the
-Fuel jump-start server.
-
-For instructions on how to configure Fuel for off-line deployment, please
-refer to the installation instructions found in, *Reference 13*, provided
-in section *"Fuel associated references"* below.
-
-Deployment
-^^^^^^^^^^
-You should now be ready to deploy your OPNFV Colorado environment - but before doing so you may want to verify your network settings.
-
-For further details on network verification and deployment, please refer to
-the installation instructions found in, *Reference 13*, provided in section
-*"Fuel associated references"* below.
-
-Fuel associated references
---------------------------
-
-OPNFV
-~~~~~
-
-1) `OPNFV Home Page <www.opnfv.org>`_
-
-2) `OPNFV documentation- and software downloads <https://www.opnfv.org/software/download>`_
-
-OpenStack
-~~~~~~~~~
-
-3) `OpenStack Liberty Release artifacts <http://www.openstack.org/software/liberty>`_
-
-4) `OpenStack documentation <http://docs.openstack.org>`_
-
-OpenDaylight
-~~~~~~~~~~~~
-
-5) `OpenDaylight artifacts <http://www.opendaylight.org/software/downloads>`_
-
-Fuel
-~~~~
-
-6) `The Fuel OpenStack project <https://wiki.openstack.org/wiki/Fuel>`_
-
-7) `Fuel documentation overview <https://docs.mirantis.com/openstack/fuel/fuel-9.0/>`_
-
-8) `Fuel planning guide <https://docs.mirantis.com/openstack/fuel/fuel-9.0/mos-planning-guide.html>`_
-
-9) `Fuel quick start guide <https://docs.mirantis.com/openstack/fuel/fuel-9.0/quickstart-guide.html>`_
-
-10) `Fuel user guide <http://docs.openstack.org/developer/fuel-docs/userdocs/fuel-user-guide.html>`_
-
-11) `Fuel Plugin Developers Guide <https://wiki.openstack.org/wiki/Fuel/Plugins>`_
-
-12) `Fuel OpenStack Hardware Compatibility List <https://www.mirantis.com/products/openstack-drivers-and-plugins/hardware-compatibility-list>`_
-
-Fuel in OPNFV
-~~~~~~~~~~~~~
-
-13) `OPNFV Installation instruction for the Colorado release of OPNFV when using Fuel as a deployment tool <http://artifacts.opnfv.org/fuel/docs/installation-instruction.html>`_
-
-14) `OPNFV Build instruction for the Colorado release of OPNFV when using Fuel as a deployment tool <http://artifacts.opnfv.org/fuel/docs/build-instruction.html>`_
-
-15) `OPNFV Release Note for the Colorado release of OPNFV when using Fuel as a deployment tool <http://artifacts.opnfv.org/fuel/docs/release-notes.html>`_
diff --git a/docs/configguide/postinstall.rst b/docs/configguide/postinstall.rst
deleted file mode 100644
index 5064e4a2..00000000
--- a/docs/configguide/postinstall.rst
+++ /dev/null
@@ -1,24 +0,0 @@
-.. This document is protected/licensed under the following conditions
-.. (c) Jonas Bjurel (Ericsson AB)
-.. Licensed under a Creative Commons Attribution 4.0 International License.
-.. You should have received a copy of the license along with this work.
-.. If not, see <http://creativecommons.org/licenses/by/4.0/>.
-
-Fuel post installation procedures
-=================================
-
-Automated post installation activities
---------------------------------------
-Fuel provides a fairly broad coverage of built in automated health checks.
-These validate the installation in terms of configuration, services,
-networking, storage, policies, etc.
-The execution of the full range of health checks takes less than 30 minutes.
-
-For instructions on how to run health-checks, please read the Fuel installation
-instructions.
-
-Platform components validation
-------------------------------
-Consult the feature sections in this document for any post-install
-feature specific validation/health-checks.
-
diff --git a/docs/img/addnodes.png b/docs/img/addnodes.png
deleted file mode 100644
index 15730db9..00000000
--- a/docs/img/addnodes.png
+++ /dev/null
Binary files differ
diff --git a/docs/img/compute.png b/docs/img/compute.png
deleted file mode 100644
index fd7811f3..00000000
--- a/docs/img/compute.png
+++ /dev/null
Binary files differ
diff --git a/docs/img/computelist.png b/docs/img/computelist.png
deleted file mode 100644
index a4453d95..00000000
--- a/docs/img/computelist.png
+++ /dev/null
Binary files differ
diff --git a/docs/img/fuelmenu1.png b/docs/img/fuelmenu1.png
deleted file mode 100644
index 15fccc43..00000000
--- a/docs/img/fuelmenu1.png
+++ /dev/null
Binary files differ
diff --git a/docs/img/fuelmenu2.png b/docs/img/fuelmenu2.png
deleted file mode 100644
index 1f87c53e..00000000
--- a/docs/img/fuelmenu2.png
+++ /dev/null
Binary files differ
diff --git a/docs/img/fuelmenu3.png b/docs/img/fuelmenu3.png
deleted file mode 100644
index c9fa2795..00000000
--- a/docs/img/fuelmenu3.png
+++ /dev/null
Binary files differ
diff --git a/docs/img/fuelmenu4.png b/docs/img/fuelmenu4.png
deleted file mode 100644
index 1bc9c041..00000000
--- a/docs/img/fuelmenu4.png
+++ /dev/null
Binary files differ
diff --git a/docs/img/fuelmenu5.png b/docs/img/fuelmenu5.png
deleted file mode 100644
index 11247986..00000000
--- a/docs/img/fuelmenu5.png
+++ /dev/null
Binary files differ
diff --git a/docs/img/fuelmenu6.png b/docs/img/fuelmenu6.png
deleted file mode 100644
index 9ff62c79..00000000
--- a/docs/img/fuelmenu6.png
+++ /dev/null
Binary files differ
diff --git a/docs/img/grub-1.png b/docs/img/grub-1.png
deleted file mode 100644
index 7488503a..00000000
--- a/docs/img/grub-1.png
+++ /dev/null
Binary files differ
diff --git a/docs/img/health.png b/docs/img/health.png
deleted file mode 100644
index 71675069..00000000
--- a/docs/img/health.png
+++ /dev/null
Binary files differ
diff --git a/docs/img/interfaceconf.png b/docs/img/interfaceconf.png
deleted file mode 100644
index e8b45578..00000000
--- a/docs/img/interfaceconf.png
+++ /dev/null
Binary files differ
diff --git a/docs/img/network.png b/docs/img/network.png
deleted file mode 100644
index 04c67d38..00000000
--- a/docs/img/network.png
+++ /dev/null
Binary files differ
diff --git a/docs/img/neutronl3.png b/docs/img/neutronl3.png
deleted file mode 100644
index dd8d7954..00000000
--- a/docs/img/neutronl3.png
+++ /dev/null
Binary files differ
diff --git a/docs/img/other.png b/docs/img/other.png
deleted file mode 100644
index 4e740eb0..00000000
--- a/docs/img/other.png
+++ /dev/null
Binary files differ
diff --git a/docs/img/plugins_aarch64.png b/docs/img/plugins_aarch64.png
deleted file mode 100644
index 83c0262d..00000000
--- a/docs/img/plugins_aarch64.png
+++ /dev/null
Binary files differ
diff --git a/docs/img/verifynet.png b/docs/img/verifynet.png
deleted file mode 100644
index 5932bc22..00000000
--- a/docs/img/verifynet.png
+++ /dev/null
Binary files differ
diff --git a/docs/installationprocedure/img/addnodes.png b/docs/installationprocedure/img/addnodes.png
new file mode 100644
index 00000000..b6240569
--- /dev/null
+++ b/docs/installationprocedure/img/addnodes.png
Binary files differ
diff --git a/docs/installationprocedure/img/compute.png b/docs/installationprocedure/img/compute.png
new file mode 100644
index 00000000..fc1cf0f2
--- /dev/null
+++ b/docs/installationprocedure/img/compute.png
Binary files differ
diff --git a/docs/installationprocedure/img/computelist.png b/docs/installationprocedure/img/computelist.png
new file mode 100644
index 00000000..47419653
--- /dev/null
+++ b/docs/installationprocedure/img/computelist.png
Binary files differ
diff --git a/docs/img/fuelconsole1.png b/docs/installationprocedure/img/fuelconsole1.png
index 61703cab..61703cab 100644
--- a/docs/img/fuelconsole1.png
+++ b/docs/installationprocedure/img/fuelconsole1.png
Binary files differ
diff --git a/docs/installationprocedure/img/fuelmenu1.png b/docs/installationprocedure/img/fuelmenu1.png
new file mode 100644
index 00000000..ee7a0edb
--- /dev/null
+++ b/docs/installationprocedure/img/fuelmenu1.png
Binary files differ
diff --git a/docs/installationprocedure/img/fuelmenu2.png b/docs/installationprocedure/img/fuelmenu2.png
new file mode 100644
index 00000000..4dcbb6e6
--- /dev/null
+++ b/docs/installationprocedure/img/fuelmenu2.png
Binary files differ
diff --git a/docs/img/fuelmenu2a.png b/docs/installationprocedure/img/fuelmenu2a.png
index 396c1237..396c1237 100644
--- a/docs/img/fuelmenu2a.png
+++ b/docs/installationprocedure/img/fuelmenu2a.png
Binary files differ
diff --git a/docs/installationprocedure/img/fuelmenu3.png b/docs/installationprocedure/img/fuelmenu3.png
new file mode 100644
index 00000000..23e61975
--- /dev/null
+++ b/docs/installationprocedure/img/fuelmenu3.png
Binary files differ
diff --git a/docs/installationprocedure/img/fuelmenu4.png b/docs/installationprocedure/img/fuelmenu4.png
new file mode 100644
index 00000000..3be29cd6
--- /dev/null
+++ b/docs/installationprocedure/img/fuelmenu4.png
Binary files differ
diff --git a/docs/installationprocedure/img/fuelmenu5.png b/docs/installationprocedure/img/fuelmenu5.png
new file mode 100644
index 00000000..e3d21545
--- /dev/null
+++ b/docs/installationprocedure/img/fuelmenu5.png
Binary files differ
diff --git a/docs/installationprocedure/img/fuelmenu6.png b/docs/installationprocedure/img/fuelmenu6.png
new file mode 100644
index 00000000..cafbcddf
--- /dev/null
+++ b/docs/installationprocedure/img/fuelmenu6.png
Binary files differ
diff --git a/docs/img/fuelwsrepsst.png b/docs/installationprocedure/img/fuelwsrepsst.png
index 90ded440..90ded440 100644
--- a/docs/img/fuelwsrepsst.png
+++ b/docs/installationprocedure/img/fuelwsrepsst.png
Binary files differ
diff --git a/docs/installationprocedure/img/grub-1.png b/docs/installationprocedure/img/grub-1.png
new file mode 100644
index 00000000..e64b7937
--- /dev/null
+++ b/docs/installationprocedure/img/grub-1.png
Binary files differ
diff --git a/docs/installationprocedure/img/health.png b/docs/installationprocedure/img/health.png
new file mode 100644
index 00000000..57bd8cf7
--- /dev/null
+++ b/docs/installationprocedure/img/health.png
Binary files differ
diff --git a/docs/installationprocedure/img/interfaceconf.png b/docs/installationprocedure/img/interfaceconf.png
new file mode 100644
index 00000000..e00b03f0
--- /dev/null
+++ b/docs/installationprocedure/img/interfaceconf.png
Binary files differ
diff --git a/docs/img/interfaces.png b/docs/installationprocedure/img/interfaces.png
index 291e434f..291e434f 100644
--- a/docs/img/interfaces.png
+++ b/docs/installationprocedure/img/interfaces.png
Binary files differ
diff --git a/docs/installationprocedure/img/network.png b/docs/installationprocedure/img/network.png
new file mode 100644
index 00000000..7bef0506
--- /dev/null
+++ b/docs/installationprocedure/img/network.png
Binary files differ
diff --git a/docs/installationprocedure/img/neutronl3.png b/docs/installationprocedure/img/neutronl3.png
new file mode 100644
index 00000000..36291ef8
--- /dev/null
+++ b/docs/installationprocedure/img/neutronl3.png
Binary files differ
diff --git a/docs/img/newenv.png b/docs/installationprocedure/img/newenv.png
index d6bc2827..d6bc2827 100644
--- a/docs/img/newenv.png
+++ b/docs/installationprocedure/img/newenv.png
Binary files differ
diff --git a/docs/img/nodes.png b/docs/installationprocedure/img/nodes.png
index 771e4813..771e4813 100644
--- a/docs/img/nodes.png
+++ b/docs/installationprocedure/img/nodes.png
Binary files differ
diff --git a/docs/img/offloadingmodes.png b/docs/installationprocedure/img/offloadingmodes.png
index 5b3cb17b..5b3cb17b 100644
--- a/docs/img/offloadingmodes.png
+++ b/docs/installationprocedure/img/offloadingmodes.png
Binary files differ
diff --git a/docs/installationprocedure/img/other.png b/docs/installationprocedure/img/other.png
new file mode 100644
index 00000000..c088488d
--- /dev/null
+++ b/docs/installationprocedure/img/other.png
Binary files differ
diff --git a/docs/img/plugin_install.png b/docs/installationprocedure/img/plugin_install.png
index ff50633e..ff50633e 100644
--- a/docs/img/plugin_install.png
+++ b/docs/installationprocedure/img/plugin_install.png
Binary files differ
diff --git a/docs/installationprocedure/img/plugins.png b/docs/installationprocedure/img/plugins.png
new file mode 100644
index 00000000..8f7ea596
--- /dev/null
+++ b/docs/installationprocedure/img/plugins.png
Binary files differ
diff --git a/docs/installationprocedure/img/plugins_aarch64.png b/docs/installationprocedure/img/plugins_aarch64.png
new file mode 100644
index 00000000..8bd58d12
--- /dev/null
+++ b/docs/installationprocedure/img/plugins_aarch64.png
Binary files differ
diff --git a/docs/installationprocedure/img/verifynet.png b/docs/installationprocedure/img/verifynet.png
new file mode 100644
index 00000000..e675562c
--- /dev/null
+++ b/docs/installationprocedure/img/verifynet.png
Binary files differ
diff --git a/docs/installationprocedure/index.rst b/docs/installationprocedure/index.rst
new file mode 100644
index 00000000..ed4db110
--- /dev/null
+++ b/docs/installationprocedure/index.rst
@@ -0,0 +1,15 @@
+.. This document is protected/licensed under the following conditions
+.. (c) Jonas Bjurel (Ericsson AB)
+.. Licensed under a Creative Commons Attribution 4.0 International License.
+.. You should have received a copy of the license along with this work.
+.. If not, see <http://creativecommons.org/licenses/by/4.0/>.
+
+***************************************************
+Installation instruction for Fuel\@OPNFV on AArch64
+***************************************************
+
+.. toctree::
+ :numbered:
+ :maxdepth: 2
+
+ installation.instruction.rst
diff --git a/docs/installation-instruction.rst b/docs/installationprocedure/installation.instruction.rst
index 356f4110..0e0bdf8f 100644
--- a/docs/installation-instruction.rst
+++ b/docs/installationprocedure/installation.instruction.rst
@@ -1,26 +1,24 @@
-====================================================================================================================
-OPNFV Installation instruction for the AArch64 Colorado 1.0 release of OPNFV when using Fuel as a deployment tool
-====================================================================================================================
-
-License
-=======
-
-This work is licensed under a Creative Commons Attribution 4.0 International
-License. .. http://creativecommons.org/licenses/by/4.0 ..
-(c) Jonas Bjurel (Ericsson AB) and others
+.. This document is protected/licensed under the following conditions
+.. (c) Jonas Bjurel (Ericsson AB)
+.. Licensed under a Creative Commons Attribution 4.0 International License.
+.. You should have received a copy of the license along with this work.
+.. If not, see <http://creativecommons.org/licenses/by/4.0/>.
+========
Abstract
========
-This document describes how to install the Colorado 1.0 release of
-OPNFV when using Fuel as a deployment tool, with an AArch64 (only) target
-node pool.
+This document describes how to install the Colorado release of
+OPNFV when using Fuel as a deployment tool, with an AArch64 (only)
+target node pool. It covers its usage, limitations, dependencies
+and required system resources.
+============
Introduction
============
This document provides guidelines on how to install and
-configure the Colorado 1.0 release of OPNFV when using Fuel as a
+configure the Colorado release of OPNFV when using Fuel as a
deployment tool, with an AArch64 (only) target node pool,
including required software and hardware configurations.
@@ -34,24 +32,26 @@ deployment.
The audience of this document is assumed to have good knowledge in
networking and Unix/Linux administration.
+=======
Preface
=======
-Before starting the installation of the AArch64 Colorado 1.0 release of
-OPNFV, using Fuel as a deployment tool, some planning must be
+
+Before starting the installation of the AArch64 Colorado 1.0 release
+of OPNFV, using Fuel as a deployment tool, some planning must be
done.
Retrieving the ISO image
-------------------------
+========================
First of all, the Fuel deployment ISO image needs to be retrieved, the
ArmbandFuel .iso image of the AArch64 Colorado release can be found
at *Reference: 2*
Building the ISO image
-----------------------
+======================
-Alternatively, you may build the ArmbandFuel .iso from source by cloning the
-opnfv/armband git repository. To retrieve the repository for the AArch64
+Alternatively, you may build the Armband Fuel .iso from source by cloning
+the opnfv/armband git repository. To retrieve the repository for the AArch64
Colorado 1.0 release use the following command:
.. code-block:: bash
@@ -69,21 +69,20 @@ Go to the armband directory and build the .iso:
.. code-block:: bash
- $ cd armband
- $ make release
+ $ cd armband; make all
For more information on how to build, please see *Reference: 14*
Other preparations
-------------------
+==================
Next, familiarize yourself with Fuel by reading the following documents:
-- Fuel planning guide, please see *Reference: 8*
+- Fuel Installation Guide, please see *Reference: 8*
-- Fuel user guide, please see *Reference: 9*
+- Fuel QuickStart, please see *Reference: 9*
-- Fuel operations guide, please see *Reference: 10*
+- Fuel Developer Guide, please see *Reference: 10*
- Fuel Plugin Developers Guide, please see *Reference: 11*
@@ -101,7 +100,7 @@ Prior to installation, a number of deployment specific parameters must be collec
#. How many nodes and what roles you want to deploy (Controllers, Storage, Computes)
-#. Monitoring options you want to deploy (Ceilometer, Syslog, erc.).
+#. Monitoring options you want to deploy (Ceilometer, Syslog, etc.).
#. Other options not covered in the document are available in the links above
@@ -109,6 +108,7 @@ Prior to installation, a number of deployment specific parameters must be collec
This information will be needed for the configuration procedures
provided in this document.
+=====================
Hardware requirements
=====================
@@ -121,6 +121,8 @@ installation of AArch64 Colorado 1.0 using Fuel:
+====================+======================================================+
| **AArch64 nodes** | Minimum 5 (3 for non redundant deployment): |
| | |
+| | - 1 Fuel deployment master (may be virtualized) |
+| | |
| | - 3(1) Controllers (1 colocated mongo/ceilometer |
| | role, 2 Ceph-OSD roles) |
| | |
@@ -149,6 +151,7 @@ installation of AArch64 Colorado 1.0 using Fuel:
| **1 x86_64 node** | - 1 Fuel deployment master, x86 (may be virtualized) |
+--------------------+------------------------------------------------------+
+===============================
Help with Hardware Requirements
===============================
@@ -165,7 +168,7 @@ environment, you should think about:
- Networking -- Depends on the Choose Network Topology, the network bandwidth per virtual machine, and network storage.
-
+================================================
Top of the rack (TOR) Configuration requirements
================================================
@@ -190,6 +193,7 @@ Manual configuration of the Colorado hardware platform should
be carried out according to the OPNFV Pharos specification:
<https://wiki.opnfv.org/display/pharos/Pharos+Specification>
+==========================================
OPNFV Software installation and deployment
==========================================
@@ -198,8 +202,9 @@ server (Fuel master) as well as the deployment of the full OPNFV
reference platform stack across a server cluster.
Install Fuel master
--------------------
-#. Mount the Colorado Fuel ISO file/media as a boot device to the jump host server.
+===================
+
+#. Mount the Colorado Armband Fuel ISO file/media as a boot device to the jump host server.
#. Reboot the jump host to establish the Fuel server.
@@ -211,7 +216,7 @@ Install Fuel master
.. figure:: img/grub-1.png
-#. Wait until screen Fuel setup is shown (Note: This can take up to 30 minutes).
+#. Wait until the Fuel setup screen is shown (Note: This can take up to 30 minutes).
#. In the "Fuel User" section - Confirm/change the default password (See figure below)
@@ -223,9 +228,9 @@ Install Fuel master
.. figure:: img/fuelmenu1.png
-#. In the "Network Setup" section - Configure DHCP/Static IP information for your FUEL node - For example, ETH0 is 10.20.0.2/24 for FUEL booting and ETH1 is DHCP/Static in your corporate/lab network (see figure below).
+#. In the "Network Setup" section - Configure DHCP/Static IP information for your FUEL node - For example, ETH0 is 10.20.0.2/24 for FUEL booting and ETH1 is DHCP in your corporate/lab network (see figure below).
- - **NOTE**: ArmbandFuel@OPNFV requires internet connectivity during bootstrap
+- **NOTE**: ArmbandFuel@OPNFV requires internet connectivity during bootstrap
image building, due to missing arm64 (AArch64) packages in the partial
local Ubuntu mirror (consequence of ports.ubuntu.com mirror architecture).
@@ -262,6 +267,7 @@ Install Fuel master
.. figure:: img/fuelmenu4.png
+
#. **DO NOT CHANGE** anything in "Bootstrap Image" section (see figure below).
In ArmbandFuel@OPNFV, this data is **NOT** actually used for bootstrap
@@ -285,17 +291,16 @@ Install Fuel master
#. Start the installation.
- - Press <F8> or select Quit Setup and press Save and Quit.
-
- - Installation starts, wait until the login screen is shown.
+ - Press <F8>
+ - The installation will now start, wait until the login screen is shown.
Boot the Node Servers
----------------------
+=====================
After the Fuel Master node has rebooted from the above steps and is at
the login prompt, you should boot the Node Servers (Your
-Compute/Control/Storage blades (nested or real) with a PXE booting
+Compute/Control/Storage blades, nested or real) with a PXE booting
scheme so that the FUEL Master can pick them up for control.
**NOTE**: AArch64 target nodes are expected to support PXE booting an
@@ -306,7 +311,7 @@ the **de facto** standard for ARMv8 nodes.
#. Enable PXE booting
- - For every controller and compute server: enable PXE Booting as the first boot device in the UEFI (EDK2) boot order menu and hard disk as the second boot device in the same menu.
+ - For every controller and compute server: enable PXE Booting as the first boot device in the UEFI (EDK2) boot order menu, and hard disk as the second boot device in the same menu.
#. Reboot all the control and compute blades.
@@ -318,15 +323,14 @@ the **de facto** standard for ARMv8 nodes.
.. figure:: img/nodes.png
-
Install additional Plugins/Features on the FUEL node
-----------------------------------------------------
+====================================================
#. SSH to your FUEL node (e.g. root@10.20.0.2 pwd: r00tme)
#. Select wanted plugins/features from the /opt/opnfv/ directory.
-#. Install the wanted plugin with the command:
+#. Install the wanted plugin with the command
.. code-block:: bash
@@ -338,15 +342,15 @@ Install additional Plugins/Features on the FUEL node
Plugin ....... was successfully installed.
- **NOTE**: Not all plugins are ported to AArch64 Colorado 1.0
- see *Reference 15*.
-
.. figure:: img/plugin_install.png
+ **NOTE**: AArch64 Colorado 1.0 ships only with ODL, OVS and BGPVPN plugins,
+ see *Reference 15*.
+
Create an OpenStack Environment
--------------------------------
+===============================
-#. Connect to Fuel WEB UI with a browser (default: https://10.20.0.2:8443) (login admin/admin)
+#. Connect to Fuel WEB UI with a browser (default: https://10.20.0.2:8443) (login: admin/admin)
#. Create and name a new OpenStack environment, to be installed.
@@ -372,18 +376,18 @@ Create an OpenStack Environment
#. Select "additional services" you wish to install.
- - Check option "Install Ceilometer (OpenStack Telemetry)" and press <Next>
+ - Check option "Install Ceilometer and Aodh" and press <Next>
#. Create the new environment.
- Click <Create> Button
Configure the network environment
----------------------------------
+=================================
#. Open the environment you previously created.
-#. Open the networks tab and select the "default Node Networks group to" on the left pane (see figure below).
+#. Open the networks tab and select the "default" Node Networks group to on the left pane (see figure below).
.. figure:: img/network.png
@@ -435,7 +439,7 @@ Configure the network environment
- Set appropriate VLAN tag (default 103)
-#. Select the "Neutron L3 Node Networks group" on the left pane.
+#. Select the "Neutron L3" Node Networks group on the left pane.
.. figure:: img/neutronl3.png
@@ -461,7 +465,7 @@ Configure the network environment
#. Save Settings.
-#. Select the "Other Node Networks group" on the left pane(see figure below).
+#. Select the "Other" Node Networks group on the left pane (see figure below).
.. figure:: img/other.png
@@ -478,18 +482,18 @@ Configure the network environment
- Provide the NTP server settings
Select Hypervisor type
-----------------------
+======================
#. In the FUEL UI of your Environment, click the "Settings" Tab
-#. Select Compute on the left side pane (see figure below)
+#. Select "Compute" on the left side pane (see figure below)
- Check the KVM box and press "Save settings"
.. figure:: img/compute.png
Enable Plugins
---------------
+==============
#. In the FUEL UI of your Environment, click the "Settings" Tab
@@ -500,7 +504,7 @@ Enable Plugins
.. figure:: img/plugins_aarch64.png
Allocate nodes to environment and assign functional roles
----------------------------------------------------------
+=========================================================
#. Click on the "Nodes" Tab in the FUEL WEB UI (see figure below).
@@ -510,7 +514,7 @@ Allocate nodes to environment and assign functional roles
- Click on the <+Add Nodes> button
- - Check <Controller>, <Telemetry - MongoDB> and optionally an SDN Controller role (OpenDaylight controller) in the Assign Roles Section.
+ - Check <Controller>, <Telemetry - MongoDB> and optionally an SDN Controller role (OpenDaylight controller) in the "Assign Roles" Section.
- Check one node which you want to act as a Controller from the bottom half of the screen
@@ -540,15 +544,14 @@ Allocate nodes to environment and assign functional roles
- Click <Configure Interfaces>
- - Assign interfaces (bonded) for mgmt-, admin-, private-, public-
- and storage networks
+ - Assign interfaces (bonded) for mgmt-, admin-, private-, public- and storage networks
- Click <Apply>
.. figure:: img/interfaceconf.png
OPTIONAL - UNTESTED - Set Local Mirror Repos
----------------------------------
+===========================================
**NOTE**: AArch64 Colorado 1.0 does not fully support local Ubuntu mirrors,
or at least does not ship with arm64 packages in local repos by default.
@@ -559,7 +562,7 @@ Local MOS/Auxiliary repos contain packages for both amd64 and arm64.
**NOTE**: Below instruction assume you already added (by hand) arm64
Ubuntu necessary packages to the local repository!
-The following steps can be executed if you are in an environment with
+The following steps must be executed if you are in an environment with
no connection to the Internet. The Fuel server delivers a local repo
that can be used for installation / deployment of openstack.
@@ -573,14 +576,14 @@ that can be used for installation / deployment of openstack.
- "ubuntu-updates" URI="deb http://<ip-of-fuel-server>:8080/mirrors/ubuntu/ trusty-updates main"
- - "mos" URI="deb http://<ip-of-fuel-server>::8080/mitaka-8.0/ubuntu/x86_64 mos8.0 main restricted"
+ - "mos" URI="deb http://<ip-of-fuel-server>::8080/mitaka-9.0/ubuntu/x86_64 mos9.0 main restricted"
- - "Auxiliary" URI="deb http://<ip-of-fuel-server>:8080/mitaka-8.0/ubuntu/auxiliary auxiliary main restricted"
+ - "Auxiliary" URI="deb http://<ip-of-fuel-server>:8080/mitaka-9.0/ubuntu/auxiliary auxiliary main restricted"
- Click <Save Settings> at the bottom to Save your changes
Target specific configuration
------------------------------
+=============================
#. [AArch64 specific] Configure MySQL WSREP SST provider
@@ -652,7 +655,7 @@ Target specific configuration
- Repeat the step above for all affected nodes/interfaces in the POD.
Verify Networks
----------------
+===============
It is important that the Verify Networks action is performed as it will verify
that communicate works for the networks you have setup, as well as check that
@@ -666,11 +669,10 @@ packages needed for a successful deployment can be fetched.
.. figure:: img/verifynet.png
-
Deploy Your Environment
------------------------
+=======================
-38. Deploy the environment.
+#. Deploy the environment.
- In the Fuel GUI, click on the "Dashboard" Tab.
@@ -681,6 +683,7 @@ Deploy Your Environment
Wait for your deployment to complete, you can view the "Dashboard"
Tab to see the progress and status of your deployment.
+=========================
Installation health-check
=========================
@@ -692,54 +695,55 @@ Installation health-check
- Allow tests to run and investigate results where appropriate
- - Check *Reference 15* for known issues / limitations on AArch64, like
- unsupported migration tests when using a GICv3 interrupt controller
+ - Check *Reference 15* for known issues / limitations on AArch64
.. figure:: img/health.png
+==========
References
==========
OPNFV
------
+=====
-1) `OPNFV Home Page <http://www.opnfv.org>`_
+1) `OPNFV Home Page <http://www.opnfv.org>`_: http://www.opnfv.org
-2) `OPNFV documentation- and software downloads <https://www.opnfv.org/software/download>`_
+2) `OPNFV documentation- and software downloads <https://www.opnfv.org/software/download>`_: https://www.opnfv.org/software/download
OpenStack
----------
+=========
-3) `OpenStack Mitaka Release artifacts <http://www.openstack.org/software/mitaka>`_
+3) `OpenStack Mitaka Release artifacts <http://www.openstack.org/software/mitaka>`_: http://www.openstack.org/software/mitaka
-4) `OpenStack documentation <http://docs.openstack.org>`_
+4) `OpenStack documentation <http://docs.openstack.org>`_: http://docs.openstack.org
OpenDaylight
-------------
+============
-5) `OpenDaylight artifacts <http://www.opendaylight.org/software/downloads>`_
+5) `OpenDaylight artifacts <http://www.opendaylight.org/software/downloads>`_: http://www.opendaylight.org/software/downloads
Fuel
-----
-6) `The Fuel OpenStack project <https://wiki.openstack.org/wiki/Fuel>`_
+====
+
+6) `The Fuel OpenStack project <https://wiki.openstack.org/wiki/Fuel>`_: https://wiki.openstack.org/wiki/Fuel
-7) `Fuel documentation overview <https://docs.mirantis.com/openstack/fuel/fuel-9.0>`_
+7) `Fuel documentation overview <http://docs.openstack.org/developer/fuel-docs>`_: http://docs.openstack.org/developer/fuel-docs
-8) `Fuel planning guide <https://docs.mirantis.com/openstack/fuel/fuel-9.0/mos-planning-guide.html>`_
+8) `Fuel Installation Guide <http://docs.openstack.org/developer/fuel-docs/userdocs/fuel-install-guide.html>`_: http://docs.openstack.org/developer/fuel-docs/userdocs/fuel-install-guide.html
-9) `Fuel quick start guide <https://docs.mirantis.com/openstack/fuel/fuel-9.0/quickstart-guide.html>`_
+9) `Fuel QuickStart Guide <https://docs.mirantis.com/openstack/fuel/fuel-9.0/quickstart-guide.html>`_: https://docs.mirantis.com/openstack/fuel/fuel-9.0/quickstart-guide.html
-10) `Fuel user guide <http://docs.openstack.org/developer/fuel-docs/userdocs/fuel-user-guide.html>`_
+10) `Fuel Developer Guide <http://docs.openstack.org/developer/fuel-docs/devdocs/develop.html>`_: http://docs.openstack.org/developer/fuel-docs/devdocs/develop.html
-11) `Fuel Plugin Developers Guide <https://wiki.openstack.org/wiki/Fuel/Plugins>`_
+11) `Fuel Plugin Developers Guide <http://docs.openstack.org/developer/fuel-docs/plugindocs/fuel-plugin-sdk-guide.html>`_: http://docs.openstack.org/developer/fuel-docs/plugindocs/fuel-plugin-sdk-guide.html
-12) `(N/A on AArch64) Fuel OpenStack Hardware Compatibility List <https://www.mirantis.com/products/openstack-drivers-and-plugins/hardware-compatibility-list>`_
+12) `(N/A on AArch64) Fuel OpenStack Hardware Compatibility List <https://www.mirantis.com/products/openstack-drivers-and-plugins/hardware-compatibility-list>`_: https://www.mirantis.com/products/openstack-drivers-and-plugins/hardware-compatibility-list
Fuel in OPNFV
--------------
+=============
-13) `OPNFV Installation instruction for the AArch64 Colorado release of OPNFV when using Fuel as a deployment tool <http://artifacts.opnfv.org/armband/docs/installation-instruction.html>`_
+13) `OPNFV Installation instruction for the AArch64 Colorado release of OPNFV when using Fuel as a deployment tool <http://artifacts.opnfv.org/armband/colorado/docs/installationprocedure/index.html>`_: http://artifacts.opnfv.org/armband/colorado/docs/installationprocedure/index.html
-14) `OPNFV Build instruction for the AArch64 Colorado release of OPNFV when using Fuel as a deployment tool <http://artifacts.opnfv.org/armband/docs/build-instruction.html>`_
+14) `OPNFV Build instruction for the AArch64 Colorado release of OPNFV when using Fuel as a deployment tool <http://artifacts.opnfv.org/armband/colorado/docs/buildprocedure/index.html>`_: http://artifacts.opnfv.org/armband/colorado/docs/buildprocedure/index.html
-15) `OPNFV Release Note for the AArch64 Colorado release of OPNFV when using Fuel as a deployment tool <http://artifacts.opnfv.org/armband/docs/release-notes.html>`_
+15) `OPNFV Release Note for the AArch64 Colorado release of OPNFV when using Fuel as a deployment tool <http://artifacts.opnfv.org/armband/colorado/docs/releasenotes/index.html>`_: http://artifacts.opnfv.org/armband/colorado/docs/releasenotes/index.html
diff --git a/docs/index.rst b/docs/releasenotes/index.rst
index 815d4068..91fedf23 100644
--- a/docs/index.rst
+++ b/docs/releasenotes/index.rst
@@ -4,16 +4,13 @@
.. You should have received a copy of the license along with this work.
.. If not, see <http://creativecommons.org/licenses/by/4.0/>.
-*****************
-ArmbandFuel@OPNFV
-*****************
+****************************************
+Release notes for Fuel\@OPNFV on AArch64
+****************************************
.. toctree::
- :maxdepth: 4
+ :numbered:
+ :maxdepth: 2
- build-instruction.rst
- installation-instruction.rst
release-notes.rst
-.. :titlesonly:
-
diff --git a/docs/release-notes.rst b/docs/releasenotes/release-notes.rst
index 03763bab..f67d5e9d 100644
--- a/docs/release-notes.rst
+++ b/docs/releasenotes/release-notes.rst
@@ -1,14 +1,10 @@
-============================================================================================
-OPNFV Release Note for the AArch64 Colorado 1.0 release of OPNFV when using Fuel as a deployment tool
-============================================================================================
-
-License
-=======
-
-This work is licensed under a Creative Commons Attribution 4.0 International
-License. .. http://creativecommons.org/licenses/by/4.0 ..
-(c) Jonas Bjurel (Ericsson AB) and others
+.. This document is protected/licensed under the following conditions
+.. (c) Jonas Bjurel (Ericsson AB)
+.. Licensed under a Creative Commons Attribution 4.0 International License.
+.. You should have received a copy of the license along with this work.
+.. If not, see <http://creativecommons.org/licenses/by/4.0/>.
+========
Abstract
========
@@ -16,15 +12,16 @@ This document compiles the release notes for the Colorado 1.0 release of
OPNFV when using Fuel as a deployment tool, with an AArch64 (only) target
node pool.
+===============
Important notes
===============
-These notes provide release information for the use of Fuel as deployment
+These notes provides release information for the use of Fuel as deployment
tool for the AArch64 Colorado 1.0 release of OPNFV.
-The goal of the Colorado release and this Fuel-based deployment process is
-to establish a lab ready platform accelerating further development
-of the OPNFV infrastructure on AArch64 architecture.
+The goal of the AArch64 Colorado release and this Fuel-based deployment process
+is to establish a lab ready platform accelerating further development
+of the OPNFV on AArch64 infrastructure.
Due to early docker and nodejs support on AArch64, we will still use an
x86_64 Fuel Master to build and deploy an AArch64 target pool.
@@ -34,27 +31,30 @@ inside the target pool will be possible later.
Carefully follow the installation-instructions provided in *Reference 13*.
+=======
Summary
=======
For AArch64 Colorado, the typical use of Fuel as an OpenStack installer is
supplemented with OPNFV unique components such as:
-- `OpenDaylight <http://www.opendaylight.org/software>`_ version "Berylium SR3"
+- `OpenDaylight <http://www.opendaylight.org/software>`_ version "Beryllium SR3" [1]_ - 'http://www.opendaylight.org/software'
-- `Open vSwitch for NFV <https://wiki.opnfv.org/ovsnfv>`_
+- `Open vSwitch for NFV <https://wiki.opnfv.org/ovsnfv>`_ 'https://wiki.opnfv.org/ovsnfv'
-- `VSPERF <https://wiki.opnfv.org/characterize_vswitch_performance_for_telco_nfv_use_cases>`_
+- `BGPVPN <http://docs.openstack.org/developer/networking-bgpvpn>`_ 'http://docs.openstack.org/developer/networking-bgpvpn/'
The following OPNFV plugins are not yet ported for AArch64:
-- `ONOS <http://onosproject.org/>`_ version "Drake"
+- `ONOS <http://onosproject.org/>`_ version "Drake" - 'http://onosproject.org/'
+
+- `Service function chaining <https://wiki.opnfv.org/service_function_chaining>`_ 'https://wiki.opnfv.org/service_function_chaining'
-- `Service function chaining <https://wiki.opnfv.org/service_function_chaining>`_
+- `SDN distributed routing and VPN <https://wiki.opnfv.org/sdnvpn>`_ 'https://wiki.opnfv.org/sdnvpn'
-- `SDN distributed routing and VPN <https://wiki.opnfv.org/sdnvpn>`_
+- `NFV Hypervisors-KVM <https://wiki.opnfv.org/nfv-kvm>`_ 'https://wiki.opnfv.org/nfv-kvm'
-- `NFV Hypervisors-KVM <https://wiki.opnfv.org/nfv-kvm>`_
+- `VSPERF <https://wiki.opnfv.org/characterize_vswitch_performance_for_telco_nfv_use_cases>`_ 'https://wiki.opnfv.org/characterize_vswitch_performance_for_telco_nfv_use_cases'
As well as OPNFV-unique configurations of the Hardware- and Software stack.
@@ -71,57 +71,56 @@ OPNFV CI pipeline including:
- build-instructions
-- The Colorado Fuel installer image for AArch64 (.iso) built by Jenkins
+- The Colorado Fuel installer image AArch64 (.iso) built by Jenkins
- Automated deployment of Colorado with running on bare metal or a nested hypervisor environment (KVM)
- Automated validation of the Colorado deployment
+============
Release Data
============
+--------------------------------------+--------------------------------------+
-| **Project** | fuel |
+| **Project** | armband |
| | |
+--------------------------------------+--------------------------------------+
| **Repo/tag** | colorado.1.0 |
| | |
+--------------------------------------+--------------------------------------+
-| **Release designation** | Colorado 1.0 |
+| **Release designation** | Colorado 1.0 main release |
| | |
+--------------------------------------+--------------------------------------+
-| **Release date** | Sep 22 2016 |
+| **Release date** | September 22 2016 |
| | |
+--------------------------------------+--------------------------------------+
| **Purpose of the delivery** | Colorado alignment to Released |
| | Fuel 9.0 baseline + Bug-fixes for |
| | the following feaures/scenarios: |
-| | - Added AArch64 target support |
-| | - OpenDaylight SR3 |
+| | - Open vSwitch for NFV |
+| | - OpenDaylight |
| | |
+--------------------------------------+--------------------------------------+
Version change
---------------
+==============
Module version changes
-~~~~~~~~~~~~~~~~~~~~~~
-This is the first AArch64 release for Colorado 1.0. It is based on
+----------------------
+This is a main release. It is based on
following upstream versions:
- Fuel 9.0 Base release
- OpenStack Mitaka release
-- OPNFV Fuel Colorado 1.0 release
-
-- OpenDaylight Beryllium SR3 release
+- OpenDaylight Beryllium SR3 release [1]_
Document changes
-~~~~~~~~~~~~~~~~
-This is based upon a follow-up release to Colorado 1.0. It
-comes with the following documentation:
+----------------
+This is a main release.
+It comes with the following documentation:
- Installation instructions - *Reference 13* - **Changed**
@@ -130,36 +129,34 @@ comes with the following documentation:
- Release notes - *Reference 15* - **Changed** (This document)
Reason for version
-------------------
+==================
Feature additions
-~~~~~~~~~~~~~~~~~
+-----------------
**JIRA TICKETS:**
-`AArch64 new features <https://jira.opnfv.org/issues/?filter=11129>`_ 'https://jira.opnfv.org/issues/?filter=11129'
-
-(Also See respective Integrated feature project's bug tracking)
+-
Bug corrections
-~~~~~~~~~~~~~~~
+---------------
**JIRA TICKETS:**
-`AArch64 Workarounds <https://jira.opnfv.org/issues/?filter=11126>`_ 'https://jira.opnfv.org/issues/?filter=11126'
+`Workarounds <https://jira.opnfv.org/issues/?filter=11175>`_ 'https://jira.opnfv.org/issues/?filter=11175'
(Also See respective Integrated feature project's bug tracking)
Deliverables
-------------
+============
Software deliverables
-~~~~~~~~~~~~~~~~~~~~~
+---------------------
-Fuel-based installer iso file for AArch64 targets found in *Reference 2*
+AArch64 Fuel-based installer iso file found in *Reference 2*
Documentation deliverables
-~~~~~~~~~~~~~~~~~~~~~~~~~~
+--------------------------
- Installation instructions - *Reference 13*
@@ -167,11 +164,12 @@ Documentation deliverables
- Release notes - *Reference 15* (This document)
+=========================================
Known Limitations, Issues and Workarounds
=========================================
System Limitations
-------------------
+==================
- **Max number of blades:** 1 Fuel master, 3 Controllers, 20 Compute blades
@@ -185,75 +183,78 @@ System Limitations
- **Target node arch:** aarch64
-
Known issues
-------------
+============
**JIRA TICKETS:**
-`AArch64 Known issues <https://jira.opnfv.org/issues/?filter=11127>`_ 'https://jira.opnfv.org/issues/?filter=11127'
+`Known issues <https://jira.opnfv.org/issues/?filter=11176>`_ 'https://jira.opnfv.org/issues/?filter=11176'
(Also See respective Integrated feature project's bug tracking)
Workarounds
------------
+===========
**JIRA TICKETS:**
-`AArch64 Workarounds <https://jira.opnfv.org/issues/?filter=11128>`_ 'https://jira.opnfv.org/issues/?filter=11128'
+-
(Also See respective Integrated feature project's bug tracking)
+============
Test results
============
The Colorado 1.0 release with the Fuel deployment tool has undergone QA test
runs, see separate test results.
+==========
References
==========
For more information on the OPNFV Colorado release, please see:
OPNFV
------
+=====
-1) `OPNFV Home Page <http://www.opnfv.org>`_
+1) `OPNFV Home Page <http://www.opnfv.org>`_ 'http://www.opnfv.org'
-2) `OPNFV documentation- and software downloads <https://www.opnfv.org/software/download>`_
+2) `OPNFV documentation- and software downloads <https://www.opnfv.org/software/download>`_ 'https://www.opnfv.org/software/download'
OpenStack
----------
+=========
-3) `OpenStack Mitaka Release artifacts <http://www.openstack.org/software/mitaka>`_
+3) `OpenStack Mitaka Release artifacts <http://www.openstack.org/software/mitaka>`_ 'http://www.openstack.org/software/mitaka'
-4) `OpenStack documentation <http://docs.openstack.org>`_
+4) `OpenStack documentation <http://docs.openstack.org>`_ 'http://docs.openstack.org'
OpenDaylight
-------------
+============
-5) `OpenDaylight artifacts <http://www.opendaylight.org/software/downloads>`_
+5) `OpenDaylight artifacts <http://www.opendaylight.org/software/downloads>`_ 'http://www.opendaylight.org/software/downloads'
Fuel
-----
+====
-6) `The Fuel OpenStack project <https://wiki.openstack.org/wiki/Fuel>`_
+6) `The Fuel OpenStack project <https://wiki.openstack.org/wiki/Fuel>`_: https://wiki.openstack.org/wiki/Fuel
-7) `Fuel documentation overview <https://docs.mirantis.com/openstack/fuel/fuel-9.0/>`_
+7) `Fuel documentation overview <http://docs.openstack.org/developer/fuel-docs>`_: http://docs.openstack.org/developer/fuel-docs
-8) `Fuel planning guide <https://docs.mirantis.com/openstack/fuel/fuel-9.0/mos-planning-guide.html>`_
+8) `Fuel Installation Guide <http://docs.openstack.org/developer/fuel-docs/userdocs/fuel-install-guide.html>`_: http://docs.openstack.org/developer/fuel-docs/userdocs/fuel-install-guide.html
-9) `Fuel quick start guide <https://docs.mirantis.com/openstack/fuel/fuel-9.0/quickstart-guide.html>`_
+9) `Fuel User Guide <http://docs.openstack.org/developer/fuel-docs/userdocs/fuel-user-guide.html>`_: http://docs.openstack.org/developer/fuel-docs/userdocs/fuel-user-guide.html
-10) `Fuel user guide <http://docs.openstack.org/developer/fuel-docs/userdocs/fuel-user-guide.html>`_
+10) `Fuel Developer Guide <http://docs.openstack.org/developer/fuel-docs/devdocs/develop.html>`_: http://docs.openstack.org/developer/fuel-docs/devdocs/develop.html
-11) `Fuel Plugin Developers Guide <https://wiki.openstack.org/wiki/Fuel/Plugins>`_
+11) `Fuel Plugin Developers Guide <http://docs.openstack.org/developer/fuel-docs/plugindocs/fuel-plugin-sdk-guide.html>`_: http://docs.openstack.org/developer/fuel-docs/plugindocs/fuel-plugin-sdk-guide.html
-12) `(N/A on AArch64) Fuel OpenStack Hardware Compatibility List <https://www.mirantis.com/products/openstack-drivers-and-plugins/hardware-compatibility-list>`_
+12) `Fuel OpenStack Hardware Compatibility List <https://www.mirantis.com/products/openstack-drivers-and-plugins/hardware-compatibility-list>`_: https://www.mirantis.com/products/openstack-drivers-and-plugins/hardware-compatibility-list
Fuel in OPNFV
--------------
+=============
+
+13) `OPNFV Installation instruction for the AArch64 Colorado release of OPNFV when using Fuel as a deployment tool <http://artifacts.opnfv.org/armband/colorado/docs/installationprocedure/index.html>`_ 'http://artifacts.opnfv.org/armband/colorado/docs/installationprocedure/index.html'
-13) `OPNFV Installation instruction for the AArch64 Colorado release of OPNFV when using Fuel as a deployment tool <http://artifacts.opnfv.org/armband/docs/installation-instruction.html>`_
+14) `OPNFV Build instruction for the AArch64 Colorado release of OPNFV when using Fuel as a deployment tool <http://artifacts.opnfv.org/armband/colorado/docs/buildprocedure/index.html>`_ 'http://artifacts.opnfv.org/armband/colorado/docs/buildprocedure/index.html'
-14) `OPNFV Build instruction for the AArch64 Colorado release of OPNFV when using Fuel as a deployment tool <http://artifacts.opnfv.org/armband/docs/build-instruction.html>`_
+15) `OPNFV Release Note for the AArch64 Colorado release of OPNFV when using Fuel as a deployment tool <http://artifacts.opnfv.org/armband/colorado/docs/releasenotes/index.html>`_ 'http://artifacts.opnfv.org/armband/colorado/docs/releasenotes/index.html'
-15) `OPNFV Release Note for the AArch64 Colorado release of OPNFV when using Fuel as a deployment tool <http://artifacts.opnfv.org/armband/docs/release-notes.html>`_
+.. [1] OpenDaylight Boron RC2 is used when Service Function Chaining is enabled in Fuel plugin.
diff --git a/patches/fuel-library/0001-Add-arm64-templates-to-cobbler-and-nailgun.patch b/patches/fuel-library/0001-Add-arm64-templates-to-cobbler-and-nailgun.patch
index 244dedee..963356b2 100644
--- a/patches/fuel-library/0001-Add-arm64-templates-to-cobbler-and-nailgun.patch
+++ b/patches/fuel-library/0001-Add-arm64-templates-to-cobbler-and-nailgun.patch
@@ -5,27 +5,37 @@ Subject: [PATCH] Add arm64 templates to cobbler and nailgun
Add grub template import to cobbler server manifest
Add arm64 templates to cobbler and nailgun
+
+[Matei Valeanu] Add grub template to cobbler for MAC-files
+Limitation: grub2 needs to be installed directly on the
+root (/) of a device or partition, as the MAC-files will
+search for /grub/grub.cfg on the available partitions
+
+Signed-off-by: Stanislaw Kardach <stanislaw.kardach@caviumnetworks.com>
+Signed-off-by: Matei Valeanu <Matei.Valeanu@enea.com>
---
- deployment/puppet/cobbler/manifests/server.pp | 27 +++++++++++++++
+ deployment/puppet/cobbler/manifests/server.pp | 36 ++++++++++++++++++++++
.../puppet/cobbler/templates/dnsmasq.template.erb | 2 ++
.../cobbler/templates/efidefault.template.erb | 5 +++
- .../cobbler/templates/grubprofile.template.erb | 12 +++++++
- .../cobbler/templates/grubsystem.template.erb | 16 +++++++++
+ .../cobbler/templates/grublocal.template.erb | 2 ++
+ .../cobbler/templates/grubprofile.template.erb | 12 ++++++++
+ .../cobbler/templates/grubsystem.template.erb | 16 ++++++++++
.../templates/preseed/ubuntu-1404.preseed.erb | 2 ++
- .../puppet/fuel/manifests/auxiliaryrepos.pp | 12 ++++---
- deployment/puppet/fuel/manifests/cobbler.pp | 38 +++++++++++++++++-----
+ deployment/puppet/fuel/manifests/auxiliaryrepos.pp | 12 +++++---
+ deployment/puppet/fuel/manifests/cobbler.pp | 36 +++++++++++++++++-----
.../puppet/fuel/manifests/cobbler/preseed.pp | 13 ++++++++
- 9 files changed, 115 insertions(+), 12 deletions(-)
+ 10 files changed, 125 insertions(+), 11 deletions(-)
create mode 100644 deployment/puppet/cobbler/templates/efidefault.template.erb
+ create mode 100644 deployment/puppet/cobbler/templates/grublocal.template.erb
create mode 100644 deployment/puppet/cobbler/templates/grubprofile.template.erb
create mode 100644 deployment/puppet/cobbler/templates/grubsystem.template.erb
create mode 100644 deployment/puppet/fuel/manifests/cobbler/preseed.pp
diff --git a/deployment/puppet/cobbler/manifests/server.pp b/deployment/puppet/cobbler/manifests/server.pp
-index bdb1ae7..0523404 100644
+index 891dff7..52936d5 100644
--- a/deployment/puppet/cobbler/manifests/server.pp
+++ b/deployment/puppet/cobbler/manifests/server.pp
-@@ -288,6 +288,33 @@ class cobbler::server (
+@@ -297,6 +297,42 @@ class cobbler::server (
notify => [Service[$cobbler_service], Exec['cobbler_sync']],
}
@@ -56,14 +66,23 @@ index bdb1ae7..0523404 100644
+ notify => [Service[$cobbler_service], Exec['cobbler_sync']],
+ }
+
++ file { '/etc/cobbler/pxe/grublocal.template':
++ content => template('cobbler/grublocal.template.erb'),
++ owner => 'root',
++ group => 'root',
++ mode => '0644',
++ require => Package[$cobbler::packages::cobbler_package],
++ notify => [Service[$cobbler_service], Exec['cobbler_sync']],
++ }
++
exec { '/var/lib/tftpboot/chain.c32':
command => 'cp /usr/share/syslinux/chain.c32 /var/lib/tftpboot/chain.c32',
unless => 'test -e /var/lib/tftpboot/chain.c32',
diff --git a/deployment/puppet/cobbler/templates/dnsmasq.template.erb b/deployment/puppet/cobbler/templates/dnsmasq.template.erb
-index 3a96ac1..8d3e753 100644
+index d70f8de..98278e9 100644
--- a/deployment/puppet/cobbler/templates/dnsmasq.template.erb
+++ b/deployment/puppet/cobbler/templates/dnsmasq.template.erb
-@@ -33,5 +33,7 @@ dhcp-no-override
+@@ -41,5 +41,7 @@ dhcp-no-override
# by assigning IPs one by one instead of using hash algorithm.
dhcp-sequential-ip
@@ -82,6 +101,14 @@ index 0000000..af09eb8
+tr -s ipxe_mac ':' '-' $net_default_mac
+
+$grub_menu_items
+diff --git a/deployment/puppet/cobbler/templates/grublocal.template.erb b/deployment/puppet/cobbler/templates/grublocal.template.erb
+new file mode 100644
+index 0000000..e16c27d
+--- /dev/null
++++ b/deployment/puppet/cobbler/templates/grublocal.template.erb
+@@ -0,0 +1,2 @@
++search --file --no-floppy --set grub_install_device /grub/grub.cfg
++configfile ($grub_install_device)/grub/grub.cfg
diff --git a/deployment/puppet/cobbler/templates/grubprofile.template.erb b/deployment/puppet/cobbler/templates/grubprofile.template.erb
new file mode 100644
index 0000000..eb7557c
@@ -123,7 +150,7 @@ index 0000000..9a191bc
+ echo 'Booting bootstrap image ...'
+}
diff --git a/deployment/puppet/cobbler/templates/preseed/ubuntu-1404.preseed.erb b/deployment/puppet/cobbler/templates/preseed/ubuntu-1404.preseed.erb
-index fd6dda3..65c6c69 100644
+index 6762153..25f8067 100644
--- a/deployment/puppet/cobbler/templates/preseed/ubuntu-1404.preseed.erb
+++ b/deployment/puppet/cobbler/templates/preseed/ubuntu-1404.preseed.erb
@@ -66,9 +66,11 @@ d-i apt-setup/mirror/error select Retry
@@ -139,10 +166,10 @@ index fd6dda3..65c6c69 100644
# You can choose to install restricted and universe software, or to install
# software from the backports repository.
diff --git a/deployment/puppet/fuel/manifests/auxiliaryrepos.pp b/deployment/puppet/fuel/manifests/auxiliaryrepos.pp
-index 41a2570..720943d 100644
+index 493ffc6..909fc92 100644
--- a/deployment/puppet/fuel/manifests/auxiliaryrepos.pp
+++ b/deployment/puppet/fuel/manifests/auxiliaryrepos.pp
-@@ -48,17 +48,21 @@ class nailgun::auxiliaryrepos(
+@@ -53,17 +53,21 @@ class fuel::auxiliaryrepos(
exec { 'create_ubuntu_repo_dirs':
path => '/bin:/sbin:/usr/bin:/usr/sbin',
@@ -169,10 +196,10 @@ index 41a2570..720943d 100644
file { $release_files:
diff --git a/deployment/puppet/fuel/manifests/cobbler.pp b/deployment/puppet/fuel/manifests/cobbler.pp
-index a11498c..95a9497 100644
+index b403733..c89027d 100644
--- a/deployment/puppet/fuel/manifests/cobbler.pp
+++ b/deployment/puppet/fuel/manifests/cobbler.pp
-@@ -133,12 +133,9 @@ class nailgun::cobbler(
+@@ -114,12 +114,9 @@ class fuel::cobbler(
require => Class['::cobbler::server'],
}
@@ -188,10 +215,10 @@ index a11498c..95a9497 100644
} ->
cobbler_distro { 'ubuntu_1404_x86_64':
-@@ -151,6 +148,21 @@ class nailgun::cobbler(
+@@ -132,6 +129,21 @@ class fuel::cobbler(
require => Class['::cobbler::server'],
}
-
+
+ fuel::cobbler::preseed { 'ubuntu_1404_arm64.preseed':
+ path => '/var/lib/cobbler/kickstarts/ubuntu-arm64.preseed',
+ arch => "arm64",
@@ -210,7 +237,7 @@ index a11498c..95a9497 100644
cobbler_profile { 'centos-x86_64':
kickstart => '/var/lib/cobbler/kickstarts/centos-x86_64.ks',
kopts => 'biosdevname=0 sshd=1 dhcptimeout=120',
-@@ -171,6 +183,16 @@ class nailgun::cobbler(
+@@ -152,6 +164,16 @@ class fuel::cobbler(
require => Cobbler_distro['ubuntu_1404_x86_64'],
}
@@ -227,7 +254,7 @@ index a11498c..95a9497 100644
cobbler_distro { 'ubuntu_bootstrap':
kernel => "${bootstrap_path}/vmlinuz",
initrd => "${bootstrap_path}/initrd.img",
-@@ -205,7 +227,7 @@ class nailgun::cobbler(
+@@ -166,7 +188,7 @@ class fuel::cobbler(
distro => 'ubuntu_bootstrap',
menu => true,
kickstart => '',
@@ -238,7 +265,7 @@ index a11498c..95a9497 100644
require => Cobbler_distro['ubuntu_bootstrap'],
diff --git a/deployment/puppet/fuel/manifests/cobbler/preseed.pp b/deployment/puppet/fuel/manifests/cobbler/preseed.pp
new file mode 100644
-index 0000000..93c71ba
+index 0000000..7e1bee9
--- /dev/null
+++ b/deployment/puppet/fuel/manifests/cobbler/preseed.pp
@@ -0,0 +1,13 @@
diff --git a/patches/fuel-library/0009-Update-vga-console-defaults-for-armv7-and-aarch64.patch b/patches/fuel-library/0008-nova-Update-vga-console-defaults-for-armv7-aarch64.patch
index 199ef122..c289bd8d 100644
--- a/patches/fuel-library/0009-Update-vga-console-defaults-for-armv7-and-aarch64.patch
+++ b/patches/fuel-library/0008-nova-Update-vga-console-defaults-for-armv7-aarch64.patch
@@ -1,6 +1,6 @@
From: Stanislaw Kardach <stanislaw.kardach@caviumnetworks.com>
Date: Tue, 22 Mar 2016 12:05:09 +0100
-Subject: [PATCH] Update vga, console defaults for armv7 and aarch64
+Subject: [PATCH] nova: Update vga, console defaults for armv7, aarch64
Nova hardcodes default options for both video=cirrus and console.
armv7 and aarch64 VMs require video=vga, and since most applications
diff --git a/patches/fuel-library/0009-nova-AArch64-enable-hugepage-support.patch b/patches/fuel-library/0009-nova-AArch64-enable-hugepage-support.patch
new file mode 100644
index 00000000..16e06ba8
--- /dev/null
+++ b/patches/fuel-library/0009-nova-AArch64-enable-hugepage-support.patch
@@ -0,0 +1,93 @@
+From: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
+Date: Fri, 16 Sep 2016 21:31:56 +0200
+Subject: [PATCH] nova: AArch64: enable hugepage support
+
+This patch adds AArch64 to the hardcoded lists of valid
+architectures for hugepage support.
+
+Closes-bug: ARMBAND-90
+
+Signed-off-by: Veena Lingadahalli <vlingadahalli@mvista.com>
+Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
+---
+ .../nova-AArch64-enable-hugepage-support.patch | 47 ++++++++++++++++++++++
+ .../openstack_tasks/manifests/roles/compute.pp | 12 ++++++
+ 2 files changed, 59 insertions(+)
+ create mode 100644 deployment/puppet/openstack/files/nova-AArch64-enable-hugepage-support.patch
+
+diff --git a/deployment/puppet/openstack/files/nova-AArch64-enable-hugepage-support.patch b/deployment/puppet/openstack/files/nova-AArch64-enable-hugepage-support.patch
+new file mode 100644
+index 0000000..847cab6
+--- /dev/null
++++ b/deployment/puppet/openstack/files/nova-AArch64-enable-hugepage-support.patch
+@@ -0,0 +1,47 @@
++From: Veena Lingadahalli <vlingadahalli@mvista.com>
++Date: Fri Sep 16 17:52:02 CEST 2016
++Subject: [PATCH] nova: AArch64: enable hugepage support
++
++This patch adds AArch64 to the hardcoded lists of valid
++architectures for hugepage support.
++
++Signed-off-by: Veena Lingadahalli <vlingadahalli@mvista.com>
++Acked-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
++---
++
++diff --git a/compute/arch.py a/compute/arch.py
++index 265f853..6a4b4a3 100644
++--- a/compute/arch.py
+++++ a/compute/arch.py
++@@ -156,6 +156,9 @@ def canonicalize(name):
++ if newname == "amd64":
++ newname = X86_64
++
+++ if newname == "aarch64":
+++ newname = AARCH64
+++
++ if not is_valid(newname):
++ raise exception.InvalidArchitectureName(arch=name)
++
++diff --git a/virt/libvirt/driver.py a/virt/libvirt/driver.py
++index bac17cf..0e0bcae 100644
++--- a/virt/libvirt/driver.py
+++++ a/virt/libvirt/driver.py
++@@ -5206,7 +5206,7 @@ class LibvirtDriver(driver.ComputeDriver):
++ self._bad_libvirt_numa_version_warn = True
++ return False
++
++- support_matrix = {(arch.I686, arch.X86_64): MIN_LIBVIRT_NUMA_VERSION,
+++ support_matrix = {(arch.I686, arch.X86_64, arch.AARCH64): MIN_LIBVIRT_NUMA_VERSION,
++ (arch.PPC64,
++ arch.PPC64LE): MIN_LIBVIRT_NUMA_VERSION_PPC}
++ caps = self._host.get_capabilities()
++@@ -5222,7 +5222,7 @@ class LibvirtDriver(driver.ComputeDriver):
++ def _has_hugepage_support(self):
++ # This means that the host can support multiple values for the size
++ # field in LibvirtConfigGuestMemoryBackingPage
++- supported_archs = [arch.I686, arch.X86_64]
+++ supported_archs = [arch.I686, arch.X86_64, arch.AARCH64]
++ caps = self._host.get_capabilities()
++ return ((caps.host.cpu.arch in supported_archs) and
++ self._host.has_min_version(MIN_LIBVIRT_HUGEPAGE_VERSION,
+diff --git a/deployment/puppet/openstack_tasks/manifests/roles/compute.pp b/deployment/puppet/openstack_tasks/manifests/roles/compute.pp
+index 3647f9b..c53409c 100644
+--- a/deployment/puppet/openstack_tasks/manifests/roles/compute.pp
++++ b/deployment/puppet/openstack_tasks/manifests/roles/compute.pp
+@@ -347,6 +347,18 @@ class openstack_tasks::roles::compute {
+ unless => "patch -p1 -R -N --dry-run < ${nova_path}/libvirt-vga-console.patch",
+ cwd => $nova_path,
+ require => [Package['patch']],
++ } ->
++ # FIXME(armband): Add AArch64 to arch list for nova hugepage support
++ file { "${nova_path}/nova-AArch64-enable-hugepage-support.patch":
++ ensure => "file",
++ source => "puppet:///modules/openstack/nova-AArch64-enable-hugepage-support.patch",
++ } ->
++ exec { 'nova AArch64 enable hugepage support':
++ path => ['/usr/bin'],
++ command => "patch -p1 < ${nova_path}/nova-AArch64-enable-hugepage-support.patch",
++ unless => "patch -p1 -R -N --dry-run < ${nova_path}/nova-AArch64-enable-hugepage-support.patch",
++ cwd => $nova_path,
++ require => [Package['patch']],
+ }
+
+ class { '::nova::availability_zone':
diff --git a/patches/fuel-library/0017-Always-wait-for-MySQL-sync-on-service-refresh.patch b/patches/fuel-library/0017-Always-wait-for-MySQL-sync-on-service-refresh.patch
new file mode 100644
index 00000000..e0704110
--- /dev/null
+++ b/patches/fuel-library/0017-Always-wait-for-MySQL-sync-on-service-refresh.patch
@@ -0,0 +1,60 @@
+From: dmburmistrov <dmburmistrov@mirantis.com>
+Date: Thu, 18 Aug 2016 21:30:26 +0300
+Subject: Always wait for MySQL sync on service refresh
+
+Always trigger Exec['wait-for-sync'] on
+MySQL service refresh.
+
+Closes-bug: #1614647
+
+Change-Id: I82ec0d46eff217daedc1bd07c67069498c515c44
+---
+ deployment/puppet/cluster/manifests/mysql.pp | 6 +++---
+ deployment/puppet/cluster/spec/classes/cluster_mysql_spec.rb | 6 +++++-
+ 2 files changed, 8 insertions(+), 4 deletions(-)
+
+diff --git a/deployment/puppet/cluster/manifests/mysql.pp b/deployment/puppet/cluster/manifests/mysql.pp
+index 0b766c5..055b931 100644
+--- a/deployment/puppet/cluster/manifests/mysql.pp
++++ b/deployment/puppet/cluster/manifests/mysql.pp
+@@ -111,7 +111,7 @@ class cluster::mysql (
+ require => Package['mysql-server'],
+ } ~>
+
+- exec { 'wait-initial-sync':
++ exec { 'wait-for-sync':
+ path => '/bin:/sbin:/usr/bin:/usr/sbin',
+ command => "mysql ${user_password_string} -Nbe \"show status like 'wsrep_local_state_comment'\" | grep -q -e Synced && sleep 10",
+ try_sleep => 10,
+@@ -126,7 +126,7 @@ class cluster::mysql (
+ }
+
+ Exec['create-init-file'] ->
+- Service<| title == $service_name |> ->
+- Exec['wait-initial-sync'] ->
++ Service<| title == $service_name |> ~>
++ Exec['wait-for-sync'] ->
+ Exec['rm-init-file']
+ }
+diff --git a/deployment/puppet/cluster/spec/classes/cluster_mysql_spec.rb b/deployment/puppet/cluster/spec/classes/cluster_mysql_spec.rb
+index be00056..e4d62c4 100644
+--- a/deployment/puppet/cluster/spec/classes/cluster_mysql_spec.rb
++++ b/deployment/puppet/cluster/spec/classes/cluster_mysql_spec.rb
+@@ -39,12 +39,16 @@ describe 'cluster::mysql' do
+ /'username'@'localhost' IDENTIFIED BY 'password'/
+ )
+ should contain_exec('create-init-file').that_comes_before('Service[mysqld]')
+- should contain_exec('create-init-file').that_notifies('Exec[wait-initial-sync]')
++ should contain_exec('create-init-file').that_notifies('Exec[wait-for-sync]')
+ end
+
+ it 'creates exec to remove init-file' do
+ should contain_exec('rm-init-file')
+ end
++
++ it 'creates exec to wait initial database sync' do
++ should contain_exec('wait-for-sync').that_subscribes_to('Service[mysqld]')
++ end
+ end
+
+ end
diff --git a/patches/fuel-library/0018-Fix-MySQL-logging-dir-permissions-for-syslog.patch b/patches/fuel-library/0018-Fix-MySQL-logging-dir-permissions-for-syslog.patch
new file mode 100644
index 00000000..da6acac8
--- /dev/null
+++ b/patches/fuel-library/0018-Fix-MySQL-logging-dir-permissions-for-syslog.patch
@@ -0,0 +1,90 @@
+From: Maksim Malchuk <mmalchuk@mirantis.com>
+Date: Wed, 24 Aug 2016 00:15:02 +0300
+Subject: Fix MySQL logging dir permissions for syslog
+
+This change fixes permissions for MySQL logging directory to enable
+syslogd create and write logs files into it.
+
+Closes-Bug: #1615680
+Change-Id: Id29aead6619ea8ed68811d0fd80895ee79f51687
+Signed-off-by: Maksim Malchuk <mmalchuk@mirantis.com>
+(cherry picked from commit 9c978278811eeebfb11ab4d2b42ebabe00c132c2)
+---
+ deployment/puppet/cluster/manifests/mysql.pp | 14 +++++++++++---
+ .../puppet/cluster/spec/classes/cluster_mysql_spec.rb | 11 ++++++++++-
+ tests/noop/spec/hosts/database/database_spec.rb | 9 +++++++++
+ 3 files changed, 30 insertions(+), 4 deletions(-)
+
+diff --git a/deployment/puppet/cluster/manifests/mysql.pp b/deployment/puppet/cluster/manifests/mysql.pp
+index f483cf6..7bc8874 100644
+--- a/deployment/puppet/cluster/manifests/mysql.pp
++++ b/deployment/puppet/cluster/manifests/mysql.pp
+@@ -118,8 +118,16 @@ class cluster::mysql (
+ onlyif => 'test -f /tmp/wsrep-init-file',
+ }
+
++ file { 'fix-log-dir':
++ ensure => directory,
++ path => '/var/log/mysql',
++ mode => '0770',
++ require => Package['mysql-server'],
++ }
++
+ Exec['create-init-file'] ->
+- Service<| title == $service_name |> ~>
+- Exec['wait-for-sync'] ->
+- Exec['rm-init-file']
++ File['fix-log-dir'] ->
++ Service<| title == $service_name |> ~>
++ Exec['wait-for-sync'] ->
++ Exec['rm-init-file']
+ }
+diff --git a/deployment/puppet/cluster/spec/classes/cluster_mysql_spec.rb b/deployment/puppet/cluster/spec/classes/cluster_mysql_spec.rb
+index 72c8c2f..ad3fc1b 100644
+--- a/deployment/puppet/cluster/spec/classes/cluster_mysql_spec.rb
++++ b/deployment/puppet/cluster/spec/classes/cluster_mysql_spec.rb
+@@ -33,7 +33,7 @@ describe 'cluster::mysql' do
+ should contain_exec('create-init-file').with_command(
+ /'username'@'localhost' IDENTIFIED BY 'password'/
+ )
+- should contain_exec('create-init-file').that_comes_before('Service[mysqld]')
++ should contain_exec('create-init-file').that_comes_before('File[fix-log-dir]')
+ should contain_exec('create-init-file').that_notifies('Exec[wait-for-sync]')
+ end
+
+@@ -41,6 +41,15 @@ describe 'cluster::mysql' do
+ should contain_exec('rm-init-file')
+ end
+
++ it 'should have correct permissions for logging directory' do
++ should contain_file('fix-log-dir').with(
++ :ensure => 'directory',
++ :path => '/var/log/mysql',
++ :mode => '0770',
++ ).that_requires('Package[mysql-server]')
++ should contain_file('fix-log-dir').that_comes_before('Service[mysqld]')
++ end
++
+ it 'creates exec to wait initial database sync' do
+ should contain_exec('wait-for-sync').that_subscribes_to('Service[mysqld]')
+ end
+diff --git a/tests/noop/spec/hosts/database/database_spec.rb b/tests/noop/spec/hosts/database/database_spec.rb
+index d4ad8d0..2c4c5c5 100644
+--- a/tests/noop/spec/hosts/database/database_spec.rb
++++ b/tests/noop/spec/hosts/database/database_spec.rb
+@@ -261,6 +261,15 @@ describe manifest do
+ )
+ end
+
++ it 'should have correct permissions for logging directory' do
++ should contain_file('fix-log-dir').with(
++ :ensure => 'directory',
++ :path => '/var/log/mysql',
++ :mode => '0770',
++ ).that_requires('Package[mysql-server]')
++ should contain_file('fix-log-dir').that_comes_before('Service[mysqld]')
++ end
++
+ it 'should configure galera grants service and proper flow' do
+ if primary_controller
+ should contain_class('cluster::galera_grants').with(
diff --git a/patches/fuel-plugin-opendaylight/0001-ODL-leveldb-leveldbjni-Enable-arm64-support.patch b/patches/fuel-plugin-opendaylight/0001-ODL-leveldb-leveldbjni-Enable-arm64-support.patch
index 05405124..d8fe07da 100644
--- a/patches/fuel-plugin-opendaylight/0001-ODL-leveldb-leveldbjni-Enable-arm64-support.patch
+++ b/patches/fuel-plugin-opendaylight/0001-ODL-leveldb-leveldbjni-Enable-arm64-support.patch
@@ -322,6 +322,6 @@ index 3706678..841bfee 100644
puppet_modules: puppet/modules:/etc/puppet/modules
- timeout: 720
+ timeout: 3600
+
- id: netconfig
type: puppet
- version: 2.0.0
diff --git a/patches/fuel-plugin-ovs/0002-Cleanup-Use-dget-instead-of-wget-dpkg-source.patch b/patches/fuel-plugin-ovs/0002-Cleanup-Use-dget-instead-of-wget-dpkg-source.patch
new file mode 100644
index 00000000..e9b90be7
--- /dev/null
+++ b/patches/fuel-plugin-ovs/0002-Cleanup-Use-dget-instead-of-wget-dpkg-source.patch
@@ -0,0 +1,48 @@
+From: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
+Date: Fri, 24 Jun 2016 16:51:41 +0200
+Subject: [PATCH] Cleanup: Use dget instead of wget+dpkg-source.
+
+We already install devscripts, which provides dget.
+
+See [1] for using `dget -x -u` to accelerate/simplify code dev.
+
+FIXME: Remove `-u` when we add Ubuntu signing keys to builder
+docker keyring.
+
+[1] https://debian-administration.org/article/
+ 504/Downloading_Debian_source_packages_easily
+
+Change-Id: Ifbcac2a14c7b34216894adb7c5c4e921bf556e33
+Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
+---
+ ovs_build/build-ovs-nsh-dpdk.sh | 10 ++--------
+ 1 file changed, 2 insertions(+), 8 deletions(-)
+
+diff --git a/ovs_build/build-ovs-nsh-dpdk.sh b/ovs_build/build-ovs-nsh-dpdk.sh
+index 1b42df1..3d7edea 100755
+--- a/ovs_build/build-ovs-nsh-dpdk.sh
++++ b/ovs_build/build-ovs-nsh-dpdk.sh
+@@ -17,10 +17,7 @@ sudo apt-get -y install devscripts dpkg-dev git wget
+ rm -rf ${BUILD_HOME}; mkdir -p ${BUILD_HOME}
+
+ cd ${BUILD_HOME}
+-wget -c https://launchpad.net/ubuntu/+archive/primary/+files/dpdk_2.2.0-0ubuntu8.dsc
+-wget -c https://launchpad.net/ubuntu/+archive/primary/+files/dpdk_2.2.0.orig.tar.gz
+-wget -c https://launchpad.net/ubuntu/+archive/primary/+files/dpdk_2.2.0-0ubuntu8.debian.tar.xz
+-dpkg-source -x dpdk_2.2.0-0ubuntu8.dsc
++dget -x -u https://launchpad.net/ubuntu/+archive/primary/+files/dpdk_2.2.0-0ubuntu8.dsc
+
+ # copy from debian/control
+ sudo apt-get install -y debhelper \
+@@ -49,10 +46,7 @@ cd ${BUILD_HOME}; sudo dpkg -i *.deb
+ apt-get download libxenstore3.0
+
+ cd ${BUILD_HOME}
+-wget -c https://launchpad.net/ubuntu/+archive/primary/+files/openvswitch-dpdk_2.4.0.orig.tar.gz
+-wget -c https://launchpad.net/ubuntu/+archive/primary/+files/openvswitch-dpdk_2.4.0-0ubuntu1.dsc
+-wget -c https://launchpad.net/ubuntu/+archive/primary/+files/openvswitch-dpdk_2.4.0-0ubuntu1.debian.tar.xz
+-dpkg-source -x openvswitch-dpdk_2.4.0-0ubuntu1.dsc
++dget -x -u https://launchpad.net/ubuntu/+archive/primary/+files/openvswitch-dpdk_2.4.0-0ubuntu1.dsc
+
+ # copy from debian/control
+ sudo apt-get install -y autoconf \
diff --git a/patches/fuel-plugin-ovs/0003-Cleanup-Drop-git-dependency.patch b/patches/fuel-plugin-ovs/0003-Cleanup-Drop-git-dependency.patch
new file mode 100644
index 00000000..89cab56a
--- /dev/null
+++ b/patches/fuel-plugin-ovs/0003-Cleanup-Drop-git-dependency.patch
@@ -0,0 +1,99 @@
+From: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
+Date: Sat, 3 Sep 2016 20:42:06 +0200
+Subject: [PATCH] Cleanup: Drop git dependency
+
+We only use git to fetch upstream contents, this can be achieved
+with a simple wget.
+
+Change-Id: I07f681e44253cc1f390943eb121a694bf2c9d95f
+Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
+---
+ ovs_build/build-ovs-dpdk.sh | 10 +++++-----
+ ovs_build/build-ovs-nsh-dpdk.sh | 12 ++++++------
+ 2 files changed, 11 insertions(+), 11 deletions(-)
+
+diff --git a/ovs_build/build-ovs-dpdk.sh b/ovs_build/build-ovs-dpdk.sh
+index aeb5eb7..9e92014 100755
+--- a/ovs_build/build-ovs-dpdk.sh
++++ b/ovs_build/build-ovs-dpdk.sh
+@@ -3,14 +3,14 @@
+ set -eux
+
+ OVS_COMMIT=9f4ecd654dbcb88b15a424445184591fc887537e
+-URL_OVS=https://github.com/openvswitch/ovs.git
++URL_OVS_ARCHIVE=https://github.com/openvswitch/ovs/archive
+ BUILD_DEB=${BUILD_DEB:-/deb}
+ BUILD_SRC="$(dirname `readlink -f $0`)"
+ BUILD_DEST=${BUILD_DEST:-/tmp/ovs-dpdk}
+
+ export DEB_BUILD_OPTIONS='parallel=8 nocheck'
+
+-sudo apt-get -y install devscripts dpkg-dev git wget
++sudo apt-get -y install devscripts dpkg-dev wget
+
+ rm -rf ${BUILD_DEST}; mkdir -p ${BUILD_DEST}
+
+@@ -62,9 +62,9 @@ sudo apt-get install -y autoconf \
+ python-zopeinterface \
+ python-six
+
+-git clone https://github.com/openvswitch/ovs.git
+-cd ovs; git checkout ${OVS_COMMIT}; rm -rf .git
+-cd ${BUILD_DEST}; cp -r ovs ovs-dpdk
++wget -c ${URL_OVS_ARCHIVE}/${OVS_COMMIT}.tar.gz
++tar xzf ${OVS_COMMIT}.tar.gz; mv ovs-${OVS_COMMIT} ovs
++cp -r ovs ovs-dpdk
+
+ cd ovs-dpdk
+ cp -r ${BUILD_SRC}/openvswitch-dpdk_2.5.90/debian .
+diff --git a/ovs_build/build-ovs-nsh-dpdk.sh b/ovs_build/build-ovs-nsh-dpdk.sh
+index 3d7edea..ec5eef4 100755
+--- a/ovs_build/build-ovs-nsh-dpdk.sh
++++ b/ovs_build/build-ovs-nsh-dpdk.sh
+@@ -3,7 +3,7 @@
+ set -eux
+
+ OVS_COMMIT=7d433ae57ebb90cd68e8fa948a096f619ac4e2d8
+-URL_OVS=https://github.com/openvswitch/ovs.git
++URL_OVS_ARCHIVE=https://github.com/openvswitch/ovs/archive
+ OVS_VER=${OVS_VER:-2.5.90}
+ BUILD_HOME=$HOME/nsh
+ BUILD_DEST=${BUILD_DEST:-/deb}
+@@ -12,7 +12,7 @@ DIR="$(dirname `readlink -f $0`)"
+ export DEB_BUILD_OPTIONS='parallel=8 nocheck'
+
+ sudo apt-get build-dep openvswitch -y
+-sudo apt-get -y install devscripts dpkg-dev git wget
++sudo apt-get -y install devscripts dpkg-dev wget
+
+ rm -rf ${BUILD_HOME}; mkdir -p ${BUILD_HOME}
+
+@@ -35,7 +35,7 @@ sudo apt-get install -y debhelper \
+ texlive-fonts-recommended \
+ texlive-latex-extra
+
+-cd dpdk-2.2.0; rm -rf debian/patches/;
++cd dpdk-2.2.0; rm -rf debian/patches/
+ cat << EOF > debian/changelog
+ dpdk (2.2.0-1) unstable; urgency=low
+ * DPDK 2.2.0
+@@ -68,8 +68,8 @@ sudo apt-get install -y autoconf \
+ python-zopeinterface \
+ python-six
+
+-git clone https://github.com/openvswitch/ovs.git
+-cd ovs; git checkout ${OVS_COMMIT}
++wget -c ${URL_OVS_ARCHIVE}/${OVS_COMMIT}.tar.gz
++tar xzf ${OVS_COMMIT}.tar.gz; mv ovs-${OVS_COMMIT} ovs
+ PATCHES=$(cd ${DIR}/patches; echo *patch)
+ for patch in ${PATCHES}
+ do
+@@ -82,7 +82,7 @@ cd ../openvswitch-dpdk-${OVS_VER}
+ sed -i "s/include\/rte_config.h/include\/dpdk\/rte_config.h/" acinclude.m4
+ sed -i 's/DPDK_INCLUDE=.*/DPDK_INCLUDE=$RTE_SDK\/include\/dpdk/' acinclude.m4
+ autoreconf --install
+-rm -rf debian/patches/ .git;
++rm -rf debian/patches/
+ cat << EOF > debian/changelog
+ openvswitch-dpdk (${OVS_VER}-1.nsh) unstable; urgency=low
+ * Support NSH
diff --git a/patches/fuel-plugin-ovs/0004-build-apt-force-yes.patch b/patches/fuel-plugin-ovs/0004-build-apt-force-yes.patch
new file mode 100644
index 00000000..5b5712d0
--- /dev/null
+++ b/patches/fuel-plugin-ovs/0004-build-apt-force-yes.patch
@@ -0,0 +1,87 @@
+From: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
+Date: Sat, 3 Sep 2016 20:52:05 +0200
+Subject: [PATCH] build: apt: --force-yes.
+
+For arm64 builds, some packages are fetched from linux.enea.com,
+leading to package version being reported as "older", although in
+fact it is newer (dpkg version comparison is not that great with
+suffixes). Also, since we don't explicitly add the GPG key of
+the linux.enea.com repo yet, apt is complaining about unverified
+package sources.
+
+Bypass the above by using "--force-yes", next to "-y".
+
+Change-Id: I4899fe62aaad9a13f8b2f9ffbdf2f3631ecba164
+Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
+---
+ ovs_build/build-ovs-dpdk.sh | 8 ++++----
+ ovs_build/build-ovs-nsh-dpdk.sh | 8 ++++----
+ 2 files changed, 8 insertions(+), 8 deletions(-)
+
+diff --git a/ovs_build/build-ovs-dpdk.sh b/ovs_build/build-ovs-dpdk.sh
+index 9e92014..75904f2 100755
+--- a/ovs_build/build-ovs-dpdk.sh
++++ b/ovs_build/build-ovs-dpdk.sh
+@@ -10,7 +10,7 @@ BUILD_DEST=${BUILD_DEST:-/tmp/ovs-dpdk}
+
+ export DEB_BUILD_OPTIONS='parallel=8 nocheck'
+
+-sudo apt-get -y install devscripts dpkg-dev wget
++sudo apt-get -y --force-yes install devscripts dpkg-dev wget
+
+ rm -rf ${BUILD_DEST}; mkdir -p ${BUILD_DEST}
+
+@@ -21,7 +21,7 @@ cd dpdk-16.07
+ cp -r ${BUILD_SRC}/dpdk_16.07/debian .
+
+ # copy from debian/control
+-sudo apt-get install -y debhelper \
++sudo apt-get install -y --force-yes debhelper \
+ dh-python \
+ dh-systemd \
+ doxygen \
+@@ -41,9 +41,9 @@ cd ${BUILD_DEST}
+ sudo dpkg -i *.deb
+ apt-get download libxenstore3.0
+
+-sudo apt-get build-dep openvswitch -y
++sudo apt-get build-dep openvswitch -y --force-yes
+ # copy from debian/control
+-sudo apt-get install -y autoconf \
++sudo apt-get install -y --force-yes autoconf \
+ automake \
+ bzip2 \
+ debhelper \
+diff --git a/ovs_build/build-ovs-nsh-dpdk.sh b/ovs_build/build-ovs-nsh-dpdk.sh
+index ec5eef4..3b84f4c 100755
+--- a/ovs_build/build-ovs-nsh-dpdk.sh
++++ b/ovs_build/build-ovs-nsh-dpdk.sh
+@@ -11,8 +11,8 @@ DIR="$(dirname `readlink -f $0`)"
+
+ export DEB_BUILD_OPTIONS='parallel=8 nocheck'
+
+-sudo apt-get build-dep openvswitch -y
+-sudo apt-get -y install devscripts dpkg-dev wget
++sudo apt-get build-dep openvswitch -y --force-yes
++sudo apt-get -y --force-yes install devscripts dpkg-dev wget
+
+ rm -rf ${BUILD_HOME}; mkdir -p ${BUILD_HOME}
+
+@@ -20,7 +20,7 @@ cd ${BUILD_HOME}
+ dget -x -u https://launchpad.net/ubuntu/+archive/primary/+files/dpdk_2.2.0-0ubuntu8.dsc
+
+ # copy from debian/control
+-sudo apt-get install -y debhelper \
++sudo apt-get install -y --force-yes debhelper \
+ dh-python \
+ dh-systemd \
+ doxygen \
+@@ -49,7 +49,7 @@ cd ${BUILD_HOME}
+ dget -x -u https://launchpad.net/ubuntu/+archive/primary/+files/openvswitch-dpdk_2.4.0-0ubuntu1.dsc
+
+ # copy from debian/control
+-sudo apt-get install -y autoconf \
++sudo apt-get install -y --force-yes autoconf \
+ automake \
+ bzip2 \
+ debhelper \
diff --git a/patches/fuel-plugin-ovs/0005-pre_build_hook-Introduce-USE_DOCKER-option.patch b/patches/fuel-plugin-ovs/0005-pre_build_hook-Introduce-USE_DOCKER-option.patch
new file mode 100644
index 00000000..dbbfefcf
--- /dev/null
+++ b/patches/fuel-plugin-ovs/0005-pre_build_hook-Introduce-USE_DOCKER-option.patch
@@ -0,0 +1,77 @@
+From: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
+Date: Sun, 26 Jun 2016 20:00:22 +0200
+Subject: [PATCH] pre_build_hook: Introduce USE_DOCKER option
+
+The build system uses Ubuntu Trusty, which is not properly supported
+by Docker on AArch64 architecture.
+Introduce a new environment variable for enabling/disabling build
+containerization, and disable by default said variable for AArch64.
+
+This requires a slight rework of the pre_build_hook script.
+
+NOTE: Setting USE_DOCKER to false will build the packages on the host
+machine directly.
+
+AArch64 WARNING: This build will install packages automatically!
+
+Change-Id: Ib1294949ecc1767f12631a82e2c7099c45fcb615
+Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
+---
+ pre_build_hook | 33 +++++++++++++++++++++++----------
+ 1 file changed, 23 insertions(+), 10 deletions(-)
+
+diff --git a/pre_build_hook b/pre_build_hook
+index 63cf7b4..b9ae6bb 100755
+--- a/pre_build_hook
++++ b/pre_build_hook
+@@ -3,27 +3,40 @@
+ set -eux
+
+ BUILD_FOR=${BUILD_FOR:-ubuntu}
++USE_DOCKER=${USE_DOCKER:-true}
+ DIR="$(dirname `readlink -f $0`)"
+
++if [ `uname -m` = 'aarch64' ]; then
++ USE_DOCKER=false
++fi
++
+ function build_pkg {
+ case $1 in
+ ubuntu)
+- rm -rf ${DIR}/repositories/ubuntu; mkdir -p ${DIR}/repositories/ubuntu
++ DEB_DIR=${DIR}/deb-ovs-dpdk
++ DEB_DIR_NSH=${DIR}/deb-ovs-nsh-dpdk
++
++ rm -rf ${DIR}/repositories/ubuntu ${DEB_DIR} ${DEB_DIR_NSH}
++ mkdir -p ${DIR}/repositories/ubuntu ${DEB_DIR} ${DEB_DIR_NSH}
++ sudo chmod -R 777 ${DEB_DIR} ${DEB_DIR_NSH}
+
+ cd ${DIR}/ovs_build
+- sudo docker build -t ovs_build .
++ if [ "${USE_DOCKER}" = true ]; then
++ sudo docker build -t ovs_build .
++ sudo docker run -v ${DEB_DIR}:/deb -t ovs_build /ovs_build/build-ovs-dpdk.sh
++ sudo docker run -v ${DEB_DIR_NSH}:/deb -t ovs_build /ovs_build/build-ovs-nsh-dpdk.sh
++ else
++ rm -rf /tmp/ovs-build-{,nsh-}dpdk; mkdir -p /tmp/ovs-build-{,nsh-}dpdk
++ BUILD_HOME=/tmp/ovs-build-dpdk BUILD_DEB=${DEB_DIR} ./build-ovs-dpdk.sh
++ BUILD_HOME=/tmp/ovs-build-nsh-dpdk BUILD_DEST=${DEB_DIR_NSH} ./build-ovs-nsh-dpdk.sh
++ rm -rf /tmp/ovs-build-{,nsh-}dpdk
++ fi
+
+- DEB_DIR=${DIR}/deb-ovs-dpdk
+- rm -rf ${DEB_DIR}; mkdir -p ${DEB_DIR}; chmod 777 ${DEB_DIR};
+- sudo docker run -v ${DEB_DIR}:/deb -t ovs_build /ovs_build/build-ovs-dpdk.sh
+ cd ${DEB_DIR}; tar czvf ../repositories/ubuntu/ovs-dpdk.tar.gz .;
+ cd ..; rm -rf ${DEB_DIR}
+
+- DEB_DIR=${DIR}/deb-ovs-nsh-dpdk
+- rm -rf ${DEB_DIR}; mkdir -p ${DEB_DIR}; chmod 777 ${DEB_DIR};
+- sudo docker run -v ${DEB_DIR}:/deb -t ovs_build /ovs_build/build-ovs-nsh-dpdk.sh
+- cd ${DEB_DIR}; tar czvf ../repositories/ubuntu/ovs-nsh-dpdk.tar.gz .;
+- cd ..; rm -rf ${DEB_DIR}
++ cd ${DEB_DIR_NSH}; tar czvf ../repositories/ubuntu/ovs-nsh-dpdk.tar.gz .;
++ cd ..; rm -rf ${DEB_DIR_NSH}
+
+ ;;
+ *) echo "Not supported system"; exit 1;;
diff --git a/patches/fuel-plugin-ovs/0006-build-install-pre_build_hook-Prepare-multiarch.patch b/patches/fuel-plugin-ovs/0006-build-install-pre_build_hook-Prepare-multiarch.patch
new file mode 100644
index 00000000..8ba8dd25
--- /dev/null
+++ b/patches/fuel-plugin-ovs/0006-build-install-pre_build_hook-Prepare-multiarch.patch
@@ -0,0 +1,381 @@
+From: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
+Date: Sun, 26 Jun 2016 20:17:59 +0200
+Subject: [PATCH] build, install, pre_build_hook: Prepare multiarch
+
+install.sh: Factor out dpkg arch into var, read it from dpkg.
+install.sh: Relax DPDK/OVS/OVS-DPDK version hardcodes
+
+Instead of putting all debs in one archive, and possibly wasting
+bandwidth / space with unused foreign packages, split plugin
+archive(s) into arch-specific archives, with <_${arch}> suffix.
+E.g. <ovs-dpdk.tar.gz> for <amd64> becomes <ovs-dpdk_amd64.tar.gz>
+
+Since only one (DPDK/OVS/OVS-DPDK) set of packages is shipped per
+archive, we can safely wildcard the installed version of libdpdk,
+which previously hardcoded 2.2.0 and 16.04 for NSH/non-NSH.
+
+This is helpful for arm64, which has a custom deb subversion
+for DPDK16.07 and also requires DPDK16.07 for OVS-DPDK-NSH, instead
+of 2.2.0.
+
+Pass UBUNTU_ARCH from pre_build_hook and make install.sh more
+arch-independant.
+
+CHANGE:
+ UBUNTU_ARCH specifies the complete list of supported architectures
+ of the resulting RPM, in `dpkg --print-architecture` format.
+ e.g. UBUNTU_ARCH='arm64 amd64' will result in x86 + AArch64 support
+
+Change-Id: I04ac0a78319b460270545708efc4b53f02f7dd05
+Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
+---
+ deployment_scripts/install.sh | 51 +++++++++++-----------
+ ovs_build/build-ovs-dpdk.sh | 64 ++++++++++++++++------------
+ ovs_build/build-ovs-nsh-dpdk.sh | 93 ++++++++++++++++++++++++-----------------
+ pre_build_hook | 24 +++++++----
+ 4 files changed, 136 insertions(+), 96 deletions(-)
+
+diff --git a/deployment_scripts/install.sh b/deployment_scripts/install.sh
+index efbed72..46d74bb 100644
+--- a/deployment_scripts/install.sh
++++ b/deployment_scripts/install.sh
+@@ -9,34 +9,33 @@ host=$1
+ nsh=$2
+ dpdk=$3
+ dpdk_socket_mem=${4:-''}
++arch=$(dpkg --print-architecture)
++ovs="ovs-dpdk_${arch}.tar.gz"
+
+-if [ $nsh = 'true' ]
+-then
+- curl http://$host:8080/plugins/fuel-plugin-ovs-0.9/repositories/ubuntu/ovs-nsh-dpdk.tar.gz | tar -xzv
+- dpkg -i openvswitch-datapath-dkms_2.5.90-1.nsh_all.deb
+- dpkg -i openvswitch-common_2.5.90-1.nsh_amd64.deb
+- dpkg -i openvswitch-switch_2.5.90-1.nsh_amd64.deb
+- dpkg -i python-openvswitch_2.5.90-1.nsh_all.deb
+- if [ $dpdk = 'true' ]
+- then
++if [ $nsh = 'true' ]; then
++ ovs="ovs-nsh-dpdk_${arch}.tar.gz"
++fi
++
++curl http://$host:8080/plugins/fuel-plugin-ovs-0.9/repositories/ubuntu/${ovs} | tar -xzv
++dpkg -i openvswitch-datapath-dkms_*.deb
++dpkg -i openvswitch-common_*.deb
++dpkg -i openvswitch-switch_*.deb
++dpkg -i python-openvswitch_*.deb
++if [ $dpdk = 'true' ]; then
++ if [ $nsh = 'true' -o -n $dpdk_socket_mem ]; then
+ dpkg -i libxenstore3.0*.deb
+- dpkg -i libdpdk0_2.2.0-1_amd64.deb
+- dpkg -i dpdk_2.2.0-1_amd64.deb
+- dpkg -i openvswitch-switch-dpdk_2.5.90-1.nsh_amd64.deb
++ if [ $arch = 'arm64' ]; then
++ # FIXME(armband): arm64 DPDK ships individual libs, install them all
++ dpdk_deb_name=$(ls dpdk_*)
++ dpdk_deb_suffix=${dpdk_deb_name#dpdk_}
++ dpkg -i *${dpdk_deb_suffix%_*}*.deb
++ else
++ dpkg -i libdpdk0_*.deb
++ dpkg -i dpdk_*.deb
++ fi
++ dpkg -i openvswitch-switch-dpdk_*.deb
+ fi
+-else
+- curl http://$host:8080/plugins/fuel-plugin-ovs-0.9/repositories/ubuntu/ovs-dpdk.tar.gz | tar -xzv
+- dpkg -i openvswitch-datapath-dkms_2.5.90-1_all.deb
+- dpkg -i openvswitch-common_2.5.90-1_amd64.deb
+- dpkg -i openvswitch-switch_2.5.90-1_amd64.deb
+- dpkg -i python-openvswitch_2.5.90-1_all.deb
+- if [[ $dpdk = 'true' && -n $dpdk_socket_mem ]]
+- then
+- dpkg -i libxenstore3.0*.deb
+- dpkg -i libdpdk0_16.07-1_amd64.deb
+- dpkg -i dpdk_16.07-1_amd64.deb
+- dpkg -i openvswitch-switch-dpdk_2.5.90-1_amd64.deb
+-
++ if ! [ $nsh = 'true' -a -n $dpdk_socket_mem ]; then
+ #Set to 0, dpdk init script mount hugepages but don't change current allocation
+ sed -i "s/[# ]*\(NR_2M_PAGES=\).*/\10/" /etc/dpdk/dpdk.conf
+ service dpdk start
+@@ -47,3 +46,5 @@ else
+ service openvswitch-switch restart
+ fi
+ fi
++
++rm -rf $INSTALL_HOME
+diff --git a/ovs_build/build-ovs-dpdk.sh b/ovs_build/build-ovs-dpdk.sh
+index dd9c6ff..a14f5fd 100755
+--- a/ovs_build/build-ovs-dpdk.sh
++++ b/ovs_build/build-ovs-dpdk.sh
+@@ -10,18 +10,27 @@ BUILD_DEST=${BUILD_DEST:-/tmp/ovs-dpdk}
+
+ export DEB_BUILD_OPTIONS='parallel=8 nocheck'
+
+-sudo apt-get -y --force-yes install devscripts dpkg-dev wget
++# Keep track of native arch (BUILD_ARCH) and target arch(s) (UBUNTU_ARCH)
++# All archs should be represented in `dpkg --print-architecture` format
++# UBUNTU_ARCH holds a space-separated list of target arch(s)
++# FIXME(armband): For now, only native building is supported!
++BUILD_ARCH=$(dpkg --print-architecture)
++UBUNTU_ARCH=${UBUNTU_ARCH:-${BUILD_ARCH}}
+
+-rm -rf ${BUILD_DEST}; mkdir -p ${BUILD_DEST}
++# Build and/or fetch precompiled packages for all arch(s) in UBUNTU_ARCH
++for ARCH in ${UBUNTU_ARCH}; do
++ rm -rf ${BUILD_DEST}; mkdir -p ${BUILD_DEST}; cd ${BUILD_DEST}
++ if [ ${ARCH} = ${BUILD_ARCH} ]; then
++ # Native building for: DPDK, OVS-DPDK, OVS
++ sudo apt-get -y --force-yes install devscripts dpkg-dev wget
+
+-cd ${BUILD_DEST}
+-wget -c http://fast.dpdk.org/rel/dpdk-16.07.tar.xz
+-xz -d dpdk-16.07.tar.xz; tar xvf dpdk-16.07.tar
+-cd dpdk-16.07
+-cp -r ${BUILD_SRC}/dpdk_16.07/debian .
++ wget -c http://fast.dpdk.org/rel/dpdk-16.07.tar.xz
++ xz -d dpdk-16.07.tar.xz; tar xvf dpdk-16.07.tar
++ cd dpdk-16.07
++ cp -r ${BUILD_SRC}/dpdk_16.07/debian .
+
+-# copy from debian/control
+-sudo apt-get install -y --force-yes debhelper \
++ # DPDK build-dep install: copy from debian/control
++ sudo apt-get install -y --force-yes debhelper \
+ dh-python \
+ dh-systemd \
+ doxygen \
+@@ -35,15 +44,15 @@ sudo apt-get install -y --force-yes debhelper \
+ python-sphinx \
+ texlive-fonts-recommended \
+ texlive-latex-extra
+-debian/rules build; fakeroot debian/rules binary
++ debian/rules build; fakeroot debian/rules binary
+
+-cd ${BUILD_DEST}
+-sudo dpkg -i *.deb
+-apt-get download libxenstore3.0
++ cd ${BUILD_DEST}
++ sudo dpkg -i *.deb
++ apt-get download libxenstore3.0
+
+-sudo apt-get build-dep openvswitch -y --force-yes
+-# copy from debian/control
+-sudo apt-get install -y --force-yes autoconf \
++ sudo apt-get build-dep openvswitch -y --force-yes
++ # OVS-DPDK build-dep install: copy from debian/control
++ sudo apt-get install -y --force-yes autoconf \
+ automake \
+ bzip2 \
+ debhelper \
+@@ -62,16 +71,19 @@ sudo apt-get install -y --force-yes autoconf \
+ python-zopeinterface \
+ python-six
+
+-wget -c ${URL_OVS_ARCHIVE}/${OVS_COMMIT}.tar.gz
+-tar xzf ${OVS_COMMIT}.tar.gz; mv ovs-${OVS_COMMIT} ovs
+-cp -r ovs ovs-dpdk
++ wget -c ${URL_OVS_ARCHIVE}/${OVS_COMMIT}.tar.gz
++ tar xzf ${OVS_COMMIT}.tar.gz; mv ovs-${OVS_COMMIT} ovs
++ cp -r ovs ovs-dpdk
+
+-cd ovs-dpdk
+-cp -r ${BUILD_SRC}/openvswitch-dpdk_2.5.90/debian .
+-debian/rules build; fakeroot debian/rules binary
++ cd ovs-dpdk
++ cp -r ${BUILD_SRC}/openvswitch-dpdk_2.5.90/debian .
++ debian/rules build; fakeroot debian/rules binary
+
+-cd ${BUILD_DEST}/ovs
+-debian/rules build; fakeroot debian/rules binary
++ cd ${BUILD_DEST}/ovs
++ debian/rules build; fakeroot debian/rules binary
++ fi
+
+-cp -r ${BUILD_DEST}/*.deb ${BUILD_DEB}
+-rm -rf ${BUILD_DEST}
++ # Store DEBs in <${BUILD_DEB}/${ARCH}/> dir and cleanup
++ rm -rf ${BUILD_DEB}/${ARCH}; mkdir -p ${BUILD_DEB}/${ARCH}; cd ${BUILD_DEB}/${ARCH}
++ cp ${BUILD_DEST}/*.deb .; rm -rf ${BUILD_DEST}
++done
+diff --git a/ovs_build/build-ovs-nsh-dpdk.sh b/ovs_build/build-ovs-nsh-dpdk.sh
+index 3751c02..a65a2bb 100755
+--- a/ovs_build/build-ovs-nsh-dpdk.sh
++++ b/ovs_build/build-ovs-nsh-dpdk.sh
+@@ -11,16 +11,24 @@ DIR="$(dirname `readlink -f $0`)"
+
+ export DEB_BUILD_OPTIONS='parallel=8 nocheck'
+
+-sudo apt-get build-dep openvswitch -y --force-yes
+-sudo apt-get -y --force-yes install devscripts dpkg-dev wget
++# Keep track of native arch (BUILD_ARCH) and target arch(s) (UBUNTU_ARCH)
++# All archs should be represented in `dpkg --print-architecture` format
++# UBUNTU_ARCH holds a space-separated list of target arch(s)
++# FIXME(armband): For now, only native building is supported!
++BUILD_ARCH=$(dpkg --print-architecture)
++UBUNTU_ARCH=${UBUNTU_ARCH:-${BUILD_ARCH}}
+
+-rm -rf ${BUILD_HOME}; mkdir -p ${BUILD_HOME}
++# Build and/or fetch precompiled packages for all arch(s) in UBUNTU_ARCH
++for ARCH in ${UBUNTU_ARCH}; do
++ rm -rf ${BUILD_HOME}; mkdir -p ${BUILD_HOME}; cd ${BUILD_HOME}
++ if [ ${ARCH} = ${BUILD_ARCH} ]; then
++ # Native building for: DPDK, OVS-DPDK, OVS
++ sudo apt-get build-dep openvswitch -y --force-yes
++ sudo apt-get -y --force-yes install devscripts dpkg-dev wget
++ dget -x -u https://launchpad.net/ubuntu/+archive/primary/+files/dpdk_2.2.0-0ubuntu8.dsc
+
+-cd ${BUILD_HOME}
+-dget -x -u https://launchpad.net/ubuntu/+archive/primary/+files/dpdk_2.2.0-0ubuntu8.dsc
+-
+-# copy from debian/control
+-sudo apt-get install -y --force-yes debhelper \
++ # DPDK build-dep install: copy from debian/control
++ sudo apt-get install -y --force-yes debhelper \
+ dh-python \
+ dh-systemd \
+ doxygen \
+@@ -35,21 +43,22 @@ sudo apt-get install -y --force-yes debhelper \
+ texlive-fonts-recommended \
+ texlive-latex-extra
+
+-cd dpdk-2.2.0; rm -rf debian/patches/
+-cat << EOF > debian/changelog
++ cd dpdk-2.2.0; rm -rf debian/patches/
++ cat << EOF > debian/changelog
+ dpdk (2.2.0-1) unstable; urgency=low
+ * DPDK 2.2.0
+ -- DPDK team <dev@dpdk.org> $(date --rfc-2822)
+ EOF
+-debian/rules build; fakeroot debian/rules binary
+-cd ${BUILD_HOME}; sudo dpkg -i *.deb
+-apt-get download libxenstore3.0
++ # DPDK build & install (required for following native build of OVS-NSH)
++ debian/rules build; fakeroot debian/rules binary
++ cd ${BUILD_HOME}; sudo dpkg -i *.deb
++ apt-get download libxenstore3.0
+
+-cd ${BUILD_HOME}
+-dget -x -u https://launchpad.net/ubuntu/+archive/primary/+files/openvswitch-dpdk_2.4.0-0ubuntu1.dsc
++ cd ${BUILD_HOME}
++ dget -x -u https://launchpad.net/ubuntu/+archive/primary/+files/openvswitch-dpdk_2.4.0-0ubuntu1.dsc
+
+-# copy from debian/control
+-sudo apt-get install -y --force-yes autoconf \
++ # OVS-NSH build-dep install: copy from debian/control
++ sudo apt-get install -y --force-yes autoconf \
+ automake \
+ bzip2 \
+ debhelper \
+@@ -68,33 +77,41 @@ sudo apt-get install -y --force-yes autoconf \
+ python-zopeinterface \
+ python-six
+
+-wget -c ${URL_OVS_ARCHIVE}/${OVS_COMMIT}.tar.gz
+-tar xzf ${OVS_COMMIT}.tar.gz; mv ovs-${OVS_COMMIT} ovs
+-PATCHES=$(cd ${DIR}/patches; echo *patch)
+-for patch in ${PATCHES}
+-do
+- patch -p1 < ${DIR}/patches/${patch}
+-done
+-cd ${BUILD_HOME}; tar czvf ovs.tar.gz ovs
+-rm -rf openvswitch-dpdk-${OVS_VER}*
+-cd openvswitch-dpdk-2.4.0; uupdate -v ${OVS_VER} ../ovs.tar.gz
+-cd ../openvswitch-dpdk-${OVS_VER}
+-sed -i "s/include\/rte_config.h/include\/dpdk\/rte_config.h/" acinclude.m4
+-sed -i 's/DPDK_INCLUDE=.*/DPDK_INCLUDE=$RTE_SDK\/include\/dpdk/' acinclude.m4
+-autoreconf --install
+-rm -rf debian/patches/
+-cat << EOF > debian/changelog
++ # OVS-NSH build preparations: download sources, patch if needed
++ wget -c ${URL_OVS_ARCHIVE}/${OVS_COMMIT}.tar.gz
++ tar xzf ${OVS_COMMIT}.tar.gz; mv ovs-${OVS_COMMIT} ovs; cd ovs
++
++ # Apply OVS-NSH patches, create a new orig tar archive
++ PATCHES=$(cd ${DIR}/patches; echo *patch)
++ for patch in ${PATCHES}
++ do
++ patch -p1 < ${DIR}/patches/${patch}
++ done
++ cd ${BUILD_HOME}; tar czvf ovs.tar.gz ovs
++ rm -rf openvswitch-dpdk-${OVS_VER}*
++ cd openvswitch-dpdk-2.4.0; uupdate -v ${OVS_VER} ../ovs.tar.gz
++ cd ../openvswitch-dpdk-${OVS_VER}
++ sed -i "s/include\/rte_config.h/include\/dpdk\/rte_config.h/" acinclude.m4
++ sed -i 's/DPDK_INCLUDE=.*/DPDK_INCLUDE=$RTE_SDK\/include\/dpdk/' acinclude.m4
++ autoreconf --install
++ rm -rf debian/patches/
++ cat << EOF > debian/changelog
+ openvswitch-dpdk (${OVS_VER}-1.nsh) unstable; urgency=low
+ * Support NSH
+ -- Open vSwitch team <dev@openvswitch.org> $(date --rfc-2822)
+ EOF
+-debian/rules build; fakeroot debian/rules binary
++ debian/rules build; fakeroot debian/rules binary
+
+-cd ${BUILD_HOME}/ovs
+-cat << EOF > debian/changelog
++ cd ${BUILD_HOME}/ovs
++ cat << EOF > debian/changelog
+ openvswitch (${OVS_VER}-1.nsh) unstable; urgency=low
+ * Support NSH
+ -- Open vSwitch team <dev@openvswitch.org> $(date --rfc-2822)
+ EOF
+-debian/rules build; fakeroot debian/rules binary
+-cp ${BUILD_HOME}/*.deb ${BUILD_DEST}
++ debian/rules build; fakeroot debian/rules binary
++ fi
++
++ # Store DEBs in <${BUILD_DEST}/${ARCH}/> dir and cleanup
++ rm -rf ${BUILD_DEST}/${ARCH}; mkdir -p ${BUILD_DEST}/${ARCH}; cd ${BUILD_DEST}/${ARCH}
++ cp ${BUILD_HOME}/*.deb .
++done
+diff --git a/pre_build_hook b/pre_build_hook
+index b9ae6bb..3e46a37 100755
+--- a/pre_build_hook
++++ b/pre_build_hook
+@@ -10,6 +10,11 @@ if [ `uname -m` = 'aarch64' ]; then
+ USE_DOCKER=false
+ fi
+
++# Pass target arch(s) (UBUNTU_ARCH) to build scripts.
++# All archs should be represented in `dpkg --print-architecture` format
++# UBUNTU_ARCH holds a space-separated list of target arch(s)
++export UBUNTU_ARCH=${UBUNTU_ARCH:-$(dpkg --print-architecture)}
++
+ function build_pkg {
+ case $1 in
+ ubuntu)
+@@ -23,8 +28,10 @@ function build_pkg {
+ cd ${DIR}/ovs_build
+ if [ "${USE_DOCKER}" = true ]; then
+ sudo docker build -t ovs_build .
+- sudo docker run -v ${DEB_DIR}:/deb -t ovs_build /ovs_build/build-ovs-dpdk.sh
+- sudo docker run -v ${DEB_DIR_NSH}:/deb -t ovs_build /ovs_build/build-ovs-nsh-dpdk.sh
++ sudo docker run -e "UBUNTU_ARCH=${UBUNTU_ARCH}" -v ${DEB_DIR}:/deb \
++ -t ovs_build /ovs_build/build-ovs-dpdk.sh
++ sudo docker run -e "UBUNTU_ARCH=${UBUNTU_ARCH}" -v ${DEB_DIR_NSH}:/deb \
++ -t ovs_build /ovs_build/build-ovs-nsh-dpdk.sh
+ else
+ rm -rf /tmp/ovs-build-{,nsh-}dpdk; mkdir -p /tmp/ovs-build-{,nsh-}dpdk
+ BUILD_HOME=/tmp/ovs-build-dpdk BUILD_DEB=${DEB_DIR} ./build-ovs-dpdk.sh
+@@ -32,11 +39,14 @@ function build_pkg {
+ rm -rf /tmp/ovs-build-{,nsh-}dpdk
+ fi
+
+- cd ${DEB_DIR}; tar czvf ../repositories/ubuntu/ovs-dpdk.tar.gz .;
+- cd ..; rm -rf ${DEB_DIR}
+-
+- cd ${DEB_DIR_NSH}; tar czvf ../repositories/ubuntu/ovs-nsh-dpdk.tar.gz .;
+- cd ..; rm -rf ${DEB_DIR_NSH}
++ # Gather packages for each arch(s) in UBUNTU_ARCH in a separate archive
++ for ARCH in ${UBUNTU_ARCH}; do
++ cd ${DEB_DIR}/${ARCH}
++ tar czvf ../../repositories/ubuntu/ovs-dpdk_${ARCH}.tar.gz .
++ cd ${DEB_DIR_NSH}/${ARCH}
++ tar czvf ../../repositories/ubuntu/ovs-nsh-dpdk_${ARCH}.tar.gz .
++ done
++ cd ${DIR}; sudo rm -rf ${DEB_DIR} ${DEB_DIR_NSH}
+
+ ;;
+ *) echo "Not supported system"; exit 1;;
diff --git a/patches/fuel-plugin-ovs/0007-AArch64-Add-native-build-support.patch b/patches/fuel-plugin-ovs/0007-AArch64-Add-native-build-support.patch
new file mode 100644
index 00000000..1ea672b6
--- /dev/null
+++ b/patches/fuel-plugin-ovs/0007-AArch64-Add-native-build-support.patch
@@ -0,0 +1,150 @@
+From: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
+Date: Mon, 5 Sep 2016 18:56:46 +0200
+Subject: [PATCH] AArch64: Add native build support
+
+FIXME: OVS-NSH-DPDK is not yet supported on arm64, see [1].
+
+[1] https://jira.opnfv.org/browse/ARMBAND-86
+
+Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
+---
+ ovs_build/build-ovs-dpdk.sh | 19 ++++++++--
+ ovs_build/build-ovs-nsh-dpdk.sh | 48 ++++++++++++++----------
+ ovs_build/openvswitch-dpdk_2.5.90/debian/control | 2 +-
+ 3 files changed, 45 insertions(+), 24 deletions(-)
+
+diff --git a/ovs_build/build-ovs-dpdk.sh b/ovs_build/build-ovs-dpdk.sh
+index a14f5fd..a0c50e3 100755
+--- a/ovs_build/build-ovs-dpdk.sh
++++ b/ovs_build/build-ovs-dpdk.sh
+@@ -10,6 +10,10 @@ BUILD_DEST=${BUILD_DEST:-/tmp/ovs-dpdk}
+
+ export DEB_BUILD_OPTIONS='parallel=8 nocheck'
+
++# AArch64 specifics, repository base URL, debian build versions
++AARCH64_REPO=${AARCH64_REPO:-'https://linux.enea.com/mos-repos/ubuntu/9.0'}
++AARCH64_DPDK_DEBV=${AARCH64_DPDK_DEBV:-'0~u14.04+mos1+mos9.0+amos1'}
++
+ # Keep track of native arch (BUILD_ARCH) and target arch(s) (UBUNTU_ARCH)
+ # All archs should be represented in `dpkg --print-architecture` format
+ # UBUNTU_ARCH holds a space-separated list of target arch(s)
+@@ -24,10 +28,17 @@ for ARCH in ${UBUNTU_ARCH}; do
+ # Native building for: DPDK, OVS-DPDK, OVS
+ sudo apt-get -y --force-yes install devscripts dpkg-dev wget
+
+- wget -c http://fast.dpdk.org/rel/dpdk-16.07.tar.xz
+- xz -d dpdk-16.07.tar.xz; tar xvf dpdk-16.07.tar
+- cd dpdk-16.07
+- cp -r ${BUILD_SRC}/dpdk_16.07/debian .
++ if [ ${ARCH} = 'arm64' ]; then
++ # Armband: arm64 already has debian control archive for DPDK 16.07
++ dget -x -u ${AARCH64_REPO}/pool/main/d/dpdk/dpdk_16.07-${AARCH64_DPDK_DEBV}.dsc
++ cd dpdk-16.07
++ else
++ # Other archs will use the debian control archive in this repo
++ wget -c http://fast.dpdk.org/rel/dpdk-16.07.tar.xz
++ xz -d dpdk-16.07.tar.xz; tar xvf dpdk-16.07.tar
++ cd dpdk-16.07
++ cp -r ${BUILD_SRC}/dpdk_16.07/debian .
++ fi
+
+ # DPDK build-dep install: copy from debian/control
+ sudo apt-get install -y --force-yes debhelper \
+diff --git a/ovs_build/build-ovs-nsh-dpdk.sh b/ovs_build/build-ovs-nsh-dpdk.sh
+index a65a2bb..59d8a79 100755
+--- a/ovs_build/build-ovs-nsh-dpdk.sh
++++ b/ovs_build/build-ovs-nsh-dpdk.sh
+@@ -25,10 +25,12 @@ for ARCH in ${UBUNTU_ARCH}; do
+ # Native building for: DPDK, OVS-DPDK, OVS
+ sudo apt-get build-dep openvswitch -y --force-yes
+ sudo apt-get -y --force-yes install devscripts dpkg-dev wget
+- dget -x -u https://launchpad.net/ubuntu/+archive/primary/+files/dpdk_2.2.0-0ubuntu8.dsc
+
++ # FIXME(armband): OVS-NSH-DPDK is not yet supported on arm64
+ # DPDK build-dep install: copy from debian/control
+- sudo apt-get install -y --force-yes debhelper \
++ if [ ! ${ARCH} = 'arm64' ]; then
++ dget -x -u https://launchpad.net/ubuntu/+archive/primary/+files/dpdk_2.2.0-0ubuntu8.dsc
++ sudo apt-get install -y --force-yes debhelper \
+ dh-python \
+ dh-systemd \
+ doxygen \
+@@ -43,19 +45,20 @@ for ARCH in ${UBUNTU_ARCH}; do
+ texlive-fonts-recommended \
+ texlive-latex-extra
+
+- cd dpdk-2.2.0; rm -rf debian/patches/
+- cat << EOF > debian/changelog
++ cd dpdk-2.2.0; rm -rf debian/patches/
++ cat << EOF > debian/changelog
+ dpdk (2.2.0-1) unstable; urgency=low
+ * DPDK 2.2.0
+ -- DPDK team <dev@dpdk.org> $(date --rfc-2822)
+ EOF
+- # DPDK build & install (required for following native build of OVS-NSH)
+- debian/rules build; fakeroot debian/rules binary
+- cd ${BUILD_HOME}; sudo dpkg -i *.deb
+- apt-get download libxenstore3.0
++ # DPDK build & install (required for following native build of OVS-NSH)
++ debian/rules build; fakeroot debian/rules binary
++ cd ${BUILD_HOME}; sudo dpkg -i *.deb
++ apt-get download libxenstore3.0
+
+- cd ${BUILD_HOME}
+- dget -x -u https://launchpad.net/ubuntu/+archive/primary/+files/openvswitch-dpdk_2.4.0-0ubuntu1.dsc
++ # OVS-NSH-DPDK build preparations: download sources, patch if needed
++ dget -x -u https://launchpad.net/ubuntu/+archive/primary/+files/openvswitch-dpdk_2.4.0-0ubuntu1.dsc
++ fi
+
+ # OVS-NSH build-dep install: copy from debian/control
+ sudo apt-get install -y --force-yes autoconf \
+@@ -88,20 +91,27 @@ EOF
+ patch -p1 < ${DIR}/patches/${patch}
+ done
+ cd ${BUILD_HOME}; tar czvf ovs.tar.gz ovs
+- rm -rf openvswitch-dpdk-${OVS_VER}*
+- cd openvswitch-dpdk-2.4.0; uupdate -v ${OVS_VER} ../ovs.tar.gz
+- cd ../openvswitch-dpdk-${OVS_VER}
+- sed -i "s/include\/rte_config.h/include\/dpdk\/rte_config.h/" acinclude.m4
+- sed -i 's/DPDK_INCLUDE=.*/DPDK_INCLUDE=$RTE_SDK\/include\/dpdk/' acinclude.m4
+- autoreconf --install
+- rm -rf debian/patches/
+- cat << EOF > debian/changelog
++
++ # FIXME(armband): OVS-NSH-DPDK is not yet supported on arm64
++ if [ ! ${ARCH} = 'arm64' ]; then
++ rm -rf openvswitch-dpdk-${OVS_VER}{,.orig*}
++ cd openvswitch-dpdk-2.4.0
++ uupdate -v ${OVS_VER} ../ovs.tar.gz
++ cd ${BUILD_HOME}/openvswitch-dpdk-${OVS_VER}
++ sed -i "s/include\/rte_config.h/include\/dpdk\/rte_config.h/" acinclude.m4
++ sed -i 's/DPDK_INCLUDE=.*/DPDK_INCLUDE=$RTE_SDK\/include\/dpdk/' acinclude.m4
++ rm -rf debian/patches/
++ autoreconf --install
++ # OVS-NSH-DPDK build
++ cat << EOF > debian/changelog
+ openvswitch-dpdk (${OVS_VER}-1.nsh) unstable; urgency=low
+ * Support NSH
+ -- Open vSwitch team <dev@openvswitch.org> $(date --rfc-2822)
+ EOF
+- debian/rules build; fakeroot debian/rules binary
++ debian/rules build; fakeroot debian/rules binary
++ fi
+
++ # OVS-NSH build
+ cd ${BUILD_HOME}/ovs
+ cat << EOF > debian/changelog
+ openvswitch (${OVS_VER}-1.nsh) unstable; urgency=low
+diff --git a/ovs_build/openvswitch-dpdk_2.5.90/debian/control b/ovs_build/openvswitch-dpdk_2.5.90/debian/control
+index e7171b9..e0c27c5 100644
+--- a/ovs_build/openvswitch-dpdk_2.5.90/debian/control
++++ b/ovs_build/openvswitch-dpdk_2.5.90/debian/control
+@@ -27,7 +27,7 @@ Homepage: http://openvswitch.org/
+ XS-Testsuite: autopkgtest
+
+ Package: openvswitch-switch-dpdk
+-Architecture: i386 amd64
++Architecture: i386 amd64 arm64
+ Depends: dpdk,
+ openvswitch-switch (>= 2.4.0),
+ ${misc:Depends},
diff --git a/patches/fuel-plugin-ovs/0008-AArch64-Add-support-for-downloading-prebuilt-DEBs.patch b/patches/fuel-plugin-ovs/0008-AArch64-Add-support-for-downloading-prebuilt-DEBs.patch
new file mode 100644
index 00000000..0f7e072c
--- /dev/null
+++ b/patches/fuel-plugin-ovs/0008-AArch64-Add-support-for-downloading-prebuilt-DEBs.patch
@@ -0,0 +1,139 @@
+From: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
+Date: Mon, 12 Sep 2016 18:02:42 +0200
+Subject: [PATCH] AArch64: Add support for downloading prebuilt DEBs
+
+Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
+---
+ ovs_build/build-ovs-armband-fetch.sh | 45 ++++++++++++++++++++++++++++++++++++
+ ovs_build/build-ovs-dpdk.sh | 18 ++++++++++++++-
+ ovs_build/build-ovs-nsh-dpdk.sh | 15 +++++++++++-
+ 3 files changed, 76 insertions(+), 2 deletions(-)
+ create mode 100755 ovs_build/build-ovs-armband-fetch.sh
+
+diff --git a/ovs_build/build-ovs-armband-fetch.sh b/ovs_build/build-ovs-armband-fetch.sh
+new file mode 100755
+index 0000000..a810b93
+--- /dev/null
++++ b/ovs_build/build-ovs-armband-fetch.sh
+@@ -0,0 +1,45 @@
++#!/bin/bash
++
++set -eux
++
++# armband_fetch will download all binaries for one debian source package
++#
++# Usage:
++# armband_fetch <src_deb_name> <src_deb_version> \
++# [<repo_base_url> \
++# [<repo_Sources_relative_url> \
++# [<repo_Packages_relative_url>]]] \
++#
++# e.g.:
++# armband_fetch dpdk 16.07-0~u14.04+mos1+mos9.0+amos1 \
++# https://linux.enea.com/mos-repos/ubuntu/9.0 \
++# dists/mos9.0-fuel-plugin-ovs/main/source/Sources \
++# dists/mos9.0-fuel-plugin-ovs/main/binary-arm64/Packages
++function armband_fetch() {
++ local name=$1
++ local ver=${2//\+/\\\+}
++ local repo_base_url=${3:-http://linux.enea.com/mos-repos/ubuntu/9.0}
++ local repo_Sources_url=${4:-dists/mos9.0-fuel-plugin-ovs/main/source/Sources}
++ local repo_Packages_url=${5:-dists/mos9.0-fuel-plugin-ovs/main/binary-arm64/Packages}
++ local found=false
++
++ # Fetch Sources & Packages files if not already present
++ if [ ! -f Sources -o ! -f Packages ]; then
++ sudo apt-get -y --force-yes install wget
++ wget -c "${repo_base_url}/${repo_Sources_url}"
++ wget -c "${repo_base_url}/${repo_Packages_url}"
++ fi
++
++ L=$(grep -Pzo "(?s)(?<=^Package: ${name}\n^Binary: )(\N*?)(?=\n^Version: ${ver})" \
++ Sources | tr -d ',')
++ for deb_binary in ${L}; do
++ D=$(grep -Po "(?<=^Filename: )(.*?\/${deb_binary}_${ver}_.*?\.deb)" Packages) || true
++ if [ -n "${D}" ]; then
++ wget -c "${repo_base_url}/${D}" && found=true
++ fi
++ done
++ if [ ${found} = false ]; then
++ echo "ERROR: Could not find DEBs for pkg/ver: ${name}/${ver}"
++ exit 1
++ fi
++}
+diff --git a/ovs_build/build-ovs-dpdk.sh b/ovs_build/build-ovs-dpdk.sh
+index a0c50e3..8d70265 100755
+--- a/ovs_build/build-ovs-dpdk.sh
++++ b/ovs_build/build-ovs-dpdk.sh
+@@ -13,11 +13,13 @@ export DEB_BUILD_OPTIONS='parallel=8 nocheck'
+ # AArch64 specifics, repository base URL, debian build versions
+ AARCH64_REPO=${AARCH64_REPO:-'https://linux.enea.com/mos-repos/ubuntu/9.0'}
+ AARCH64_DPDK_DEBV=${AARCH64_DPDK_DEBV:-'0~u14.04+mos1+mos9.0+amos1'}
++AARCH64_OVS_DEBV=${AARCH64_OVS_DEBV:-'2.5.90-1'}
+
+ # Keep track of native arch (BUILD_ARCH) and target arch(s) (UBUNTU_ARCH)
+ # All archs should be represented in `dpkg --print-architecture` format
+ # UBUNTU_ARCH holds a space-separated list of target arch(s)
+-# FIXME(armband): For now, only native building is supported!
++# FIXME(armband): For now, only native building and/or downloading prebuilt
++# debian binaries is supported!
+ BUILD_ARCH=$(dpkg --print-architecture)
+ UBUNTU_ARCH=${UBUNTU_ARCH:-${BUILD_ARCH}}
+
+@@ -92,6 +94,20 @@ for ARCH in ${UBUNTU_ARCH}; do
+
+ cd ${BUILD_DEST}/ovs
+ debian/rules build; fakeroot debian/rules binary
++ else
++ # FIXME(armband): No cross-build support yet, download prebuilt DEBs
++ if [ ${ARCH} = 'arm64' ]; then
++ source ${BUILD_SRC}/build-ovs-armband-fetch.sh
++ # Fetch Sources/Packages from Armband and construct list of packages to download
++ armband_fetch 'dpdk' "16.07-${AARCH64_DPDK_DEBV}"
++ armband_fetch 'openvswitch-dpdk' "${AARCH64_OVS_DEBV}"
++ armband_fetch 'openvswitch' "${AARCH64_OVS_DEBV}"
++ # libxenstore (equivalent to `apt-get download` for native build)
++ AARCH64_LIBXENSTORE='libxenstore3.0_4.4.2-0ubuntu0.14.04.6_arm64.deb'
++ wget -c "http://ports.ubuntu.com/pool/main/x/xen/${AARCH64_LIBXENSTORE}"
++ else
++ echo "WARNING: Architecture [${ARCH}] does not provide precompiled DEBs, skipping!"
++ fi
+ fi
+
+ # Store DEBs in <${BUILD_DEB}/${ARCH}/> dir and cleanup
+diff --git a/ovs_build/build-ovs-nsh-dpdk.sh b/ovs_build/build-ovs-nsh-dpdk.sh
+index 59d8a79..9d8a837 100755
+--- a/ovs_build/build-ovs-nsh-dpdk.sh
++++ b/ovs_build/build-ovs-nsh-dpdk.sh
+@@ -11,10 +11,14 @@ DIR="$(dirname `readlink -f $0`)"
+
+ export DEB_BUILD_OPTIONS='parallel=8 nocheck'
+
++# AArch64 specifics, repository base URL, debian build versions
++AARCH64_OVS_NSH_DEBV=${AARCH64_OVS_NSH_DEBV:-'2.5.90-1.nsh'}
++
+ # Keep track of native arch (BUILD_ARCH) and target arch(s) (UBUNTU_ARCH)
+ # All archs should be represented in `dpkg --print-architecture` format
+ # UBUNTU_ARCH holds a space-separated list of target arch(s)
+-# FIXME(armband): For now, only native building is supported!
++# FIXME(armband): For now, only native building and/or downloading prebuilt
++# debian binaries is supported!
+ BUILD_ARCH=$(dpkg --print-architecture)
+ UBUNTU_ARCH=${UBUNTU_ARCH:-${BUILD_ARCH}}
+
+@@ -119,6 +123,15 @@ openvswitch (${OVS_VER}-1.nsh) unstable; urgency=low
+ -- Open vSwitch team <dev@openvswitch.org> $(date --rfc-2822)
+ EOF
+ debian/rules build; fakeroot debian/rules binary
++ else
++ # FIXME(armband): No cross-build support yet, download prebuilt DEBs
++ if [ ${ARCH} = 'arm64' ]; then
++ source ${DIR}/build-ovs-armband-fetch.sh
++ # FIXME(armband): https://jira.opnfv.org/browse/ARMBAND-86
++ armband_fetch 'openvswitch' "${AARCH64_OVS_NSH_DEBV}"
++ else
++ echo "WARNING: Architecture [${ARCH}] does not provide precompiled DEBs, skipping!"
++ fi
+ fi
+
+ # Store DEBs in <${BUILD_DEST}/${ARCH}/> dir and cleanup
diff --git a/patches/fuel-plugin-ovs/0009-build-docker-Use-host-s-network-stack.patch b/patches/fuel-plugin-ovs/0009-build-docker-Use-host-s-network-stack.patch
new file mode 100644
index 00000000..e0606819
--- /dev/null
+++ b/patches/fuel-plugin-ovs/0009-build-docker-Use-host-s-network-stack.patch
@@ -0,0 +1,30 @@
+From: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
+Date: Thu, 15 Sep 2016 19:16:34 +0200
+Subject: [PATCH] build: docker: Use host's network stack
+
+Similar to Fuel@OPNFV build process, we want to mount /etc/hosts
+in the builder container to be able to use local mirror caches.
+
+Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
+---
+ pre_build_hook | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/pre_build_hook b/pre_build_hook
+index 3e46a37..4866219 100755
+--- a/pre_build_hook
++++ b/pre_build_hook
+@@ -28,9 +28,11 @@ function build_pkg {
+ cd ${DIR}/ovs_build
+ if [ "${USE_DOCKER}" = true ]; then
+ sudo docker build -t ovs_build .
+- sudo docker run -e "UBUNTU_ARCH=${UBUNTU_ARCH}" -v ${DEB_DIR}:/deb \
++ sudo docker run -e "UBUNTU_ARCH=${UBUNTU_ARCH}" \
++ -v ${DEB_DIR}:/deb -v /etc/hosts:/etc/hosts \
+ -t ovs_build /ovs_build/build-ovs-dpdk.sh
+- sudo docker run -e "UBUNTU_ARCH=${UBUNTU_ARCH}" -v ${DEB_DIR_NSH}:/deb \
++ sudo docker run -e "UBUNTU_ARCH=${UBUNTU_ARCH}" \
++ -v ${DEB_DIR_NSH}:/deb -v /etc/hosts:/etc/hosts \
+ -t ovs_build /ovs_build/build-ovs-nsh-dpdk.sh
+ else
+ rm -rf /tmp/ovs-build-{,nsh-}dpdk; mkdir -p /tmp/ovs-build-{,nsh-}dpdk
diff --git a/patches/fuel-plugin-ovs/0010-HACK-build-prebuilt-DEBs-src-bin-ver-mismatch.patch b/patches/fuel-plugin-ovs/0010-HACK-build-prebuilt-DEBs-src-bin-ver-mismatch.patch
new file mode 100644
index 00000000..818203f3
--- /dev/null
+++ b/patches/fuel-plugin-ovs/0010-HACK-build-prebuilt-DEBs-src-bin-ver-mismatch.patch
@@ -0,0 +1,72 @@
+From: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
+Date: Thu, 15 Sep 2016 19:41:58 +0200
+Subject: [PATCH] HACK: build: prebuilt DEBs: src/bin ver mismatch
+
+Our debian source version is not always in sync with the debian
+binaries versions, see related bug for a complete description of
+this issue.
+
+This is a temporary chance which should be dropped once the package
+versions are aligned.
+
+Related-bug: ARMBAND-89
+Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
+---
+ ovs_build/build-ovs-armband-fetch.sh | 16 ++++++++++++----
+ ovs_build/build-ovs-nsh-dpdk.sh | 2 +-
+ 2 files changed, 13 insertions(+), 5 deletions(-)
+
+diff --git a/ovs_build/build-ovs-armband-fetch.sh b/ovs_build/build-ovs-armband-fetch.sh
+index a810b93..8ab22cc 100755
+--- a/ovs_build/build-ovs-armband-fetch.sh
++++ b/ovs_build/build-ovs-armband-fetch.sh
+@@ -17,7 +17,7 @@ set -eux
+ # dists/mos9.0-fuel-plugin-ovs/main/binary-arm64/Packages
+ function armband_fetch() {
+ local name=$1
+- local ver=${2//\+/\\\+}
++ local src_ver=${2//\+/\\\+}
+ local repo_base_url=${3:-http://linux.enea.com/mos-repos/ubuntu/9.0}
+ local repo_Sources_url=${4:-dists/mos9.0-fuel-plugin-ovs/main/source/Sources}
+ local repo_Packages_url=${5:-dists/mos9.0-fuel-plugin-ovs/main/binary-arm64/Packages}
+@@ -30,16 +30,24 @@ function armband_fetch() {
+ wget -c "${repo_base_url}/${repo_Packages_url}"
+ fi
+
+- L=$(grep -Pzo "(?s)(?<=^Package: ${name}\n^Binary: )(\N*?)(?=\n^Version: ${ver})" \
++ L=$(grep -Pzo "(?s)(?<=^Package: ${name}\n^Binary: )(\N*?)(?=\n^Version: ${src_ver})" \
+ Sources | tr -d ',')
+ for deb_binary in ${L}; do
+- D=$(grep -Po "(?<=^Filename: )(.*?\/${deb_binary}_${ver}_.*?\.deb)" Packages) || true
++ # FIXME(armband): https://jira.opnfv.org/browse/ARMBAND-89
++ # Until we align source and binaries versions for nsh, convert on the fly
++ # e.g.: debian source 2.5.90~04.05-1.nsh+amos2 => debian binary 2.5.90-1.nsh
++ deb_ver=${src_ver}
++ if [[ ${deb_ver} == *~*-* ]]; then
++ deb_ver=${deb_ver//~*-/-}
++ deb_ver=${deb_ver%\\\+*}
++ fi
++ D=$(grep -Po "(?<=^Filename: )(.*?\/${deb_binary}_${deb_ver}_.*?\.deb)" Packages) || true
+ if [ -n "${D}" ]; then
+ wget -c "${repo_base_url}/${D}" && found=true
+ fi
+ done
+ if [ ${found} = false ]; then
+- echo "ERROR: Could not find DEBs for pkg/ver: ${name}/${ver}"
++ echo "ERROR: Could not find DEBs for pkg|src_ver|deb_ver: ${name}|${src_ver}|${deb_ver}"
+ exit 1
+ fi
+ }
+diff --git a/ovs_build/build-ovs-nsh-dpdk.sh b/ovs_build/build-ovs-nsh-dpdk.sh
+index 9d8a837..aebcb94 100755
+--- a/ovs_build/build-ovs-nsh-dpdk.sh
++++ b/ovs_build/build-ovs-nsh-dpdk.sh
+@@ -12,7 +12,7 @@ DIR="$(dirname `readlink -f $0`)"
+ export DEB_BUILD_OPTIONS='parallel=8 nocheck'
+
+ # AArch64 specifics, repository base URL, debian build versions
+-AARCH64_OVS_NSH_DEBV=${AARCH64_OVS_NSH_DEBV:-'2.5.90-1.nsh'}
++AARCH64_OVS_NSH_DEBV=${AARCH64_OVS_NSH_DEBV:-'2.5.90~04.05-1.nsh+amos2'}
+
+ # Keep track of native arch (BUILD_ARCH) and target arch(s) (UBUNTU_ARCH)
+ # All archs should be represented in `dpkg --print-architecture` format
diff --git a/patches/opnfv-fuel/0002-FIXME-deploy-EFI-Skip-re-ordering-boot-via-IPMI.patch b/patches/opnfv-fuel/0002-FIXME-deploy-EFI-Skip-re-ordering-boot-via-IPMI.patch
new file mode 100644
index 00000000..d6ff3818
--- /dev/null
+++ b/patches/opnfv-fuel/0002-FIXME-deploy-EFI-Skip-re-ordering-boot-via-IPMI.patch
@@ -0,0 +1,31 @@
+From: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
+Date: Fri, 9 Sep 2016 17:55:38 +0200
+Subject: [PATCH] FIXME: deploy: EFI: Skip re-ordering boot via IPMI
+
+On EFI systems deploys, altering the boot order via IPMI causes
+issues on some specific targets. Until we agree on an uniform
+solution for EFI systems + IPMI boot order handling, just skip
+altering it via IPMI.
+
+Related-bug: https://jira.opnfv.org/browse/ARMBAND-71
+
+Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
+---
+ deploy/deploy_env.py | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/deploy/deploy_env.py b/deploy/deploy_env.py
+index 93dc395..1d2dfeb 100644
+--- a/deploy/deploy_env.py
++++ b/deploy/deploy_env.py
+@@ -255,7 +255,9 @@ class CloudDeploy(object):
+
+ def set_boot_order_nodes(self):
+ self.power_off_nodes()
+- self.set_boot_order(['pxe', 'disk'])
++ # ARMBAND FIXME: See https://jira.opnfv.org/browse/ARMBAND-71
++ # Until we choose an uniform design on EFI systems, just disable it
++ # self.set_boot_order(['pxe', 'disk'])
+ self.power_on_nodes()
+
+ def get_put_deploy_log(self):
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
deleted file mode 100644
index e7867d48..00000000
--- a/patches/opnfv-fuel/0002-deploy-Delete-old-Fuel-env-if-present.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-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/patches/opnfv-fuel/0003-deploy.sh-accept-a-timeout-flag-T.patch b/patches/opnfv-fuel/0003-deploy.sh-accept-a-timeout-flag-T.patch
deleted file mode 100644
index 641891bb..00000000
--- a/patches/opnfv-fuel/0003-deploy.sh-accept-a-timeout-flag-T.patch
+++ /dev/null
@@ -1,86 +0,0 @@
-From 0ca4dada5b3528c84f2edcb7f1a2df8f0a18779d Mon Sep 17 00:00:00 2001
-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)
-
-Change-Id: I58a7b9bc639bb03b994ea34fc317f5679140d9fd
-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 4e4586c..8411714 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]
-
-@@ -47,6 +47,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:
-@@ -78,6 +79,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)://)
-
-@@ -116,6 +119,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
- ############################################################################
-@@ -123,7 +131,7 @@ DRY_RUN=0
- ############################################################################
- # BEGIN of main
- #
--while getopts "b:B:dfFHl:L:p:s:S:i:he" OPTION
-+while getopts "b:B:dfFHl:L:p:s:S:T:i:he" OPTION
- do
- case $OPTION in
- b)
-@@ -174,6 +182,9 @@ do
- STORAGE_DIR="-s ${OPTARG}"
- fi
- ;;
-+ T)
-+ DEPLOY_TIMEOUT="-dt ${OPTARG}"
-+ ;;
- i)
- ISO=${OPTARG}
- if [[ ! $ISO == file://* ]] && \
-@@ -243,8 +254,8 @@ if [ $DRY_RUN -eq 0 ]; then
- ISO=${SCRIPT_PATH}/ISO/image.iso
- fi
- # Start deployment
-- echo "python deploy.py $DEPLOY_LOG $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 $DEPLOY_LOG $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 $DEPLOY_LOG $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 $DEPLOY_LOG $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
-
---
-2.5.5
-
diff --git a/patches/opnfv-fuel/0004-Fuel-VM-for-the-Enea-Armband-lab.patch b/patches/opnfv-fuel/0004-Fuel-VM-for-the-Enea-Armband-lab.patch
index aa97aa69..55f6a349 100644
--- a/patches/opnfv-fuel/0004-Fuel-VM-for-the-Enea-Armband-lab.patch
+++ b/patches/opnfv-fuel/0004-Fuel-VM-for-the-Enea-Armband-lab.patch
@@ -1,4 +1,3 @@
-From 800aae6db0d0d79d01cec4df85075026073063dd Mon Sep 17 00:00:00 2001
From: Josep Puigdemont <josep.puigdemont@enea.com>
Date: Wed, 4 May 2016 14:27:23 +0200
Subject: [PATCH] Fuel VM for the Enea Armband lab
@@ -20,9 +19,9 @@ index 0000000..8773ed4
@@ -0,0 +1,88 @@
+<domain type='kvm' id='1'>
+ <name>fuel</name>
-+ <memory unit='KiB'>8290304</memory>
-+ <currentMemory unit='KiB'>8290304</currentMemory>
-+ <vcpu placement='static'>8</vcpu>
++ <memory unit='KiB'>4194304</memory>
++ <currentMemory unit='KiB'>4194304</currentMemory>
++ <vcpu placement='static'>2</vcpu>
+ <resource>
+ <partition>/machine</partition>
+ </resource>
@@ -106,6 +105,3 @@ index 0000000..8773ed4
+ </memballoon>
+ </devices>
+</domain>
---
-2.5.5
-
diff --git a/patches/opnfv-fuel/0005-transplant-Generate-extra-interfaces-config-file.patch b/patches/opnfv-fuel/0005-transplant-Generate-extra-interfaces-config-file.patch
deleted file mode 100644
index 76c27163..00000000
--- a/patches/opnfv-fuel/0005-transplant-Generate-extra-interfaces-config-file.patch
+++ /dev/null
@@ -1,108 +0,0 @@
-From: Josep Puigdemont <josep.puigdemont@enea.com>
-Date: Wed, 4 May 2016 17:58:56 +0200
-Subject: [PATCH] transplant: Generate extra interfaces config file
-
-The DEA override may contain 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
-
-FIXME: 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) should be disabled. For now, we assume the admin
-interface is always "eth0".
-
-Change-Id: I0457dc9a0d49e46b8ca85cfe7a4435c2b15f5238
-Signed-off-by: Josep Puigdemont <josep.puigdemont@enea.com>
-Signed-off-by: Alexandu Avadanii <alexandru.avadanii@enea.com>
----
- deploy/transplant_fuel_settings.py | 37 +++++++++++++++++++++++++++++++++++++
- 1 file changed, 37 insertions(+)
-
-diff --git a/deploy/transplant_fuel_settings.py b/deploy/transplant_fuel_settings.py
-index e57a4fb..9a65cf6 100644
---- a/deploy/transplant_fuel_settings.py
-+++ b/deploy/transplant_fuel_settings.py
-@@ -11,10 +11,14 @@
- import sys
- import io
- import yaml
-+import re
-+import os
- from dea import DeploymentEnvironmentAdapter
-
- from common import (
- check_file_exists,
-+ exec_cmd,
-+ log,
- )
-
- ASTUTE_YAML = '/etc/fuel/astute.yaml'
-@@ -35,15 +39,45 @@ def parse_arguments():
- check_file_exists(dea_file)
- return dea_file
-
-+def write_ifcfg_file(key, fuel_conf):
-+ config = ('BOOTPROTO=none\n'
-+ 'ONBOOT=yes\n'
-+ 'TYPE=Ethernet\n'
-+ 'NM_CONTROLLED=yes\n')
-+ for skey in ('ipaddress', 'device', 'netmask', 'gateway'):
-+ if not fuel_conf[key].get(skey):
-+ log('Warning: missing key %s for %s' % (skey, key))
-+ config += '%s=\n' % skey.upper()
-+ elif skey == 'ipaddress':
-+ config += 'IPADDR=%s\n' % fuel_conf[key][skey]
-+ else:
-+ config += '%s=%s\n' % (skey.upper(), fuel_conf[key][skey])
-+
-+ fname = os.path.join('/etc/sysconfig/network-scripts/',
-+ key.lower().replace('_','-'))
-+ with open(fname, 'wc') as f:
-+ f.write(config)
-
- def transplant(dea, astute):
- fuel_conf = dea.get_fuel_config()
-+ require_network_restart = False
- for key in fuel_conf.iterkeys():
- if key == 'ADMIN_NETWORK':
- for skey in fuel_conf[key].iterkeys():
- astute[key][skey] = fuel_conf[key][skey]
-+ elif re.match('^IFCFG', key):
-+ log('Adding interface configuration for: %s' % key.lower())
-+ require_network_restart = True
-+ write_ifcfg_file(key, fuel_conf)
-+ if astute.has_key(key):
-+ astute.pop(key, None)
- else:
- astute[key] = fuel_conf[key]
-+ if require_network_restart:
-+ admin_ifcfg = '/etc/sysconfig/network-scripts/ifcfg-eth0'
-+ exec_cmd('echo "DEFROUTE=no" >> %s' % admin_ifcfg)
-+ log('At least one interface was reconfigured, restart network manager')
-+ exec_cmd('systemctl restart network')
- return astute
-
-
-@@ -51,11 +85,14 @@ def main():
- check_file_exists(ASTUTE_YAML)
- check_file_exists(FUEL_BOOTSTRAP_CLI_YAML)
- dea = DeploymentEnvironmentAdapter(dea_file)
-+ log('Reading astute file %s' % ASTUTE_YAML)
- with io.open(ASTUTE_YAML) as stream:
- astute = yaml.load(stream)
-+ log('Initiating transplant')
- transplant(dea, astute)
- with io.open(ASTUTE_YAML, 'w') as stream:
- yaml.dump(astute, stream, default_flow_style=False)
-+ log('Transplant done')
- # Update bootstrap config yaml with info from DEA/astute.yaml
- with io.open(FUEL_BOOTSTRAP_CLI_YAML) as stream:
- fuel_bootstrap_cli = yaml.load(stream)
diff --git a/patches/opnfv-fuel/0008-deploy-reap.py-Dump-extra-interfaces-information.patch b/patches/opnfv-fuel/0008-deploy-reap.py-Dump-extra-interfaces-information.patch
deleted file mode 100644
index 9ed79cc4..00000000
--- a/patches/opnfv-fuel/0008-deploy-reap.py-Dump-extra-interfaces-information.patch
+++ /dev/null
@@ -1,97 +0,0 @@
-From e8232eca62d67c2bac1d34f5b2adfeba1a580634 Mon Sep 17 00:00:00 2001
-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
-
-Change-Id: I6f0a759c65a435ec8bd883a04c8d1adca109cc13
-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 ed5bc99..9f14e35 100644
---- 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,
-@@ -248,6 +250,40 @@ class Reap(object):
- if key not in ['ipaddress', 'netmask',
- 'dhcp_pool_start', 'dhcp_pool_end', 'ssh_network']:
- 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:
-+ if line.startswith('#'):
-+ continue
-+ (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):
---
-2.5.5
-
diff --git a/patches/opnfv-fuel/0021-Build-bootstrap-image-for-arm64.patch b/patches/opnfv-fuel/0021-Build-bootstrap-image-for-arm64.patch
index f66777c7..4daf733e 100644
--- a/patches/opnfv-fuel/0021-Build-bootstrap-image-for-arm64.patch
+++ b/patches/opnfv-fuel/0021-Build-bootstrap-image-for-arm64.patch
@@ -9,9 +9,9 @@ per supported arch. This requires Fuel refactoring.
build/bootstrap_admin_node.sh.patch | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
-diff --git a/build/bootstrap_admin_node.sh.patch b/build/bootstrap_admin_node.sh.patch
---- a/build/bootstrap_admin_node.sh.patch
-+++ b/build/bootstrap_admin_node.sh.patch
+diff --git a/build/patch-repos/0010-bootstrap_admin_node.sh.patch b/build/patch-repos/0010-bootstrap_admin_node.sh.patch
+--- a/build/patch-repos/0010-bootstrap_admin_node.sh.patch
++++ b/build/patch-repos/0010-bootstrap_admin_node.sh.patch
@@ -53,3 +53,12 @@
# Enable iptables
systemctl enable iptables.service
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
index 4023264c..fe623957 100644
--- 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
@@ -11,10 +11,10 @@ Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
build/bootstrap_admin_node.sh.patch | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)
-diff --git a/build/bootstrap_admin_node.sh.patch b/build/bootstrap_admin_node.sh.patch
+diff --git a/build/patch-repos/0010-bootstrap_admin_node.sh.patch b/build/patch-repos/0010-bootstrap_admin_node.sh.patch
index c66b497..46b53e6 100644
---- a/build/bootstrap_admin_node.sh.patch
-+++ b/build/bootstrap_admin_node.sh.patch
+--- a/build/patch-repos/0010-bootstrap_admin_node.sh.patch
++++ b/build/patch-repos/0010-bootstrap_admin_node.sh.patch
@@ -8,5 +8,20 @@
--- a/iso/bootstrap_admin_node.sh
+++ b/iso/bootstrap_admin_node.sh
diff --git a/patches/opnfv-fuel/0031-post-scripts-Enable-systemd-binfmt-for-first-boot.patch b/patches/opnfv-fuel/0031-post-scripts-Enable-systemd-binfmt-for-first-boot.patch
index 6d55311c..03e877a1 100644
--- a/patches/opnfv-fuel/0031-post-scripts-Enable-systemd-binfmt-for-first-boot.patch
+++ b/patches/opnfv-fuel/0031-post-scripts-Enable-systemd-binfmt-for-first-boot.patch
@@ -30,10 +30,10 @@ Finally, this commit adds an OPNFV post-install script in
2 files changed, 47 insertions(+)
create mode 100755 build/f_isoroot/f_bootstrap/post-scripts/80_prepare_cross_builds.sh
-diff --git a/build/bootstrap_admin_node.sh.patch b/build/bootstrap_admin_node.sh.patch
+diff --git a/build/patch-repos/0010-bootstrap_admin_node.sh.patch b/build/patch-repos/0010-bootstrap_admin_node.sh.patch
index b1ea90b..7f16d0b 100644
---- a/build/bootstrap_admin_node.sh.patch
-+++ b/build/bootstrap_admin_node.sh.patch
+--- a/build/patch-repos/0010-bootstrap_admin_node.sh.patch
++++ b/build/patch-repos/0010-bootstrap_admin_node.sh.patch
@@ -24,5 +24,18 @@
nodes over PXE, they will be discovered and become available for installing \
OpenStack on them"
diff --git a/patches/opnfv-fuel/0036-repo-mirror-Allow-multi-arch-local-mirrors.patch b/patches/opnfv-fuel/0036-repo-mirror-Allow-multi-arch-local-mirrors.patch
deleted file mode 100644
index 45ebb4e9..00000000
--- a/patches/opnfv-fuel/0036-repo-mirror-Allow-multi-arch-local-mirrors.patch
+++ /dev/null
@@ -1,136 +0,0 @@
-From: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
-Date: Sat, 18 Jun 2016 19:42:15 +0200
-Subject: [PATCH] repo mirror: Allow multi-arch local mirrors
-
-This patch allows specifying multiple architectures via UBUNTU_ARCH in
-form of a list of space separated architectures. The first architecture
-in the list is considered primary and will be used for building all the
-deb packages by fuel-main. Additional architectures are added to allow
-targets of other architectures to use the mirror.
-
-NOTE: this imposes a requirement that all packages built are arch
-independent (which is true so far).
-
-[ Alexandru Avadanii ]
-Reworked for applying on top of fuel@OPNFV.
-Pass UBUNTU_ARCH to Docker containers.
-
-Signed-off-by: Stanislaw Kardach <stanislaw.kardach@cavium.com>
-Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
----
- build/Makefile | 1 +
- build/docker/Dockerfile | 2 +-
- build/docker/runcontext | 8 ++++-
- build/repo-multi-arch-local-mirrors.patch | 59 +++++++++++++++++++++++++++++++
- 4 files changed, 68 insertions(+), 2 deletions(-)
- create mode 100644 build/repo-multi-arch-local-mirrors.patch
-
-diff --git a/build/Makefile b/build/Makefile
-index 95b1487..829a231 100644
---- a/build/Makefile
-+++ b/build/Makefile
-@@ -135,6 +135,7 @@ $(ISOCACHE):
- cd /tmp/fuel-main && git am $(TOPDIR)/bootstrap_admin_node.sh.patch
- cd /tmp/fuel-main && git am $(TOPDIR)/isolinux.cfg.patch
- cd /tmp/fuel-main/build/repos/fuel-nailgun && git am $(TOPDIR)/Mark-Intel-82599-10-Gigabit-NIC-as-DPDK-capable.patch
-+ cd /tmp/fuel-main && git am $(TOPDIR)/repo-multi-arch-local-mirrors.patch
- # Repeat build up to three times
- sudo -E ./fuel_build_loop
- cp /tmp/fuel-main/build/artifacts/fuel*.iso .
-diff --git a/build/docker/Dockerfile b/build/docker/Dockerfile
-index 1bb56b7..b38ea4c 100644
---- a/build/docker/Dockerfile
-+++ b/build/docker/Dockerfile
-@@ -30,7 +30,7 @@ RUN echo "Defaults env_keep += \"ftp_proxy http_proxy https_proxy no_proxy RSYNC
- # Keeping PWD is needed to build as root
- RUN echo "Defaults env_keep += \"PWD\"" > /etc/sudoers.d/keep-pwd
- # Keeping variables for ISO build
--RUN echo "Defaults env_keep += \"MIRROR_UBUNTU MIRROR_UBUNTU_ROOT MIRROR_MOS_UBUNTU MIRROR_MOS_UBUNTU_ROOT MIRROR_FUEL LATEST_TARGET_UBUNTU\"" > /etc/sudoers.d/keep-mos
-+RUN echo "Defaults env_keep += \"MIRROR_UBUNTU MIRROR_UBUNTU_ROOT MIRROR_MOS_UBUNTU MIRROR_MOS_UBUNTU_ROOT MIRROR_FUEL LATEST_TARGET_UBUNTU UBUNTU_ARCH\"" > /etc/sudoers.d/keep-mos
- RUN chmod 0440 /etc/sudoers.d/open-sudo
- RUN chmod 0440 /etc/sudoers.d/keep-proxies
- RUN chmod 0440 /etc/sudoers.d/keep-pwd
-diff --git a/build/docker/runcontext b/build/docker/runcontext
-index 9f07776..daad663 100755
---- a/build/docker/runcontext
-+++ b/build/docker/runcontext
-@@ -111,7 +111,13 @@ if [ -n "$CACHEBASE" ]; then
- fi
- fi
-
--RUN_CONTEXT_OPT="--cidfile $CID_FILE --privileged=true --rm -e HOME=$HOME -e CACHEDEBUG -e CACHETRANSPORT -e CACHEMAXAGE -e CACHEBASE -e BUILD_FUEL_PLUGINS -e MIRROR_UBUNTU -e MIRROR_UBUNTU_ROOT -e MIRROR_MOS_UBUNTU -e MIRROR_MOS_UBUNTU_ROOT -e MIRROR_FUEL -e LATEST_TARGET_UBUNTU -u $USER_ID:$GROUP_ID -w $PWD -v $GITROOT:$GITROOT -v /sys/fs/cgroup:/sys/fs/cgroup:ro $CACHEMOUNT"
-+RUN_CONTEXT_OPT="--cidfile $CID_FILE --privileged=true --rm \
-+ -e HOME=$HOME -e CACHEDEBUG -e CACHETRANSPORT -e CACHEMAXAGE -e CACHEBASE \
-+ -e BUILD_FUEL_PLUGINS -e MIRROR_UBUNTU -e MIRROR_UBUNTU_ROOT \
-+ -e MIRROR_MOS_UBUNTU -e MIRROR_MOS_UBUNTU_ROOT -e MIRROR_FUEL \
-+ -e LATEST_TARGET_UBUNTU -e UBUNTU_ARCH \
-+ -u $USER_ID:$GROUP_ID -w $PWD \
-+ -v $GITROOT:$GITROOT -v /sys/fs/cgroup:/sys/fs/cgroup:ro $CACHEMOUNT"
-
- # Passing "debug" puts up an interactive bash shell
- if [ "$1" == "debug" ]; then
-diff --git a/build/repo-multi-arch-local-mirrors.patch b/build/repo-multi-arch-local-mirrors.patch
-new file mode 100644
-index 0000000..d404287
---- /dev/null
-+++ b/build/repo-multi-arch-local-mirrors.patch
-@@ -0,0 +1,59 @@
-+From: Stanislaw Kardach <stanislaw.kardach@cavium.com>
-+Date: Thu, 25 Feb 2016 13:31:19 +0100
-+Subject: repo mirror: Allow multi-arch local mirrors
-+
-+This patch allows specifying multiple architectures via UBUNTU_ARCH in
-+form of a list of space separated architectures. The first architecture
-+in the list is considered primary and will be used for building all the
-+deb packages by fuel-main. Additional architectures are added to allow
-+targets of other architectures to use the mirror.
-+NOTE: this imposes a requirement that all packages built are arch
-+independent (which is true so far).
-+
-+Signed-off-by: Stanislaw Kardach <stanislaw.kardach@cavium.com>
-+Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
-+---
-+ mirror/ubuntu/module.mk | 2 +-
-+ sandbox.mk | 2 +-
-+ config.mk | 2 +-
-+ 3 files changed, 3 insertions(+), 3 deletions(-)
-+
-+diff --git a/mirror/ubuntu/module.mk b/mirror/ubuntu/module.mk
-+index 7a9466e..fe1ada2 100644
-+--- a/mirror/ubuntu/module.mk
-++++ b/mirror/ubuntu/module.mk
-+@@ -81,7 +81,7 @@ $(BUILD_DIR)/mirror/ubuntu/mirror.done:
-+ --root=$(MIRROR_MOS_UBUNTU_ROOT) \
-+ --dist=$(MIRROR_MOS_UBUNTU_SUITE) \
-+ --section=$(subst $(space),$(comma),$(MIRROR_MOS_UBUNTU_SECTION)) \
-+- --arch=$(UBUNTU_ARCH) \
-++ --arch=$(shell echo $(UBUNTU_ARCH) | tr ' ' ',') \
-+ $(LOCAL_MIRROR_UBUNTU)/
-+ rm -rf $(LOCAL_MIRROR_UBUNTU)/.temp $(LOCAL_MIRROR_UBUNTU)/project
-+ $(ACTION.TOUCH)
-+diff --git a/sandbox.mk b/sandbox.mk
-+index 4bc3962..5ffddbd 100644
-+--- a/sandbox.mk
-++++ b/sandbox.mk
-+@@ -188,7 +188,7 @@ touch $(SANDBOX_UBUNTU)/etc/init.d/.legacy-bootordering
-+ mkdir -p $(SANDBOX_UBUNTU)/usr/sbin
-+ cp -a $(BUILD_DIR)/policy-rc.d $(SANDBOX_UBUNTU)/usr/sbin
-+ echo "Running debootstrap"
-+-sudo debootstrap --no-check-gpg --include=ca-certificates --arch=$(UBUNTU_ARCH) $(MIRROR_UBUNTU_SUITE) $(SANDBOX_UBUNTU) $(MIRROR_UBUNTU_METHOD)://$(MIRROR_UBUNTU)$(MIRROR_UBUNTU_ROOT)
-++sudo debootstrap --no-check-gpg --include=ca-certificates --arch=$(word 1,$(UBUNTU_ARCH)) $(MIRROR_UBUNTU_SUITE) $(SANDBOX_UBUNTU) $(MIRROR_UBUNTU_METHOD)://$(MIRROR_UBUNTU)$(MIRROR_UBUNTU_ROOT)
-+ if [ -e $(SANDBOX_UBUNTU)/etc/resolv.conf ]; then sudo cp -a $(SANDBOX_UBUNTU)/etc/resolv.conf $(SANDBOX_UBUNTU)/etc/resolv.conf.orig; fi
-+ sudo cp /etc/resolv.conf $(SANDBOX_UBUNTU)/etc/resolv.conf
-+ if [ -e $(SANDBOX_UBUNTU)/etc/hosts ]; then sudo cp -a $(SANDBOX_UBUNTU)/etc/hosts $(SANDBOX_UBUNTU)/etc/hosts.orig; fi
-+diff --git a/config.mk b/config.mk
-+index 74ee039..45a3b30 100644
-+--- a/config.mk
-++++ b/config.mk
-+@@ -49,7 +49,7 @@ UBUNTU_MINOR:=04
-+ UBUNTU_RELEASE_NUMBER:=$(UBUNTU_MAJOR).$(UBUNTU_MINOR)
-+ UBUNTU_KERNEL_FLAVOR?=lts-trusty
-+ UBUNTU_NETBOOT_FLAVOR?=netboot
-+-UBUNTU_ARCH:=amd64
-++UBUNTU_ARCH?=amd64
-+ UBUNTU_IMAGE_RELEASE:=$(UBUNTU_MAJOR)$(UBUNTU_MINOR)
-+ SEPARATE_IMAGES?=/boot,ext2 /,ext4
-+
diff --git a/patches/opnfv-fuel/0039-deploy-Fix-add-bootstrap-DEA-override-delay.patch b/patches/opnfv-fuel/0039-deploy-Fix-add-bootstrap-DEA-override-delay.patch
index f0016892..2189b004 100644
--- a/patches/opnfv-fuel/0039-deploy-Fix-add-bootstrap-DEA-override-delay.patch
+++ b/patches/opnfv-fuel/0039-deploy-Fix-add-bootstrap-DEA-override-delay.patch
@@ -8,18 +8,25 @@ one minute sleep before checking for completition of fuel install.
Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
---
- deploy/install_fuel_master.py | 1 +
- 1 file changed, 1 insertion(+)
+ deploy/install_fuel_master.py | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/deploy/install_fuel_master.py b/deploy/install_fuel_master.py
-index 808d0b1..609a335 100644
+index 808d0b1..1a7685a 100644
--- a/deploy/install_fuel_master.py
+++ b/deploy/install_fuel_master.py
-@@ -201,6 +201,7 @@ class InstallFuelMaster(object):
+@@ -196,11 +196,13 @@ class InstallFuelMaster(object):
+ self.work_dir, os.path.basename(self.dea_file)))
+
+ def wait_until_installation_completed(self):
+- WAIT_LOOP = 360
++ WAIT_LOOP = 720
+ SLEEP_TIME = 10
CMD = 'ps -ef | grep %s | grep -v grep' % BOOTSTRAP_ADMIN
install_completed = False
+ time.sleep(60)
++ self.wait_for_node_up()
with self.ssh:
for i in range(WAIT_LOOP):
ret = self.ssh.exec_cmd(CMD)
diff --git a/patches/opnfv-fuel/0040-Backport-dpkg-checkbuilddeps-to-mk-build-deps.patch b/patches/opnfv-fuel/0040-Backport-dpkg-checkbuilddeps-to-mk-build-deps.patch
index 675b9815..5dde448f 100644
--- a/patches/opnfv-fuel/0040-Backport-dpkg-checkbuilddeps-to-mk-build-deps.patch
+++ b/patches/opnfv-fuel/0040-Backport-dpkg-checkbuilddeps-to-mk-build-deps.patch
@@ -8,26 +8,15 @@ Backported from [1].
Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
---
- build/Makefile | 1 +
...ce-dpkg-checkbuilddeps-with-mk-build-deps.patch | 38 ++++++++++++++++++++++
- 2 files changed, 39 insertions(+)
+ 1 files changed, 38 insertions(+)
create mode 100644 build/replace-dpkg-checkbuilddeps-with-mk-build-deps.patch
-diff --git a/build/Makefile b/build/Makefile
-index d917f26..ec5d27a 100644
---- a/build/Makefile
-+++ b/build/Makefile
-@@ -140,4 +140,5 @@ $(ISOCACHE):
- cd /tmp/fuel-main && git am $(TOPDIR)/repo-multi-arch-local-mirrors.patch
-+ cd /tmp/fuel-main && git am $(TOPDIR)/replace-dpkg-checkbuilddeps-with-mk-build-deps.patch
- # Repeat build up to three times
- sudo -E ./fuel_build_loop
- cp /tmp/fuel-main/build/artifacts/fuel*.iso .
-diff --git a/build/replace-dpkg-checkbuilddeps-with-mk-build-deps.patch b/build/replace-dpkg-checkbuilddeps-with-mk-build-deps.patch
+diff --git a/build/patch-repos/0040-replace-dpkg-checkbuilddeps-with-mk-build-deps.patch b/build/patch-repos/0040-replace-dpkg-checkbuilddeps-with-mk-build-deps.patch
new file mode 100644
index 0000000..896f3cf
--- /dev/null
-+++ b/build/replace-dpkg-checkbuilddeps-with-mk-build-deps.patch
++++ b/build/patch-repos/0040-replace-dpkg-checkbuilddeps-with-mk-build-deps.patch
@@ -0,0 +1,38 @@
+From: Sergii Golovatiuk <sgolovatiuk@mirantis.com>
+Date: Fri, 3 Jun 2016 12:26:19 +0200
diff --git a/patches/opnfv-fuel/0041-build-Allow-PLUGINS-override.patch b/patches/opnfv-fuel/0041-build-Allow-PLUGINS-override.patch
deleted file mode 100644
index acbbc11c..00000000
--- a/patches/opnfv-fuel/0041-build-Allow-PLUGINS-override.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
-Date: Wed, 10 Aug 2016 16:43:39 +0200
-Subject: [PATCH] build: Allow PLUGINS override
-
-Instead of using BUILD_FUEL_PLUGINS, which was intended for manual
-overrides of the Fule@OPNFV plugin list, allow PLUGINS to be
-preset to a custom list, which we will provide via Armband
-Makefile spec.
-
-Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
----
- build/f_isoroot/Makefile | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/build/f_isoroot/Makefile b/build/f_isoroot/Makefile
-index 4df7bcb..448f415 100644
---- a/build/f_isoroot/Makefile
-+++ b/build/f_isoroot/Makefile
-@@ -11,7 +11,7 @@
- # Add Fuel plugin build targets here
- # Plugins disabled for the Fuel Mitaka uplift. Please re-enable your plugin as you have
- # verified it!
--PLUGINS = f_odlpluginbuild f_onosfwpluginbuild f_vsperfpluginbuild f_ovs-nsh-dpdk-pluginbuild f_yardstick-pluginbuild f_kvm-pluginbuild f_bgpvpn-pluginbuild f_collectd-ceilometer-pluginbuild
-+PLUGINS ?= f_odlpluginbuild f_onosfwpluginbuild f_vsperfpluginbuild f_ovs-nsh-dpdk-pluginbuild f_yardstick-pluginbuild f_kvm-pluginbuild f_bgpvpn-pluginbuild f_collectd-ceilometer-pluginbuild
- #PLUGINS = f_odlpluginbuild f_onosfwpluginbuild f_ovsnfv-dpdk-pluginbuild f_vsperfpluginbuild f_ovs-nsh-dpdk-pluginbuild f_bgpvpn-pluginbuild
- export PLUGINS
- #NON_8-0_REBASED_PLUGINS = f_bgpvpn-pluginbuild
diff --git a/patches/opnfv-fuel/0042-build-Allow-MIRROR_MOS_UBUNTU-override.patch b/patches/opnfv-fuel/0042-build-Allow-MIRROR_MOS_UBUNTU-override.patch
deleted file mode 100644
index 37e4d078..00000000
--- a/patches/opnfv-fuel/0042-build-Allow-MIRROR_MOS_UBUNTU-override.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-From: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
-Date: Tue, 16 Aug 2016 18:45:10 +0200
-Subject: [PATCH] build: Allow MIRROR_MOS_UBUNTU override
-
-Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
----
- build/Makefile | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/build/Makefile b/build/Makefile
-index 4a4bb2e..6e18ddd 100644
---- a/build/Makefile
-+++ b/build/Makefile
-@@ -60,7 +60,7 @@ export MIRROR_UBUNTU_ROOT := $(shell echo -n '/' ; echo "$(MIRROR_UBUNTU_URL)" |
-
- export LATEST_MIRROR_ID_URL := http://$(shell ./select_closest_fuel_mirror.py)
-
--export MIRROR_MOS_UBUNTU := $(shell echo "$(LATEST_MIRROR_ID_URL)" | cut -d'/' -f3)
-+export MIRROR_MOS_UBUNTU ?= $(shell echo "$(LATEST_MIRROR_ID_URL)" | cut -d'/' -f3)
- export LATEST_TARGET_UBUNTU := $(shell curl -sSf "$(MIRROR_MOS_UBUNTU)/mos-repos/ubuntu/$(MOSVERSION).target.txt" | head -1)
- export MIRROR_MOS_UBUNTU_ROOT := /mos-repos/ubuntu/$(LATEST_TARGET_UBUNTU)
-
diff --git a/patches/opnfv-fuel/0043-build-Add-armband.mk-config.patch b/patches/opnfv-fuel/0043-build-Add-armband.mk-config.patch
index 31446652..cb07c9fc 100644
--- a/patches/opnfv-fuel/0043-build-Add-armband.mk-config.patch
+++ b/patches/opnfv-fuel/0043-build-Add-armband.mk-config.patch
@@ -25,18 +25,16 @@ index 4454c35..377ecc6 100644
############################################################################
# BEGIN of variables to customize
#
-@@ -129,6 +132,9 @@ $(ISOCACHE):
- sudo docker info
- cd /tmp/fuel-main && make repos
- $(REPOINFO) -r /tmp/fuel-main > gitinfo_fuel.txt
+@@ -129,5 +132,8 @@ $(ISOCACHE):
+ cd $(FUEL_MAIN_DIR) && make repos
+ $(REPOINFO) -r $(FUEL_MAIN_DIR) > gitinfo_fuel.txt
+ @if test -n $(ARMBAND_BASE); then \
+ $(REPOINFO) -r $(ARMBAND_BASE) >> gitinfo_fuel.txt; \
+ fi
# OPNFV patches at Fuel build time
# Need to be commited in order for them to be considered by the Fuel
# build system
-@@ -228,6 +234,10 @@ debug:
- sha1sum *.patch >> .cachedata
+@@ -228,5 +234,9 @@ debug:
sha1sum fuel_build_loop >> .cachedata
sha1sum config.mk >> .cachedata
+ @if test -n $(ARMBAND_BASE); then \
@@ -51,7 +49,7 @@ new file mode 100644
index 0000000..1e772f0
--- /dev/null
+++ b/build/armband.mk
-@@ -0,0 +1,49 @@
+@@ -0,0 +1,54 @@
+##############################################################################
+# Copyright (c) 2016 Enea AB and others.
+# Alexandru.Avadanii@enea.com
@@ -64,12 +62,17 @@ index 0000000..1e772f0
+# Only configure Armband stuff when ARMBAND_BASE is set
+ifdef ARMBAND_BASE
+ # Armband plugins, supported archs & specific info
-+ export PLUGINS := f_odlpluginbuild f_bgpvpn-pluginbuild
++ export PLUGINS := f_odlpluginbuild f_bgpvpn-pluginbuild f_ovs-nsh-dpdk-pluginbuild
+ export UBUNTU_ARCH := amd64 arm64
+ export PRODNO := OPNFV_A_FUEL
+ export MIRROR_MOS_UBUNTU := linux.enea.com
+ export EXTRA_RPM_REPOS := armband,http://linux.enea.com/mos-repos/centos/mos9.0-centos7/armband/x86_64,10
+
++ # Temporary fuel-plugin-builder repo info for runtime patching
++ export FPB_REPO := https://github.com/openstack/fuel-plugins
++ export FPB_BRANCH := master
++ export FPB_CHANGE := refs/changes/31/311031/2
++
+ # Armband git submodules for Fuel/OPNFV components
+ export ASTUTE_REPO := ${ARMBAND_BASE}/upstream/fuel-astute
+ export ASTUTE_COMMIT := HEAD
@@ -89,9 +92,9 @@ index 0000000..1e772f0
+ export FUELLIB_REPO := ${ARMBAND_BASE}/upstream/fuel-library
+ export FUELLIB_COMMIT := HEAD
+
-+ export ODL_REPO := ${ARMBAND_BASE}/upstream/fuel-plugin-opendaylight
-+ export ODL_BRANCH := armband-workbench
-+ export ODL_CHANGE := HEAD
++ export FUEL_PLUGIN_ODL_REPO := ${ARMBAND_BASE}/upstream/fuel-plugin-opendaylight
++ export FUEL_PLUGIN_ODL_BRANCH := armband-workbench
++ export FUEL_PLUGIN_ODL_CHANGE := HEAD
+ export OPNFV_QUAGGE_PACKAGING_REPO := https://github.com/alexandruavadanii/opnfv-quagga-packaging
+
+ export OVS_NSH_DPDK_REPO := ${ARMBAND_BASE}/upstream/fuel-plugin-ovs
diff --git a/patches/opnfv-fuel/0044-build-cache-Allow-LOCAL_CACHE_ARCH_NAME-override.patch b/patches/opnfv-fuel/0044-build-cache-Allow-LOCAL_CACHE_ARCH_NAME-override.patch
deleted file mode 100644
index e477421d..00000000
--- a/patches/opnfv-fuel/0044-build-cache-Allow-LOCAL_CACHE_ARCH_NAME-override.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-From: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
-Date: Thu, 18 Aug 2016 14:39:08 +0200
-Subject: [PATCH] build: cache: Allow LOCAL_CACHE_ARCH_NAME override
-
-Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
----
- ci/build.sh | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/ci/build.sh b/ci/build.sh
-index 62abba1..82049cd 100755
---- a/ci/build.sh
-+++ b/ci/build.sh
-@@ -111,7 +111,7 @@ SCRIPT_DIR=$(readlink -f $(dirname ${BASH_SOURCE[0]}))
- BUILD_BASE=$(readlink -e ${SCRIPT_DIR}/../build/)
- RESULT_DIR="${BUILD_BASE}/release"
- BUILD_SPEC="${BUILD_BASE}/config.mk"
--LOCAL_CACHE_ARCH_NAME="fuel-cache"
-+LOCAL_CACHE_ARCH_NAME="${LOCAL_CACHE_ARCH_NAME:-fuel-cache}"
-
- #
- # END of variables to customize
diff --git a/patches/opnfv-fuel/0045-build-cache-Consider-UBUNTU_ARCH-in-.cacheid.patch b/patches/opnfv-fuel/0045-build-cache-Consider-UBUNTU_ARCH-in-.cacheid.patch
deleted file mode 100644
index 43d5bcc5..00000000
--- a/patches/opnfv-fuel/0045-build-cache-Consider-UBUNTU_ARCH-in-.cacheid.patch
+++ /dev/null
@@ -1,144 +0,0 @@
-From: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
-Date: Wed, 17 Aug 2016 20:36:51 +0200
-Subject: [PATCH] build: cache: Consider UBUNTU_ARCH in .cacheid
-
-Usually UBUNTU_ARCH is not changed inside the same repository,
-but we should consider this case anyway for future merging
-Armband and Fuel@OPNFV repositories/build systems.
-
-This applies to all Fuel plugins and the local repo.
-
-Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
----
- build/f_isoroot/f_bgpvpn-pluginbuild/Makefile | 1 +
- build/f_isoroot/f_collectd-ceilometer-pluginbuild/Makefile | 1 +
- build/f_isoroot/f_kvm-pluginbuild/Makefile | 1 +
- build/f_isoroot/f_odlpluginbuild/Makefile | 1 +
- build/f_isoroot/f_onosfwpluginbuild/Makefile | 1 +
- build/f_isoroot/f_ovs-nsh-dpdk-pluginbuild/Makefile | 1 +
- build/f_isoroot/f_ovsnfv-dpdk-pluginbuild/Makefile | 1 +
- build/f_isoroot/f_repobuild/Makefile | 1 +
- build/f_isoroot/f_vsperfpluginbuild/Makefile | 1 +
- build/f_isoroot/f_yardstick-pluginbuild/Makefile | 1 +
- 10 files changed, 10 insertions(+)
-
-diff --git a/build/f_isoroot/f_bgpvpn-pluginbuild/Makefile b/build/f_isoroot/f_bgpvpn-pluginbuild/Makefile
-index ed3be29..8ce28fc 100644
---- a/build/f_isoroot/f_bgpvpn-pluginbuild/Makefile
-+++ b/build/f_isoroot/f_bgpvpn-pluginbuild/Makefile
-@@ -67,6 +67,7 @@ release:.bgpvpnbuild
- fi
- sha1sum Makefile >> .cachedata
- sha1sum config.mk >> .cachedata
-+ echo -n $(UBUNTU_ARCH) | sha1sum | awk {'print $$1'} >> .cachedata
- cat .cachedata | $(CACHETOOL) getid > .cacheid
-
- # Clean local data related to caching - called prior to ordinary build
-diff --git a/build/f_isoroot/f_collectd-ceilometer-pluginbuild/Makefile b/build/f_isoroot/f_collectd-ceilometer-pluginbuild/Makefile
-index 9ab922d..17bc36d 100644
---- a/build/f_isoroot/f_collectd-ceilometer-pluginbuild/Makefile
-+++ b/build/f_isoroot/f_collectd-ceilometer-pluginbuild/Makefile
-@@ -67,6 +67,7 @@ release:.fastpathmetrics
- fi
- @sha1sum Makefile | awk {'print $$1'} >> .cachedata
- @sha1sum config.mk | awk {'print $$1'} >> .cachedata
-+ @echo -n $(UBUNTU_ARCH) | sha1sum | awk {'print $$1'} >> .cachedata
- @cat .cachedata | $(CACHETOOL) getid > .cacheid
-
- # Clean local data related to caching - called prior to ordinary build
-diff --git a/build/f_isoroot/f_kvm-pluginbuild/Makefile b/build/f_isoroot/f_kvm-pluginbuild/Makefile
-index ba2fd0b..2454b5e 100644
---- a/build/f_isoroot/f_kvm-pluginbuild/Makefile
-+++ b/build/f_isoroot/f_kvm-pluginbuild/Makefile
-@@ -70,6 +70,7 @@ release:.kvmbuild
- fi
- @sha1sum Makefile | awk {'print $$1'} >> .cachedata
- @sha1sum config.mk | awk {'print $$1'} >> .cachedata
-+ @echo -n $(UBUNTU_ARCH) | sha1sum | awk {'print $$1'} >> .cachedata
- @cat .cachedata | $(CACHETOOL) getid > .cacheid
-
- # Clean local data related to caching - called prior to ordinary build
-diff --git a/build/f_isoroot/f_odlpluginbuild/Makefile b/build/f_isoroot/f_odlpluginbuild/Makefile
-index e2cbf7d..6c717c7 100644
---- a/build/f_isoroot/f_odlpluginbuild/Makefile
-+++ b/build/f_isoroot/f_odlpluginbuild/Makefile
-@@ -58,6 +58,7 @@ release:.odlbuild
- fi
- @sha1sum Makefile | awk {'print $$1'} >> .cachedata
- @sha1sum config.mk | awk {'print $$1'} >> .cachedata
-+ @echo -n $(UBUNTU_ARCH) | sha1sum | awk {'print $$1'} >> .cachedata
- cat .cachedata | $(CACHETOOL) getid > .cacheid
-
- # Clean local data related to caching - called prior to ordinary build
-diff --git a/build/f_isoroot/f_onosfwpluginbuild/Makefile b/build/f_isoroot/f_onosfwpluginbuild/Makefile
-index a9dcb22..02ba029 100644
---- a/build/f_isoroot/f_onosfwpluginbuild/Makefile
-+++ b/build/f_isoroot/f_onosfwpluginbuild/Makefile
-@@ -66,6 +66,7 @@ release:.onosbuild
- fi
- @sha1sum Makefile | awk {'print $$1'} >> .cachedata
- @sha1sum config.mk | awk {'print $$1'} >> .cachedata
-+ @echo -n $(UBUNTU_ARCH) | sha1sum | awk {'print $$1'} >> .cachedata
- @cat .cachedata | $(CACHETOOL) getid > .cacheid
-
- # Clean local data related to caching - called prior to ordinary build
-diff --git a/build/f_isoroot/f_ovs-nsh-dpdk-pluginbuild/Makefile b/build/f_isoroot/f_ovs-nsh-dpdk-pluginbuild/Makefile
-index ecf586a..2d0d202 100644
---- a/build/f_isoroot/f_ovs-nsh-dpdk-pluginbuild/Makefile
-+++ b/build/f_isoroot/f_ovs-nsh-dpdk-pluginbuild/Makefile
-@@ -67,6 +67,7 @@ release:.ovsbuild
- fi
- @sha1sum Makefile | awk {'print $$1'} >> .cachedata
- @sha1sum config.mk | awk {'print $$1'} >> .cachedata
-+ @echo -n $(UBUNTU_ARCH) | sha1sum | awk {'print $$1'} >> .cachedata
- @cat .cachedata | $(CACHETOOL) getid > .cacheid
-
- # Clean local data related to caching - called prior to ordinary build
-diff --git a/build/f_isoroot/f_ovsnfv-dpdk-pluginbuild/Makefile b/build/f_isoroot/f_ovsnfv-dpdk-pluginbuild/Makefile
-index 9e432d1..9455389 100644
---- a/build/f_isoroot/f_ovsnfv-dpdk-pluginbuild/Makefile
-+++ b/build/f_isoroot/f_ovsnfv-dpdk-pluginbuild/Makefile
-@@ -67,6 +67,7 @@ release:.ovsnfvbuild
- fi
- @sha1sum Makefile | awk {'print $$1'} >> .cachedata
- @sha1sum config.mk | awk {'print $$1'} >> .cachedata
-+ @echo -n $(UBUNTU_ARCH) | sha1sum | awk {'print $$1'} >> .cachedata
- @cat .cachedata | $(CACHETOOL) getid > .cacheid
-
- # Clean local data related to caching - called prior to ordinary build
-diff --git a/build/f_isoroot/f_repobuild/Makefile b/build/f_isoroot/f_repobuild/Makefile
-index 6fef8ff..f6ebc2c 100644
---- a/build/f_isoroot/f_repobuild/Makefile
-+++ b/build/f_isoroot/f_repobuild/Makefile
-@@ -73,6 +73,7 @@ release:nailgun
- sha1sum Makefile >> .cachedata
- sha1sum config.mk >> .cachedata
- $(CACHETOOL) packages >> .cachedata
-+ echo -n $(UBUNTU_ARCH) | sha1sum | awk {'print $$1'} >> .cachedata
- cat .cachedata | $(CACHETOOL) getid > .cacheid
-
- # Clean local data related to caching - called prior to ordinary build
-diff --git a/build/f_isoroot/f_vsperfpluginbuild/Makefile b/build/f_isoroot/f_vsperfpluginbuild/Makefile
-index 9bd236a..73de611 100644
---- a/build/f_isoroot/f_vsperfpluginbuild/Makefile
-+++ b/build/f_isoroot/f_vsperfpluginbuild/Makefile
-@@ -68,6 +68,7 @@ release:.vsperfbuild
- fi
- @sha1sum Makefile | awk {'print $$1'} >> .cachedata
- @sha1sum config.mk | awk {'print $$1'} >> .cachedata
-+ @echo -n $(UBUNTU_ARCH) | sha1sum | awk {'print $$1'} >> .cachedata
- @cat .cachedata | $(CACHETOOL) getid > .cacheid
-
- # Clean local data related to caching - called prior to ordinary build
-diff --git a/build/f_isoroot/f_yardstick-pluginbuild/Makefile b/build/f_isoroot/f_yardstick-pluginbuild/Makefile
-index 47723d5..32de3b3 100644
---- a/build/f_isoroot/f_yardstick-pluginbuild/Makefile
-+++ b/build/f_isoroot/f_yardstick-pluginbuild/Makefile
-@@ -68,6 +68,7 @@ release:.yardstickbuild
- fi
- @sha1sum Makefile | awk {'print $$1'} >> .cachedata
- @sha1sum config.mk | awk {'print $$1'} >> .cachedata
-+ @echo -n $(UBUNTU_ARCH) | sha1sum | awk {'print $$1'} >> .cachedata
- @cat .cachedata | $(CACHETOOL) getid > .cacheid
-
- # Clean local data related to caching - called prior to ordinary build
diff --git a/patches/opnfv-fuel/0047-build-ubuntu-mirror-blacklist-ftp.acc.umu.se.patch b/patches/opnfv-fuel/0047-build-ubuntu-mirror-blacklist-some-SE-mirrors.patch
index e6e6c2b7..b5835edd 100644
--- a/patches/opnfv-fuel/0047-build-ubuntu-mirror-blacklist-ftp.acc.umu.se.patch
+++ b/patches/opnfv-fuel/0047-build-ubuntu-mirror-blacklist-some-SE-mirrors.patch
@@ -1,8 +1,11 @@
From: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
Date: Thu, 18 Aug 2016 19:21:34 +0200
-Subject: [PATCH] build: ubuntu mirror: blacklist ftp.acc.umu.se
+Subject: [PATCH] build: ubuntu mirror: blacklist some SE mirrors
-Another SE mirror acting up lately ...
+Some SE mirrors are acting up lately, blacklist them:
+- ftp.acc.umu.se
+- ftp.lysator.liu.se
+- ftp.availo.se
Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
---
@@ -13,12 +16,10 @@ diff --git a/build/f_isoroot/f_repobuild/select_ubuntu_repo.sh b/build/f_isoroot
index 4bca6bd..67219cb 100755
--- a/build/f_isoroot/f_repobuild/select_ubuntu_repo.sh
+++ b/build/f_isoroot/f_repobuild/select_ubuntu_repo.sh
-@@ -21,7 +21,7 @@ RSYNC="rsync -4 --contimeout 5 --no-motd --list-only"
+@@ -21,5 +21,5 @@ RSYNC="rsync -4 --contimeout 5 --no-motd --list-only"
# Some Ubuntu mirrors seem less reliable for this type of mirroring -
# as they are discoved they can be added to the blacklist below in order
# for them not to be considered.
--BLACKLIST="mirrors.se.eu.kernel.org mirror.its.dal.ca"
-+BLACKLIST="mirrors.se.eu.kernel.org ftp.acc.umu.se mirror.its.dal.ca"
-
- return_url=0
+-BLACKLIST="mirror.clibre.uqam.ca"
++BLACKLIST="mirror.clibre.uqam.ca ftp.acc.umu.se ftp.lysator.liu.se ftp.availo.se"
diff --git a/patches/opnfv-fuel/0048-fpb-Support-multiple-versions-of-packages.patch b/patches/opnfv-fuel/0048-fpb-Support-multiple-versions-of-packages.patch
new file mode 100644
index 00000000..c13af1e2
--- /dev/null
+++ b/patches/opnfv-fuel/0048-fpb-Support-multiple-versions-of-packages.patch
@@ -0,0 +1,50 @@
+From: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
+Date: Tue, 23 Aug 2016 15:48:56 +0200
+Subject: [PATCH] fpb: Support multiple versions of packages
+
+This is a temporary change until the fpm installed by pip gets
+the change from [1] included.
+
+[1] https://review.openstack.org/#/c/311031/
+
+Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
+---
+ build/docker/Dockerfile | 9 ++++++++-
+ build/docker/Makefile | 4 ++++
+ 2 files changed, 12 insertions(+), 1 deletion(-)
+
+diff --git a/build/docker/Dockerfile b/build/docker/Dockerfile
+index 624f233..ab0d0d3 100644
+--- a/build/docker/Dockerfile
++++ b/build/docker/Dockerfile
+@@ -23,7 +23,14 @@ RUN apt-get install -y software-properties-common python-software-properties \
+ build-essential ruby-dev rubygems-integration python-pip git rpm createrepo dpkg-dev
+
+ RUN gem install fpm
+-RUN pip install fuel-plugin-builder
++
++# Temporary: fpb needs to be built from sources
++# RUN pip install fuel-plugin-builder
++RUN git clone -b INSERT_FPB_BRANCH INSERT_FPB_REPO && cd fuel-plugins && \
++ (test -z INSERT_FPB_CHANGE || \
++ (git fetch origin INSERT_FPB_CHANGE && git checkout FETCH_HEAD)) && \
++ python setup.py sdist && pip install ./dist/fuel-plugin-builder-*.tar.gz && \
++ cd .. && rm -rf fuel-plugins
+
+ RUN echo "ALL ALL=NOPASSWD: ALL" > /etc/sudoers.d/open-sudo
+ RUN echo "Defaults env_keep += \"ftp_proxy http_proxy https_proxy no_proxy RSYNC_PROXY RSYNC_CONNECT_PROG npm_config_registry\"" > /etc/sudoers.d/keep-proxies
+diff --git a/build/docker/Makefile b/build/docker/Makefile
+index d4423b0..226bbd0 100644
+--- a/build/docker/Makefile
++++ b/build/docker/Makefile
+@@ -25,6 +25,10 @@ all: .docker
+
+ .docker: $(FILES)
+ cp Dockerfile ubuntu-builder/Dockerfile
++ # Only add FPB ENVs when set - needed to fetch, patch and install FPB
++ test -n "${FPB_REPO}" && sed -i "s;INSERT_FPB_REPO;${FPB_REPO};" ubuntu-builder/Dockerfile || exit 0
++ test -n "${FPB_BRANCH}" && sed -i "s;INSERT_FPB_BRANCH;${FPB_BRANCH};" ubuntu-builder/Dockerfile || exit 0
++ test -n "${FPB_CHANGE}" && sed -i "s;INSERT_FPB_CHANGE;${FPB_CHANGE};" ubuntu-builder/Dockerfile || exit 0
+ # Only add proxy ENVs where set in host - needed to pull the base Ubuntu image
+ test -n "${http_proxy}" && sed -i "s;INSERT_HTTP_PROXY;${http_proxy};" ubuntu-builder/Dockerfile || exit 0
+ test -n "${https_proxy}" && sed -i "s;INSERT_HTTPS_PROXY;${https_proxy};" ubuntu-builder/Dockerfile || exit 0
diff --git a/patches/opnfv-fuel/0054-net-check-add-support-for-faulty-operstate.patch b/patches/opnfv-fuel/0054-net-check-add-support-for-faulty-operstate.patch
new file mode 100644
index 00000000..8a765c92
--- /dev/null
+++ b/patches/opnfv-fuel/0054-net-check-add-support-for-faulty-operstate.patch
@@ -0,0 +1,63 @@
+From: Stefan Sicleru <stefan.sicleru@enea.com>
+Date: Tue, 30 Aug 2016 17:53:41 +0200
+Subject: [PATCH] net-check: add support for faulty operstate
+
+Some eth drivers, such as those for APM X-Gene Mustang Board's NICs, do
+not advertise operstate properly in sysfs, ie. it is advertised as
+"unknown" whereas ethtool shows the NIC as fully functional with link
+detected. This further affects "ip link show" output which is parsed
+within _check_iface_ready() method.
+
+Replace "ip link show" command with "ethtool" in order to obtain proper
+results when operstate is unknown.
+
+Signed-off-by: Stefan Sicleru <stefan.sicleru@enea.com>
+---
+ ...et-check-add-support-for-faulty-operstate.patch | 38 ++++++++++++++++++++++
+ 1 file changed, 38 insertions(+)
+ create mode 100644 build/patch-repos/build/repos/network-checker/0010-net-check-add-support-for-faulty-operstate.patch
+
+diff --git a/build/patch-repos/build/repos/network-checker/0010-net-check-add-support-for-faulty-operstate.patch b/build/patch-repos/build/repos/network-checker/0010-net-check-add-support-for-faulty-operstate.patch
+new file mode 100644
+index 0000000..71e7b73
+--- /dev/null
++++ b/build/patch-repos/build/repos/network-checker/0010-net-check-add-support-for-faulty-operstate.patch
+@@ -0,0 +1,38 @@
++From: Stefan Sicleru <stefan.sicleru@enea.com>
++Date: Tue, 30 Aug 2016 17:30:24 +0200
++Subject: [PATCH] net-check: add support for faulty operstate
++
++Some eth drivers, such as those for APM X-Gene Mustang Board's NICs, do
++not advertise operstate properly in sysfs, ie. it is advertised as
++"unknown" whereas ethtool shows the NIC as fully functional with link
++detected. This further affects "ip link show" output which is parsed
++within _check_iface_ready() method.
++
++Replace "ip link show" command with "ethtool" in order to obtain proper
++results when operstate is unknown.
++
++Signed-off-by: Stefan Sicleru <stefan.sicleru@enea.com>
++---
++ network_checker/net_check/api.py | 9 ++++++++-
++ 1 file changed, 8 insertions(+), 1 deletion(-)
++
++diff --git a/network_checker/net_check/api.py b/network_checker/net_check/api.py
++index e3c3b4e..87aa257 100755
++--- a/network_checker/net_check/api.py
+++++ b/network_checker/net_check/api.py
++@@ -195,7 +195,14 @@ class Actor(object):
++ def _check_iface_ready(self, iface, vid=None):
++ check_iface = self._iface_name(iface, vid)
++ output = self._execute(['ip', '-o', 'link', 'show', check_iface])
++- return 'state UP' in '\n'.join(output)
+++ if 'state UP' in '\n'.join(output):
+++ return True
+++
+++ if 'state UNKNOWN' in '\n'.join(output) and vid == None:
+++ output = self._execute(['ethtool', check_iface])
+++ return 'Link detected: yes' in '\n'.join(output).replace('\n', ' ')
+++
+++ return False
++
++ def _ensure_iface_up(self, iface, vid=None):
++ """Ensures interface is with vid up."""
diff --git a/patches/opnfv-fuel/0055-build-docker-Use-host-s-network-stack.patch b/patches/opnfv-fuel/0055-build-docker-Use-host-s-network-stack.patch
new file mode 100644
index 00000000..d9fd36a0
--- /dev/null
+++ b/patches/opnfv-fuel/0055-build-docker-Use-host-s-network-stack.patch
@@ -0,0 +1,28 @@
+From: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
+Date: Mon, 29 Aug 2016 22:58:49 +0200
+Subject: [PATCH] build: docker: Use host's /etc/hosts
+
+The original motivation was pointing to local mirrors via host's
+"/etc/hosts", for which an alternative solution tested was
+"--net=host" (see [1] for full description), but lead to wierd
+loss of connectivity after a few builds.
+
+[1] https://docs.docker.com/v1.8/articles/networking/
+
+Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
+---
+ build/docker/runcontext | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/build/docker/runcontext b/build/docker/runcontext
+index 07b0dc1..b0d6d37 100755
+--- a/build/docker/runcontext
++++ b/build/docker/runcontext
+@@ -121,6 +121,7 @@ RUN_CONTEXT_OPT="--cidfile $CID_FILE --privileged=true --rm --net=host \
+ -e MIRROR_MOS_UBUNTU -e MIRROR_MOS_UBUNTU_ROOT -e MIRROR_FUEL \
+ -e LATEST_TARGET_UBUNTU -e UBUNTU_ARCH -e ARMBAND_BASE -e OPNFV_GIT_SHA \
+ -u $USER_ID:$GROUP_ID -w $PWD \
++ -v /etc/hosts:/etc/hosts \
+ -v $GITROOT:$GITROOT -v /sys/fs/cgroup:/sys/fs/cgroup:ro $CACHEMOUNT"
+
+ # Passing "debug" puts up an interactive bash shell
diff --git a/upstream/fuel b/upstream/fuel
-Subproject c71b57140fdbadfb4c1f39bf0e2df99403820dd
+Subproject cf93e6ee11c96de090b04196cc96b4a6b094892
diff --git a/upstream/fuel-agent b/upstream/fuel-agent
-Subproject 8e3a639c503f18ba0dc675aa08102f360cfaa97
+Subproject 2cd6925ce2986b58a3ff1dcade12f55a41bff71
diff --git a/upstream/fuel-astute b/upstream/fuel-astute
-Subproject f0f05f9ddbe1edebee7ab239abab0bfd3b05c24
+Subproject 65309028c2b65cee68bb865f3895ed185922f3b
diff --git a/upstream/fuel-library b/upstream/fuel-library
-Subproject 814fa3d50dbcbd738c44fd566b01bd514fa1837
+Subproject 0744f4b3fb170d98c7ba70160cd9b91064865bd
diff --git a/upstream/fuel-mirror b/upstream/fuel-mirror
-Subproject 4bf3af7a03a7955dd081a89c568e2573fce2289
+Subproject 81246a7ecd95c27b388df8f8954e4fb81a3f06e
diff --git a/upstream/fuel-nailgun-agent b/upstream/fuel-nailgun-agent
-Subproject 8b0ef4e707e6afaae1863978d8b5dc94eb6315b
+Subproject 46fa0db0f8944f9e67699d281d462678aaf4db2
diff --git a/upstream/fuel-plugin-opendaylight b/upstream/fuel-plugin-opendaylight
-Subproject 1c8443ffc64af120337740551307378d1c21535
+Subproject 8cc22c4717d2da338135d854e1d13aac3ef7531
diff --git a/upstream/fuel-plugin-ovs b/upstream/fuel-plugin-ovs
-Subproject bee1b2b540922f0a1439d3b878480da590f506d
+Subproject 2537604061e8f44f45f0fa5c187f448534bf59c
diff --git a/upstream/fuel-web b/upstream/fuel-web
-Subproject 7be513a48fdcffb726f67fc69968d6142c9d3f4
+Subproject d3463ad92df45541fc0107801aef71e73a194ec
diff --git a/upstream/vswitchperf b/upstream/vswitchperf
-Subproject 21c787b5bb7dd4592bc83718756ac670232a834
+Subproject 48ec9750583c47dadf0f3fd931dc2cf12f738b6