feat(juju): add jclean function to destroy all registered controllers (#10426)

Closes #10426
This commit is contained in:
sed-i 2021-11-15 16:27:19 -05:00 committed by Marc Cornellà
parent c41f2e7a09
commit f045810697
No known key found for this signature in database
GPG key ID: 0314585E776A9C1B
2 changed files with 33 additions and 0 deletions

View file

@ -113,5 +113,6 @@ Naming convention:
- `jaddr <app_name> [unit_num]`: display app or unit IP address.
- `jreld <relation_name> <app_name> <unit_num>`: display app and unit relation data.
- `jclean`: destroy all controllers
- `wjst [interval_secs] [args_for_watch]`: watch juju status, with optional interval
(default: 5s); you may pass additional arguments to `watch`.

View file

@ -95,6 +95,37 @@ jaddr() {
fi
}
# Destroy all controllers
jclean() {
if (( ! ${+commands[jq]} )); then
echo "jq is required but could not be found." >&2
return 1
fi
local controllers=$(juju controllers --format=json | jq -r '.controllers | keys[]' 2>/dev/null)
if [[ -z "$controllers" ]]; then
echo "No controllers registered"
return 0
fi
echo "This will forcefully destroy all storages, models and controllers."
echo "Controllers to be destroyed:"
echo "$controllers"
if ! read -q '?Are you sure (y/n)? '; then
echo
echo "Aborted."
return 0
fi
echo
for controller in ${=controllers}; do
timeout 2m juju destroy-controller --destroy-all-models --destroy-storage --force --no-wait -y $controller
timeout 2m juju kill-controller -y -t 0 $controller 2>/dev/null
timeout 10s juju unregister $controller 2>/dev/null
done
}
# Display app and unit relation data
jreld() {
# $1 = relation name
@ -125,3 +156,4 @@ wjst() {
shift $(( $# > 0 ))
watch -n "$interval" --color juju status --relations --storage --color "$@"
}