terraform {
  backend "http" {
  }

  required_providers {
    ec = {
      source  = "elastic/ec"
      version = "0.3.0"
    }
  }
}

provider "ec" {
  apikey = var.ec_apikey
}

data "ec_stack" "stack" {
  version_regex = "7.16"
  region        = var.region
}

resource "ec_deployment_traffic_filter" "traffic-filter" {
  name   = "traffic-filter"
  region = var.region
  type   = "gcp_private_service_connect_endpoint"

  rule {
    source = var.psc_connection_id
  }
}

resource "ec_deployment" "elasticsearch_cluster" {
  name                   = var.cluster_name
  region                 = data.ec_stack.stack.region
  version                = data.ec_stack.stack.version_regex
  deployment_template_id = "gcp-storage-optimized"

  elasticsearch {
    autoscale = "false"

    topology {
      id            = "hot_content"
      size_resource = "memory"
      size          = "1g"
      zone_count    = 1
    }
  }

  kibana {
    topology {
      size_resource = "memory"
      size          = "1g"
      zone_count    = 1
    }
  }

  traffic_filter = [
    ec_deployment_traffic_filter.traffic-filter.id
  ]
}