14
by Suchitra Venugopal
IBM MobileFirst Server |
1 |
#!/bin/bash
|
2 |
set -ex
|
|
3 |
||
4 |
source charms.reactive.sh
|
|
5 |
||
6 |
ARCHITECTURE=`uname -m` |
|
7 |
ARCHIVE_DIR=$CHARM_DIR/files/archives |
|
8 |
AUTH_KEY_FILE=/root/.ssh/authorized_keys |
|
9 |
IM_INSTALL_PATH=/opt/IBM/InstallationManager |
|
10 |
LIBERTY_INSTALL_PATH=/opt/ibm/wlp |
|
11 |
MobileFirstServer_PATH=/opt/ibm/MobileFirst_Platform_Server_liberty |
|
12 |
||
13 |
||
14 |
# Create a workight server.
|
|
15 |
create_worklightserver()
|
|
16 |
{
|
|
17 |
if [ -d $LIBERTY_INSTALL_PATH/bin ]; then |
|
18 |
juju-log "IBM MFS: Creating worklight server"
|
|
19 |
#Create worklight server
|
|
20 |
if [ -d $LIBERTY_INSTALL_PATH/usr/servers/worklight ]; then |
|
21 |
juju-log "IBM MFS: server is already there"
|
|
22 |
else
|
|
23 |
$LIBERTY_INSTALL_PATH/bin/server create worklight
|
|
24 |
juju-log "IBM MFS: created server sucessfully"
|
|
25 |
cd $LIBERTY_INSTALL_PATH/usr/servers |
|
26 |
juju-log "IBM MFS: Editing http port to $httpport and https port to $httpsport in server.xml" |
|
27 |
sed -i 's/9080/'$1'/' $LIBERTY_INSTALL_PATH/usr/servers/worklight/server.xml |
|
28 |
sed -i 's/9443/'$2'/' $LIBERTY_INSTALL_PATH/usr/servers/worklight/server.xml |
|
29 |
fi
|
|
30 |
else
|
|
31 |
juju-log "IBM MFS: Websphere Liberty is not installed"
|
|
32 |
exit 0 |
|
33 |
fi
|
|
34 |
||
35 |
}
|
|
36 |
remove_worklightserver()
|
|
37 |
{
|
|
38 |
if [ -d $LIBERTY_INSTALL_PATH/usr/servers/worklight ]; then |
|
39 |
juju-log "IBM MFS: server is already there"
|
|
40 |
sudo rm -rf $LIBERTY_INSTALL_PATH/usr/servers/worklight
|
|
41 |
juju-log "IBM MFS: Worklight Server deleted"
|
|
42 |
fi
|
|
43 |
}
|
|
44 |
#Clean the old installations if any
|
|
45 |
clean_old_installations()
|
|
46 |
{
|
|
47 |
juju-log "Clean old installations if any before installations"
|
|
48 |
#Uninstall if already present
|
|
49 |
if [ -d $MobileFirstServer_PATH/WorklightServer ]; then |
|
50 |
juju-log "Editing uninstall response file with charmdir"
|
|
51 |
sed -i 's|/root/Installfiles/MobileFirst_Platform_Server/disk1|'$CHARM_DIR'/files/archives/MobileFirst_Platform_Server/disk1|g' $CHARM_DIR/files/archives/uninstall-worklight-responsefile.xml |
|
52 |
cd $IM_INSTALL_PATH/eclipse/tools |
|
53 |
sudo ./imcl input $CHARM_DIR/files/archives/uninstall-worklight-responsefile.xml
|
|
54 |
rm -rf $MobileFirstServer_PATH
|
|
55 |
juju-log "IBM MFS: MobileFirst Server software uninstalled"
|
|
56 |
||
57 |
fi
|
|
58 |
||
59 |
||
60 |
}
|
|
61 |
||
62 |
get_db_values_from_interface()
|
|
63 |
{
|
|
64 |
db2_port=$(relation_call --state=mobilefirstserverdb.ready get_db2_port) || true |
|
65 |
db2_instance=$(relation_call --state=mobilefirstserverdb.ready get_db2_instance_name) || true |
|
66 |
db2_path=$(relation_call --state=mobilefirstserverdb.ready get_db2_path) || true |
|
67 |
hostname=$(relation_call --state=mobilefirstserverdb.ready get_db2_hostname) || true |
|
68 |
dbusername=$(relation_call --state=mobilefirstserverdb.ready get_dbusername) || true |
|
69 |
dbuserpw=$(relation_call --state=mobilefirstserverdb.ready get_dbuserpw) || true |
|
70 |
dbs_created=$(relation_call --state=mobilefirstserverdb.ready get_db2_dbnames) || true |
|
71 |
||
72 |
}
|
|
73 |
||
74 |
#Edit MobileFirst Server install responsefile with Liberty and db2 values
|
|
75 |
edit_responsefile()
|
|
76 |
{
|
|
77 |
juju-log "IBM MFS: Editing response file"
|
|
78 |
get_db_values_from_interface |
|
79 |
||
80 |
PAK_DIR="$CHARM_DIR/../resources/ibm_mobilefirstserver_installer" |
|
81 |
PAK_NAME="$PAK_DIR/ibm_worklight_installer.zip" |
|
82 |
sed -i 's|/root/IBM/IBMIMShared|/opt/ibm/IBMIMShared|g' $CHARM_DIR/files/archives/install-MFS-responsefile.xml |
|
83 |
sed -i 's|/root/Installfiles/MobileFirst_Platform_Server/disk1|'$PAK_DIR'/MobileFirst_Platform_Server/disk1|g' $CHARM_DIR/files/archives/install-MFS-responsefile.xml |
|
84 |
sed -i 's/APPCNTRA/APPCNTR/' $CHARM_DIR/files/archives/install-MFS-responsefile.xml |
|
85 |
sed -i 's/50000/'$db2_port'/' $CHARM_DIR/files/archives/install-MFS-responsefile.xml |
|
86 |
sed -i 's/db2inst1/'$dbusername'/' $CHARM_DIR/files/archives/install-MFS-responsefile.xml |
|
87 |
sed -i 's/localhost/'$hostname'/' $CHARM_DIR/files/archives/install-MFS-responsefile.xml |
|
88 |
oldpasswd=`cat $CHARM_DIR/files/archives/install-MFS-responsefile.xml | grep "user.database.db2.appcenter.password" | cut -d"=" -f3 | cut -d"/" -f1` |
|
89 |
oldpasswd=`echo $oldpasswd | tr -d "'"` |
|
90 |
sed -i s/$oldpasswd/$dbuserpw/g $CHARM_DIR/files/archives/install-MFS-responsefile.xml |
|
91 |
||
92 |
sed -i 's|/opt/ibm/db2/V10.5/java/db2jcc.jar|'$CHARM_DIR'/files/db2jcc4.jar|g' $CHARM_DIR/files/archives/install-MFS-responsefile.xml |
|
93 |
sed -i 's/waserver1/worklight/' $CHARM_DIR/files/archives/install-MFS-responsefile.xml |
|
94 |
sed -i 's|/root/IBM/WebSphere/wlp|'$LIBERTY_INSTALL_PATH'|g' $CHARM_DIR/files/archives/install-MFS-responsefile.xml |
|
95 |
juju-log "IBM MFS:Response file edited"
|
|
96 |
}
|
|
97 |
||
98 |
#Edit configure_liberty_db2_file
|
|
99 |
edit_configure_liberty_db2_file()
|
|
100 |
{
|
|
101 |
juju-log "IBM MFS: Editing configure_liberty_db2.xml file"
|
|
102 |
get_db_values_from_interface |
|
103 |
||
104 |
cp $MobileFirstServer_PATH/WorklightServer/configuration-samples/configure-liberty-db2-orig.xml $MobileFirstServer_PATH/WorklightServer/configuration-samples/configure-liberty-db2.xml |
|
105 |
||
106 |
sed -i '/"database.db2.wladmin.password"/c\<property name="database.db2.wladmin.password" value="'$dbuserpw'"/>' $MobileFirstServer_PATH/WorklightServer/configuration-samples/configure-liberty-db2.xml |
|
107 |
sed -i '/"database.db2.worklight.password"/c\<property name="database.db2.worklight.password" value="'$dbuserpw'"/>' $MobileFirstServer_PATH/WorklightServer/configuration-samples/configure-liberty-db2.xml |
|
108 |
sed -i '/"database.db2.worklightreports.password"/c\<property name="database.db2.worklightreports.password" value="'$dbuserpw'"/>' $MobileFirstServer_PATH/WorklightServer/configuration-samples/configure-liberty-db2.xml |
|
109 |
sed -i '/"worklight.server.install.dir"/c\<property name="worklight.server.install.dir" value="'$MobileFirstServer_PATH'"/>' $MobileFirstServer_PATH/WorklightServer/configuration-samples/configure-liberty-db2.xml |
|
110 |
sed -i '/"worklight.contextroot"/c\<property name="worklight.contextroot" value="/worklight"/>' $MobileFirstServer_PATH/WorklightServer/configuration-samples/configure-liberty-db2.xml |
|
111 |
sed -i '/"database.db2.host"/c\<property name="database.db2.host" value="'$hostname'"/>' $MobileFirstServer_PATH/WorklightServer/configuration-samples/configure-liberty-db2.xml |
|
112 |
sed -i '/"database.db2.port"/c\<property name="database.db2.port" value="'$db2_port'"/>' $MobileFirstServer_PATH/WorklightServer/configuration-samples/configure-liberty-db2.xml |
|
113 |
sed -i '/"database.db2.instance"/c\<property name="database.db2.instance" value="'$db2_instance'"/>' $MobileFirstServer_PATH/WorklightServer/configuration-samples/configure-liberty-db2.xml |
|
114 |
sed -i '/"database.db2.driver.dir"/c\<property name="database.db2.driver.dir" value="'$CHARM_DIR'/files"/>' $MobileFirstServer_PATH/WorklightServer/configuration-samples/configure-liberty-db2.xml |
|
115 |
sed -i '/"database.db2.wladmin.dbname"/c\<property name="database.db2.wladmin.dbname" value="WRKLGHT"/>' $MobileFirstServer_PATH/WorklightServer/configuration-samples/configure-liberty-db2.xml |
|
116 |
sed -i '/"database.db2.wladmin.schema"/c\<property name="database.db2.wladmin.schema" value="WLADMIN"/>' $MobileFirstServer_PATH/WorklightServer/configuration-samples/configure-liberty-db2.xml |
|
117 |
sed -i '/"database.db2.wladmin.username"/c\<property name="database.db2.wladmin.username" value="'$dbusername'"/>' $MobileFirstServer_PATH/WorklightServer/configuration-samples/configure-liberty-db2.xml |
|
118 |
sed -i '/"database.db2.worklight.dbname"/c\<property name="database.db2.worklight.dbname" value="WRKLGHT"/>' $MobileFirstServer_PATH/WorklightServer/configuration-samples/configure-liberty-db2.xml |
|
119 |
sed -i '/"database.db2.worklight.schema"/c\<property name="database.db2.worklight.schema" value="WRKLGHT"/>' $MobileFirstServer_PATH/WorklightServer/configuration-samples/configure-liberty-db2.xml |
|
120 |
sed -i '/"database.db2.worklight.username"/c\<property name="database.db2.worklight.username" value="'$dbusername'"/>' $MobileFirstServer_PATH/WorklightServer/configuration-samples/configure-liberty-db2.xml |
|
121 |
sed -i '/"database.db2.worklightreports.dbname"/c\<property name="database.db2.worklightreports.dbname" value="WRKLGHT"/>' $MobileFirstServer_PATH/WorklightServer/configuration-samples/configure-liberty-db2.xml |
|
122 |
sed -i '/"database.db2.worklightreports.schema"/c\<property name="database.db2.worklightreports.schema" value="WLREPORT"/>' $MobileFirstServer_PATH/WorklightServer/configuration-samples/configure-liberty-db2.xml |
|
123 |
sed -i '/"database.db2.worklightreports.username"/c\<property name="database.db2.worklightreports.username" value="'$dbusername'"/>' $MobileFirstServer_PATH/WorklightServer/configuration-samples/configure-liberty-db2.xml |
|
124 |
sed -i '/"appserver.was.installdir"/c\<property name="appserver.was.installdir" value="'$LIBERTY_INSTALL_PATH'"/>' $MobileFirstServer_PATH/WorklightServer/configuration-samples/configure-liberty-db2.xml |
|
125 |
sed -i '/"appserver.was85liberty.serverInstance"/c\<property name="appserver.was85liberty.serverInstance" value="worklight"/>' $MobileFirstServer_PATH/WorklightServer/configuration-samples/configure-liberty-db2.xml |
|
126 |
sed -i '/"worklight.project.war.file"/c\<property name="worklight.project.war.file" value="'$CHARM_DIR'/files/archives/test.war"/>' $MobileFirstServer_PATH/WorklightServer/configuration-samples/configure-liberty-db2.xml |
|
127 |
||
128 |
}
|
|
129 |
update_usename_serverxml_file()
|
|
130 |
{
|
|
131 |
password=`config-get worklight_passwd` |
|
132 |
username=`config-get worklight_user` |
|
133 |
juju-log "IBM MFS: Username is $username, Password is $password" |
|
134 |
||
135 |
juju-log "IBM MFS: Editing server.xml file for updated credentials"
|
|
136 |
cp $LIBERTY_INSTALL_PATH/usr/servers/worklight/server_org.xml $LIBERTY_INSTALL_PATH/usr/servers/worklight/server.xml |
|
137 |
||
138 |
sed -i '/user name="admin"/c\<user name="'$username'" password="'$password'"/>' $LIBERTY_INSTALL_PATH/usr/servers/worklight/server.xml |
|
139 |
sed -i '/member name="appcenteradmin"/c\<member name="'$username'"/>' $LIBERTY_INSTALL_PATH/usr/servers/worklight/server.xml |
|
140 |
}
|
|
141 |
||
142 |
||
143 |
#Edit create_database_db2_file
|
|
144 |
edit_create_database_db2_file()
|
|
145 |
{
|
|
146 |
juju-log "IBM MFS: Editing create-database-db2.xml file"
|
|
147 |
get_db_values_from_interface |
|
148 |
||
149 |
||
150 |
sed -i '/"database.db2.admin.password"/c\<property name="database.db2.admin.password" value="'$dbuserpw'"/>' $MobileFirstServer_PATH/WorklightServer/configuration-samples/create-database-db2.xml |
|
151 |
sed -i '/"database.db2.wladmin.password"/c\<property name="database.db2.wladmin.password" value="'$dbuserpw'"/>' $MobileFirstServer_PATH/WorklightServer/configuration-samples/create-database-db2.xml |
|
152 |
sed -i '/"database.db2.worklight.password"/c\<property name="database.db2.worklight.password" value="'$dbuserpw'"/>' $MobileFirstServer_PATH/WorklightServer/configuration-samples/create-database-db2.xml |
|
153 |
sed -i '/"database.db2.worklightreports.password"/c\<property name="database.db2.worklightreports.password" value="'$dbuserpw'"/>' $MobileFirstServer_PATH/WorklightServer/configuration-samples/create-database-db2.xml |
|
154 |
sed -i '/"worklight.server.install.dir"/c\<property name="worklight.server.install.dir" value="'$MobileFirstServer_PATH'"/>' $MobileFirstServer_PATH/WorklightServer/configuration-samples/create-database-db2.xml |
|
155 |
sed -i '/"database.db2.host"/c\<property name="database.db2.host" value="'$hostname'"/>' $MobileFirstServer_PATH/WorklightServer/configuration-samples/create-database-db2.xml |
|
156 |
sed -i '/"database.db2.port"/c\<property name="database.db2.port" value="'$db2_port'"/>' $MobileFirstServer_PATH/WorklightServer/configuration-samples/create-database-db2.xml |
|
157 |
sed -i '/"database.db2.instance"/c\<property name="database.db2.instance" value="'$db2_instance'"/>' $MobileFirstServer_PATH/WorklightServer/configuration-samples/create-database-db2.xml |
|
158 |
sed -i '/"database.db2.driver.dir"/c\<property name="database.db2.driver.dir" value="'$CHARM_DIR'/files"/>' $MobileFirstServer_PATH/WorklightServer/configuration-samples/create-database-db2.xml |
|
159 |
sed -i '/"database.db2.admin.username"/c\<property name="database.db2.admin.username" value="'$dbusername'"/>' $MobileFirstServer_PATH/WorklightServer/configuration-samples/create-database-db2.xml |
|
160 |
sed -i '/"database.db2.wladmin.dbname"/c\<property name="database.db2.wladmin.dbname" value="WRKLGHT"/>' $MobileFirstServer_PATH/WorklightServer/configuration-samples/create-database-db2.xml |
|
161 |
sed -i '/"database.db2.wladmin.schema"/c\<property name="database.db2.wladmin.schema" value="WLADMIN"/>' $MobileFirstServer_PATH/WorklightServer/configuration-samples/create-database-db2.xml |
|
162 |
sed -i '/"database.db2.wladmin.username"/c\<property name="database.db2.wladmin.username" value="'$dbusername'"/>' $MobileFirstServer_PATH/WorklightServer/configuration-samples/create-database-db2.xml |
|
163 |
sed -i '/"database.db2.worklight.dbname"/c\<property name="database.db2.worklight.dbname" value="WRKLGHT"/>' $MobileFirstServer_PATH/WorklightServer/configuration-samples/create-database-db2.xml |
|
164 |
sed -i '/"database.db2.worklight.schema"/c\<property name="database.db2.worklight.schema" value="WRKLGHT"/>' $MobileFirstServer_PATH/WorklightServer/configuration-samples/create-database-db2.xml |
|
165 |
sed -i '/"database.db2.worklight.username"/c\<property name="database.db2.worklight.username" value="'$dbusername'"/>' $MobileFirstServer_PATH/WorklightServer/configuration-samples/create-database-db2.xml |
|
166 |
sed -i '/"database.db2.worklightreports.dbname"/c\<property name="database.db2.worklightreports.dbname" value="WRKLGHT"/>' $MobileFirstServer_PATH/WorklightServer/configuration-samples/create-database-db2.xml |
|
167 |
sed -i '/"database.db2.worklightreports.schema"/c\<property name="database.db2.worklightreports.schema" value="WLREPORT"/>' $MobileFirstServer_PATH/WorklightServer/configuration-samples/create-database-db2.xml |
|
168 |
sed -i '/"database.db2.worklightreports.username"/c\<property name="database.db2.worklightreports.username" value="'$dbusername'"/>' $MobileFirstServer_PATH/WorklightServer/configuration-samples/create-database-db2.xml |
|
169 |
}
|
|
170 |
||
171 |
#Backup the configuration files to reuee it later it required.
|
|
172 |
backup_configuration_files()
|
|
173 |
{
|
|
174 |
cp $MobileFirstServer_PATH/WorklightServer/configuration-samples/configure-liberty-db2.xml $MobileFirstServer_PATH/WorklightServer/configuration-samples/configure-liberty-db2-orig.xml |
|
175 |
cp $MobileFirstServer_PATH/WorklightServer/configuration-samples/create-database-db2.xml $MobileFirstServer_PATH/WorklightServer/configuration-samples/create-database-db2-orig.xml |
|
176 |
}
|
|
177 |
||
178 |
||
179 |
#Post install configurations.
|
|
180 |
postworklightinstall_configuration()
|
|
181 |
{
|
|
182 |
||
183 |
juju-log "IBM MFS: Editing configure-liberty-db2.xml file"
|
|
184 |
edit_configure_liberty_db2_file |
|
185 |
juju-log "IBM MFS: Editing create-database-db2.xml file"
|
|
186 |
edit_create_database_db2_file |
|
187 |
||
188 |
juju-log "IBM MFS: Running ant commands"
|
|
189 |
cd $MobileFirstServer_PATH/WorklightServer/configuration-samples |
|
190 |
#Run create admdatabases command
|
|
191 |
ant -f create-database-db2.xml admdatabases |
|
192 |
if [ $? -eq 0 ]; then |
|
193 |
juju-log "IBM MFS: ant create admddatabase command ran successfully"
|
|
194 |
else
|
|
195 |
juju-log "IBM MFS: ant create admddatabase command failed to run"
|
|
196 |
exit 1 |
|
197 |
fi
|
|
198 |
||
199 |
#Run create-database-db2.xml databases command
|
|
200 |
ant -f create-database-db2.xml databases |
|
201 |
if [ $? -eq 0 ]; then |
|
202 |
juju-log "IBM MFS: ant create database command ran successfully"
|
|
203 |
else
|
|
204 |
juju-log "IBM MFS: ant create database command failed to run"
|
|
205 |
exit 1 |
|
206 |
fi
|
|
207 |
||
208 |
#Run configure admdatabases command
|
|
209 |
ant -f configure-liberty-db2.xml admdatabases |
|
210 |
if [ $? -eq 0 ]; then |
|
211 |
juju-log "IBM MFS: ant configure liberty admddatabase command ran successfully"
|
|
212 |
else
|
|
213 |
juju-log "IBM MFS: ant configure liberty admddatabase command failed to run"
|
|
214 |
exit 1 |
|
215 |
fi
|
|
216 |
#Run configure databases command
|
|
217 |
ant -f configure-liberty-db2.xml databases |
|
218 |
if [ $? -eq 0 ]; then |
|
219 |
juju-log "IBM MFS: ant configure liberty database command ran successfully"
|
|
220 |
else
|
|
221 |
juju-log "IBM MFS: ant configure liberty database command failed to run"
|
|
222 |
exit 1 |
|
223 |
fi
|
|
224 |
||
225 |
#Run adminstall command
|
|
226 |
ant -f configure-liberty-db2.xml adminstall |
|
227 |
if [ $? -eq 0 ]; then |
|
228 |
juju-log "IBM MFS: ant adminstall command ran successfully"
|
|
229 |
else
|
|
230 |
juju-log "IBM MFS: ant adminstall command failed to run"
|
|
231 |
exit 1 |
|
232 |
fi
|
|
233 |
||
234 |
#Run install command to configure sample runtime environment
|
|
235 |
ant -f configure-liberty-db2.xml install |
|
236 |
if [ $? -eq 0 ]; then |
|
237 |
juju-log "IBM MFS: ant configure install command ran successfully"
|
|
238 |
else
|
|
239 |
juju-log "IBM MFS: ant configure install command failed to run"
|
|
240 |
exit 1 |
|
241 |
fi
|
|
242 |
||
243 |
}
|
|
244 |
||
245 |
#Restart liberty server
|
|
246 |
restart_worklightserver()
|
|
247 |
{
|
|
248 |
if [ -d $LIBERTY_INSTALL_PATH/usr/servers/worklight ]; then |
|
249 |
juju-log "IBM MFS: Restarting server"
|
|
250 |
set +e
|
|
251 |
$LIBERTY_INSTALL_PATH/bin/server stop worklight
|
|
252 |
if [ $? == 0 ]; then |
|
253 |
juju-log "IBM MFS: Websphere Liberty stopped successfully"
|
|
254 |
else
|
|
255 |
juju-log "IBM MFS: Server not running"
|
|
256 |
fi
|
|
257 |
||
258 |
$LIBERTY_INSTALL_PATH/bin/server start worklight
|
|
259 |
if [ $? == 0 ]; then |
|
260 |
juju-log "IBM MFS: Websphere Liberty started successfully"
|
|
261 |
set_state 'ibm-mobilefirst-server.website.started'
|
|
262 |
else
|
|
263 |
juju-log "IBM MFS: Server is running"
|
|
264 |
set_state 'ibm-mobilefirst-server.website.started'
|
|
265 |
fi
|
|
266 |
||
267 |
fi
|
|
268 |
juju-log "IBM MFS: server restarted successfully"
|
|
269 |
||
270 |
}
|
|
271 |
||
272 |
@when 'website.available'
|
|
273 |
@when_not 'ibm-mobilefirst-server.website.configured'
|
|
274 |
function capture_portdetials(){ |
|
275 |
juju-log "IBM MFS: Website is available"
|
|
276 |
#Get the port number from WLP and check whether the port is free and can be used. If not free, use the next one.
|
|
277 |
hostname=`relation-get hostname` |
|
278 |
juju-log "IBM MFS: Hostname is $hostname" |
|
279 |
httpport=`relation-get port` |
|
280 |
httpsport=`relation-get httpsport` |
|
281 |
juju-log "IBM MFS: Http post = $httpport , Https port = $httpsport" |
|
282 |
while [ 1 ] |
|
283 |
do
|
|
284 |
result=`netstat -an | grep $httpport | cut -d"*" -f1` |
|
285 |
if [ "$result" != "" ]; then |
|
286 |
httpport=$((httpport+1)) |
|
287 |
else
|
|
288 |
break
|
|
289 |
fi
|
|
290 |
done; |
|
291 |
while [ 1 ] |
|
292 |
do
|
|
293 |
result=`netstat -an | grep $httpsport | cut -d"*" -f1` |
|
294 |
if [ "$result" != "" ]; then |
|
295 |
httpsport=$((httpsport+1)) |
|
296 |
else
|
|
297 |
break
|
|
298 |
fi
|
|
299 |
done; |
|
300 |
echo "HttpPort:$httpport" > portdetails.txt |
|
301 |
echo "HttpsPort:$httpsport" >> portdetails.txt |
|
302 |
||
303 |
set_state 'ibm-mobilefirst-server.website.configured'
|
|
304 |
||
305 |
}
|
|
306 |
||
307 |
@when 'website.available'
|
|
308 |
@when 'ibm-mobilefirst-server.installed'
|
|
309 |
@when_not 'ibm-mobilefirst-server.website.started'
|
|
310 |
function start_worklight_server(){ |
|
311 |
if [ -d $LIBERTY_INSTALL_PATH/usr/servers/worklight ]; then |
|
312 |
||
313 |
$LIBERTY_INSTALL_PATH/bin/server start worklight
|
|
314 |
if [ $? == 0 ]; then |
|
315 |
juju-log "IBM MFS: Websphere Liberty started successfully"
|
|
316 |
set_state 'ibm-mobilefirst-server.website.started'
|
|
317 |
fi
|
|
318 |
fi
|
|
319 |
}
|
|
320 |
||
321 |
||
322 |
||
323 |
@when 'website.available'
|
|
324 |
@when 'ibm-mobilefirst-server.website.configured'
|
|
325 |
@when 'ibm-mobilefirst-server.mobilefirstserverdb.configured'
|
|
326 |
@when_not 'ibm-mobilefirst-server.installed'
|
|
327 |
function install() { |
|
328 |
juju-log "IBM MFS: License accepted"
|
|
329 |
remove_state 'ibm-mobilefirst-server.uninstalled'
|
|
330 |
||
331 |
httpport=`cat portdetails.txt | grep "HttpPort" | cut -d":" -f2` |
|
332 |
httpsport=`cat portdetails.txt | grep "HttpsPort" | cut -d":" -f2` |
|
333 |
juju-log "httpport = $httpport $httpsport" |
|
334 |
# Get the installable resource
|
|
335 |
juju-log "IBM MFS: Fetching the ibm_mobilefirst-server_installer resource"
|
|
336 |
status-set maintenance "fetching the ibm_mobilefirst-server_installer resource"
|
|
337 |
cfg_worklight_pkg_name=`resource-get 'ibm_mobilefirstserver_installer' || echo unavailable` |
|
338 |
# If we don't have a package, report blocked status; we can't proceed.
|
|
339 |
if [ "$cfg_worklight_pkg_name" = "unavailable" ]; then |
|
340 |
juju-log "IBM MFS: missing required ibm_mobilefirst-server_installer resource"
|
|
341 |
status-set blocked "missing required ibm_mobilefirst-server_installer resource"
|
|
342 |
exit 0 |
|
343 |
fi
|
|
344 |
# Check for empty packages from Charm store
|
|
345 |
ibm_worklight_empty=`file $cfg_worklight_pkg_name | { grep -q empty && echo "True"; } || echo "False"` |
|
346 |
if [ "$ibm_worklight_empty" = "True" ]; then |
|
347 |
juju-log "IBM IM: no ibm_worklight to install"
|
|
348 |
status-set active "ready"
|
|
349 |
exit 0 |
|
350 |
fi
|
|
351 |
||
352 |
juju-log "IBM MFS: using $cfg_worklight_pkg_name as the ibm_mobilefirst-server_installer resource" |
|
353 |
PKG_DIR=`dirname $cfg_worklight_pkg_name` |
|
354 |
juju-log "Archive dir is $PKG_DIR" |
|
355 |
||
356 |
cd $PKG_DIR |
|
357 |
status-set maintenance "Extracting IBM MobileFirst Server package"
|
|
358 |
rm -rf MobileFirst_Platform_Server* |
|
359 |
unzip $PKG_DIR/*.zip
|
|
360 |
if [ $? != 0 ]; then |
|
361 |
juju-log "IBM MFS: Unable to extract the MFS package content. Verify whether the package is corrupt."
|
|
362 |
status-set blocked "IBM MobileFirst Server package is corrupt"
|
|
363 |
#Remove corrupt archive file
|
|
364 |
rm -rf $PKG_DIR/*.zip
|
|
365 |
exit 0 |
|
366 |
fi
|
|
367 |
if [ -d $PKG_DIR/MobileFirst_Platform_Server/disk1 ]; then |
|
368 |
juju-log "IBM MFS: MobileFirst server Packages are available for installation."
|
|
369 |
#Create worklight server
|
|
370 |
create_worklightserver $httpport $httpsport |
|
371 |
#Edit response file for installation
|
|
372 |
edit_responsefile |
|
373 |
#edit_post_install_file
|
|
374 |
juju-log "IBM MFS: Installing MobileFirst Server package."
|
|
375 |
status-set maintenance "Installing IBM MobileFirst Server software"
|
|
376 |
cd $IM_INSTALL_PATH/eclipse/tools |
|
377 |
./imcl input $CHARM_DIR/files/archives/install-MFS-responsefile.xml -acceptLicense -showProgress
|
|
378 |
juju-log "IBM MFS: Installation of MobileFirst server complete."
|
|
379 |
status-set active "Installed IBM MobileFirst Server"
|
|
380 |
#Check install successful or not
|
|
381 |
if [ -d $MobileFirstServer_PATH/WorklightServer ]; then |
|
382 |
juju-log "IBM MFS: Install Sucessful and moving to post install configuration"
|
|
383 |
backup_configuration_files |
|
384 |
status-set maintenance "Running Post install configuration steps for IBM MobileFirst Server"
|
|
385 |
postworklightinstall_configuration |
|
386 |
juju-log "IBM MFS: Post install configuration is done"
|
|
387 |
status-set maintenance "Post install configuration is done"
|
|
388 |
#Restart worklight server
|
|
389 |
restart_worklightserver |
|
390 |
set_state 'ibm-mobilefirst-server.installed'
|
|
391 |
#Taking a backup of WLP server.xml file
|
|
392 |
cp $LIBERTY_INSTALL_PATH/usr/servers/worklight/server.xml $LIBERTY_INSTALL_PATH/usr/servers/worklight/server_org.xml |
|
393 |
update_usename_serverxml_file |
|
394 |
status-set active "IBM MFS Installed and is Ready"
|
|
395 |
open-port $httpport
|
|
396 |
open-port $httpsport
|
|
397 |
||
398 |
else
|
|
399 |
juju-log "IBM MFS: Install failed"
|
|
400 |
status-set blocked "IBM MobileFirst Server install failed"
|
|
401 |
exit 1 |
|
402 |
fi
|
|
403 |
else
|
|
404 |
juju-log "IBM MFS: MobileFirst server Packages are missing. Please check README file."
|
|
405 |
status-set blocked "IBM MobileFirst server Packages are missing"
|
|
406 |
exit 1 |
|
407 |
fi
|
|
408 |
}
|
|
409 |
||
410 |
@when 'mobilefirstserverdb.connected'
|
|
411 |
@when_not 'mobilefirstserverdb.ready'
|
|
412 |
function send_sshkeys_mobilefirstserverdbs(){ |
|
413 |
SSH_PATH=/root/.ssh |
|
414 |
if [ ! -f $SSH_PATH/id_rsa.pub ]; then |
|
415 |
juju-log "IBM MFS: Setting up SSH keys."
|
|
416 |
ssh-keygen -t rsa -f $SSH_PATH/id_rsa -N '' |
|
417 |
fi
|
|
418 |
key="`cat $SSH_PATH/id_rsa.pub`" |
|
419 |
mobilefirstserverdbnames="APPCNTR,WRKLGHT" |
|
420 |
juju-log "DB names is $mobilefirstserverdbnames" |
|
421 |
# To pass the SSH key and DB names to DB2 charm
|
|
422 |
relation_call --state=mobilefirstserverdb.connected set_ssh_keys "$key" || true |
|
423 |
relation_call --state=mobilefirstserverdb.connected set_dbs $mobilefirstserverdbnames || true |
|
424 |
}
|
|
425 |
||
426 |
@when 'mobilefirstserverdb.ready'
|
|
427 |
@when_not 'ibm-mobilefirst-server.mobilefirstserverdb.configured'
|
|
428 |
function configure_mobilefirstserverdb(){ |
|
429 |
||
430 |
get_db_values_from_interface |
|
431 |
||
432 |
if [ -z "$db2_port" ]; then |
|
433 |
juju-log "No data sent yet"
|
|
434 |
exit 0 |
|
435 |
fi
|
|
436 |
||
437 |
get_db_values_from_interface |
|
438 |
||
439 |
juju-log "IBM MFS: Got the db2 values : $db2_path $hostname $dbusername $dbuserpw $dbs_created" |
|
440 |
juju-log "IBM MFS: Copying files from remote - Directory: $db2_path Host:$hostname" |
|
441 |
status-set maintenance "Copying mobilefirstserverdb2 jar files from remote DB2 machine"
|
|
442 |
scp -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null root@$hostname:$db2_path/V10.5/java/db2jcc.jar $CHARM_DIR/files || true |
|
443 |
scp -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null root@$hostname:$db2_path/V10.5/java/db2jcc4.jar $CHARM_DIR/files || true |
|
444 |
scp -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null root@$hostname:$db2_path/V10.5/java/db2jcc_license_*.jar $CHARM_DIR/files || true |
|
445 |
juju-log "IBM MFS: Copied the files to $CHARM_DIR/files" |
|
446 |
#Updating the passwords for db connection in the required wlp files if its changed and restarting the worklight server. Don't do this if MFS is not installed.
|
|
447 |
if [ -d $MobileFirstServer_PATH/WorklightServer ]; then |
|
448 |
#Update the password if changed in server.xml file
|
|
449 |
newpassword=`cat $LIBERTY_INSTALL_PATH/usr/servers/worklight/server.xml | grep "WRKLGHT" | grep "WLADMIN" | cut -d"}" -f2 | cut -d" " -f1 | tr -d '"'` |
|
450 |
oldpassword=`cat $LIBERTY_INSTALL_PATH/usr/servers/worklight/server.xml | grep "APPCNTR" | cut -d"}" -f2 | cut -d" " -f1 | tr -d '"'` |
|
451 |
sed -i s/$oldpassword/$newpassword/g $LIBERTY_INSTALL_PATH/usr/servers/worklight/server.xml |
|
452 |
status-set maintenance "Server.xml file updated"
|
|
453 |
fi
|
|
454 |
set_state 'ibm-mobilefirst-server.mobilefirstserverdb.configured'
|
|
455 |
||
456 |
}
|
|
457 |
||
458 |
@when 'mobilefirstserverdb.departed'
|
|
459 |
function stop_mobilefirstserverdb2(){ |
|
460 |
# If relation with db2 is broken as the DBs related to worklight will be deleted and the login credentilas for the consoles will be lost.
|
|
461 |
# Without having the login info from the DB,the user cannot login. The user needs to remove the Mobile First server service and deploy it again.
|
|
462 |
juju-log "IBM MFS: Removing the jar files when relation is broken"
|
|
463 |
rm -rf $CHARM_DIR/files/db2jcc.jar $CHARM_DIR/files/db2jcc4.jar $CHARM_DIR/files/db2jcc_license_*.jar |
|
464 |
juju-log "IBM MFS: JAR files removed"
|
|
465 |
if [ -d $LIBERTY_INSTALL_PATH/usr/servers/worklight ]; then |
|
466 |
server_status=`ps -ef | grep worklight | grep $LIBERTY_INSTALL_PATH/bin/tools/ws-server.jar | awk '{print $(NF-1),$NF}'` |
|
467 |
if [ "$server_status" == "$LIBERTY_INSTALL_PATH/bin/tools/ws-server.jar worklight" ]; then |
|
468 |
juju-log "IBM MFS: stopping worklight server"
|
|
469 |
$LIBERTY_INSTALL_PATH/bin/server stop worklight
|
|
470 |
if [ $? == 0 ]; then |
|
471 |
juju-log "IBM MFS: worklight server stopped sucessfully"
|
|
472 |
remove_state 'ibm-mobilefirst-server.website.started'
|
|
473 |
juju-log "Copying the org server.xml file back in website broken fn"
|
|
474 |
else
|
|
475 |
juju-log "IBM MFS: Failed to stop worklight server"
|
|
476 |
exit 0 |
|
477 |
fi
|
|
478 |
fi
|
|
479 |
clean_old_installations |
|
480 |
remove_worklightserver |
|
481 |
remove_state 'ibm-mobilefirst-server.installed'
|
|
482 |
remove_state 'ibm-mobilefirst-server.mobilefirstserverdb.configured'
|
|
483 |
else
|
|
484 |
juju-log "IBM MFS: Worklight server does not exist"
|
|
485 |
fi
|
|
486 |
}
|
|
487 |
||
488 |
||
489 |
@when 'website.departed'
|
|
490 |
function stop_worklight_server(){ |
|
491 |
#If relation between wlp and worklight is broken( or when MobileFirst Server service is removed) , uninstalling worklight.
|
|
492 |
#Otherwise if we set the relation again or deploy MobileFirst server again, the installation goes wrong with traces of old files present
|
|
493 |
juju-log "IBM MFS: In website departed function"
|
|
494 |
if [ -d $LIBERTY_INSTALL_PATH/usr/servers/worklight ]; then |
|
495 |
server_status=`ps -ef | grep worklight | grep $LIBERTY_INSTALL_PATH/bin/tools/ws-server.jar | awk '{print $(NF-1),$NF}'` |
|
496 |
if [ "$server_status" == "$LIBERTY_INSTALL_PATH/bin/tools/ws-server.jar worklight" ]; then |
|
497 |
juju-log "IBM MFS: stopping worklight server"
|
|
498 |
$LIBERTY_INSTALL_PATH/bin/server stop worklight
|
|
499 |
if [ $? == 0 ]; then |
|
500 |
juju-log "IBM MFS: worklight server stopped sucessfully"
|
|
501 |
remove_state 'ibm-mobilefirst-server.website.started'
|
|
502 |
juju-log "Copying the org server.xml file back in website broken fn"
|
|
503 |
else
|
|
504 |
juju-log "IBM MFS: Failed to stop worklight server"
|
|
505 |
exit 0 |
|
506 |
fi
|
|
507 |
fi
|
|
508 |
clean_old_installations |
|
509 |
remove_worklightserver |
|
510 |
remove_state 'ibm-mobilefirst-server.installed'
|
|
511 |
remove_state 'ibm-mobilefirst-server.mobilefirstserverdb.configured'
|
|
512 |
else
|
|
513 |
juju-log "IBM MFS: Worklight server does not exist"
|
|
514 |
fi
|
|
515 |
||
516 |
}
|
|
517 |
||
518 |
@when_not_all 'config.default.worklight_user' 'config.default.worklight_passwd' |
|
519 |
@when_any 'config.changed.worklight_user' 'config.changed.worklight_passwd' |
|
520 |
function create_new_userpassword(){ |
|
521 |
# Change only if worklight is installed
|
|
522 |
if [ -d $LIBERTY_INSTALL_PATH/usr/servers/worklight ]; then |
|
523 |
juju-log "Creating new User/Password"
|
|
524 |
status-set active "Updating User Credentials"
|
|
525 |
update_usename_serverxml_file |
|
526 |
status-set active "IBM MFS Updated"
|
|
527 |
fi
|
|
528 |
||
529 |
||
530 |
}
|
|
531 |
reactive_handler_main |