Commit 0ca40d0e authored by Jorge Moratinos's avatar Jorge Moratinos
Browse files

improvement over run_capif_tests2

parent 6c1b7b87
Loading
Loading
Loading
Loading
+90 −0
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ fi

echo "CAPIF_HOSTNAME = $CAPIF_HOSTNAME"
echo "CAPIF_REGISTER = $CAPIF_REGISTER"
echo "CAPIF_INTERCONNECTION_HOSTNAME = $CAPIF_INTERCONNECTION_HOSTNAME"
echo "CAPIF_HTTP_PORT = $CAPIF_HTTP_PORT"
echo "CAPIF_HTTPS_PORT = $CAPIF_HTTPS_PORT"
echo "CAPIF_VAULT = $CAPIF_VAULT"
@@ -27,6 +28,95 @@ echo "CAPIF_VAULT_TOKEN = $CAPIF_VAULT_TOKEN"
echo "MOCK_SERVER_URL = $MOCK_SERVER_URL"
echo "DOCKER_ROBOT_IMAGE = $DOCKER_ROBOT_IMAGE:$DOCKER_ROBOT_IMAGE_VERSION"

resolve_hostname() {
  local hostname="$1"

  if command -v getent >/dev/null 2>&1; then
    getent hosts "$hostname" >/dev/null 2>&1
    return $?
  fi

  if command -v dscacheutil >/dev/null 2>&1; then
    dscacheutil -q host -a name "$hostname" | grep -q "^ip_address:"
    return $?
  fi

  if command -v host >/dev/null 2>&1; then
    host "$hostname" >/dev/null 2>&1
    return $?
  fi

  if command -v nslookup >/dev/null 2>&1; then
    nslookup "$hostname" >/dev/null 2>&1
    return $?
  fi

  return 1
}

has_localhost_hosts_entry() {
  local hostname="$1"

  awk -v host="$hostname" '
    $0 !~ /^[[:space:]]*#/ && $1 == "127.0.0.1" {
      for (i = 2; i <= NF; i++) {
        if ($i == host) {
          found = 1
        }
      }
    }
    END { exit(found ? 0 : 1) }
  ' /etc/hosts
}

validate_hostname_or_local_hosts() {
  local hostnames=("$CAPIF_HOSTNAME" "$CAPIF_REGISTER" "$CAPIF_INTERCONNECTION_HOSTNAME")
  local missing=()

  for hostname in "${hostnames[@]}"; do
    if resolve_hostname "$hostname"; then
      echo "Hostname '$hostname' resolves correctly."
      continue
    fi

    echo "Hostname '$hostname' does not resolve via DNS/system resolver."
    if has_localhost_hosts_entry "$hostname"; then
      echo "Found local mapping in /etc/hosts: 127.0.0.1 $hostname"
    else
      missing+=("$hostname")
    fi
  done

  if [[ ${#missing[@]} -gt 0 ]]; then
    echo "Error: missing local host mappings for: ${missing[*]}" >&2
    echo "Please add entries in /etc/hosts at least as 127.0.0.1 for each hostname, for example:" >&2
    for hostname in "${missing[@]}"; do
      echo "  127.0.0.1 $hostname" >&2
    done
    exit 1
  fi
}

validate_required_variables() {
  local required_vars=("CAPIF_HOSTNAME" "CAPIF_REGISTER" "CAPIF_INTERCONNECTION_HOSTNAME")
  local missing=()

  for var_name in "${required_vars[@]}"; do
    if [[ -z "${!var_name:-}" ]]; then
      missing+=("$var_name")
    fi
  done

  if [[ ${#missing[@]} -gt 0 ]]; then
    echo "Error: required environment variables are not set: ${missing[*]}" >&2
    exit 1
  fi
}

validate_required_variables

validate_hostname_or_local_hosts

INPUT_OPTIONS=$@
# Check if input is provided
if [ -z "$1" ]; then