Merge "Generally refactor Foreman installation guide"
authorDan Radez <dradez@redhat.com>
Mon, 18 May 2015 18:39:38 +0000 (18:39 +0000)
committerGerrit Code Review <gerrit@172.30.200.206>
Mon, 18 May 2015 18:39:38 +0000 (18:39 +0000)
14 files changed:
.DS_Store [new file with mode: 0644]
INFO
foreman/ci/deploy.sh
fuel/.DS_Store [new file with mode: 0644]
fuel/build/f_odl_docker/dockerfile/Dockerfile
fuel/build/f_odl_docker/dockerfile/container_scripts/check_feature.sh
fuel/build/f_odl_docker/dockerfile/container_scripts/speak.sh
fuel/build/f_odl_docker/dockerfile/container_scripts/start_odl_docker.sh
fuel/build/patch-packages/Makefile
fuel/build/patch-packages/novnc/Makefile [new file with mode: 0644]
fuel/build/patch-packages/novnc/fix-missing.sh [new file with mode: 0755]
fuel/build/patch-packages/tools/deb_pack
fuel/docs/.DS_Store [new file with mode: 0644]
fuel/docs/src/release-notes.rst

diff --git a/.DS_Store b/.DS_Store
new file mode 100644 (file)
index 0000000..af5178a
Binary files /dev/null and b/.DS_Store differ
diff --git a/INFO b/INFO
index 8efda28..dffc3ad 100644 (file)
--- a/INFO
+++ b/INFO
@@ -27,7 +27,9 @@ zhangxiong7@huawei.com
 joseph.gasparakis@intel.com
 pbandzi@cisco.com
 daniel.smith@ericsson.com
+trozet@redhat.com
 
 Link to TSC approval of the project: http://meetbot.opnfv.org/meetings/opnfv-meeting/2014/opnfv-meeting.2014-12-09-15.02.html
 Link(s) to approval of additional committers:
 * Addition of Daniel Smith: Email vote: http://lists.opnfv.org/pipermail/opnfv-tech-discuss/2015-March/001801.html
+* Addition of Tim Rozet: Email vote: http://lists.opnfv.org/pipermail/opnfv-tsc/2015-May/000845.html
index ae585b0..3e20fe4 100755 (executable)
@@ -34,6 +34,7 @@ display_usage() {
   echo -e "\nUsage:\n$0 [arguments] \n"
   echo -e "\n   -no_parse : No variable parsing into config. Flag. \n"
   echo -e "\n   -base_config : Full path of settings file to parse. Optional.  Will provide a new base settings file rather than the default.  Example:  -base_config /opt/myinventory.yml \n"
+  echo -e "\n   -virtual : Node virtualization instead of baremetal. Flag. \n"
 }
 
 ##find ip of interface
@@ -120,6 +121,25 @@ function increment_ip {
   echo $baseaddr.$lsv
 }
 
+##translates yaml into variables
+##params: filename, prefix (ex. "config_")
+##usage: parse_yaml opnfv_ksgen_settings.yml "config_"
+parse_yaml() {
+   local prefix=$2
+   local s='[[:space:]]*' w='[a-zA-Z0-9_]*' fs=$(echo @|tr @ '\034')
+   sed -ne "s|^\($s\)\($w\)$s:$s\"\(.*\)\"$s\$|\1$fs\2$fs\3|p" \
+        -e "s|^\($s\)\($w\)$s:$s\(.*\)$s\$|\1$fs\2$fs\3|p"  $1 |
+   awk -F$fs '{
+      indent = length($1)/2;
+      vname[indent] = $2;
+      for (i in vname) {if (i > indent) {delete vname[i]}}
+      if (length($3) > 0) {
+         vn=""; for (i=0; i<indent; i++) {vn=(vn)(vname[i])("_")}
+         printf("%s%s%s=\"%s\"\n", "'$prefix'",vn, $2, $3);
+      }
+   }'
+}
+
 ##END FUNCTIONS
 
 if [[ ( $1 == "--help") ||  $1 == "-h" ]]; then
