mirror of
https://gitlab.com/psuapp/psu.git
synced 2024-08-30 18:12:34 +00:00
Add containers action
It prints the containers of a stack (or specific service, if the `--service=service_name` option is set)
This commit is contained in:
parent
53f4bde4eb
commit
4dbe06e99d
49
psu
49
psu
@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
#
|
#
|
||||||
# Deploy/update/undeploy/info/status Docker stacks in a Portainer instance.
|
# Deploy/update/undeploy/info/status Docker stacks in a Portainer instance.
|
||||||
# And also list stacks, services and tasks
|
# And also list stacks, services, tasks and containers
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
@ -27,8 +27,7 @@ set -e
|
|||||||
main() {
|
main() {
|
||||||
# Set arguments through envvars
|
# Set arguments through envvars
|
||||||
VERSION="0.2.0-alpha1"
|
VERSION="0.2.0-alpha1"
|
||||||
# TODO: Add a "containers" action, see: https://docs.docker.com/engine/api/v1.30/#operation/ContainerList
|
ACTIONS="deploy undeploy list info services tasks tasks_healthy containers status help version"
|
||||||
ACTIONS="deploy undeploy list info services tasks tasks_healthy status help version"
|
|
||||||
|
|
||||||
set_globals "$@"
|
set_globals "$@"
|
||||||
|
|
||||||
@ -153,6 +152,24 @@ main() {
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ $ACTION == "containers" ]; then
|
||||||
|
echo_verbose "List container(s) of stack '$PORTAINER_STACK_NAME'..."
|
||||||
|
local containers
|
||||||
|
containers=$(containers)
|
||||||
|
echo_debug "Containers action response -> $(echo $containers | jq -C .)"
|
||||||
|
if [ -n "$containers" ] && [ ! "$containers" == "[]" ]; then
|
||||||
|
if [ $QUIET_MODE == "false" ]; then
|
||||||
|
# Returns response in JSON format
|
||||||
|
echo "$containers"
|
||||||
|
else
|
||||||
|
# Only display container(s) id in quiet mode
|
||||||
|
echo "$containers" | jq -r '.[] | [.Id] | add'
|
||||||
|
fi
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
# Returns stack info
|
# Returns stack info
|
||||||
# If it already exists
|
# If it already exists
|
||||||
if [ $ACTION == "info" ]; then
|
if [ $ACTION == "info" ]; then
|
||||||
@ -973,6 +990,30 @@ services() {
|
|||||||
echo "$services"
|
echo "$services"
|
||||||
}
|
}
|
||||||
|
|
||||||
# TODO: add a "containers" function
|
containers() {
|
||||||
|
local containers
|
||||||
|
local filter_stack
|
||||||
|
local filter_task
|
||||||
|
local service_name
|
||||||
|
local filter_service
|
||||||
|
local filters
|
||||||
|
|
||||||
|
filter_stack="\"label\":{\"com.docker.stack.namespace=$PORTAINER_STACK_NAME\":true}"
|
||||||
|
filter_task="\"is-task\":{\"true\":true}"
|
||||||
|
if [ -n "$PORTAINER_SERVICE_NAME" ]; then
|
||||||
|
service_name=${PORTAINER_STACK_NAME}_${PORTAINER_SERVICE_NAME}
|
||||||
|
filter_service="\"label\":{\"com.docker.swarm.service.name=$service_name\":true}"
|
||||||
|
fi
|
||||||
|
filters="{$filter_stack$(if [ -n "$filter_service" ]; then echo ",$filter_service"; fi),$filter_task}"
|
||||||
|
containers=$(http \
|
||||||
|
--check-status \
|
||||||
|
--ignore-stdin \
|
||||||
|
--verify=$HTTPIE_VERIFY_SSL \
|
||||||
|
"$PORTAINER_URL/api/endpoints/$PORTAINER_ENDPOINT/docker/containers/json" \
|
||||||
|
filters=="$filters" \
|
||||||
|
"Authorization: Bearer $AUTH_TOKEN")
|
||||||
|
check_for_errors $? "$containers"
|
||||||
|
echo "$containers"
|
||||||
|
}
|
||||||
|
|
||||||
main "$@"
|
main "$@"
|
||||||
|
Loading…
Reference in New Issue
Block a user