data "databricks_spark_version" "dapd" {
  long_term_support = true
  spark_version     = "3.1.2"
  scala             = "2.12"
}

resource "databricks_instance_pool" "dapd_spot" {
  instance_pool_name       = "stage-dapd-pool-spot-test"
  min_idle_instances       = 0
  max_capacity             = 5
  node_type_id             = "i4i.xlarge"
  custom_tags              = module.tags.stage
  preloaded_spark_versions = [data.databricks_spark_version.dapd.id]

  aws_attributes {
    availability           = "SPOT"
    zone_id                = "us-east-1a"
    spot_bid_price_percent = "100"
  }
  idle_instance_autotermination_minutes = 15
}

resource "databricks_instance_pool" "dapd_on_demand" {
  instance_pool_name       = "stage-dapd-pool-on-demand-test"
  min_idle_instances       = 0
  max_capacity             = 5
  node_type_id             = "i4i.xlarge"
  custom_tags              = module.tags.stage
  preloaded_spark_versions = [data.databricks_spark_version.dapd.id]

  aws_attributes {
    availability           = "ON_DEMAND"
    zone_id                = "us-east-1a"
    spot_bid_price_percent = "100"
  }
  idle_instance_autotermination_minutes = 15
}

resource "databricks_instance_pool" "i4i_spot" {
  instance_pool_name       = "i4i_spot_pool"
  min_idle_instances       = 0
  max_capacity             = 160
  node_type_id             = "i4i.xlarge"
  custom_tags              = module.tags.common
  preloaded_spark_versions = [data.databricks_spark_version.dapd.id]

  aws_attributes {
    availability           = "SPOT"
    zone_id                = "us-east-1a"
    spot_bid_price_percent = "100"
  }
  idle_instance_autotermination_minutes = 15
}

resource "databricks_instance_pool" "i4i_on_demand" {
  instance_pool_name       = "i4i_on_demand_pool"
  min_idle_instances       = 0
  max_capacity             = 50
  node_type_id             = "i4i.xlarge"
  custom_tags              = module.tags.common
  preloaded_spark_versions = [data.databricks_spark_version.dapd.id]

  aws_attributes {
    availability           = "ON_DEMAND"
    zone_id                = "us-east-1a"
    spot_bid_price_percent = "100"
  }
  idle_instance_autotermination_minutes = 15
}

resource "databricks_instance_pool" "i4i_spot_zone_b" {
  instance_pool_name       = "i4i_spot_pool_zone_b"
  min_idle_instances       = 0
  max_capacity             = 160
  node_type_id             = "i4i.xlarge"
  custom_tags              = module.tags.common
  preloaded_spark_versions = [data.databricks_spark_version.dapd.id]

  aws_attributes {
    availability           = "SPOT"
    zone_id                = "us-east-1b"
    spot_bid_price_percent = "100"
  }
  idle_instance_autotermination_minutes = 15
}

resource "databricks_instance_pool" "i4i_on_demand_zone_b" {
  instance_pool_name       = "i4i_on_demand_pool_zone_b"
  min_idle_instances       = 0
  max_capacity             = 50
  node_type_id             = "i4i.xlarge"
  custom_tags              = module.tags.common
  preloaded_spark_versions = [data.databricks_spark_version.dapd.id]

  aws_attributes {
    availability           = "ON_DEMAND"
    zone_id                = "us-east-1b"
    spot_bid_price_percent = "100"
  }
  idle_instance_autotermination_minutes = 15
}

resource "databricks_instance_pool" "m5_spot" {
  instance_pool_name       = "m5_spot_pool"
  min_idle_instances       = 0
  max_capacity             = 50
  node_type_id             = "m5.large"
  custom_tags              = module.tags.common
  preloaded_spark_versions = [data.databricks_spark_version.dapd.id]

  aws_attributes {
    availability           = "SPOT"
    zone_id                = "us-east-1a"
    spot_bid_price_percent = "100"
  }
  idle_instance_autotermination_minutes = 15
}

resource "databricks_instance_pool" "m5_on_demand" {
  instance_pool_name       = "m5_on_demand_pool"
  min_idle_instances       = 0
  max_capacity             = 50
  node_type_id             = "m5.large"
  custom_tags              = module.tags.common
  preloaded_spark_versions = [data.databricks_spark_version.dapd.id]

  aws_attributes {
    availability           = "ON_DEMAND"
    zone_id                = "us-east-1a"
    spot_bid_price_percent = "100"
  }
  idle_instance_autotermination_minutes = 15
}

resource "databricks_instance_pool" "m5_2xlarge_spot" {
  instance_pool_name       = "m5_2xlarge_spot_pool"
  min_idle_instances       = 0
  max_capacity             = 10
  node_type_id             = "m5.2xlarge"
  custom_tags              = module.tags.common
  preloaded_spark_versions = [data.databricks_spark_version.dapd.id]

  aws_attributes {
    availability           = "SPOT"
    zone_id                = "us-east-1a"
    spot_bid_price_percent = "100"
  }
  idle_instance_autotermination_minutes = 15
}

resource "databricks_instance_pool" "m5_2xlarge_on_demand" {
  instance_pool_name       = "m5_2xlarge_on_demand_pool"
  min_idle_instances       = 0
  max_capacity             = 10
  node_type_id             = "m5.2xlarge"
  custom_tags              = module.tags.common
  preloaded_spark_versions = [data.databricks_spark_version.dapd.id]

  aws_attributes {
    availability           = "ON_DEMAND"
    zone_id                = "us-east-1a"
    spot_bid_price_percent = "100"
  }
  idle_instance_autotermination_minutes = 15
}

resource "databricks_instance_pool" "c5_spot" {
  instance_pool_name       = "c5_spot_pool"
  min_idle_instances       = 0
  max_capacity             = 125
  node_type_id             = "c5.4xlarge"
  custom_tags              = module.tags.common
  preloaded_spark_versions = [data.databricks_spark_version.dapd.id]

  aws_attributes {
    availability           = "SPOT"
    zone_id                = "us-east-1a"
    spot_bid_price_percent = "100"
  }
  idle_instance_autotermination_minutes = 15
}

resource "databricks_instance_pool" "c5_on_demand" {
  instance_pool_name       = "c5_on_demand_pool"
  min_idle_instances       = 0
  max_capacity             = 50
  node_type_id             = "c5.4xlarge"
  custom_tags              = module.tags.common
  preloaded_spark_versions = [data.databricks_spark_version.dapd.id]

  aws_attributes {
    availability           = "ON_DEMAND"
    zone_id                = "us-east-1a"
    spot_bid_price_percent = "100"
  }
  idle_instance_autotermination_minutes = 15
}
