-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathkube-allocate-cocome.sh
executable file
·135 lines (104 loc) · 3.72 KB
/
kube-allocate-cocome.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
#!/bin/bash
BINDIR=$(cd "$(dirname "$0")"; pwd)/
# global initialization
if [ ! -f "$BINDIR/global-config.rc" ] ; then
echo "Missing global-config.rc Cannot execute $0 script."
exit 1
else
. "$BINDIR/global-config.rc"
fi
# global initialization
if [ ! -f "$BINDIR/common-functions.sh" ] ; then
echo "Missing common-functions.sh Cannot execute $0 script."
exit 1
else
. "$BINDIR/common-functions.sh"
fi
BUILD_SETTINGS="$BINDIR/docker-settings.xml"
BUILD_SETTINGS_TEMPLATE="$BINDIR/docker-settings.xml.template"
# check setup
check_file $BUILD_SETTINGS_TEMPLATE r "build settings template"
check_file $BUILD_SETTINGS w "build settings"
check $KUBECTL "kubectl not found"
check $LOCAL_GLASSFISH_ADMIN "local glassfish installation"
check_file $LOCAL_GLASSFISH_PW_FILE r "glassfish password file"
if [ "$1" == "start" ] ; then
declare -A IPS
# run docker images
echo "Starting services ..."
for SERVER in $KUBE_NODE_TYPES ; do
IMAGE_NAME="blade1.se.internal:5000/${IMAGE[$SERVER]}"
$KUBECTL --cluster $KUBE_SERVER run "$SERVER" --image=$IMAGE_NAME
IP="<none>"
while [ "$IP" == "<none>" ] ; do
IP=`$KUBECTL --cluster "$KUBE_SERVER" get pods -o wide | grep "$SERVER" | awk '{ print $6 }'`
if [ "$IP" == "<none>" ] ; then
sleep 5
else
IPS[$SERVER]=$IP
fi
done
done
# setup build settings
echo "List IPS ..."
for IP_KEY in "${!IPS[@]}" ; do
IP=${IPS[$IP_KEY]}
echo "$IP $IP_KEY"
done
# connect nodes
echo "Configuring adapter node ${IPS[adapter]} ..."
retries=0
while ! $LOCAL_GLASSFISH_ADMIN --user admin --passwordfile $LOCAL_GLASSFISH_PW_FILE --host ${IPS[adapter]} list-applications >& /dev/null ; do
echo "Adapter not up and running. Waiting 5 seconds ..."
sleep 5
retries=`expr $retries + 1`
if [ "$retries" == "10" ] ; then
echo "Allocation unsuccessful"
for SERVER in $KUBE_NODE_TYPES ; do
$KUBECTL --cluster nc05 delete deployments "$SERVER"
done
exit
fi
done
$LOCAL_GLASSFISH_ADMIN --user admin --passwordfile $LOCAL_GLASSFISH_PW_FILE --host ${IPS[adapter]} --interactive=false \
create-jdbc-connection-pool \
--datasourceclassname org.postgresql.ds.PGSimpleDataSource \
--restype javax.sql.DataSource --property user=cocome:password=dbuser:servername=${IPS[database]}:databasename=cocomedb PostgresPool
$LOCAL_GLASSFISH_ADMIN --user admin --passwordfile $LOCAL_GLASSFISH_PW_FILE --host ${IPS[adapter]} --interactive=false \
create-jdbc-resource --connectionpoolid PostgresPool jdbc/CoCoMEDB
echo "Configuring build files"
BUILD_FILE="/tmp/build-now"
BUILD_FILE_NEXT="/tmp/build-next"
cp "$BUILD_SETTINGS_TEMPLATE" "$BUILD_FILE"
for IP_KEY in "${!IPS[@]}" ; do
IP=${IPS[$IP_KEY]}
sed "s/>$IP_KEY</>$IP</g" < "$BUILD_FILE" > "$BUILD_FILE_NEXT"
mv "$BUILD_FILE_NEXT" "$BUILD_FILE"
done
mv "$BUILD_FILE" "$BUILD_SETTINGS"
echo "Execute build"
for LOCATION in ${LOCATIONS[@]} ; do
echo "Build $LOCATION"
cd "$BINDIR/$LOCATION/"
mvn -s "$BUILD_SETTINGS" clean compile package
done
echo "Configure deployment configuration"
echo "HOST_TYPES[web]=\"${IPS[web]}\"" > $BINDIR/hosts.rc
echo "HOST_TYPES[store]=\"${IPS[store]}\"" >> $BINDIR/hosts.rc
echo "HOST_TYPES[registry]=\"${IPS[registry]}\"" >> $BINDIR/hosts.rc
echo "HOST_TYPES[enterprise]=\"${IPS[enterprise]}\"" >> $BINDIR/hosts.rc
echo "HOST_TYPES[adapter]=\"${IPS[adapter]}\"" >> $BINDIR/hosts.rc
echo "HOST_TYPES[database]=\"${IPS[database]}\"" >> $BINDIR/hosts.rc
echo "Done."
elif [ "$1" == "stop" ] ; then
echo "Stopping container ..."
for SERVER in $KUBE_NODE_TYPES ; do
$KUBECTL --cluster nc05 delete deployments "$SERVER"
done
echo "Done."
elif [ "$1" == "check" ] ; then
echo "$0 check successful"
else
echo "$0 <start|stop|check>"
fi
# end