terraform-provider-databricks
terraform-provider-databricks copied to clipboard
[ISSUE] Instance Pool: GCP availability ignored
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=****]