@@ -143,6 +163,10 @@ do
                 no_parse="TRUE"
                 shift 1
             ;;
+        -virtual)
+                virtual="TRUE"
+                shift 1
+            ;;
         *)
                 display_usage
                 exit 1
@@ -150,8 +174,6 @@ do
 esac
 done
 
-
-
 ##disable selinux
 /sbin/setenforce 0
 
@@ -470,12 +492,163 @@ echo "${blue}Parameters Complete.  Settings have been set for Foreman. ${reset}"
 
 fi
 
+if [ $virtual ]; then
+  echo "${blue} Virtual flag detected, setting Khaleesi playbook to be opnfv-vm.yml ${reset}"
+  sed -i 's/opnfv.yml/opnfv-vm.yml/' bootstrap.sh
+fi
+
 echo "${blue}Starting Vagrant! ${reset}"
 
 ##stand up vagrant
 if ! vagrant up; then
   printf '%s\n' 'deploy.sh: Unable to start vagrant' >&2
   exit 1
+else
+  echo "${blue}Foreman VM is up! ${reset}"
 fi
 
+if [ $virtual ]; then
+
+##Bring up VM nodes
+echo "${blue}Setting VMs up... ${reset}"
+nodes=`sed -nr '/nodes:/{:start /workaround/!{N;b start};//p}' opnfv_ksgen_settings.yml | sed -n '/^  [A-Za-z0-9]\+:$/p' | sed 's/\s*//g' | sed 's/://g'`
+##due to ODL Helium bug of OVS connecting to ODL too early, we need controllers to install first
+##this is fix kind of assumes more than I would like to, but for now it should be OK as we always have
+##3 static controllers
+compute_nodes=`echo $nodes | tr " " "\n" | grep -v controller | tr "\n" " "`
+controller_nodes=`echo $nodes | tr " " "\n" | grep controller | tr "\n" " "`
+nodes=${controller_nodes}${compute_nodes}
+
+for node in ${nodes}; do
+  cd /tmp
+
+  ##remove VM nodes incase it wasn't cleaned up
+  rm -rf /tmp/$node
+
+  ##clone bgs vagrant
+  ##will change this to be opnfv repo when commit is done
+  if ! git clone https://github.com/trozet/bgs_vagrant.git $node; then
+    printf '%s\n' 'deploy.sh: Unable to clone vagrant repo' >&2
+    exit 1
+  fi
+
+  cd $node
+
+  if [ $base_config ]; then
+    if ! cp -f $base_config opnfv_ksgen_settings.yml; then
+      echo "{red}ERROR: Unable to copy $base_config to opnfv_ksgen_settings.yml${reset}"
+      exit 1
+    fi
+  fi
+
+  ##parse yaml into variables
+  eval $(parse_yaml opnfv_ksgen_settings.yml "config_")
+  ##find node type
+  node_type=config_nodes_${node}_type
+  node_type=$(eval echo \$$node_type)
+
+  ##find number of interfaces with ip and substitute in VagrantFile
+  output=`ifconfig | grep -E "^[a-zA-Z0-9]+:"| grep -Ev "lo|tun|virbr|vboxnet" | awk '{print $1}' | sed 's/://'`
+
+  if [ ! "$output" ]; then
+    printf '%s\n' 'deploy.sh: Unable to detect interfaces to bridge to' >&2
+    exit 1
+  fi
+
+
+  if_counter=0
+  for interface in ${output}; do
 
