variable "nodes" {
  type = map(object({
    ip                 = string
    role               = string
    managed            = optional(bool, true)
    ignore_unavailable = optional(bool, false)
    ssh_user           = optional(string)
    ssh_port           = optional(number)
    ssh_config_file    = optional(string)
    ssh_identity_file  = optional(string)
    labels             = optional(map(string), {})
  }))
  description = "Atlas host and Kubernetes node inventory."
}

variable "default_ssh_user" {
  type        = string
  description = "Default SSH user for generated Ananke inventory."
}

variable "default_ssh_port" {
  type        = number
  description = "Default SSH port for generated Ananke inventory."
}

variable "default_ssh_config_file" {
  type        = string
  description = "Default SSH config file for generated Ananke inventory."
}

variable "default_ssh_identity_file" {
  type        = string
  description = "Default SSH identity file for generated Ananke inventory."
}

variable "ananke_inventory_fragment_path" {
  type        = string
  description = "Generated Ananke inventory fragment path."
}

variable "label_field_manager" {
  type        = string
  description = "Kubernetes server-side apply field manager for node labels."
}

variable "force_node_label_conflicts" {
  type        = bool
  description = "Force overwriting label field ownership conflicts during planned adoption."
}
