remove screen usage for process management
diff --git a/voltha b/voltha
index b164bec..e5148f0 100755
--- a/voltha
+++ b/voltha
@@ -31,7 +31,7 @@
}
VOLTCTL_VERSION=${VOLTCTL_VERSION:-0.0.5-dev}
-KIND_VERSION=${KIND_VERSION:-v0.4.0}
+KIND_VERSION=${KIND_VERSION:-v0.5.1}
_VOLTCTL_VERSION=$(echo $VOLTCTL_VERSION | sed -e 's/-/_/g')
BLACK=
@@ -497,10 +497,49 @@
return 0
}
+port_forward() {
+ local NS=$1
+ local SVC=$2
+ local FROM_PORT=$3
+ local TO_PORT=$4
+ local TAG=$SVC-$NAME
+
+ (set -x; _TAG=$TAG bash -c "while true; do kubectl port-forward -n $NS service/$SVC $FROM_PORT:$TO_PORT; done" >>$LOG 2>&1 &) >>$LOG 2>&1
+}
+
+kill_port_forward() {
+ local TAG=$1-$NAME
+ local PIDS=$(ps e -ww | grep "_TAG=$TAG" | grep -v grep | awk '{print $1}')
+ local KIDS=
+ if [ ! -z "$PIDS" ]; then
+ for P in $PIDS; do
+ if [ $(ps -o ppid $P | tail -n +2) -eq 1 ]; then
+ (set -x; kill -9 $P >>$LOG 2>&1) >>$LOG 2>&1
+ else
+ KIDS="$KIDS $P"
+ fi
+ done
+ if [ ! -z "$KIDS" ]; then
+ (set -x; kill -9 $KIDS >>$LOG 2>&1) >>$LOG 2>&1
+ fi
+ fi
+}
+
if [ "$1" == "down" ]; then
echo "Tearing down voltha cluster $NAME"
LOG="down-$NAME.log"
echo $(date -u +"%Y%m%dT%H%M%SZ") >$LOG
+ bspin "Remove port-forwards: onos-ui-$NAME"
+ kill_port_forward onos-ui
+ sspin "Remove port-forwards: onos-ssh-$NAME$CEOL"
+ kill_port_forward onos-ssh
+ sspin "Remove port-forwards: voltha-api-$NAME$CEOL"
+ kill_port_forward voltha-api
+ sspin "Remove port-forwards: voltha-ssh-$NAME$CEOL"
+ kill_port_forward voltha-ssh
+ sspin "Remove port-forwards: voltha-etcd-$NAME$CEOL"
+ kill_port_forward voltha-etcd-cluster-client
+ espin "$VERIFIED Remove port-forwards$CEOL"
if [ $DEPLOY_K8S == "yes" ]; then
if [ -x ./bin/kind ]; then
bspin "Delete Kubernetes Kind Cluster"
@@ -516,7 +555,7 @@
for i in $EXISTS; do
if [ $(echo $EXPECT | grep -c $i) -eq 1 ]; then
sspin "Remove Helm Deployments: $i$CEOL"
- (set -x; ./bin/helm delete --purge $i >>$LOG 2>&1) >>$LOG 2>&1
+ (set -x; ./bin/helm delete --no-hooks --purge $i >>$LOG 2>&1) >>$LOG 2>&1
fi
done
espin "$VERIFIED Remove Helm Deployments$CEOL"
@@ -542,32 +581,6 @@
wait_for_pods "voltha" $EXPECT "not" -1 "Waiting for VOLTHA PODs to terminate" $PODS
fi
fi
- bspin "Remove port-forwards: onos-ui-$NAME"
- for i in $(screen -ls | grep onos-ui-$NAME | awk '{print $1}'); do
- sspin
- (set -x; screen -X -S $i quit >>$LOG 2>&1) >>$LOG 2>&1
- done
- sspin "Remove port-forwards: onos-ssh-$NAME$CEOL"
- for i in $(screen -ls | grep onos-ssh-$NAME | awk '{print $1}'); do
- sspin
- (set -x; screen -X -S $i quit >>$LOG 2>&1) >>$LOG 2>&1
- done
- sspin "Remove port-forwards: voltha-api-$NAME$CEOL"
- for i in $(screen -ls | grep voltha-api-$NAME | awk '{print $1}'); do
- sspin
- (set -x; screen -X -S $i quit >>$LOG 2>&1) >>$LOG 2>&1
- done
- sspin "Remove port-forwards: voltha-ssh-$NAME$CEOL"
- for i in $(screen -ls | grep voltha-ssh-$NAME | awk '{print $1}'); do
- sspin
- (set -x; screen -X -S $i quit >>$LOG 2>&1) >>$LOG 2>&1
- done
- sspin "Remove port-forwards: voltha-etcd-$NAME$CEOL"
- for i in $(screen -ls | grep voltha-etcd-$NAME | awk '{print $1}'); do
- sspin
- (set -x; screen -X -S $i quit >>$LOG 2>&1) >>$LOG 2>&1
- done
- espin "$VERIFIED Remove port-forwards$CEOL"
exit
fi
@@ -719,11 +732,18 @@
espin $NO_ENTRY
else
bspin "Verify Kubernetes/Kind $HELM"
+ IS_INSTALLED=0
+ OP_TYPE="install"
if [ -x $GOPATH/bin/kind ]; then
- espin $VERIFIED
- else
+ OP_TYPE="upgrade"
+ if [ $($GOPATH/bin/kind --version | grep -c $KIND_VERSION) -eq 1 ]; then
+ IS_INSTALLED=1
+ espin $VERIFIED
+ fi
+ fi
+ if [ $IS_INSTALLED -eq 0 ]; then
espin $NOT_VERIFIED
- bspin - "Download and install Kubernetes/kind $DOWNLOAD"
+ bspin - "Download and $OP_TYPE Kubernetes/kind $DOWNLOAD"
(set -x; curl -o $GOPATH/bin/kind -sSL https://github.com/kubernetes-sigs/kind/releases/download/$KIND_VERSION/kind-$HOSTOS-$HOSTARCH >>$LOG 2>&1) >>$LOG 2>&1
(set -x; chmod 755 $GOPATH/bin/kind >>$LOG 2>&1) >>$LOG 2>&1
espin - $VERIFIED
@@ -749,6 +769,7 @@
espin - $VERIFIED
fi
fi
+
if [ "$WITH_TIMINGS" == "yes" ]; then
printtime $(expr $(date +%s) - $STIME)
fi
@@ -956,18 +977,12 @@
wait_for_pods - "default" 1 "includes" -1 "Waiting for ONOS to start" "onos-.*"
bspin - "Forward ONOS API port $FORWARD"
- for i in $(screen -ls | grep onos-ui-$NAME | awk '{print $1}'); do
- (set -x; screen -X -S $i quit >>$LOG 2>&1) >>$LOG 2>&1
- done
- (set -x; screen -dmS onos-ui-$NAME bash -c "while true; do kubectl port-forward service/onos-ui $ONOS_API_PORT:8181; done" >>$LOG 2>&1) >>$LOG 2>&1
+ kill_port_forward onos-ui
+ port_forward default onos-ui $ONOS_API_PORT 8181
espin - $VERIFIED
bspin - "Forward ONOS SSH port $FORWARD"
- for i in $(screen -ls | grep onos-ssh-$NAME | awk '{print $1}'); do
- (set -x; screen -X -S $i quit >>$LOG 2>&1) >>$LOG 2>&1
- done
-
-
- (set -x; screen -dmS onos-ssh-$NAME bash -c "while true; do kubectl port-forward service/onos-ssh $ONOS_SSH_PORT:8101; done" >>$LOG 2>&1) >>$LOG 2>&1
+ kill_port_forward onos-ssh
+ port_forward default onos-ssh $ONOS_SSH_PORT 8101
espin - $VERIFIED
bspin - "Verify or download ONOS configuration support files $DOWNLOAD"
ONOS_FILES="olt-onos-enableExtraneousRules.json olt-onos-olt-settings.json onos-aaa.json \
@@ -1106,22 +1121,16 @@
STIME=$(date +%s)
bspin - "Forward VOLTHA API port $FORWARD"
-for i in $(screen -ls | grep voltha-api-$NAME | awk '{print $1}'); do
- (set -x; screen -X -S $i quit >>$LOG 2>&1) >>$LOG 2>&1
-done
-(set -x; screen -dmS voltha-api-$NAME bash -c "while true; do kubectl port-forward -n voltha service/voltha-api $VOLTHA_API_PORT:55555; done" >>$LOG 2>&1) >>$LOG 2>&1
+kill_port_forward voltha-api
+port_forward voltha voltha-api $VOLTHA_API_PORT 55555
espin - $VERIFIED
bspin - "Forward VOLTHA SSH port $FORWARD"
-for i in $(screen -ls | grep voltha-ssh-$NAME | awk '{print $1}'); do
- (set -x; screen -X -S $i quit >>$LOG 2>&1) >>$LOG 2>&1
-done
-(set -x; screen -dmS voltha-ssh-$NAME bash -c "while true; do kubectl port-forward -n voltha service/voltha-cli $VOLTHA_SSH_PORT:5022; done" >>$LOG 2>&1) >>$LOG 2>&1
+kill_port_forward voltha-ssh
+port_forward voltha voltha-ssh $VOLTHA_SSH_PORT 5022
espin - $VERIFIED
bspin - "Forward VOLTHA ETCD port $FORWARD"
-for i in $(screen -ls | grep voltha-etcd-$NAME | awk '{print $1}'); do
- (set -x; screen -X -S $i quit >>$LOG 2>&1) >>$LOG 2>&1
-done
-(set -x; screen -dmS voltha-etcd-$NAME bash -c "while true; do kubectl port-forward -n voltha service/voltha-etcd-cluster-client $VOLTHA_ETCD_PORT:2379; done" >>$LOG 2>&1) >>$LOG 2>&1
+kill_port_forward voltha-etcd-cluster-client
+port_forward voltha voltha-etcd-cluster-client $VOLTHA_ETCD_PORT 2379
espin - $VERIFIED
if [ "$WITH_TIMINGS" == "yes" ]; then
printtime $(expr $(date +%s) - $STIME)