+    if [ "$if_counter" -ge 4 ]; then
+      break
+    fi
+    interface_ip=$(find_ip $interface)
+    if [ ! "$interface_ip" ]; then
+      continue
+    fi
+    case "${if_counter}" in
+           0)
+             mac_string=config_nodes_${node}_mac_address
+             mac_addr=$(eval echo \$$mac_string)
+             mac_addr=$(echo $mac_addr | sed 's/:\|-//g')
+             if [ $mac_addr == "" ]; then
+                 echo "${red} Unable to find mac_address for $node! ${reset}"
+                 exit 1
+             fi
+             ;;
+           1)
+             if [ "$node_type" == "controller" ]; then
+               mac_string=config_nodes_${node}_private_mac
+               mac_addr=$(eval echo \$$mac_string)
+               if [ $mac_addr == "" ]; then
+                 echo "${red} Unable to find private_mac for $node! ${reset}"
+                 exit 1
+               fi
+             else
+               ##generate random mac
+               mac_addr=$(echo -n 00-60-2F; dd bs=1 count=3 if=/dev/random 2>/dev/null |hexdump -v -e '/1 "-%02X"')
+             fi
+             mac_addr=$(echo $mac_addr | sed 's/:\|-//g')
+             ;;
+           *)
+             mac_addr=$(echo -n 00-60-2F; dd bs=1 count=3 if=/dev/random 2>/dev/null |hexdump -v -e '/1 "-%02X"')
+             mac_addr=$(echo $mac_addr | sed 's/:\|-//g')
+             ;;
+    esac
+    sed -i 's/^.*eth_replace'"$if_counter"'.*$/  config.vm.network "public_network", bridge: '\'"$interface"\'', :mac => '\""$mac_addr"\"'/' Vagrantfile
+    ((if_counter++))
+  done
+
+  ##now remove interface config in Vagrantfile for 1 node
+  ##if 1, 3, or 4 interfaces set deployment type
+  ##if 2 interfaces remove 2nd interface and set deployment type
+  if [ "$if_counter" == 1 ]; then
+    deployment_type="single_network"
+    remove_vagrant_network eth_replace1
+    remove_vagrant_network eth_replace2
+    remove_vagrant_network eth_replace3
+  elif [ "$if_counter" == 2 ]; then
+    deployment_type="single_network"
+    second_interface=`echo $output | awk '{print $2}'`
+    remove_vagrant_network $second_interface
+    remove_vagrant_network eth_replace2
+  elif [ "$if_counter" == 3 ]; then
+    deployment_type="three_network"
+    remove_vagrant_network eth_replace3
+  else
+    deployment_type="multi_network"
+  fi
+
+  ##modify provisioning to do puppet install, config, and foreman check-in
+  ##substitute host_name and dns_server in the provisioning script
+  host_string=config_nodes_${node}_hostname
+  host_name=$(eval echo \$$host_string)
+  sed -i 's/^host_name=REPLACE/host_name='$host_name'/' vm_nodes_provision.sh
+  ##dns server should be the foreman server
+  sed -i 's/^dns_server=REPLACE/dns_server='${interface_ip_arr[0]}'/' vm_nodes_provision.sh
+
+  ## remove bootstrap and NAT provisioning
+  sed -i '/nat_setup.sh/d' Vagrantfile
+  sed -i 's/bootstrap.sh/vm_nodes_provision.sh/' Vagrantfile
+
+  ## modify default_gw to be node_default_gw
+  sed -i 's/^.*default_gw =.*$/  default_gw = '\""$node_default_gw"\"'/' Vagrantfile
+
+  ## modify VM memory to be 4gig
+  sed -i 's/^.*vb.memory =.*$/     vb.memory = 4096/' Vagrantfile
+
+  echo "${blue}Starting Vagrant Node $node! ${reset}"
+
+  ##stand up vagrant
+  if ! vagrant up; then
+    echo "${red} Unable to start $node ${reset}"
+    exit 1
+  else
+    echo "${blue} $node VM is up! ${reset}"
+  fi
+
+done
+
+ echo "${blue} All VMs are UP! ${reset}"
+
+fi
diff --git a/fuel/.DS_Store b/fuel/.DS_Store
new file mode 100644 (file)
index 0000000..b1bc858
Binary files /dev/null and b/fuel/.DS_Store differ
index e8d5953..e3c7ee5 100755 (executable)
@@ -32,11 +32,11 @@ RUN bash -c 'echo "export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64" >> ~/.bas
 
 #Now lets got and fetch the ODL distribution
 RUN echo "Fetching ODL"
