-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmanageIndexingFramework.sh
214 lines (173 loc) · 7.39 KB
/
manageIndexingFramework.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
#!/bin/bash
################################################################################
# Management for metastore framework
# - Managing the following instances
# - elasticsearch
# - indexing-service
# Usage:
# bash manageIndexingFramework.sh [init|start|stop]
################################################################################
################################################################################
# Define default values for variables
################################################################################
DOCKER_NETWORK=network4indexing
DOCKER_ELASTIC=elastic4indexing
DOCKER_ELASTIC_TEST=elastic4test
DOCKER_INDEXING=indexing4docker
DOCKER_METASTORE=metastore4indexing
DOCKER_RABBIT=rabbitmq4indexing
################################################################################
# START DECLARATION FUNCTIONS
################################################################################
################################################################################
function usage {
################################################################################
echo "Script for managing indexing service."
echo "USAGE:"
echo " $0 [init|start|test|stop_test|stop]"
echo " "
echo " init - Initialize/Reset the whole framework"
echo " start - Start stopped framework"
echo " test - Start elasticsearch only"
echo " stop_test - Stop elasticsearch only"
echo " stop - Stop framework"
exit 1
}
################################################################################
function checkParameters {
################################################################################
# Check no of parameters.
if [ "$#" -ne 1 ]; then
echo "Illegal number of parameters!"
usage
fi
}
################################################################################
function initFramework {
################################################################################
printInfo "Setup Framework"
echo "Setup configuration directories for metaStore and indexing-Service"
mkdir -p "$ACTUAL_DIR/settings/metastore"
mkdir -p "$ACTUAL_DIR/settings/indexing"
echo "Setup network for docker..."
docker network create $DOCKER_NETWORK
echo "Start RabbitMQ server..."
deleteDockerContainer $DOCKER_RABBIT
docker run -d --hostname rabbitmq --net $DOCKER_NETWORK --name $DOCKER_RABBIT -p 5672:5672 -p 15672:15672 rabbitmq:3-management
echo "Start metaStore2..."
deleteDockerContainer $DOCKER_METASTORE
docker run -d -v "$ACTUAL_DIR/settings/metastore":/spring/metastore2/config --net $DOCKER_NETWORK --name $DOCKER_METASTORE -p8040:8040 ghcr.io/kit-data-manager/metastore2:latest
echo "Start elasticsearch server..."
deleteDockerContainer $DOCKER_ELASTIC
docker run -d --net $DOCKER_NETWORK --name $DOCKER_ELASTIC -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.9.3
echo "Start Indexing-Service..."
deleteDockerContainer $DOCKER_INDEXING
docker run -d -v "$ACTUAL_DIR/settings/metastore":/spring/indexing-service/config --net $DOCKER_NETWORK --name $DOCKER_INDEXING -p 8050:8050 ghcr.io/kit-data-manager/indexing-service:latest
#printInfo "Ready to use metastore"
}
################################################################################
function initTest {
################################################################################
printInfo "Setup Test Framework"
#echo "Start elasticsearch server..."
deleteDockerContainer $DOCKER_ELASTIC_TEST
docker run -d --name $DOCKER_ELASTIC_TEST -p 41200:9200 -p 41300:9300 -e "discovery.type=single-node" -e "xpack.security.enabled=false" elasticsearch:8.11.1
echo "Wait until server is up and running. This may last some seconds..."
wget localhost:41200 -q -o /dev/null -O /dev/null
printInfo "Ready to use indexing service 4 test"
}
################################################################################
function finishTest {
################################################################################
printInfo "Shutdown Test Framework"
echo "Stop elasticsearch server..."
docker stop $DOCKER_ELASTIC_TEST
printInfo "Indexing service 4 test stopped."
}
################################################################################
function startFramework {
################################################################################
printInfo "(Re)start metastore and all linked services..."
echo "Start RabbitMQ server..."
docker start $DOCKER_RABBIT
echo "Start metastore2..."
docker start $DOCKER_METASTORE
echo "Start elasticsearch server..."
docker start $DOCKER_ELASTIC
echo "Start Indexing-Service..."
docker start $DOCKER_INDEXING
printInfo "Framework started!"
}
################################################################################
function stopFramework {
################################################################################
printInfo "Shutdown indexing service and all linked services..."
echo "Stop Indexing-Service..."
docker stop $DOCKER_INDEXING
echo "Stop elasticsearch server..."
docker stop $DOCKER_ELASTIC
echo "Stop metastore2..."
docker stop $DOCKER_METASTORE
echo "Stop RabbitMQ server..."
docker stop $DOCKER_RABBIT
printInfo "Framework stopped!"
}
################################################################################
function deleteDockerContainer {
################################################################################
printInfo "Delete docker image '$1'"
if docker ps | grep -q "$1"; then
echo "Docker container '$1' still running -> Stop docker container"
docker stop "$1"
fi
if docker ps -a | grep -q "$1"; then
echo "Docker container '$1' exists -> Remove docker container"
docker rm "$1"
fi
}
################################################################################
function printInfo {
################################################################################
echo "---------------------------------------------------------------------------"
echo "$*"
echo "---------------------------------------------------------------------------"
}
################################################################################
# END DECLARATION FUNCTIONS / START OF SCRIPT
################################################################################
################################################################################
# Test for commands used in this script
################################################################################
testForCommands="type echo grep mkdir docker"
for command in $testForCommands
do
if ! type "$command" >> /dev/null; then
echo "Error: command '$command' is not installed!"
exit 1
fi
done
################################################################################
# Determine directory of script.
################################################################################
ACTUAL_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
################################################################################
# Check parameters
################################################################################
checkParameters "$*"
################################################################################
# Manage framework
################################################################################
case "$1" in
init) initFramework
;;
start) startFramework
;;
test) initTest
;;
stop_test) finishTest
;;
stop) stopFramework
;;
*) usage
;;
esac