dk: sta affiche le statut pour tous les services
This commit is contained in:
parent
1960c0c94e
commit
45976f45c2
59
dk
59
dk
|
@ -92,10 +92,11 @@ COMMANDES
|
|||
$scriptname -- service logs web -f
|
||||
Pour des cas d'utilisation plus complexe, il faut lancer directement
|
||||
docker service
|
||||
sta|status SERVICE [num]
|
||||
sta|status [SERVICE] [num]
|
||||
Afficher le status du service spécifié: pour chaque occurence, sur quel
|
||||
noeud il tourne (ou tournait), quel est le statut actuel ainsi que le
|
||||
message associé.
|
||||
message associé. Si le service n'est pas spécifié, prendre la liste des
|
||||
services affichée par docker service ls
|
||||
'num' est le numéro de l'instance de service. Si ce numéro est précisé,
|
||||
afficher les informations uniquement pour cette instance là, ainsi que
|
||||
les logs
|
||||
|
@ -1243,11 +1244,11 @@ function __status_query_task() {
|
|||
setx serviceID=json_get 0.ServiceID <<<"$taskData"
|
||||
}
|
||||
function __status_query_service() {
|
||||
[ -n "$serviceData" ] && return
|
||||
setx serviceID=json_get 0.ServiceID <<<"$taskData"
|
||||
[ "$serviceID" == "$pServiceID" ] && return
|
||||
setx serviceData="$DOCKER" inspect "$serviceID"
|
||||
setx serviceName=json_get 0.Spec.Name <<<"$serviceData"
|
||||
setx serviceUpdateStatus=json_get 0.UpdateStatus.Message <<<"$serviceData"
|
||||
pServiceID="$serviceID"
|
||||
}
|
||||
function __status_process_data() {
|
||||
__status_query_task
|
||||
|
@ -1273,35 +1274,47 @@ $serviceName: $serviceUpdateStatus
|
|||
let num=num+1
|
||||
}
|
||||
function auto_status() {
|
||||
local service="$1"; shift
|
||||
[ -n "$service" ] || {
|
||||
eerror "Vous devez spécifier le nom du service"
|
||||
return 1
|
||||
}
|
||||
if [ -f docker-compose.yml -o -f docker-stack.yml ]; then
|
||||
# si on est dans répertoire de projet, il est possible de spécifier le
|
||||
# service sans préfixe
|
||||
local -a replace_env_args env_args
|
||||
local -a replace_deploy_args deploy_args
|
||||
local project_name container_name
|
||||
docker_set_deploy_args set_container_name
|
||||
service="${container_name}_${service#${container_name}_}"
|
||||
local -a services
|
||||
local service
|
||||
if [[ "$1" == *=* ]]; then
|
||||
: # le premier argument est un filtre
|
||||
elif [ -n "$1" -a -z "${1//[0-9]/}" ]; then
|
||||
: # le premier argument est un numéro d'instance
|
||||
else
|
||||
# le premier argument est un nom de service
|
||||
service="$1"; shift
|
||||
fi
|
||||
if [ -n "$service" ]; then
|
||||
if [ -f docker-compose.yml -o -f docker-stack.yml ]; then
|
||||
# si on est dans répertoire de projet, il est possible de spécifier
|
||||
# le service sans préfixe
|
||||
local -a replace_env_args env_args
|
||||
local -a replace_deploy_args deploy_args
|
||||
local project_name container_name
|
||||
docker_set_deploy_args set_container_name
|
||||
service="${container_name}_${service#${container_name}_}"
|
||||
fi
|
||||
services=("$service")
|
||||
else
|
||||
# lister les services qui tournent actuellement
|
||||
setx -a services=docker service ls --format "{{.Name}}"
|
||||
fi
|
||||
|
||||
local -a pscmd
|
||||
local -a psargs
|
||||
local fnum
|
||||
pscmd=(
|
||||
"$DOCKER" service ps "$service"
|
||||
psargs=(
|
||||
--format "taskID={{.ID}};node={{.Node}};desiredState='{{.DesiredState}}';currentState='{{.CurrentState}}';__status_process_data"
|
||||
)
|
||||
while [[ "$1" == *=* ]]; do
|
||||
pscmd+=(--filter "$1")
|
||||
psargs+=(--filter "$1")
|
||||
shift
|
||||
done
|
||||
fnum="$1"; shift
|
||||
|
||||
local num=0 taskData taskStatus taskSlot serviceID serviceData serviceName serviceUpdateStatus
|
||||
eval "$("${pscmd[@]}")"
|
||||
local num=0 taskData taskStatus taskSlot pServiceID serviceID serviceData serviceName serviceUpdateStatus
|
||||
for service in "${services[@]}"; do
|
||||
eval "$("$DOCKER" service ps "$service" "${psargs[@]}")"
|
||||
done
|
||||
}
|
||||
|
||||
function default_compose_show_ip() {
|
||||
|
|
Loading…
Reference in New Issue