diff options
-rw-r--r-- | .gitignore | 10 | ||||
-rw-r--r-- | build/Makefile | 44 | ||||
-rw-r--r-- | build/docker/Dockerfile | 3 | ||||
-rwxr-xr-x | build/docker/runcontext | 2 | ||||
-rw-r--r-- | build/f_isoroot/Makefile | 6 | ||||
-rwxr-xr-x | build/f_isoroot/f_bootstrap/bootstrap_admin_node.sh | 44 | ||||
-rw-r--r-- | build/f_isoroot/f_isolinux/Makefile | 46 | ||||
-rw-r--r-- | build/f_isoroot/f_isolinux/isolinux.cfg | 32 | ||||
-rw-r--r-- | build/f_isoroot/f_isolinux/isolinux.cfg.orig | 32 | ||||
-rw-r--r-- | build/f_isoroot/f_kscfg/Makefile | 6 | ||||
-rw-r--r-- | build/f_isoroot/f_kscfg/ks.cfg | 27 | ||||
-rw-r--r-- | build/f_isoroot/f_kscfg/ks.cfg.orig | 12 | ||||
-rwxr-xr-x | build/f_isoroot/f_repobuild/select_ubuntu_repo.sh | 28 | ||||
-rwxr-xr-x | build/fuel_build_loop | 32 | ||||
-rwxr-xr-x | build/install/install.sh | 2 | ||||
-rwxr-xr-x | build/select_closest_fuel_mirror.py | 35 | ||||
-rw-r--r-- | docs/build-instruction.rst | 16 |
17 files changed, 317 insertions, 60 deletions
diff --git a/.gitignore b/.gitignore index 33a0451bb..97e3a9b14 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,5 @@ -*~ -.*.sw? -/docs_build/ -/docs_output/ -/releng/ +*.pyc +.project +.pydevproject +ci/config/ +deploy/autodeploy.log diff --git a/build/Makefile b/build/Makefile index d58f3ad76..550f360f9 100644 --- a/build/Makefile +++ b/build/Makefile @@ -20,7 +20,7 @@ SHELL = /bin/bash #Input args export ISOSRC = file:$(shell pwd)/fuel-7.0.iso export ISOCACHE = $(shell pwd)/$(shell basename $(ISOSRC)) -export PRODNO = "OPNFV_BGS" +export PRODNO = "OPNFV_FUEL" export REVSTATE = "P0000" ifdef BUILD_FUEL_PLUGINS @@ -43,6 +43,24 @@ export DOCKERIMG = opnfv.org/ubuntu-builder:14.04 export TOPDIR := $(shell pwd) export REPOINFO := $(BUILD_BASE)/repo_info.sh +# Use snapshots +# Use nearby repositories +export MIRROR_UBUNTU_URL := $(shell ./f_isoroot/f_repobuild/select_ubuntu_repo.sh --url) +export MIRROR_UBUNTU := $(shell echo "$(MIRROR_UBUNTU_URL)" | cut -d'/' -f3 ) +export MIRROR_UBUNTU_ROOT := $(shell echo -n '/' ; echo "$(MIRROR_UBUNTU_URL)" | cut -d'/' -f4-) + +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 LATEST_TARGET_UBUNTU := $(shell curl -sSf "$(MIRROR_MOS_UBUNTU)/mos-repos/ubuntu/8.0.target.txt" | head -1) +export MIRROR_MOS_UBUNTU_ROOT := "/mos-repos/ubuntu/$(LATEST_TARGET_UBUNTU)" + +export LATEST_TARGET_CENTOS := $(shell curl -sSf "$(LATEST_MIRROR_ID_URL)/mos-repos/centos/mos8.0-centos7-fuel/os.target.txt" | head -1) +export MIRROR_FUEL := "$(LATEST_MIRROR_ID_URL)/mos-repos/centos/mos8.0-centos7-fuel/$(LATEST_TARGET_CENTOS)/x86_64" + +# uncomment and use: make print-VARIABLE +#print-% : ; @echo $* = $($*) + #Build subclasses SUBDIRS := f_isoroot @@ -84,25 +102,29 @@ $(ISOCACHE): # Setup cgroups for docker-in-docker sudo /root/enable_dockerx2 # Patch for adding dosfstools, as Fuel 6.1 is running mkfs.vfat - cd /tmp/fuel-main && patch -p0 < $(TOPDIR)/fuel-main_5.patch - # Patch for changing the second layer Docker --bip address - cd /tmp/fuel-main && patch -p0 < $(TOPDIR)/fuel-main_6.patch + cd /tmp/fuel-main && patch -f -p0 < $(TOPDIR)/fuel-main_5.patch + # Patch for using the Czech Fuel mirror + # cd /tmp/fuel-main && patch -p0 < $(TOPDIR)/fuel-main_7.patch # Remove Docker optimizations, otherwise multistrap will fail during # Fuel build. sudo rm -f /etc/apt/apt.conf.d/docker* # # Need to replace the old Docker v. 1.5.0 with a later version to be # able to access the Docker remote repository! - cd /tmp/fuel-main && patch -p0 < $(TOPDIR)/fuel-main_docker_version.patch - cd /tmp/fuel-main && patch -p0 < $(TOPDIR)/fuel-main_docker_dns.patch + cd /tmp/fuel-main && patch -f -p0 < $(TOPDIR)/fuel-main_docker_version.patch + # cd /tmp/fuel-main && patch -f -p0 < $(TOPDIR)/fuel-main_docker_dns.patch # cd /tmp/fuel-main && ./prepare-build-env.sh cd /tmp/fuel-main && make repos $(REPOINFO) -r /tmp/fuel-main > gitinfo_fuel.txt - # - cd /tmp/fuel-main && sudo make iso + # Repeat build up to ten times + sudo ./fuel_build_loop cp /tmp/fuel-main/build/artifacts/fuel*.iso . + # Attempt to store ISO in cache to speed up the next + # build attempt. If cache is not enabled no harm is done. + $(MAKE) -f Makefile put-cache + .PHONY: mount-origiso umount-origiso mount-origiso: $(ISOCACHE) @echo "Mounting original ISO in $(ORIGDIR)" @@ -184,7 +206,11 @@ debug: cd /tmp/fuel-main && git checkout $(FUEL_MAIN_TAG) cd /tmp/fuel-main && make repos $(REPOINFO) -r /tmp/fuel-main > .cachedata - sha1sum fuel-main*.patch >> .cachedata + sha1sum *.patch >> .cachedata + sha1sum fuel_build_loop >> .cachedata + sha1sum config.mk >> .cachedata + sha1sum Makefile >> .cachedata + $(CACHETOOL) getbiweek >> .cachedata cat .cachedata | $(CACHETOOL) getid > .cacheid # Not removing fuel-main as it is re-used in build diff --git a/build/docker/Dockerfile b/build/docker/Dockerfile index f3d122db9..c439e1563 100644 --- a/build/docker/Dockerfile +++ b/build/docker/Dockerfile @@ -24,9 +24,12 @@ 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 # 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\"" > /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 +RUN chmod 0440 /etc/sudoers.d/keep-mos RUN chmod 4755 /bin/fusermount ADD ./setcontext /root/setcontext diff --git a/build/docker/runcontext b/build/docker/runcontext index b442deeed..2df765868 100755 --- a/build/docker/runcontext +++ b/build/docker/runcontext @@ -111,7 +111,7 @@ 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 -u $USER_ID:$GROUP_ID -w $PWD -v $GITROOT:$GITROOT $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 -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/f_isoroot/Makefile b/build/f_isoroot/Makefile index 8f84b6a73..ec0db48a3 100644 --- a/build/f_isoroot/Makefile +++ b/build/f_isoroot/Makefile @@ -14,10 +14,12 @@ PLUGINS = f_odlpluginbuild f_qemupluginbuild f_ovs-nsh-dpdk-pluginbuild f_onosfw # If the BUILD_FUEL_PLUGINS environment variable is set, only build the plugins # indicated therein. ifdef BUILD_FUEL_PLUGINS -SUBDIRS = f_kscfg f_bootstrap f_repobuild $(BUILD_FUEL_PLUGINS) +#SUBDIRS = f_kscfg f_bootstrap f_isolinux f_repobuild $(BUILD_FUEL_PLUGINS) +SUBDIRS = f_kscfg f_bootstrap f_isolinux $(BUILD_FUEL_PLUGINS) $(warning Overriding plugin build selection to $(BUILD_FUEL_PLUGINS)) else -SUBDIRS = f_kscfg f_bootstrap f_repobuild $(PLUGINS) +#SUBDIRS = f_kscfg f_bootstrap f_isolinux f_repobuild $(PLUGINS) +SUBDIRS = f_kscfg f_bootstrap f_isolinux $(PLUGINS) endif SUBCLEAN = $(addsuffix .clean,$(SUBDIRS)) diff --git a/build/f_isoroot/f_bootstrap/bootstrap_admin_node.sh b/build/f_isoroot/f_bootstrap/bootstrap_admin_node.sh index 065d0cb7d..6318c5d39 100755 --- a/build/f_isoroot/f_bootstrap/bootstrap_admin_node.sh +++ b/build/f_isoroot/f_bootstrap/bootstrap_admin_node.sh @@ -111,32 +111,24 @@ get_bootstrap_flavor () { # Actually build the bootstrap image build_ubuntu_bootstrap () { - local ret=1 - local max_attempts=3 - local config='/etc/fuel-bootstrap-image.conf' - local log='/var/log/fuel-bootstrap-image-build.log' - if ! grep -qE '^BOOTSTRAP_SSH_KEYS' "$config"; then - # FIXME: config file generated by fuelmenu has no trailing newline - echo >> "$config" - cat >> "$config" <<-EOF - BOOTSTRAP_SSH_KEYS=/root/.ssh/id_rsa.pub - EOF - fi - for n in `seq 1 $max_attempts`; do - echo "Bulding bootstrap image, attempt $n" >&2 - if fuel-bootstrap-image >>"$log" 2>&1; then - ret=0 - fuel-bootstrap-image-set "ubuntu" - break - fi - done - if [ $ret -ne 0 ]; then - warning="WARNING: failed to build the bootstrap image, see $log for details. -Perhaps your Internet connection is broken. Please fix the problem and run -\`fuel-bootstrap-image-set ubuntu\`" - fuel notify --topic warning --send "$warning" - fi - return $ret + local ret=1 + echo ${bs_progress_message} >&2 + set_ui_bootstrap_error "${bs_progress_message}" >&2 +# OPNFV modification to turn off biosdevname on the line below (extend-kopts) + if fuel-bootstrap -v --debug build --activate \ + --extend-kopts "biosdevname=0 net.ifnames=0 debug ignore_loglevel log_buf_len=10M print_fatal_signals=1 LOGLEVEL=8" \ + >>"$bs_build_log" 2>&1; then + ret=0 + fuel notify --topic "done" --send "${bs_done_message}" + else + ret=1 + set_ui_bootstrap_error "${bs_error_message}" >&2 + fi + # perform hard-return from func + # this part will update input $1 variable + local __resultvar=$1 + eval $__resultvar="'${ret}'" + return $ret } diff --git a/build/f_isoroot/f_isolinux/Makefile b/build/f_isoroot/f_isolinux/Makefile new file mode 100644 index 000000000..b683ea38c --- /dev/null +++ b/build/f_isoroot/f_isolinux/Makefile @@ -0,0 +1,46 @@ +############################################################################## +# Copyright (c) 2016 Ericsson AB and others. +# stefan.k.berg@ericsson.com +# jonas.bjurel@ericsson.com +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## + +TOP := $(shell pwd) + +.PHONY: all +all: + @mkdir -p release/isolinux + grep -q OpenStack_Fuel isolinux.cfg + sed "s/OpenStack_Fuel/$(PRODNO)_$(REVSTATE)/g" isolinux.cfg > isolinux.cfg.patched + @cp isolinux.cfg.patched release/isolinux/isolinux.cfg + @cp isolinux.cfg.orig release/isolinux/ + +.PHONY: clean +clean: + @rm -rf release isolinux.cfg.patched + +.PHONY: release +release: all + @cp -Rvp release/* ../release + +############################################################################# +# Cache operations - only used when building through ci/build.sh +############################################################################# + +# Clean local data related to caching - called prior to ordinary build +.PHONY: clean-cache +clean-cache: clean + @echo "clean-cache not implemented" + +# Try to download cache - called prior to ordinary build +.PHONY: get-cache +get-cache: + @echo "get-cache not implemented" + +# Store cache if not already stored - called after ordinary build +.PHONY: put-cache +put-cache: + @echo "put-cache not implemented" diff --git a/build/f_isoroot/f_isolinux/isolinux.cfg b/build/f_isoroot/f_isolinux/isolinux.cfg new file mode 100644 index 000000000..0948c95ac --- /dev/null +++ b/build/f_isoroot/f_isolinux/isolinux.cfg @@ -0,0 +1,32 @@ +default vesamenu.c32 +#prompt 1 +timeout 300 + +display boot.msg + +menu background splash.jpg +menu title Welcome to Fuel Installer (version: 8.0) +menu color border 0 #ffffffff #00000000 +menu color sel 7 #ffffffff #ff000000 +menu color title 0 #ffffffff #00000000 +menu color tabmsg 0 #ffffffff #00000000 +menu color unsel 0 #ffffffff #00000000 +menu color hotsel 0 #ff000000 #ffffffff +menu color hotkey 7 #ffffffff #ff000000 +menu color scrollbar 0 #ffffffff #00000000 + +label nailgun + menu label ^1. Fuel Install (Static IP) + menu default + kernel vmlinuz + append initrd=initrd.img net.ifnames=0 biosdevname=0 ks=hd:sr0:/ks.cfg ip=10.20.0.2::10.20.0.1:255.255.255.0:fuel.domain.tld:eth0:off::: dns1=10.20.0.1 selinux=0 showmenu=yes + +label nailgunifname + menu label ^2. Fuel Advanced Install (Static IP) + kernel vmlinuz + append initrd=initrd.img ks=hd:sr0:/ks.cfg ip=10.20.0.2::10.20.0.1:255.255.255.0:fuel.domain.tld:adminif:off::: dns1=10.20.0.1 selinux=0 ifname=adminif:XX:XX:XX:XX:XX:XX showmenu=yes + +label usbboot + menu label ^3. USB Fuel Install (Static IP) + kernel vmlinuz + append initrd=initrd.img biosdevname=0 repo=hd:LABEL=OpenStack_Fuel:/ ks=hd:LABEL=OpenStack_Fuel:/ks.cfg ip=10.20.0.2 gw=10.20.0.1 dns1=10.20.0.1 netmask=255.255.255.0 hostname=fuel.domain.tld showmenu=yes diff --git a/build/f_isoroot/f_isolinux/isolinux.cfg.orig b/build/f_isoroot/f_isolinux/isolinux.cfg.orig new file mode 100644 index 000000000..2b3e7e307 --- /dev/null +++ b/build/f_isoroot/f_isolinux/isolinux.cfg.orig @@ -0,0 +1,32 @@ +default vesamenu.c32 +#prompt 1 +timeout 300 + +display boot.msg + +menu background splash.jpg +menu title Welcome to Fuel Installer (version: 8.0) +menu color border 0 #ffffffff #00000000 +menu color sel 7 #ffffffff #ff000000 +menu color title 0 #ffffffff #00000000 +menu color tabmsg 0 #ffffffff #00000000 +menu color unsel 0 #ffffffff #00000000 +menu color hotsel 0 #ff000000 #ffffffff +menu color hotkey 7 #ffffffff #ff000000 +menu color scrollbar 0 #ffffffff #00000000 + +label nailgun + menu label ^1. Fuel Install (Static IP) + menu default + kernel vmlinuz + append initrd=initrd.img net.ifnames=0 biosdevname=0 ks=hd:sr0:/ks.cfg ip=10.20.0.2::10.20.0.1:255.255.255.0:fuel.domain.tld:eth0:off::: dns1=10.20.0.1 selinux=0 + +label nailgunifname + menu label ^2. Fuel Advanced Install (Static IP) + kernel vmlinuz + append initrd=initrd.img ks=hd:sr0:/ks.cfg ip=10.20.0.2::10.20.0.1:255.255.255.0:fuel.domain.tld:adminif:off::: dns1=10.20.0.1 selinux=0 ifname=adminif:XX:XX:XX:XX:XX:XX + +label usbboot + menu label ^3. USB Fuel Install (Static IP) + kernel vmlinuz + append initrd=initrd.img biosdevname=0 repo=hd:LABEL=OpenStack_Fuel:/ ks=hd:LABEL=OpenStack_Fuel:/ks.cfg ip=10.20.0.2 gw=10.20.0.1 dns1=10.20.0.1 netmask=255.255.255.0 hostname=fuel.domain.tld showmenu=yes diff --git a/build/f_isoroot/f_kscfg/Makefile b/build/f_isoroot/f_kscfg/Makefile index fe740418d..2a82a1803 100644 --- a/build/f_isoroot/f_kscfg/Makefile +++ b/build/f_isoroot/f_kscfg/Makefile @@ -13,12 +13,14 @@ TOP := $(shell pwd) .PHONY: all all: @mkdir -p release - @cp ks.cfg release + grep -q OpenStack_Fuel ks.cfg + sed "s/OpenStack_Fuel/$(PRODNO)_$(REVSTATE)/g" ks.cfg > ks.cfg.patched + @cp ks.cfg.patched release/ks.cfg @cp ks.cfg.orig release .PHONY: clean clean: - @rm -rf release + @rm -rf release ks.cfg.patched .PHONY: release release: all diff --git a/build/f_isoroot/f_kscfg/ks.cfg b/build/f_isoroot/f_kscfg/ks.cfg index 8c20971f8..e16139a86 100644 --- a/build/f_isoroot/f_kscfg/ks.cfg +++ b/build/f_isoroot/f_kscfg/ks.cfg @@ -36,9 +36,15 @@ for drv in `ls -1 /sys/block | grep "sd\|hd\|vd\|cciss"`; do done default_drive=`echo ${drives} ${removable_drives} | awk '{print $1}'` -installdrive="undefined" -forceformat="no" -for I in `cat /proc/cmdline`; do case "$I" in *=*) eval $I;; esac ; done +installdrive=${installdrive:-undefined} +forceformat=${forceformat:-no} +for I in $(cat /proc/cmdline); do + case "$I" in + *=*) + if ! [[ "${I}" =~ "." ]]; then eval "$I"; fi + ;; + esac +done set ${drives} ${removable_drives} numdrives=`echo $#` @@ -607,3 +613,18 @@ cp -f /etc/skel/.bash* /root/ [[ $(virt-what) = "virtualbox" ]] && echo "blacklist i2c_piix4" > /etc/modprobe.d/blacklist-i2c-piix4.conf %end + + +%post --nochroot --log=/mnt/sysimage/root/anaconda-post-interface-settings.log +#!/bin/bash +set -x + +source "/mnt/sysimage/root/anaconda.cmdline.vars" + +if [[ ! -z $adminif ]]; then + rm -f /mnt/sysimage/etc/sysconfig/network-scripts/ifcfg-${ifname%%:*} + sed "s/${ifname%%:*}/${adminif}/g" \ + /etc/sysconfig/network-scripts/ifcfg-${ifname%%:*} > \ + /mnt/sysimage/etc/sysconfig/network-scripts/ifcfg-${adminif} +fi +%end diff --git a/build/f_isoroot/f_kscfg/ks.cfg.orig b/build/f_isoroot/f_kscfg/ks.cfg.orig index 148ef9908..41a475bbe 100644 --- a/build/f_isoroot/f_kscfg/ks.cfg.orig +++ b/build/f_isoroot/f_kscfg/ks.cfg.orig @@ -36,9 +36,15 @@ for drv in `ls -1 /sys/block | grep "sd\|hd\|vd\|cciss"`; do done default_drive=`echo ${drives} ${removable_drives} | awk '{print $1}'` -installdrive="undefined" -forceformat="no" -for I in `cat /proc/cmdline`; do case "$I" in *=*) eval $I;; esac ; done +installdrive=${installdrive:-undefined} +forceformat=${forceformat:-no} +for I in $(cat /proc/cmdline); do + case "$I" in + *=*) + if ! [[ "${I}" =~ "." ]]; then eval "$I"; fi + ;; + esac +done set ${drives} ${removable_drives} numdrives=`echo $#` diff --git a/build/f_isoroot/f_repobuild/select_ubuntu_repo.sh b/build/f_isoroot/f_repobuild/select_ubuntu_repo.sh index cb05fe136..992359afd 100755 --- a/build/f_isoroot/f_repobuild/select_ubuntu_repo.sh +++ b/build/f_isoroot/f_repobuild/select_ubuntu_repo.sh @@ -11,6 +11,19 @@ RSYNC="rsync -4 --contimeout 5 --no-motd --list-only" # local mirror can be found after four attempts, the default archive # is returned instead. +return_url=0 + +while [ "$1" != "" ]; do + case $1 in + -u | --url ) shift + return_url=1 + ;; + # Shift all the parameters down by one + esac + shift +done + + cnt=0 while [ $cnt -lt 4 ] do @@ -21,13 +34,22 @@ do then if ! $RSYNC "${host}::ubuntu/Archive-Update-in-Progress*" &> /dev/null then - echo "$host" - exit 0 + if [ "$return_url" = "1" ]; then + echo "$url" + exit 0 + else + echo "$host" + exit 0 + fi fi fi done cnt=$[cnt + 1] sleep 15 done -echo "archive.ubuntu.com" +if [ "$return_url" = "1" ]; then + echo "http://archive.ubuntu.com/ubuntu/" +else + echo "archive.ubuntu.com" +fi diff --git a/build/fuel_build_loop b/build/fuel_build_loop new file mode 100755 index 000000000..7e26b98b8 --- /dev/null +++ b/build/fuel_build_loop @@ -0,0 +1,32 @@ +#!/bin/bash +############################################################################## +# Copyright (c) 2016 Ericsson AB and others. +# stefan.k.berg@ericsson.com +# jonas.bjurel@ericsson.com +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## + +echo "MIRROR_MOS_UBUNTU_ROOT=${MIRROR_MOS_UBUNTU_ROOT}" +echo "MIRROR_FUEL=${MIRROR_FUEL}" + +maxcount=10 +cnt=0 +rc=1 +while [ $cnt -lt $maxcount ] && [ $rc -ne 0 ] +do + cnt=$[cnt + 1] + echo -e "\n\n\n*** Starting build attempt # $cnt" + cd /tmp/fuel-main + make clean + make iso + rc=$? + if [ $rc -ne 0 ]; then + echo "### Build failed with rc $rc ###" + else + echo "### Build successful at attempt # $cnt" + fi +done +exit $rc diff --git a/build/install/install.sh b/build/install/install.sh index 6155a4162..4e0389ed8 100755 --- a/build/install/install.sh +++ b/build/install/install.sh @@ -464,7 +464,7 @@ if [ $MODE = "iso" ]; then TMP_ISOPUPPET=`mktemp -d /tmp/XXXXXXX` ORIGISO=$2 NEWISO=$3 - VOLUMEID="$4 $5" + VOLUMEID="$4_$5" REPORTFILE="${NEWISO}.txt" echo "Opening reportfile at $REPORTFILE" touch $REPORTFILE diff --git a/build/select_closest_fuel_mirror.py b/build/select_closest_fuel_mirror.py new file mode 100755 index 000000000..0fdc69eac --- /dev/null +++ b/build/select_closest_fuel_mirror.py @@ -0,0 +1,35 @@ +#!/usr/bin/python +############################################################################## +# Copyright (c) 2016 Ericsson AB and others. +# stefan.k.berg@ericsson.com +# jonas.bjurel@ericsson.com +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## + +# Select closest fuel mirror based on latency measured with ping. +# Failsafe: The us1 mirror + +from subprocess import Popen,PIPE +import re +from operator import itemgetter + +mirrors = [ "us1", "cz1" ] +FNULL = open('/dev/null', 'w') +try: + re_avg = re.compile(r'.* = [^/]*/([^/]*).*') + + pingtime = {} + for mirror in mirrors: + fqdn = "mirror.seed-"+mirror+".fuel-infra.org" + pingtime[fqdn] = 0 + pipe = Popen("ping -c 3 " + fqdn + " | tail -1",shell = True, stdout=PIPE, stderr=FNULL) + avg = pipe.communicate()[0] + pipe.stdout.close() + pingtime[fqdn] = float(re_avg.split(avg)[1]) + + print sorted(pingtime.items(), key=itemgetter(1))[0][0] +except: + print "mirror.seed-"+mirrors[0]+".fuel-infra.org" diff --git a/docs/build-instruction.rst b/docs/build-instruction.rst index b7b13c896..1bfc8bed6 100644 --- a/docs/build-instruction.rst +++ b/docs/build-instruction.rst @@ -41,6 +41,9 @@ Version history | | | (Ericsson AB) | for plugin build | | | | | selection | +--------------------+--------------------+--------------------+----------------------+ +| 2016-01-20 | 1.2.1 | Daniel Smith | Minor updates for | +| | | (Ericsson AB) | docker requirements | ++--------------------+--------------------+--------------------+----------------------+ Introduction ============ @@ -66,6 +69,8 @@ Minimum Hardware Requirements - An x86_64 host (Bare-metal or VM) with Ubuntu 14.04 LTS installed + - Note: Builds on Wily (Ubuntu 15.x) are not supportted currently + - ~30 GB available disc - 4 GB RAM @@ -77,9 +82,9 @@ The build host should run Ubuntu 14.04 operating system. On the host, the following packages must be installed: -- docker - see https://docs.docker.com/installation/ubuntulinux/ for +- docker - see https://docs.docker.com/engine/installation/ubuntulinux/ for installation notes for Ubuntu 14.04. Note: only use the Ubuntu stock - distro of Docker (docker.io) + distro of Docker (docker-engine). Tested against ver 1.9.x and greater - git (simply available through sudo apt-get install git) @@ -94,16 +99,17 @@ Setting up the Docker build container ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ After having installed Docker, add yourself to the docker group: -<usermod -a -G docker [userid]> +<sudo usermod -a -G docker [userid]> Also make sure to define relevant DNS servers part of the global dns chain in -in your </etc/default/docker> configuration file, for example: +in your </etc/default/docker> configuration file. Uncomment, modify the values appropriately +and save and quit the file. For example: <DOCKER_OPTS=" --dns=8.8.8.8 --dns=8.8.8.4"> Then restart docker: -<sudo service docker.io restart> +<sudo service docker restart> Setting up OPNFV Gerrit in order to being able to clone the code ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |