#!/usr/bin/env bash
a1="${1:-}"; a2="${2:-}"; a3="${3:-}"; rest=" $* "
[ "$a1 $a2" = "token issue" ] && exit 0
FIPVAL="${FIPVAL:-10.12.5.103}"; TENANT="${TENANT:-10.20.0.107}"
present_vm() { [ "${VM_PRESENT:-0}" = 1 ] || [ -f "${MK_VM:-/x}" ]; }
case "$a1 $a2" in
  "server show")
    present_vm || exit 1
    if printf '%s' "$rest" | grep -q -- '-f json'; then
      if [ "${ADDR_ONLY_FIP:-0}" = 1 ]; then echo "{\"addresses\":{\"capi-mgmt-net\":[\"$FIPVAL\"]}}"
      else echo "{\"addresses\":{\"capi-mgmt-net\":[\"$TENANT\",\"$FIPVAL\"]}}"; fi
    elif printf '%s' "$rest" | grep -q -- '-c status'; then
      echo "${VM_STATUS:-ACTIVE}"        # also covers '-c status -c addresses' confirm (status word present)
    else
      echo vm-id                          # -c id existence probe
    fi
    exit 0 ;;
  "server create") : > "${MK_VM:?}"; exit 0 ;;
  "server add")    exit 0 ;;              # server add floating ip
  "port list")     echo port-id; exit 0 ;;
  "floating ip")
    case "$a3" in
      list)   [ "${FIP_PRESENT:-0}" = 1 ] && echo "$FIPVAL"; exit 0 ;;
      create) echo "$FIPVAL"; exit 0 ;;
    esac ;;
esac
exit 0
