-
Notifications
You must be signed in to change notification settings - Fork 30
/
Copy pathzkcli-util.sh
executable file
·163 lines (128 loc) · 3.05 KB
/
zkcli-util.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
#!/bin/bash
set -e
export DOCKER_BIN="sudo docker"
export DOCKER_COMPOSE_BIN="sudo docker-compose"
function my_readlink() {
case "$OSTYPE" in
solaris*) echo "SOLARIS" ;;
darwin*)
echo $( cd "$1" ; pwd -P )
;;
linux*)
echo $(readlink -f $1)
;;
bsd*) echo "BSD" ;;
*) echo "unknown: $OSTYPE" ;;
esac
}
PWD=$(pwd)
PWD_PATH=$(my_readlink $PWD)
SCRIPT_PATH=$(my_readlink $(dirname "$0"))
SCRIPT_NAME=$(basename "$0")
SCRIPT_DIR=$(dirname $SCRIPT_PATH)
if [ "$SCRIPT_PATH" == "$PWD" ]
then
export SZD_HOME="$SCRIPT_PATH"
else
echo ""
echo "execute:"
echo ""
echo " cd "$SCRIPT_PATH
echo " ./"$SCRIPT_NAME
echo ""
exit
fi
container_name=solr
container_version=6.2.1
if [ "A$SZD_HOME" == "A" ]
then
echo "ERROR: "\$SZD_HOME" environment variable not found!"
exit 1
fi
IMAGE=$($DOCKER_BIN images | grep "${container_name}" | grep "${container_version} " | awk '{print $3}')
if [[ -z $IMAGE ]]; then
$DOCKER_BIN pull ${container_name}:${container_version}
rc=$?
if [[ $rc != 0 ]]
then
echo "${container_name} image not found... Did you run 'build-images.sh' ?"
exit $rc
fi
fi
found_confdir=false
found_cmd=false
for item in "${@:1}"
do
collect_parameter=true
if [ "$found_confdir" == "true" ]
then
WORK_PATH="$item"
found_confdir=false
item="/opt/conf"
fi
if [ "$found_cmd" == "true" ]
then
ZKCLI_CMD="$item"
found_cmd=false
fi
if [ "$item" == "--cmd" ]
then
found_cmd=true
fi
if [ "$item" == "-confdir" ]
then
found_confdir=true
fi
if [ "$item" == "-d" ]
then
found_confdir=true
fi
if [ "$collect_parameter" == "true" ]
then
ZKCLI_PARAMS="$ZKCLI_PARAMS $item"
fi
done
echo $ZKCLI_PARAMS
if [ "A$WORK_PATH" != "A" ]
then
if [ ! -d "$WORK_PATH" ]
then
echo "ERROR: $WORK_PATH is not a directory or cannot be found..."
exit 1
fi
case "$OSTYPE" in
solaris*) echo "SOLARIS" ;;
darwin*)
echo "OSX"
WORK_PATH=$( cd "$WORK_PATH" ; pwd -P )
echo $WORK_PATH
;;
linux*)
echo "LINUX"
WORK_PATH=$(readlink -f $WORK_PATH)
;;
bsd*) echo "BSD" ;;
*) echo "unknown: $OSTYPE" ;;
esac
WORK_PATH=$WORK_PATH
if [ ! -d "$WORK_PATH" ]
then
echo "ERROR: $WORK_PATH is not a directory or cannot be found..."
exit 1
fi
ZKCLI_CONTAINER_ID=$( $DOCKER_BIN run -d \
-v $WORK_PATH:/opt/conf \
${container_name}:${container_version} /opt/solr/server/scripts/cloud-scripts/zkcli.sh $ZKCLI_PARAMS )
# Write the config to the config container
sleep 1
ZKCLI_HOSTNAME=$($DOCKER_BIN inspect $ZKCLI_CONTAINER_ID | grep \"Hostname\" | sed 's/\"/ /g' | awk '{ print $3 }')
echo "--- $ZKCLI_HOSTNAME"
echo "---"
echo -n "Waiting for execution of cmd: $ZKCLI_CMD .."
while [ "A$( $DOCKER_BIN ps | grep $ZKCLI_HOSTNAME )" != "A" ] ; do echo -n "." ; sleep 1; done
echo " done."
$DOCKER_BIN logs $ZKCLI_HOSTNAME
$DOCKER_BIN rm $ZKCLI_HOSTNAME
else
echo "WORK_PATH: $WORK_PATH not found."
fi