Skip to content

Commit 27c64b9

Browse files
authored
Migrate databricks_node_type data source to Go SDK (#2070)
* Port `databricks_node_type` data source to Go SDK Please note that we can't use `WorkspaceData` here because we need to provide a request as schema, and we can't inherit from it. * Reimplement data source using `WorkspaceData` function * `id` should be marked as `Computed` to be set
1 parent c23c570 commit 27c64b9

File tree

12 files changed

+224
-562
lines changed

12 files changed

+224
-562
lines changed

access/resource_sql_permissions.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"strings"
88

99
"github.com/databricks/databricks-sdk-go/apierr"
10+
clustersApi "github.com/databricks/databricks-sdk-go/service/clusters"
1011
"github.com/databricks/terraform-provider-databricks/clusters"
1112
"github.com/databricks/terraform-provider-databricks/common"
1213

@@ -274,7 +275,7 @@ func (ta *SqlPermissions) getOrCreateCluster(clustersAPI clusters.ClustersAPI) (
274275
sparkVersion := clustersAPI.LatestSparkVersionOrDefault(clusters.SparkVersionRequest{
275276
Latest: true,
276277
})
277-
nodeType := clustersAPI.GetSmallestNodeType(clusters.NodeTypeRequest{LocalDisk: true})
278+
nodeType := clustersAPI.GetSmallestNodeType(clustersApi.NodeTypeRequest{LocalDisk: true})
278279
aclCluster, err := clustersAPI.GetOrCreateRunningCluster(
279280
"terraform-table-acl", clusters.Cluster{
280281
ClusterName: "terraform-table-acl",

access/resource_sql_permissions_test.go

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"fmt"
55
"testing"
66

7+
clustersApi "github.com/databricks/databricks-sdk-go/service/clusters"
78
"github.com/databricks/terraform-provider-databricks/clusters"
89
"github.com/databricks/terraform-provider-databricks/common"
910
"github.com/databricks/terraform-provider-databricks/qa"
@@ -197,18 +198,17 @@ var createHighConcurrencyCluster = []qa.HTTPFixture{
197198
Method: "GET",
198199
ReuseRequest: true,
199200
Resource: "/api/2.0/clusters/list-node-types",
200-
Response: clusters.NodeTypeList{
201-
NodeTypes: []clusters.NodeType{
201+
Response: clustersApi.ListNodeTypesResponse{
202+
NodeTypes: []clustersApi.NodeType{
202203
{
203-
NodeTypeID: "Standard_F4s",
204-
InstanceTypeID: "Standard_F4s",
205-
MemoryMB: 8192,
204+
NodeTypeId: "Standard_F4s",
205+
InstanceTypeId: "Standard_F4s",
206+
MemoryMb: 8192,
206207
NumCores: 4,
207-
NodeInstanceType: &clusters.NodeInstanceType{
208+
NodeInstanceType: &clustersApi.NodeInstanceType{
208209
LocalDisks: 1,
209-
InstanceTypeID: "Standard_F4s",
210-
LocalDiskSizeGB: 16,
211-
LocalNVMeDisks: 0,
210+
InstanceTypeId: "Standard_F4s",
211+
LocalDiskSizeGb: 16,
212212
},
213213
},
214214
},

clusters/clusters_api.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ import (
1010
"time"
1111

1212
"github.com/databricks/databricks-sdk-go/apierr"
13+
clustersApi "github.com/databricks/databricks-sdk-go/service/clusters"
14+
1315
"github.com/databricks/terraform-provider-databricks/common"
1416
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
1517
)
@@ -865,7 +867,7 @@ func (a ClustersAPI) GetOrCreateRunningCluster(name string, custom ...Cluster) (
865867
}
866868
}
867869
}
868-
smallestNodeType := a.GetSmallestNodeType(NodeTypeRequest{
870+
smallestNodeType := a.GetSmallestNodeType(clustersApi.NodeTypeRequest{
869871
LocalDisk: true,
870872
})
871873
log.Printf("[INFO] Creating an autoterminating cluster with node type %s", smallestNodeType)

clusters/clusters_api_test.go

Lines changed: 17 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010
"testing"
1111

1212
"github.com/databricks/databricks-sdk-go/apierr"
13+
"github.com/databricks/databricks-sdk-go/service/clusters"
1314
"github.com/databricks/terraform-provider-databricks/common"
1415
"github.com/databricks/terraform-provider-databricks/qa"
1516
"github.com/stretchr/testify/assert"
@@ -52,30 +53,30 @@ func TestGetOrCreateRunningCluster_AzureAuth(t *testing.T) {
5253
Method: "GET",
5354
ReuseRequest: true,
5455
Resource: "/api/2.0/clusters/list-node-types",
55-
Response: NodeTypeList{
56-
[]NodeType{
56+
Response: clusters.ListNodeTypesResponse{
57+
[]clusters.NodeType{
5758
{
58-
NodeTypeID: "Standard_F4s",
59-
InstanceTypeID: "Standard_F4s",
60-
MemoryMB: 8192,
59+
NodeTypeId: "Standard_F4s",
60+
InstanceTypeId: "Standard_F4s",
61+
MemoryMb: 8192,
6162
NumCores: 4,
62-
NodeInstanceType: &NodeInstanceType{
63+
NodeInstanceType: &clusters.NodeInstanceType{
6364
LocalDisks: 1,
64-
InstanceTypeID: "Standard_F4s",
65-
LocalDiskSizeGB: 16,
66-
LocalNVMeDisks: 0,
65+
InstanceTypeId: "Standard_F4s",
66+
LocalDiskSizeGb: 16,
67+
LocalNvmeDisks: 0,
6768
},
6869
},
6970
{
70-
NodeTypeID: "Standard_L80s_v2",
71-
InstanceTypeID: "Standard_L80s_v2",
72-
MemoryMB: 655360,
71+
NodeTypeId: "Standard_L80s_v2",
72+
InstanceTypeId: "Standard_L80s_v2",
73+
MemoryMb: 655360,
7374
NumCores: 80,
74-
NodeInstanceType: &NodeInstanceType{
75+
NodeInstanceType: &clusters.NodeInstanceType{
7576
LocalDisks: 2,
76-
InstanceTypeID: "Standard_L80s_v2",
77-
LocalDiskSizeGB: 160,
78-
LocalNVMeDisks: 1,
77+
InstanceTypeId: "Standard_L80s_v2",
78+
LocalDiskSizeGb: 160,
79+
LocalNvmeDisks: 1,
7980
},
8081
},
8182
},
@@ -1128,58 +1129,6 @@ func TestGetLatestSparkVersion(t *testing.T) {
11281129
require.Equal(t, true, strings.Contains(err.Error(), "query returned no results"))
11291130
}
11301131

1131-
func TestListNodeTypes(t *testing.T) {
1132-
client, server, err := qa.HttpFixtureClient(t, []qa.HTTPFixture{
1133-
{
1134-
Method: "GET",
1135-
ReuseRequest: true,
1136-
Resource: "/api/2.0/clusters/list-node-types",
1137-
Response: NodeTypeList{
1138-
[]NodeType{
1139-
{
1140-
NodeTypeID: "Standard_F4s",
1141-
InstanceTypeID: "Standard_F4s",
1142-
MemoryMB: 8192,
1143-
NumCores: 4,
1144-
NodeInstanceType: &NodeInstanceType{
1145-
LocalDisks: 1,
1146-
InstanceTypeID: "Standard_F4s",
1147-
LocalDiskSizeGB: 16,
1148-
LocalNVMeDisks: 0,
1149-
},
1150-
},
1151-
{
1152-
NodeTypeID: "Standard_L80s_v2",
1153-
InstanceTypeID: "Standard_L80s_v2",
1154-
MemoryMB: 655360,
1155-
NumCores: 80,
1156-
NodeInstanceType: &NodeInstanceType{
1157-
LocalDisks: 2,
1158-
InstanceTypeID: "Standard_L80s_v2",
1159-
LocalDiskSizeGB: 160,
1160-
LocalNVMeDisks: 1,
1161-
},
1162-
},
1163-
},
1164-
},
1165-
},
1166-
})
1167-
defer server.Close()
1168-
require.NoError(t, err)
1169-
1170-
ctx := context.Background()
1171-
api := NewClustersAPI(ctx, client)
1172-
assert.Equal(t, api.GetSmallestNodeType(NodeTypeRequest{SupportPortForwarding: true}), api.defaultSmallestNodeType())
1173-
assert.Equal(t, api.GetSmallestNodeType(NodeTypeRequest{PhotonWorkerCapable: true}), api.defaultSmallestNodeType())
1174-
assert.Equal(t, api.GetSmallestNodeType(NodeTypeRequest{PhotonDriverCapable: true}), api.defaultSmallestNodeType())
1175-
assert.Equal(t, api.GetSmallestNodeType(NodeTypeRequest{IsIOCacheEnabled: true}), api.defaultSmallestNodeType())
1176-
assert.Equal(t, api.GetSmallestNodeType(NodeTypeRequest{Category: "Storage Optimized"}), api.defaultSmallestNodeType())
1177-
assert.Equal(t, api.GetSmallestNodeType(NodeTypeRequest{MinMemoryGB: 100500}), api.defaultSmallestNodeType())
1178-
assert.Equal(t, api.GetSmallestNodeType(NodeTypeRequest{GBPerCore: 100500}), api.defaultSmallestNodeType())
1179-
assert.Equal(t, api.GetSmallestNodeType(NodeTypeRequest{MinCores: 100500}), api.defaultSmallestNodeType())
1180-
assert.Equal(t, api.GetSmallestNodeType(NodeTypeRequest{LocalDisk: true}), "Standard_F4s")
1181-
}
1182-
11831132
func TestClusterState_CanReach(t *testing.T) {
11841133
tests := []struct {
11851134
from ClusterState

0 commit comments

Comments
 (0)