-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathbuildMSImages.sh
executable file
·216 lines (199 loc) · 6 KB
/
buildMSImages.sh
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
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
#!/bin/bash
#
#*******************************************************************************
# Copyright (c) 2017-2018 IBM Corp.
#
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# and Eclipse Distribution License v1.0 which accompany this distribution.
#
# The Eclipse Public License is available at
# http://www.eclipse.org/legal/epl-v10.html
# and the Eclipse Distribution License is available at
# http://www.eclipse.org/org/documents/edl-v10.php.
#
#
# Contrinutors:
# Ranjan Dasgupta - Initial drop
#
#*******************************************************************************
#
#
# ==============================================================================
# SCRIPT IS PROVIDED TO CREATE MESSAGESIGHT DEMO ENVIRONMENT.
# DO NOT USE THIS SCRIPT TO CREATE A PRODUCTION OR TEST ENVIRONMENT.
# ==============================================================================
#
#
# This script can be used to build following docker images for
# IBM IoT MessageGateway 5.0.0 demos:
#
# - MessageGateway Server
# docker image name: imaserver
# docker image version: 5.0
#
# - MessageGateway WebUI
# docker image name: imawebui
# docker image version: 5.0
#
# - MessageGateway Bridge
# docker image name: imabridge
# docker image version: 5.0
#
#
# Prereq steps:
#
# - Install Docker Community Edition on your system. For details refer to:
# https://docs.docker.com/install/
#
# - Create a directory pkgs
#
# - Download the latest install images of IBM MessageGateway Server, WebUI, and Bridge
# from IBM FixCentral or Pasport advantage and copy the files in the pkgs directory.
#
SERVER_IMAGE_NAME="IBMWIoTPMessageGatewayServer-5.0.0.2.20200723-2123.tz"
WEBUI_IMAGE_NAME="IBMWIoTPMessageGatewayWebUI-5.0.0.2.20200723-2123.tz"
BRIDGE_IMAGE_NAME="IBMWIoTPMessageGatewayBridge-5.0.0.2.20200723-2123.tz"
CURDIR=`pwd`
export CURDIR
PKGDIR=${CURDIR}/pkgs
export PKGDIR
SERVERTYPE=$1
REMOVE=$2
function usage() {
echo
echo "$0: Creates or removes MessageGateway Server, WebUI, and/or Bridge docker images."
echo "ERROR: Invalid option(s) are spcified: ${SERVERTYPE}, ${REMOVE}"
echo "USAGE: $0 <server|webui|bridge|all> [remove]"
echo
exit 1
}
# Check if REMOVE option is valid
if [ "${REMOVE}" != "" ] && [ "${REMOVE}" != "remove" ]
then
usage
fi
#
# Check if prereq packages are downloaded and available in pkgs direcrtory
if [ ! -f ${PKGDIR}/${SERVER_IMAGE_NAME} ] || [ ! -f ${PKGDIR}/${WEBUI_IMAGE_NAME} ] || [ ! -f ${PKGDIR}/${BRIDGE_IMAGE_NAME} ]
then
echo
echo "ERROR: Required packages for the build to complete are not available."
echo " Download the latest install images of IBM MessageGateway Server, WebUI, and Bridge"
echo " from IBM FixCentral or Pasport advantage and copy the files in the pkgs directory."
echo
exit 1
fi
done=0
#
# Build or remove Server image
#
if [ "${SERVERTYPE}" == "server" ] || [ "${SERVERTYPE}" == "all" ]
then
buildExist=0
sudo docker images -a | grep "imaserver" | grep "5.0" > /dev/null 2>&1
if [ $? -eq 0 ]
then
buildExist=1
fi
if [ "${REMOVE}" == "remove" ]
then
if [ $buildExist -eq 1 ]
then
echo "Removing MessageGateway Server docker image."
docker rmi -f imaserver:5.0
else
echo "MessageGateway Server docker image doesn't exist."
fi
else
if [ $buildExist -eq 1 ]
then
echo "MessageGateway Server docker image already exists."
else
echo "Building MessageGateway Server docker image"
mkdir -p ${CURDIR}/mstmpdir/server
cd ${CURDIR}/mstmpdir/server
tar zxf ${PKGDIR}/${SERVER_IMAGE_NAME}
cp IBMWIoTPMessageGatewayServer-*.rpm imaserver.rpm
sudo docker build --force-rm=true -t imaserver:5.0 .
fi
fi
done=1
fi
#
# Build or remove WebUI image
#
if [ "${SERVERTYPE}" == "webui" ] || [ "${SERVERTYPE}" == "all" ]
then
buildExist=0
sudo docker images -a | grep "imawebui" | grep "5.0" > /dev/null 2>&1
if [ $? -eq 0 ]
then
buildExist=1
fi
if [ "${REMOVE}" == "remove" ]
then
if [ $buildExist -eq 1 ]
then
echo "Removing MessageGateway WebUI docker image."
docker rmi -f imawebui:5.0
else
echo "MessageGateway WebUI docker image doesn't exist."
fi
else
if [ $buildExist -eq 1 ]
then
echo "MessageGateway WebUI docker image already exists."
else
echo "Building MessageGateway WebUI docker image."
mkdir -p ${CURDIR}/mstmpdir/webui
cd ${CURDIR}/mstmpdir/webui
tar zxf ${PKGDIR}/${WEBUI_IMAGE_NAME}
cp IBMWIoTPMessageGatewayWebUI-*.rpm imawebui.rpm
sudo docker build --force-rm=true -t imawebui:5.0 .
fi
fi
done=1
fi
#
# Build or remove Bridge image
#
if [ "${SERVERTYPE}" == "bridge" ] || [ "${SERVERTYPE}" == "all" ]
then
buildExist=0
sudo docker images -a | grep "imabridge" | grep "5.0" > /dev/null 2>&1
if [ $? -eq 0 ]
then
buildExist=1
fi
if [ "${REMOVE}" == "remove" ]
then
if [ $buildExist -eq 1 ]
then
echo "Removing MessageGateway Bridge docker image."
docker rmi -f imabridge:5.0
else
echo "MessageGateway Bridge docker image doesn't exist."
fi
else
if [ $buildExist -eq 1 ]
then
echo "MessageGateway Bridge docker image already exists"
else
echo "Buildiing MessageGateway Bridge docker image"
mkdir -p ${CURDIR}/mstmpdir/bridge
cd ${CURDIR}/mstmpdir/bridge
tar zxf ${PKGDIR}/${BRIDGE_IMAGE_NAME}
cp IBMIoTMessageGatewayBridge-*.rpm imabridge.rpm
sudo docker build --force-rm=true -t imabridge:5.0 .
fi
fi
done=1
fi
if [ $done -eq 0 ]
then
usage
else
echo
exit 0
fi