From b99ad2c41241abb54912fb32a802bd54ce68ec1e Mon Sep 17 00:00:00 2001
From: Elizabeth Krumbach Joseph <lyz@princessleia.com>
Date: Tue, 11 Mar 2014 15:34:14 -0700
Subject: [PATCH] Add support for Fedora 20 to nodepool

For TripleO, one of our test cases is a fully Fedora-driven test,
this adds support for Fedora as a nodepool VM by adding support
to prepare node scripts.

Also adding install_devstack_dependencies.sh for Ubuntu and Fedora
shared dependencies for DevStack (and TripleO) preparation scripts.

Change-Id: I7399cc4d4b6ec6f8598afa68bc99ebb24cb01f64
---
 .../scripts/install_devstack_dependencies.sh  | 33 +++++++++++++++++
 .../nodepool/scripts/prepare_devstack.sh      | 15 +-------
 .../files/nodepool/scripts/prepare_node.sh    |  4 +++
 .../files/nodepool/scripts/prepare_tripleo.sh | 36 +++++++++++--------
 4 files changed, 59 insertions(+), 29 deletions(-)
 create mode 100644 modules/openstack_project/files/nodepool/scripts/install_devstack_dependencies.sh

diff --git a/modules/openstack_project/files/nodepool/scripts/install_devstack_dependencies.sh b/modules/openstack_project/files/nodepool/scripts/install_devstack_dependencies.sh
new file mode 100644
index 0000000000..074c185003
--- /dev/null
+++ b/modules/openstack_project/files/nodepool/scripts/install_devstack_dependencies.sh
@@ -0,0 +1,33 @@
+#!/bin/bash -xe
+
+# Copyright (C) 2011-2013 OpenStack Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+# implied.
+#
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+mkdir -p ~/cache/files
+mkdir -p ~/cache/pip
+
+if [ -f /usr/bin/yum ]; then
+    sudo yum -y install python-devel make automake gcc gcc-c++ \
+      kernel-devel redhat-lsb-core
+elif [ -f /usr/bin/apt-get ]; then
+    sudo DEBIAN_FRONTEND=noninteractive apt-get \
+      --option "Dpkg::Options::=--force-confold" \
+      --assume-yes install build-essential python-dev \
+      linux-headers-virtual linux-headers-`uname -r`
+else
+    echo "Unsupported distro."
+    exit 1
+fi
diff --git a/modules/openstack_project/files/nodepool/scripts/prepare_devstack.sh b/modules/openstack_project/files/nodepool/scripts/prepare_devstack.sh
index 6738fad91b..d77e383125 100755
--- a/modules/openstack_project/files/nodepool/scripts/prepare_devstack.sh
+++ b/modules/openstack_project/files/nodepool/scripts/prepare_devstack.sh
@@ -16,20 +16,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-mkdir -p ~/cache/files
-mkdir -p ~/cache/pip
-
-if [ -f /usr/bin/yum ]; then
-    sudo yum -y install python-devel make automake gcc gcc-c++ kernel-devel redhat-lsb-core
-elif [ -f /usr/bin/apt-get ]; then
-    sudo DEBIAN_FRONTEND=noninteractive apt-get \
-      --option "Dpkg::Options::=--force-confold" \
-      --assume-yes install build-essential python-dev \
-      linux-headers-virtual linux-headers-`uname -r`
-else
-    echo "Unsupported distro."
-    exit 1
-fi
+./install_devstack_dependencies.sh
 
 DISTRIB_CODENAME=`lsb_release -sc`
 
diff --git a/modules/openstack_project/files/nodepool/scripts/prepare_node.sh b/modules/openstack_project/files/nodepool/scripts/prepare_node.sh
index fb45e0f9a6..1da8aac590 100755
--- a/modules/openstack_project/files/nodepool/scripts/prepare_node.sh
+++ b/modules/openstack_project/files/nodepool/scripts/prepare_node.sh
@@ -24,6 +24,10 @@ PYPY=${5:-false}
 ALL_MYSQL_PRIVS=${6:-false}
 
 sudo hostname $HOSTNAME
+# Fedora image doesn't come with wget
+if [ -f /usr/bin/yum ]; then
+    sudo yum -y install wget
+fi
 wget https://git.openstack.org/cgit/openstack-infra/config/plain/install_puppet.sh
 sudo bash -xe install_puppet.sh
 sudo git clone --depth=1 git://git.openstack.org/openstack-infra/config.git \
diff --git a/modules/openstack_project/files/nodepool/scripts/prepare_tripleo.sh b/modules/openstack_project/files/nodepool/scripts/prepare_tripleo.sh
index 333be8bbdf..56ed667d32 100755
--- a/modules/openstack_project/files/nodepool/scripts/prepare_tripleo.sh
+++ b/modules/openstack_project/files/nodepool/scripts/prepare_tripleo.sh
@@ -17,20 +17,11 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-mkdir -p ~/cache/files
-mkdir -p ~/cache/pip
-
 # Enable precise-backports so we can install jq
 sudo sed -i -e 's/# \(deb .*precise-backports main \)/\1/g' /etc/apt/sources.list
 sudo apt-get update
 
-# Copied from devstack script, seems reasonable to keep and later
-# build upon as needed
-sudo DEBIAN_FRONTEND=noninteractive apt-get \
-  --option "Dpkg::Options::=--force-confold" \
-  --assume-yes install build-essential python-dev python-pip \
-  linux-headers-virtual linux-headers-`uname -r` \
-  libffi-dev
+./install_devstack_dependencies.sh
 
 # toci scripts use both of these
 sudo pip install gear os-apply-config
@@ -38,18 +29,33 @@ sudo pip install gear os-apply-config
 # tripleo-gate runs with two networks - the public access network and eth1
 # pointing at the in-datacentre L2 network where we can talk to the test
 # environments directly. We need to enable DHCP on eth1 though.
-sudo dd of=/etc/network/interfaces oflag=append conv=notrunc << EOF
-auto eth1
-iface eth1 inet dhcp
-EOF
 # Note that we don't bring it up during prepare - it's only needed to run
 # tests.
 
+if [ -d /etc/sysconfig/network-scripts ]; then
+  sudo dd of=/etc/sysconfig/network-scripts/ifcfg-eth1 << EOF
+DEVICE="eth1"
+BOOTPROTO="dhcp"
+ONBOOT="yes"
+TYPE="Ethernet"
+EOF
+
+elif [ -f /etc/network/interfaces ]; then
+  sudo dd of=/etc/network/interfaces oflag=append conv=notrunc << EOF
+auto eth1
+iface eth1 inet dhcp
+EOF
+
 # Workaround bug 1270646 for actual slaves
-sudo dd of=/etc/network/interfaces.d/eth0.cfg oflag=append conv=notrunc << EOF
+  sudo dd of=/etc/network/interfaces.d/eth0.cfg oflag=append conv=notrunc << EOF
     post-up ip link set mtu 1458 dev eth0
 EOF
 
+else
+    echo "Unsupported distro."
+    exit 1
+fi
+
 rm -rf ~/workspace-cache
 mkdir -p ~/workspace-cache
 cd ~/workspace-cache