-RUN wget https://nexus.opendaylight.org/content/groups/public/org/opendaylight/integration/distribution-karaf/0.2.2-Helium-SR2/distribution-karaf-0.2.2-Helium-SR2.tar.gz -O /opt/odl_source/distribution-karaf-0.2.2-Helium-SR2.tar.gz
+RUN wget https://nexus.opendaylight.org/content/groups/public/org/opendaylight/integration/distribution-karaf/0.2.3-Helium-SR3/distribution-karaf-0.2.3-Helium-SR3.tar.gz -O /opt/odl_source/distribution-karaf-0.2.3-Helium-SR3.tar.gz
 
 RUN echo "Untarring ODL inplace"
 RUN mkdir -p /opt/odl
-RUN tar zxvf /opt/odl_source/distribution-karaf-0.2.2-Helium-SR2.tar.gz -C /opt/odl
+RUN tar zxvf /opt/odl_source/distribution-karaf-0.2.3-Helium-SR3.tar.gz -C /opt/odl
 
 RUN echo "Installing DLUX and other features into ODL"
 COPY tmp/dockerfile/container_scripts/start_odl_docker.sh /etc/init.d/start_odl_docker.sh
index fc21fc9..3e5d0b2 100755 (executable)
@@ -1,5 +1,5 @@
 #!/usr/bin/expect
-spawn /opt/odl/distribution-karaf-0.2.2-Helium-SR2/bin/client
+spawn /opt/odl/distribution-karaf-0.2.3-Helium-SR3/bin/client
 expect "root>"
 send "feature:list | grep -i odl-restconf\r"
 send "\r\r\r"
index 2d363c9..3ba07a8 100755 (executable)
@@ -6,8 +6,9 @@
 # Simple expect script to start up ODL client and load feature set for DLUX and OVSDB
 #
 #  NOTE: THIS WILL BE REPLACED WITH A PROGRAMATIC METHOD SHORTLY
+#  DEPRECATED AFTER ARNO
 
-spawn /opt/odl/distribution-karaf-0.2.2-Helium-SR2/bin/client
+spawn /opt/odl/distribution-karaf-0.2.3-Helium-SR3/bin/client
 expect "root>"
 send "feature:install odl-base-all odl-aaa-authn odl-restconf odl-nsf-all odl-adsal-northbound odl-mdsal-apidocs  odl-ovsdb-openstack odl-ovsdb-northbound odl-dlux-core"
 send "\r\r\r"
index a985b97..1c72dda 100755 (executable)
@@ -13,7 +13,7 @@ export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
 
 #MAIN
 echo "Starting up the da Sheilds..."
-/opt/odl/distribution-karaf-0.2.2-Helium-SR2/bin/karaf server &
+/opt/odl/distribution-karaf-0.2.3-Helium-SR3/bin/karaf server &
 echo "Sleeping 5 bad hack"
 sleep 10
 echo "should see stuff listening now"
@@ -33,6 +33,6 @@ ps -efa
 while true;
 do
        echo "Checking status of ODL:"
-       /opt/odl/distribution-karaf-0.2.2-Helium-SR2/bin/status
+       /opt/odl/distribution-karaf-0.2.3-Helium-SR3/bin/status
        sleep 60
 done
index 5d7d200..4388677 100644 (file)
@@ -8,7 +8,7 @@
 # http://www.apache.org/licenses/LICENSE-2.0
 ##############################################################################
 
-SUBDIRS := debootstrap
+SUBDIRS := debootstrap novnc
 SUBCLEAN = $(addsuffix .clean,$(SUBDIRS))
 
 .PHONY: $(SUBDIRS) $(SUBCLEAN) clean
