blob: 4706d45a85aab173f5e6159600affabb1cff3b0f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
|
#!/bin/bash
set -o errexit
set -o nounset
set -o pipefail
APEX_PKGS="common undercloud opendaylight-sfc onos"
# log info to console
echo "Starting the Apex virtual deployment."
echo "--------------------------------------------------------"
echo
if ! rpm -q wget > /dev/null; then
sudo yum -y install wget
fi
if [[ $BUILD_DIRECTORY == *verify* ]]; then
# Build is from a verify, use local build artifacts (not RPMs)
cd $WORKSPACE/../${BUILD_DIRECTORY}
WORKSPACE=$(pwd)
echo "WORKSPACE modified to $WORKSPACE"
cd $WORKSPACE/ci
elif [[ ! "$ARTIFACT_NAME" == "latest" ]]; then
# if artifact name is passed the pull a
# specific artifact from artifacts.opnfv.org
# artifact specified should be opnfv-apex-<version>.noarch.rpm
RPM_INSTALL_PATH=$GS_URL
RPM_LIST=$RPM_INSTALL_PATH/$ARTIFACT_NAME
else
# Use latest RPMS
if [[ $BUILD_DIRECTORY == *apex-build* ]]; then
# Triggered from a daily so RPMS should be in local directory
BUILD_DIRECTORY=$WORKSPACE/../$BUILD_DIRECTORY
echo "BUILD DIRECTORY modified to $BUILD_DIRECTORY"
if [[ -f ${BUILD_DIRECTORY}/../opnfv.properties ]]; then
# if opnfv.properties exists then use the
# local build. Source the file so we get local OPNFV vars
source ${BUILD_DIRECTORY}/../opnfv.properties
RPM_INSTALL_PATH=${BUILD_DIRECTORY}/noarch
RPM_LIST=$RPM_INSTALL_PATH/$(basename $OPNFV_RPM_URL)
else
echo "BUILD_DIRECTORY is from a daily job, so will not use latest from URL"
echo "Check that the slave has opnfv.properties in $BUILD_DIRECTORY"
exit 1
fi
else
# use the latest from artifacts.opnfv.org
# get the latest.properties to get the link to the latest artifact
if ! wget -O $WORKSPACE/opnfv.properties http://$GS_URL/latest.properties; then
echo "ERROR: Unable to find latest.properties at ${GS_URL}...exiting"
exit 1
fi
# source the file so we get OPNFV vars
source opnfv.properties
RPM_INSTALL_PATH=$(echo $OPNFV_RPM_URL | sed 's/'"$(basename $OPNFV_RPM_URL)"'//')
RPM_LIST=$RPM_INSTALL_PATH/$(basename $OPNFV_RPM_URL)
fi
fi
if [ -z "$DEPLOY_SCENARIO" ]; then
echo "Deploy scenario not set!"
exit 1
fi
# use local build for verify
if [[ "$BUILD_DIRECTORY" == *verify* ]]; then
if [ ! -e "${WORKSPACE}/build/lib" ]; then
ln -s ${WORKSPACE}/lib ${WORKSPACE}/build/lib
fi
DEPLOY_SETTINGS_DIR="${WORKSPACE}/config/deploy"
NETWORK_SETTINGS_DIR="${WORKSPACE}/config/network"
DEPLOY_CMD="$(pwd)/deploy.sh"
RESOURCES="${WORKSPACE}/build/images/"
CONFIG="${WORKSPACE}/build"
LIB="${WORKSPACE}/lib"
# Make sure python34 deps are installed
for dep_pkg in epel-release python34 python34-PyYAML python34-setuptools; do
if ! rpm -q ${dep_pkg} > /dev/null; then
if ! sudo yum install -y ${dep_pkg}; then
echo "Failed to install ${dep_pkg}"
exit 1
fi
fi
done
if [ -z ${PYTHONPATH:-} ]; then
export PYTHONPATH=${WORKSPACE}/lib/python
else
export PYTHONPATH=$PYTHONPATH:${WORKSPACE}/lib/python
fi
# use RPMs
else
# find version of RPM
VERSION_EXTENSION=$(echo $(basename $RPM_LIST) | grep -Eo '[0-9]+\.[0-9]+-[0-9]{8}')
# build RPM List which already includes base Apex RPM
for pkg in ${APEX_PKGS}; do
RPM_LIST+=" ${RPM_INSTALL_PATH}/opnfv-apex-${pkg}-${VERSION_EXTENSION}.noarch.rpm"
done
# remove old / install new RPMs
if rpm -q opnfv-apex > /dev/null; then
INSTALLED_RPMS=$(rpm -qa | grep apex)
if [ -n "$INSTALLED_RPMS" ]; then
sudo yum remove -y ${INSTALLED_RPMS}
fi
fi
if ! sudo yum install -y $RPM_LIST; then
echo "Unable to install new RPMs: $RPM_LIST"
exit 1
fi
DEPLOY_CMD=opnfv-deploy
DEPLOY_SETTINGS_DIR="/etc/opnfv-apex/"
NETWORK_SETTINGS_DIR="/etc/opnfv-apex/"
RESOURCES="/var/opt/opnfv/images"
CONFIG="/var/opt/opnfv"
LIB="/var/opt/opnfv/lib"
fi
# set env vars to deploy cmd
DEPLOY_CMD="CONFIG=${CONFIG} RESOURCES=${RESOURCES} LIB=${LIB} ${DEPLOY_CMD}"
if [ "$OPNFV_CLEAN" == 'yes' ]; then
if [[ "$BUILD_DIRECTORY" == *verify* ]]; then
sudo CONFIG=${CONFIG} LIB=${LIB} ./clean.sh
else
sudo CONFIG=${CONFIG} LIB=${LIB} opnfv-clean
fi
fi
echo "Deploy Scenario set to ${DEPLOY_SCENARIO}"
DEPLOY_FILE="${DEPLOY_SETTINGS_DIR}/${DEPLOY_SCENARIO}.yaml"
if [ ! -e "$DEPLOY_FILE" ]; then
echo "ERROR: Required settings file missing: Deploy settings file ${DEPLOY_FILE}"
fi
if [[ "$JOB_NAME" == *virtual* ]]; then
# settings for virtual deployment
NETWORK_FILE="${NETWORK_SETTINGS_DIR}/network_settings.yaml"
DEPLOY_CMD="${DEPLOY_CMD} -v"
else
# settings for bare metal deployment
NETWORK_FILE="/root/network/network_settings.yaml"
INVENTORY_FILE="/root/inventory/pod_settings.yaml"
if [ ! -e "$INVENTORY_FILE" ]; then
echo "ERROR: Required settings file missing: Inventory settings file ${INVENTORY_FILE}"
fi
# include inventory file for bare metal deployment
DEPLOY_CMD="${DEPLOY_CMD} -i ${INVENTORY_FILE}"
fi
# Check that network settings file exists
if [ ! -e "$NETWORK_FILE" ]; then
echo "ERROR: Required settings file missing for Network Settings"
echo "Network settings file: ${NETWORK_FILE}"
exit 1
fi
# start deployment
sudo ${DEPLOY_CMD} -d ${DEPLOY_FILE} -n ${NETWORK_FILE} --debug
echo
echo "--------------------------------------------------------"
echo "Done!"
|