terraform-provider-databricks icon indicating copy to clipboard operation
terraform-provider-databricks copied to clipboard

[ISSUE] Instance Pool: GCP availability ignored

Open martinzuern opened this issue 3 years ago • 0 comments

Configuration

resource "databricks_instance_pool" "my_job_pool" {
  provider = databricks.workspace

  instance_pool_name  = "My Job Pool"
  min_idle_instances  = 2
  max_capacity        = 8
  node_type_id        = data.databricks_node_type.smallest.id
  enable_elastic_disk = false

  idle_instance_autotermination_minutes = 5

  preloaded_spark_versions = [
    data.databricks_spark_version.latest.id
  ]

  gcp_attributes {
    availability = "PREEMPTIBLE_GCP"
  }
}

Expected Behavior

The instance pool should be created using preemptible instances.

Actual Behavior

The instance pool is created using on-demanc instances.

Steps to Reproduce

Simply apply the sample:

  # module.databricks.databricks_instance_pool.my_job_pool will be created
  + resource "databricks_instance_pool" "my_job_pool" {
      + enable_elastic_disk                   = false
      + id                                    = (known after apply)
      + idle_instance_autotermination_minutes = 5
      + instance_pool_id                      = (known after apply)
      + instance_pool_name                    = "My Job Pool"
      + max_capacity                          = 8
      + min_idle_instances                    = 2
      + node_type_id                          = "n1-standard-4"
      + preloaded_spark_versions              = [
          + "11.0.x-scala2.12",
        ]

      + gcp_attributes {
          + availability = "PREEMPTIBLE_GCP"
        }
    }

Terraform and provider versions

provider registry.terraform.io/databrickslabs/databricks v0.6.1

Debug Output

You can see that the correct attribute is sent to the API, but it returns the default availability.

module.databricks.databricks_instance_pool.my_job_pool: Creating...
2022-06-20T23:03:29.984+0200 [INFO]  Starting apply for module.databricks.databricks_instance_pool.my_job_pool
2022-06-20T23:03:29.984+0200 [DEBUG] module.databricks.databricks_instance_pool.my_job_pool: applying the planned Create change
2022-06-20T23:03:29.985+0200 [INFO]  provider.terraform-provider-databricks_v0.6.1: Configured google-workspace auth: host=https://******.gcp.databricks.com, google_service_account=****@****.iam.gserviceaccount.com: timestamp=2022-06-20T23:03:29.985+0200
2022-06-20T23:03:30.408+0200 [DEBUG] provider.terraform-provider-databricks_v0.6.1: POST /api/2.0/instance-pools/create {
  "gcp_attributes": {
    "availability": "PREEMPTIBLE_GCP"
  },
  "idle_instance_autotermination_minutes": 5,
  "instance_pool_name": "My Job Pool",
  "max_capacity": 8,
  "min_idle_instances": 2,
  "node_type_id": "n1-standard-4",
  "preloaded_spark_versions": [
    "11.0.x-scala2.12"
  ]
}: timestamp=2022-06-20T23:03:30.408+0200
2022-06-20T23:03:31.281+0200 [DEBUG] provider.terraform-provider-databricks_v0.6.1: 200 OK  {
  "instance_pool_id": "*****"
} <- POST /api/2.0/instance-pools/create: timestamp=2022-06-20T23:03:31.281+0200
2022-06-20T23:03:31.281+0200 [DEBUG] provider.terraform-provider-databricks_v0.6.1: GET /api/2.0/instance-pools/get: timestamp=2022-06-20T23:03:31.281+0200
2022-06-20T23:03:31.458+0200 [DEBUG] provider.terraform-provider-databricks_v0.6.1: 200 OK  {
  "default_tags": {
    "DatabricksInstancePoolCreatorId": "76****",
    "DatabricksInstancePoolId": "*****",
    "Vendor": "Databricks"
  },
  "enable_elastic_disk": false,
  "gcp_attributes": {
    "gcp_availability": "ON_DEMAND_GCP"
  },
  "idle_instance_autotermination_minutes": 5,
  "instance_pool_id": "*****",
  "instance_pool_name": "My Job Pool",
  "max_capacity": 8,
  "min_idle_instances": 2,
  "node_type_id": "n1-standard-4",
  "preloaded_spark_versions": [
    "11.0.x-scala2.12"
  ],
  "state": "ACTIVE",
  "stats": {},
  "status": {}
} <- GET /api/2.0/instance-pools/get: timestamp=2022-06-20T23:03:31.458+0200
module.databricks.databricks_instance_pool.my_job_pool: Creation complete after 1s [id=*******]

Important Factoids

Creating instance pools with preemptible instances works fine from the Web UI.

The same problem applies with PREEMPTIBLE_WITH_FALLBACK_GCP:

module.databricks.databricks_instance_pool.my_job_pool: Creating...
2022-06-20T23:11:18.223+0200 [INFO]  Starting apply for module.databricks.databricks_instance_pool.my_job_pool
2022-06-20T23:11:18.224+0200 [DEBUG] module.databricks.databricks_instance_pool.my_job_pool: applying the planned Create change
2022-06-20T23:11:18.225+0200 [DEBUG] provider.terraform-provider-databricks_v0.6.1: POST /api/2.0/instance-pools/create {
  "gcp_attributes": {
    "availability": "PREEMPTIBLE_WITH_FALLBACK_GCP"
  },
  "idle_instance_autotermination_minutes": 5,
  "instance_pool_name": "My Job Pool",
  "max_capacity": 8,
  "min_idle_instances": 2,
  "node_type_id": "n1-standard-4",
  "preloaded_spark_versions": [
    "11.0.x-scala2.12"
  ]
}: timestamp=2022-06-20T23:11:18.225+0200
2022-06-20T23:11:18.734+0200 [DEBUG] provider.terraform-provider-databricks_v0.6.1: 200 OK  {
  "instance_pool_id": "****"
} <- POST /api/2.0/instance-pools/create: timestamp=2022-06-20T23:11:18.734+0200
2022-06-20T23:11:18.735+0200 [DEBUG] provider.terraform-provider-databricks_v0.6.1: GET /api/2.0/instance-pools/get: timestamp=2022-06-20T23:11:18.735+0200
2022-06-20T23:11:18.921+0200 [DEBUG] provider.terraform-provider-databricks_v0.6.1: 200 OK  {
  "default_tags": {
    "DatabricksInstancePoolCreatorId": "****",
    "DatabricksInstancePoolId": "****",
    "Vendor": "Databricks"
  },
  "enable_elastic_disk": false,
  "gcp_attributes": {
    "gcp_availability": "ON_DEMAND_GCP"
  },
  "idle_instance_autotermination_minutes": 5,
  "instance_pool_id": "****",
  "instance_pool_name": "My Job Pool",
  "max_capacity": 8,
  "min_idle_instances": 2,
  "node_type_id": "n1-standard-4",
  "preloaded_spark_versions": [
    "11.0.x-scala2.12"
  ],
  "state": "ACTIVE",
  "stats": {},
  "status": {}
} <- GET /api/2.0/instance-pools/get: timestamp=2022-06-20T23:11:18.921+0200
module.databricks.databricks_instance_pool.my_job_pool: Creation complete after 1s [id=****]

martinzuern avatar Jun 20 '22 21:06 martinzuern