diff --git a/fuel/build/patch-packages/novnc/Makefile b/fuel/build/patch-packages/novnc/Makefile
new file mode 100644 (file)
index 0000000..16c0196
--- /dev/null
@@ -0,0 +1,22 @@
+# This is a temporary patch which add missing files
+# inside novnc ubuntu package.
+# Related bug: https://bugs.launchpad.net/fuel/+bug/1433894
+TOP := $(shell pwd)
+
+.PHONY: all
+all:
+
+.PHONY: clean
+clean:
+       @rm -rf package
+       @rm -rf *.deb
+       @rm -rf patch-replacements
+       @rm -rf .package
+
+.PHONY: release
+release:
+       ../tools/deb_unpack novnc_0.5.1*.deb $(ORIGISO)
+       ./fix-missing.sh
+       ../tools/deb_pack $(REVSTATE)
+       @cp *.deb ../release/packages
+       @cat patch-replacements >> ../release/patch-replacements
diff --git a/fuel/build/patch-packages/novnc/fix-missing.sh b/fuel/build/patch-packages/novnc/fix-missing.sh
new file mode 100755 (executable)
index 0000000..61ef1db
--- /dev/null
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+MISSING_FILES="keyboard.js keysymdef.js keysym.js"
+NOVNC_SOURCE="http://raw.githubusercontent.com/kanaka/noVNC/v0.5.1/include"
+
+for file in $MISSING_FILES
+do
+  wget -P package/usr/share/novnc/include/ "$NOVNC_SOURCE/$file"
+done
index f07a15d..f5d42de 100755 (executable)
@@ -21,7 +21,7 @@ ME=$(basename $0)
 
 trap my_exit EXIT
 
-REV=$1
+REV="$(echo $1 | tr '_' '-')"
 if [ -z "$REV" ]; then
   echo "$ME: Error - no revision info provided"
   exit 1
diff --git a/fuel/docs/.DS_Store b/fuel/docs/.DS_Store
new file mode 100644 (file)
index 0000000..9a874b5
Binary files /dev/null and b/fuel/docs/.DS_Store differ
index 221b7f7..0b8187c 100644 (file)
@@ -1,20 +1,20 @@
 :Authors: Jonas Bjurel (Ericsson)
-:Version: 0.2
+:Version: 0.3
 
-================================================================
-OPNFV Release Note for "Arno-RC2 release candidate" - Fuel@OPNFV
-================================================================
+=====================================================================================
+OPNFV Release Note for the Arno release of OPNFV when using Fuel as a deployment tool
+=====================================================================================
 
 Abstract
 ========
 
-This document provides the release notes for ARNO-RC2 release candidate of Fuel@OPNFV.
+This document compiles the release notes for the ARNO release, when using Fuel as a deployment tool.
 
 License
 =======
-Fuel@OPNFV DOCs (c) by Jonas Bjurel (Ericsson AB)
+Arno release with th Fuel deployment tool Docs (c) by Jonas Bjurel (Ericsson AB)
 
-Fuel@OPNFV DOCs are licensed under a Creative Commons Attribution 4.0 International License. You should have received a copy of the license along with this. If not, see <http://creativecommons.org/licenses/by/4.0/>.
+Arno release with the Fuel deployment tool Docs are licensed under a Creative Commons Attribution 4.0 International License. You should have received a copy of the license along with this. If not, see <http://creativecommons.org/licenses/by/4.0/>.
 
 
 **Contents**
@@ -46,45 +46,44 @@ Fuel@OPNFV DOCs are licensed under a Creative Commons Attribution 4.0 Internatio
 | 2015-04-23         | 0.2                | Jonas Bjurel       | Minor change       |
 |                    |                    |                    |                    |
 +--------------------+--------------------+--------------------+--------------------+
+| 2015-05-12         | 0.3                | Chris Price        | Minor edits       |
+|                    |                    |                    |                    |
++--------------------+--------------------+--------------------+--------------------+
 
 2   Important notes
 ===================
 
-This is the first OPNFV Arno pre-release that implements the deploy stage of the OPNFV CI pipeline.
+This is the first OPNFV release of Arno using Fuel as the deploment stage of the OPNFV CI pipeline.  The intention of this release is to establish a foundation platform to accelerate the development of the OPNFV infrastructure.
 
-Carefully follow the installation-instructions and pay special attention to the pre-deploy script that needs to be ran befor deployment is started.
+Carefully follow the installation-instructions and pay special attention to the pre-deploy script that needs to be run befor deployment is started.
 
 3   Summary
 ===========
 
