terraform {
  required_version = ">= 1.0.0"

  required_providers {
    alicloud = {
      source  = "aliyun/alicloud"
      version = ">= 1.158.0"
    }
  }
}

provider "alicloud" {
  region = var.region
}

data "alicloud_cs_managed_kubernetes_clusters" "reference" {
  name_regex     = "^${var.cluster_name}$"
  enable_details = true
}

locals {
  reference_cluster = one(data.alicloud_cs_managed_kubernetes_clusters.reference.clusters)
}

resource "alicloud_cs_kubernetes_node_pool" "metrics_integration" {
  node_pool_name       = "metrics-integration"
  cluster_id           = local.reference_cluster.id
  vswitch_ids          = length(var.vswitch_ids) > 0 ? var.vswitch_ids : local.reference_cluster.vswitch_ids
  instance_types       = var.instance_types
  system_disk_category = var.system_disk_category
  system_disk_size     = var.system_disk_size
  key_name             = var.key_name != "" ? var.key_name : local.reference_cluster.key_name
  desired_size         = var.desired_size

  scaling_config {
    min_size = var.min_size
    max_size = var.max_size
  }

  labels {
    key   = "component"
    value = "metrics-integration"
  }

  taints {
    key    = "app"
    value  = "metrics-integration"
    effect = "NoSchedule"
  }

  lifecycle {
    create_before_destroy = true
  }
}

output "node_pool_id" {
  description = "ID of the created ACK node pool"
  value       = alicloud_cs_kubernetes_node_pool.metrics_integration.id
}

output "cluster_id" {
  description = "ID of the ACK cluster that the node pool attaches to"
  value       = local.reference_cluster.id
}
