# variables.tf

# IBM Cloud API Key
variable "ibmcloud_api_key" {
  description = "IBM Cloud API Key"
  type        = string
}

# SSH Public Key Path
variable "ssh_public_key_path" {
  description = "Path to the SSH public key file"
  type        = string
}

# VPC Name
variable "vpc_name" {
  description = "Name of the VPC"
  type        = string
  default     = "k8s-vpc"
}

# Subnet Name
variable "subnet_name" {
  description = "Name of the Subnet"
  type        = string
  default     = "k8s-subnet"
}

# Subnet CIDR Block
variable "subnet_cidr" {
  description = "CIDR block for the subnet"
  type        = string
  default     = "10.240.0.0/24"
}

# Zone
variable "zone" {
  description = "IBM Cloud Zone"
  type        = string
  default     = "us-south-1"
}

# Kubernetes Master Node Profile
variable "master_profile" {
  description = "Profile for the Kubernetes master node"
  type        = string
  default     = "bx2-4x16"
}

# Kubernetes Worker Node Profile
variable "worker_profile" {
  description = "Profile for the Kubernetes worker nodes"
  type        = string
  default     = "bx2-2x8"
}

# Number of Worker Nodes
variable "worker_count" {
  description = "Number of Kubernetes worker nodes"
  type        = number
  default     = 2
}

# Kubernetes Node Image ID
variable "node_image_id" {
  description = "Image ID for the Kubernetes nodes"
  type        = string
  default     = "r022-7c12e62d-1ff3-4b98-b1f2-f3c8a5d06b0f" # Replace with the required image ID
}

# Resource Group Variables
variable "resource_group_name" {
  type        = string
  description = "The name of the IBM Cloud resource group where the cluster will be created/can be found."
}

variable "region" {
  type        = string
  description = "The IBM Cloud region where the cluster will be/has been installed."
}

# Cluster Variables
variable "name" {
  type        = string
  description = "The name of the cluster that will be created within the resource group"
  default     = ""
}

variable "flavor" {
  type        = string
  description = "The machine type that will be provisioned for classic infrastructure"
  default     = "bx2.4x16"
}

variable "exists" {
  type        = bool
  description = "Flag indicating if the cluster already exists (true or false)"
  default     = false
}

variable "disable_public_endpoint" {
  type        = bool
  description = "Flag indicating that the public endpoint should be disabled"
  default     = false
}

variable "name_prefix" {
  type        = string
  description = "The prefix name for the service. If not provided it will default to the resource group name"
  default     = ""
}

variable "vpc_subnet_count" {
  type        = number
  description = "Number of vpc subnets"
}

variable "vpc_subnets" {
  type        = list(object({
    label = string
    id    = string
    zone  = string
  }))
  description = "List of subnets with labels"
}

variable "kms_enabled" {
  type        = bool
  description = "Flag indicating that kms encryption should be enabled for this cluster"
  default     = false
}

variable "kms_id" {
  type        = string
  description = "The crn of the KMS instance that will be used to encrypt the cluster."
  default     = null
}

variable "kms_key_id" {
  type        = string
  description = "The id of the root key in the KMS instance that will be used to encrypt the cluster."
  default     = null
}

variable "kms_private_endpoint" {
  type        = bool
  description = "Flag indicating that the private endpoint should be used to connect the KMS system to the cluster."
  default     = true
}

variable "login" {
  type        = bool
  description = "Flag indicating that after the cluster is provisioned, the module should log into the cluster"
  default     = false
}

variable "sync" {
  type        = string
  description = "Value used to order dependencies"
  default     = ""
}