-Arno Fuel@OPNFV is based the OpenStack Fuel upstream project version 6.0.1, but adds OPNFV unique components such as OpenDaylight version: Helium as well as other OPNFV unique configurations.
+Arno release with the Fuel deployment tool uses the OpenStack Fuel upstream project version 6.0.1, but adds OPNFV unique components such as OpenDaylight version: Helium as well as other OPNFV unique configurations.
 
-This Arno pre-release of Fuel@OPNFV adds the deploy stage of the OPNFV CI pipeline
+This Arno release artefact provides the Fuel deployment tool as the deploy stage of the OPNFV CI pipeline including:
 
-- Documentation is built by Jenkins
-- .iso image is built by Jenkins
-- Jenkins deploy an Fuel@OPNFV stack instance on a nested hypervisor environment (KVM)
+- Documentation built by Jenkins
+- The Arno .iso image built by Jenkins
+- Automated deployment of the Arno release with the Fuel deployment tool stack instance on bare metal or a nested hypervisor environment (KVM)
+- Automated validation of the Arno deployment
 
-Automatic test of the deployed system is not part of this pre-release.
 
 4   Release Data
 ================
 
 +--------------------------------------+--------------------------------------+
-| **Project**                          | Arno/genesis/fuel                    |
+| **Project**                          | Arno/genesis/fuel                |
 |                                      |                                      |
 +--------------------------------------+--------------------------------------+
-| **Repo/tag**                         | genesis/arno-rc2                     |
+| **Repo/tag**                         | genesis/arno                     |
 |                                      |                                      |
 +--------------------------------------+--------------------------------------+
-| **Release designation**              | Arno RC2                             |
+| **Release designation**              | Arno                             |
 |                                      |                                      |
 +--------------------------------------+--------------------------------------+
-| **Release date**                     | 2015-04-16                           |
-|                                      |                                      |
-+--------------------------------------+--------------------------------------+
-| **Purpose of the delivery**          | OPNFV Internal quality assurance     |
-|                                      | and CI Pipline dry-run               |
+| **Release date**                     | 2015-Spring                      |
 |                                      |                                      |
 +--------------------------------------+--------------------------------------+
 
@@ -93,20 +92,18 @@ Automatic test of the deployed system is not part of this pre-release.
 
 4.1.1   Module version changes
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-This is the first tracked version of genesis/fuel. It is based on following upstream versions:
+This is the first tracked release of genesis/fuel. It is based on following upstream versions:
 
 - Fuel 6.0.1 (Juno release)
 
 - OpenDaylight Helium-SR2
 
-- Ubuntu 12.04.5
-
 4.1.2   Document version changes
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 This is the first tracked version of genesis/fuel. It comes with the following documentation:
 
-- OPNFV Installation instructions for - Fuel@OPNFV - ver. 0.0.1
-- OPNFV Release Note for "Arno-RC2 release candidate" - Fuel@OPNFV - ver. 0.1 (this document)
+- OPNFV Installation instructions for the Arno release with the Fuel deployment tool - ver. 0.0.1
+- OPNFV Release Notes for Arno release with the Fuel deployment tool - ver. 0.1 (this document)
 
 4.2 Reason for version
 ----------------------
@@ -146,8 +143,8 @@ Fuel@OPNFV .iso file
 
 4.3.2   Documentation deliverables
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-- OPNFV Installation instructions for - Fuel@OPNFV - ver. 0.0.1
-- OPNFV Release Note for "Arno-RC2 release candidate" - Fuel@OPNFV - ver. 0.1 (this document)
+- OPNFV Installation instructions for Arno release with the Fuel deployment tool - ver. 0.0.1
+- OPNFV Release Note for Arno release with the Fuel deployment tool - ver. 0.1 (this document)
 
 5  Known Limitations, Issues and Workarounds
 ============================================
@@ -186,7 +183,7 @@ Fuel@OPNFV .iso file
 6  Test Result
 ==============
 
-Fuel@OPNFV Arno RC2 has undergone QA test runs with the following results:
+Arno release with the Fuel deployment tool has undergone QA test runs with the following results:
 
 +--------------------------------------+--------------------------------------+
 | **TEST-SUITE**                       | **Results:**                         |