Move info and list commands into shared functions

Also add better output formatting for both commands
This commit is contained in:
Jose Diaz-Gonzalez
2015-08-29 02:53:16 -04:00
parent 83e1dac6d6
commit 35c9ad5318
2 changed files with 49 additions and 14 deletions

View File

@@ -192,23 +192,11 @@ case "$1" in
;;
$PLUGIN_COMMAND_PREFIX:info)
[[ -z $2 ]] && dokku_log_fail "Please specify a name for the service"
verify_service_name "$2"
SERVICE="$2"; SERVICE_URL=$(service_url "$SERVICE")
echo " DSN: $SERVICE_URL"
service_info $2
;;
$PLUGIN_COMMAND_PREFIX:list)
CONTAINERS=$(ls $PLUGIN_DATA_ROOT 2> /dev/null)
if [[ -z $CONTAINERS ]]; then
echo "There are no $PLUGIN_SERVICE services"
else
echo "$PLUGIN_SERVICE services:"
for CONTAINER in $CONTAINERS; do
echo " - $CONTAINER"
done
fi
service_list
;;
$PLUGIN_COMMAND_PREFIX:clone)

View File

@@ -40,6 +40,41 @@ service_alias() {
fi
}
service_info() {
[[ -z $1 ]] && dokku_log_fail "Please specify a name for the service"
verify_service_name "$1"
local SERVICE="$1";
local SERVICE_URL=$(service_url "$SERVICE")
echo " DSN: $SERVICE_URL"
}
service_list() {
local SERVICES=$(ls $PLUGIN_DATA_ROOT 2> /dev/null)
if [[ -z $SERVICES ]]; then
dokku_log_warn "There are no $PLUGIN_SERVICE services"
else
dokku_log_info1_quiet "$PLUGIN_SERVICE services:"
for SERVICE in $SERVICES; do
dokku_log_verbose "$SERVICE $(service_status $SERVICE)"
done
fi
}
service_status() {
local SERVICE="$1";
local SERVICE_ROOT="$PLUGIN_DATA_ROOT/$SERVICE"
local ID="$(cat "$SERVICE_ROOT/ID")"
is_container_status "$ID" "Dead" && echo "(dead)" && return 0
is_container_status "$ID" "OOMKilled" && echo "(oomkilled)" && return 0
is_container_status "$ID" "Paused" && echo "(paused)" && return 0
is_container_status "$ID" "Restarting" && echo "(restarting)" && return 0
is_container_status "$ID" "Running" && echo "(running)" && return 0
echo "(stopped)" && return 0
}
service_url() {
local SERVICE="$1";
local SERVICE_ROOT="$PLUGIN_DATA_ROOT/$SERVICE"
@@ -49,3 +84,15 @@ service_url() {
local PASSWORD="$(cat "$SERVICE_ROOT/PASSWORD")"
echo "$PLUGIN_SCHEME://mysql:$PASSWORD@$IP:$PLUGIN_DATASTORE_PORT/$SERVICE"
}
is_container_status () {
local CID=$1
local TEMPLATE="{{.State.$2}}"
local CONTAINER_STATUS=$(docker inspect -f "$TEMPLATE" "$CID" || true)
if [[ "$CONTAINER_STATUS" == "true" ]]; then
return 0
else
return 1
fi
}