-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathproxmox_vm.pause_all_vms.to.jsons.sh
More file actions
executable file
·117 lines (88 loc) · 2.82 KB
/
proxmox_vm.pause_all_vms.to.jsons.sh
File metadata and controls
executable file
·117 lines (88 loc) · 2.82 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
#!/bin/bash
#### #### #### #### #### #### #### #### #### #### #### #### #### #### #### ####
# PR-31
set -euo pipefail
ACTION="vm_pause"
DEFAULT_OUTPUT_JSON=true
ARG_VM_NAME_FILTER=""
#### #### #### #### #### #### #### #### #### #### #### #### #### #### #### ####
show_example() {
echo " $(basename "$0") "
echo " $(basename "$0") --json "
echo " $(basename "$0") vm_name_team_01 --json "
echo " $(basename "$0") vm_name_team_02 --json "
echo " $(basename "$0") --text "
}
if [ "${1-}" = '-h' ] || [ "${1-}" = '--help' ]; then
echo
echo NAME
echo
echo " $(basename "$0") - Pause all vm - Execute the specified $ACTION action via Ansible (all vms) "
echo
echo OPTIONS
echo
echo " $(basename "$0") [-h|--help] "
echo " $(basename "$0") [--json] - force output as json "
echo " $(basename "$0") [VM_NAME_FILTER] [--json] - Force output in JSON format with a case insensitive filter on vm_name "
echo " $(basename "$0") [--text] - force output as text"
echo
echo EXAMPLE
echo
echo "$(show_example)"
exit 1
fi
#### #### #### #### #### #### #### #### #### #### #### #### #### #### #### ####
proxmox__inc.warmup_checks.sh
### #### #### #### #### #### #### #### #### #### #### #### #### #### #### ####
#
# define output type
#
#### #### #### #### #### #### #### #### #### #### #### #### #### #### #### ####
OUTPUT_JSON="$DEFAULT_OUTPUT_JSON"
case "${1:-}" in
--json)
OUTPUT_JSON=true
;;
--text)
OUTPUT_JSON=false
;;
"") ;;
*)
if [[ -z "$ARG_VM_NAME_FILTER" ]]; then
ARG_VM_NAME_FILTER="$1"
shift
else
devkit_utils.text.echo_error.to.text.to.stderr.sh "wrong number of arguments."
show_example
exit 1
fi
;;
esac
#### #### #### #### #### #### #### #### #### #### #### #### #### #### #### ####
#
JSON_LINE_REQ=$(devkit_proxmox.STDIN.stdin_or_jsons.to.jsons.sh "INT::vm_id" "STR::proxmox_node" "STR::action")
#
#### #### #### #### #### #### #### #### #### #### #### #### #### #### #### ####
IFS=$'\n'
for VM_ID in $(
if [[ -n "$ARG_VM_NAME_FILTER" ]]; then
proxmox_vm.list.to.jsons.sh "$ARG_VM_NAME_FILTER" |
devkit_transform.jsons.key_field_select.to.jsons.sh 'vm_status' 'running' |
jq -r '.vm_id'
else
proxmox_vm.list_running_and_extract_vm_id.to.text.sh
fi
); do
####
JSON_LINE_REQ=$(printf "%s\n" "$VM_ID" | devkit_proxmox.STDIN.stdin_or_jsons.to.jsons.sh "INT::vm_id" "STR::proxmox_node" "STR::action")
devkit_utils.text.echo_pass.to.text.to.stderr.sh " :: $JSON_LINE_REQ"
if [[ "$OUTPUT_JSON" == true ]]; then
printf '%s\n' "$JSON_LINE_REQ" |
proxmox__inc.jsons.basic_vm_actions.to.jsons.sh "$ACTION"
else
printf '%s\n' "$JSON_LINE_REQ" |
proxmox__inc.jsons.basic_vm_actions.to.text.sh "$ACTION"
devkit_utils.text.echo_pass.to.text.to.stderr.sh "pausing :: $VM_ID"
fi
sleep 3
done