|
8 | 8 | "github.com/databricks/databricks-sdk-go/service/compute"
|
9 | 9 | "github.com/databricks/terraform-provider-databricks/common"
|
10 | 10 | "github.com/databricks/terraform-provider-databricks/qa"
|
| 11 | + "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" |
11 | 12 | "github.com/stretchr/testify/assert"
|
12 | 13 | "github.com/stretchr/testify/require"
|
13 | 14 | )
|
@@ -1630,6 +1631,111 @@ func TestResourceClusterCreate_SingleNode(t *testing.T) {
|
1630 | 1631 | assert.NoError(t, err)
|
1631 | 1632 | assert.Equal(t, 0, d.Get("num_workers"))
|
1632 | 1633 | }
|
| 1634 | + |
| 1635 | +func TestResourceClusterCreate_SingleNodeAutoPropertiesCustomizeDiff(t *testing.T) { |
| 1636 | + testCases := []struct { |
| 1637 | + name string |
| 1638 | + hcl string |
| 1639 | + instanceState map[string]string |
| 1640 | + expectedDiff map[string]*terraform.ResourceAttrDiff |
| 1641 | + }{ |
| 1642 | + { |
| 1643 | + "resource with no custom_tags or spark_conf", |
| 1644 | + "", |
| 1645 | + map[string]string{ |
| 1646 | + "custom_tags.ResourceClass": "SingleNode", |
| 1647 | + "spark_conf.spark.master": "local[*]", |
| 1648 | + "spark_conf.spark.databricks.cluster.profile": "singleNode", |
| 1649 | + }, |
| 1650 | + nil, |
| 1651 | + }, |
| 1652 | + { |
| 1653 | + "resource with custom_tags and spark_conf", |
| 1654 | + `custom_tags = { |
| 1655 | + "ClusterName" = "SingleNode" |
| 1656 | + } |
| 1657 | + spark_conf = { |
| 1658 | + "spark.databricks.delta.preview.enabled" = "true" |
| 1659 | + }`, |
| 1660 | + map[string]string{ |
| 1661 | + "custom_tags.ClusterName": "SingleNode", |
| 1662 | + "custom_tags.ResourceClass": "SingleNode", |
| 1663 | + "spark_conf.spark.master": "local[*]", |
| 1664 | + "spark_conf.spark.databricks.cluster.profile": "singleNode", |
| 1665 | + "spark_conf.spark.databricks.delta.preview.enabled": "true", |
| 1666 | + }, |
| 1667 | + nil, |
| 1668 | + }, |
| 1669 | + { |
| 1670 | + "resource with custom_tags and spark_conf changes", |
| 1671 | + `custom_tags = { |
| 1672 | + "ClusterName" = "MonoNode" |
| 1673 | + } |
| 1674 | + spark_conf = { |
| 1675 | + "spark.databricks.delta.preview.enabled" = "false" |
| 1676 | + }`, |
| 1677 | + map[string]string{ |
| 1678 | + "custom_tags.ClusterName": "SingleNode", |
| 1679 | + "custom_tags.ResourceClass": "SingleNode", |
| 1680 | + "spark_conf.spark.master": "local[*]", |
| 1681 | + "spark_conf.spark.databricks.cluster.profile": "singleNode", |
| 1682 | + "spark_conf.spark.databricks.delta.preview.enabled": "true", |
| 1683 | + }, |
| 1684 | + map[string]*terraform.ResourceAttrDiff{ |
| 1685 | + "custom_tags.ClusterName": {New: "MonoNode", Old: "SingleNode"}, |
| 1686 | + "spark_conf.spark.databricks.delta.preview.enabled": {New: "false", Old: "true"}, |
| 1687 | + }, |
| 1688 | + }, |
| 1689 | + } |
| 1690 | + for _, testCase := range testCases { |
| 1691 | + t.Run(testCase.name, func(t *testing.T) { |
| 1692 | + expectedDiff := testCase.expectedDiff |
| 1693 | + |
| 1694 | + if expectedDiff == nil { |
| 1695 | + expectedDiff = make(map[string]*terraform.ResourceAttrDiff) |
| 1696 | + } |
| 1697 | + |
| 1698 | + expectedDiff["default_tags.%"] = &terraform.ResourceAttrDiff{Old: "", New: "", NewComputed: true, NewRemoved: false, RequiresNew: false, Sensitive: false} |
| 1699 | + expectedDiff["driver_instance_pool_id"] = &terraform.ResourceAttrDiff{Old: "", New: "", NewComputed: true, NewRemoved: false, RequiresNew: false, Sensitive: false} |
| 1700 | + expectedDiff["driver_node_type_id"] = &terraform.ResourceAttrDiff{Old: "", New: "", NewComputed: true, NewRemoved: false, RequiresNew: false, Sensitive: false} |
| 1701 | + expectedDiff["enable_elastic_disk"] = &terraform.ResourceAttrDiff{Old: "", New: "", NewComputed: true, NewRemoved: false, RequiresNew: false, Sensitive: false} |
| 1702 | + expectedDiff["enable_local_disk_encryption"] = &terraform.ResourceAttrDiff{Old: "", New: "", NewComputed: true, NewRemoved: false, RequiresNew: false, Sensitive: false} |
| 1703 | + expectedDiff["state"] = &terraform.ResourceAttrDiff{Old: "", New: "", NewComputed: true, NewRemoved: false, RequiresNew: false, Sensitive: false} |
| 1704 | + expectedDiff["url"] = &terraform.ResourceAttrDiff{Old: "", New: "", NewComputed: true, NewRemoved: false, RequiresNew: false, Sensitive: false} |
| 1705 | + |
| 1706 | + instanceState := testCase.instanceState |
| 1707 | + instanceState["cluster_id"] = "abc" |
| 1708 | + instanceState["autotermination_minutes"] = "60" |
| 1709 | + instanceState["cluster_name"] = "Single Node Cluster" |
| 1710 | + instanceState["data_security_mode"] = "SINGLE_USER" |
| 1711 | + instanceState["spark_version"] = "15.4.x-scala2.12" |
| 1712 | + instanceState["single_user_name"] = "testuser" |
| 1713 | + instanceState["runtime_engine"] = "STANDARD" |
| 1714 | + instanceState["num_workers"] = "0" |
| 1715 | + instanceState["node_type_id"] = "Standard_F4s" |
| 1716 | + instanceState["kind"] = "CLASSIC_PREVIEW" |
| 1717 | + instanceState["is_single_node"] = "true" |
| 1718 | + |
| 1719 | + qa.ResourceFixture{ |
| 1720 | + HCL: ` |
| 1721 | + spark_version = "15.4.x-scala2.12" |
| 1722 | + runtime_engine = "STANDARD" |
| 1723 | + node_type_id = "Standard_F4s" |
| 1724 | + kind = "CLASSIC_PREVIEW" |
| 1725 | + cluster_name = "Single Node Cluster" |
| 1726 | + data_security_mode = "SINGLE_USER" |
| 1727 | + autotermination_minutes = 60 |
| 1728 | + is_single_node = true |
| 1729 | + single_user_name = "testuser" |
| 1730 | + ` + testCase.hcl, |
| 1731 | + InstanceState: instanceState, |
| 1732 | + ExpectedDiff: expectedDiff, |
| 1733 | + Resource: ResourceCluster(), |
| 1734 | + }.ApplyNoError(t) |
| 1735 | + }) |
| 1736 | + } |
| 1737 | +} |
| 1738 | + |
1633 | 1739 | func TestResourceClusterCreate_NegativeNumWorkers(t *testing.T) {
|
1634 | 1740 | _, err := qa.ResourceFixture{
|
1635 | 1741 | Create: true,
|
|
0 commit comments