| 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 |