variable "libvirt_uri" {
  description = "libvirt connection URI for the vcloud host (e.g. qemu+ssh://user@host/system). MUST be measured this session, never guessed -- no default."
  type        = string
}

variable "maas_api_url" {
  description = "MAAS API endpoint, e.g. http://<maas-region-host>:5240/MAAS (confirmed format from the canonical/maas provider's own docs). Measured, no default."
  type        = string
}

variable "maas_api_key" {
  description = "MAAS API key for the account OpenTofu authenticates as. Retrieved via the operator's own secret-handling process -- never hardcoded, never printed (this repo's own secrets discipline applies here same as everywhere else). No default."
  type        = string
  sensitive   = true
}

variable "domain_suffix" {
  description = "Base domain for per-plane libvirt DNS domains. Anchor value per D-106's naming convention (<service>.omega.<dc>.vr1.cloud.neumatrix.local)."
  type        = string
  default     = "cloud.neumatrix.local"
}

variable "underlay_mtu" {
  description = "Underlay MTU applied to every plane and mesh-link network. MUST be the Phase-0 MEASURED host L2 MTU (buildout-design Section 3 / D-102) -- do not assume jumbo (9000). No default -- pass explicitly, e.g. via a Phase-0-specific tfvars file once measured."
  type        = number
}

variable "dc1_pool_path" {
  description = "Host filesystem path for DC1's libvirt storage pool. Measured, real path on the vcloud host -- no default."
  type        = string
}

variable "office1_pool_path" {
  description = "Host filesystem path for Office1's libvirt storage pool (MAAS-region/NetBox/GitBucket service-VM disks). Measured, real path on the vcloud host -- no default."
  type        = string
}

variable "dc1_planes" {
  description = <<-EOT
    DC1's six planes. DC1 INHERITS the DC0 v4 layout UNCHANGED (D-101) --
    these CIDRs are copied from scripts/lib-net.sh's PLANE_CIDRS array as it
    stood 2026-07-09, not invented here. If lib-net.sh changes, update this
    default in the SAME change (it is a second copy of the same fact, not an
    independent source -- a future DOCFIX candidate is a generator that keeps
    both in sync automatically instead of two hand-maintained copies).
  EOT
  type = map(object({
    cidr = string
  }))
  default = {
    provider-public = { cidr = "10.12.4.0/22" }
    metal-admin     = { cidr = "10.12.8.0/22" }
    metal-internal  = { cidr = "10.12.12.0/22" }
    data-tenant     = { cidr = "10.12.16.0/22" }
    storage         = { cidr = "10.12.32.0/22" }
    replication     = { cidr = "10.12.36.0/22" }
  }
}

# dc2_planes has NO variable/default here yet, deliberately: DC2's supernet is
# a D-101 OPEN SUB-ITEM ("exact prefixes assigned in NetBox, non-colliding with
# DC1..."), not yet assigned anywhere. Do not add a guessed default -- once
# NetBox assigns it, add a dc2_planes variable shaped exactly like dc1_planes
# above and a matching module "dc2_planes" block in main.tf (see the commented
# skeleton there).
