Madagascar / scripts / cluster-nodes.sh
Newer Older
f16725e 3 months ago History
77 lines | 1.764kb
Bogdan Timofte authored 3 months ago
1
#!/bin/bash
2

            
3
set -euo pipefail
4

            
5
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
6
ROOT_DIR="$(cd "${SCRIPT_DIR}/.." && pwd)"
7
CONFIG_PATH="${ROOT_DIR}/cluster-context/madagascar.json"
8
CLUSTER_NAME="madagascar"
9
FORMAT="ip"
10

            
11
usage() {
12
    cat <<EOF
13
Usage: $0 [--cluster <name>] [--format ip|name|name=ip]
14

            
15
Reads node information from cluster-context/madagascar.json.
16
EOF
17
}
18

            
19
while [[ $# -gt 0 ]]; do
20
    case "$1" in
21
        --cluster)
22
            CLUSTER_NAME="$2"
23
            shift 2
24
            ;;
25
        --format)
26
            FORMAT="$2"
27
            shift 2
28
            ;;
29
        -h|--help)
30
            usage
31
            exit 0
32
            ;;
33
        *)
34
            echo "ERROR: unknown option: $1" >&2
35
            usage
36
            exit 1
37
            ;;
38
    esac
39
done
40

            
41
if [[ ! -f "${CONFIG_PATH}" ]]; then
42
    echo "ERROR: missing cluster config: ${CONFIG_PATH}" >&2
43
    exit 1
44
fi
45

            
46
case "${FORMAT}" in
47
    ip)
48
        jq -r --arg cluster "${CLUSTER_NAME}" '
49
            .clusters[$cluster].nodes
50
            | to_entries[]
51
            | (
52
                .value.ip
53
                // .value.wan.vmbr443.address
54
                // empty
55
              )
56
            | split("/")[0]
57
        ' "${CONFIG_PATH}"
58
        ;;
59
    name)
60
        jq -r --arg cluster "${CLUSTER_NAME}" '
61
            .clusters[$cluster].nodes
62
            | to_entries[]
63
            | .key
64
        ' "${CONFIG_PATH}"
65
        ;;
66
    name=ip)
67
        jq -r --arg cluster "${CLUSTER_NAME}" '
68
            .clusters[$cluster].nodes
69
            | to_entries[]
70
            | .key + "=" + ((.value.ip // .value.wan.vmbr443.address // empty) | split("/")[0])
71
        ' "${CONFIG_PATH}"
72
        ;;
73
    *)
74
        echo "ERROR: unsupported format: ${FORMAT}" >&2
75
        exit 1
76
        ;;
77
esac