Skip to content

Commit b38e059

Browse files
nfxalexott
andauthored
Migrate databricks_global_init_script to Go SDK (#2036)
* Migrate `databricks_global_init_script` to Go SDK * Finish porting of global init scripts to SDK * Remove not necessary files --------- Co-authored-by: Alex Ott <[email protected]>
1 parent bb4acf7 commit b38e059

File tree

6 files changed

+88
-155
lines changed

6 files changed

+88
-155
lines changed

exporter/exporter_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1575,13 +1575,13 @@ func TestImportingGlobalInitScripts(t *testing.T) {
15751575
},
15761576
{
15771577
Method: "GET",
1578-
Resource: "/api/2.0/global-init-scripts/C39FD6BAC8088BBC",
1578+
Resource: "/api/2.0/global-init-scripts/C39FD6BAC8088BBC?",
15791579
ReuseRequest: true,
15801580
Response: getJSONObject("test-data/global-init-script-get1.json"),
15811581
},
15821582
{
15831583
Method: "GET",
1584-
Resource: "/api/2.0/global-init-scripts/F931E63C248C1D8C",
1584+
Resource: "/api/2.0/global-init-scripts/F931E63C248C1D8C?",
15851585
ReuseRequest: true,
15861586
Response: getJSONObject("test-data/global-init-script-get2.json"),
15871587
},

exporter/importables.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1258,25 +1258,25 @@ var resourcesMap map[string]importable = map[string]importable{
12581258
return name
12591259
},
12601260
List: func(ic *importContext) error {
1261-
globalInitScripts, err := workspace.NewGlobalInitScriptsAPI(ic.Context, ic.Client).List()
1261+
globalInitScripts, err := ic.workspaceClient.GlobalInitScripts.ListAll(ic.Context)
12621262
if err != nil {
12631263
return err
12641264
}
12651265
for offset, gis := range globalInitScripts {
12661266
ic.EmitIfUpdatedAfterMillis(&resource{
12671267
Resource: "databricks_global_init_script",
1268-
ID: gis.ScriptID,
1269-
}, gis.UpdatedAt, fmt.Sprintf("global init script '%s'", gis.Name))
1268+
ID: gis.ScriptId,
1269+
}, int64(gis.UpdatedAt), fmt.Sprintf("global init script '%s'", gis.Name))
12701270
log.Printf("[INFO] Scanned %d of %d global init scripts", offset+1, len(globalInitScripts))
12711271
}
12721272
return nil
12731273
},
12741274
Import: func(ic *importContext, r *resource) error {
1275-
gis, err := workspace.NewGlobalInitScriptsAPI(ic.Context, ic.Client).Get(r.ID)
1275+
gis, err := ic.workspaceClient.GlobalInitScripts.GetByScriptId(ic.Context, r.ID)
12761276
if err != nil {
12771277
return err
12781278
}
1279-
content, err := base64.StdEncoding.DecodeString(gis.ContentBase64)
1279+
content, err := base64.StdEncoding.DecodeString(gis.Script)
12801280
if err != nil {
12811281
return err
12821282
}

exporter/importables_test.go

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -921,18 +921,18 @@ func TestGlobalInitScriptsBodyErrors(t *testing.T) {
921921
qa.HTTPFixturesApply(t, []qa.HTTPFixture{
922922
{
923923
Method: "GET",
924-
Resource: "/api/2.0/global-init-scripts/sad-emoji",
925-
Response: workspace.GlobalInitScriptInfo{
926-
Name: "x.sh",
927-
ContentBase64: "🥺",
924+
Resource: "/api/2.0/global-init-scripts/sad-emoji?",
925+
Response: compute.GlobalInitScriptDetailsWithContent{
926+
Name: "x.sh",
927+
Script: "🥺",
928928
},
929929
},
930930
{
931931
Method: "GET",
932-
Resource: "/api/2.0/global-init-scripts/second",
933-
Response: workspace.GlobalInitScriptInfo{
934-
Name: "x.sh",
935-
ContentBase64: "YWJj",
932+
Resource: "/api/2.0/global-init-scripts/second?",
933+
Response: compute.GlobalInitScriptDetailsWithContent{
934+
Name: "x.sh",
935+
Script: "YWJj",
936936
},
937937
},
938938
}, func(ctx context.Context, client *common.DatabricksClient) {
@@ -1212,11 +1212,12 @@ func TestGlobalInitScriptGeneration(t *testing.T) {
12121212
{
12131213
Method: "GET",
12141214
ReuseRequest: true,
1215-
Resource: "/api/2.0/global-init-scripts/a",
1216-
Response: workspace.GlobalInitScriptInfo{
1217-
Name: "New: Importing ^ Things",
1218-
Enabled: true,
1219-
ContentBase64: "YWJj",
1215+
Resource: "/api/2.0/global-init-scripts/a?",
1216+
Response: compute.GlobalInitScriptDetailsWithContent{
1217+
ScriptId: "a",
1218+
Name: "New: Importing ^ Things",
1219+
Enabled: true,
1220+
Script: "YWJj",
12201221
},
12211222
},
12221223
}, "workspace", false, func(ic *importContext) {

workspace/global_init_scripts.go

Lines changed: 0 additions & 83 deletions
This file was deleted.

workspace/resource_global_init_script.go

Lines changed: 31 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"fmt"
77
"regexp"
88

9+
"github.com/databricks/databricks-sdk-go/service/compute"
910
"github.com/databricks/terraform-provider-databricks/common"
1011

1112
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
@@ -53,22 +54,28 @@ func ResourceGlobalInitScript() common.Resource {
5354
return fmt.Errorf("size of the global init script (%d bytes) exceeds maximal allowed (%d bytes)",
5455
contentLen, maxScriptSize)
5556
}
56-
globalInitScriptsAPI := NewGlobalInitScriptsAPI(ctx, c)
57-
scriptID, err := globalInitScriptsAPI.Create(GlobalInitScriptPayload{
58-
ContentBase64: base64.StdEncoding.EncodeToString(content),
59-
Enabled: d.Get("enabled").(bool),
60-
Position: int32(d.Get("position").(int)),
61-
Name: d.Get("name").(string),
57+
w, err := c.WorkspaceClient()
58+
if err != nil {
59+
return err
60+
}
61+
created, err := w.GlobalInitScripts.Create(ctx, compute.GlobalInitScriptCreateRequest{
62+
Script: base64.StdEncoding.EncodeToString(content),
63+
Enabled: d.Get("enabled").(bool),
64+
Position: d.Get("position").(int),
65+
Name: d.Get("name").(string),
6266
})
6367
if err != nil {
6468
return err
6569
}
66-
d.SetId(scriptID)
70+
d.SetId(created.ScriptId)
6771
return nil
6872
},
6973
Read: func(ctx context.Context, d *schema.ResourceData, c *common.DatabricksClient) error {
70-
globalInitScriptsAPI := NewGlobalInitScriptsAPI(ctx, c)
71-
scriptStatus, err := globalInitScriptsAPI.Get(d.Id())
74+
w, err := c.WorkspaceClient()
75+
if err != nil {
76+
return err
77+
}
78+
scriptStatus, err := w.GlobalInitScripts.GetByScriptId(ctx, d.Id())
7279
if err != nil {
7380
return err
7481
}
@@ -83,16 +90,24 @@ func ResourceGlobalInitScript() common.Resource {
8390
return fmt.Errorf("size of the global init script (%d bytes) exceeds maximal allowed (%d bytes)",
8491
contentLen, maxScriptSize)
8592
}
86-
globalInitScriptsAPI := NewGlobalInitScriptsAPI(ctx, c)
87-
return globalInitScriptsAPI.Update(d.Id(), GlobalInitScriptPayload{
88-
ContentBase64: base64.StdEncoding.EncodeToString(content),
89-
Enabled: d.Get("enabled").(bool),
90-
Position: int32(d.Get("position").(int)),
91-
Name: d.Get("name").(string),
93+
w, err := c.WorkspaceClient()
94+
if err != nil {
95+
return err
96+
}
97+
return w.GlobalInitScripts.Update(ctx, compute.GlobalInitScriptUpdateRequest{
98+
ScriptId: d.Id(),
99+
Script: base64.StdEncoding.EncodeToString(content),
100+
Enabled: d.Get("enabled").(bool),
101+
Position: d.Get("position").(int),
102+
Name: d.Get("name").(string),
92103
})
93104
},
94105
Delete: func(ctx context.Context, d *schema.ResourceData, c *common.DatabricksClient) error {
95-
return NewGlobalInitScriptsAPI(ctx, c).Delete(d.Id())
106+
w, err := c.WorkspaceClient()
107+
if err != nil {
108+
return err
109+
}
110+
return w.GlobalInitScripts.DeleteByScriptId(ctx, d.Id())
96111
},
97112
Schema: s,
98113
SchemaVersion: 1,

workspace/resource_global_init_script_test.go

Lines changed: 36 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"testing"
88

99
"github.com/databricks/databricks-sdk-go/apierr"
10+
"github.com/databricks/databricks-sdk-go/service/compute"
1011
"github.com/databricks/terraform-provider-databricks/qa"
1112

1213
"github.com/stretchr/testify/assert"
@@ -19,17 +20,17 @@ func TestResourceGlobalInitScriptRead(t *testing.T) {
1920
Fixtures: []qa.HTTPFixture{
2021
{
2122
Method: http.MethodGet,
22-
Resource: "/api/2.0/global-init-scripts/1234",
23-
Response: GlobalInitScriptInfo{
24-
ScriptID: "1234",
25-
Name: "Test",
26-
Position: 0,
27-
Enabled: true,
28-
CreatedBy: "[email protected]",
29-
CreatedAt: 1612520583493,
30-
UpdatedBy: "[email protected]",
31-
UpdatedAt: 1612520583493,
32-
ContentBase64: "ZWNobyBoZWxsbw==",
23+
Resource: "/api/2.0/global-init-scripts/1234?",
24+
Response: compute.GlobalInitScriptDetailsWithContent{
25+
ScriptId: "1234",
26+
Name: "Test",
27+
Position: 0,
28+
Enabled: true,
29+
CreatedBy: "[email protected]",
30+
CreatedAt: 1612520583493,
31+
UpdatedBy: "[email protected]",
32+
UpdatedAt: 1612520583493,
33+
Script: "ZWNobyBoZWxsbw==",
3334
},
3435
},
3536
},
@@ -51,7 +52,7 @@ func TestResourceGlobalInitScriptDelete(t *testing.T) {
5152
Fixtures: []qa.HTTPFixture{
5253
{
5354
Method: http.MethodDelete,
54-
Resource: "/api/2.0/global-init-scripts/" + scriptID + "?script_id=" + scriptID,
55+
Resource: "/api/2.0/global-init-scripts/1234?",
5556
Status: http.StatusOK,
5657
},
5758
},
@@ -68,7 +69,7 @@ func TestResourceGlobalInitScriptRead_NotFound(t *testing.T) {
6869
Fixtures: []qa.HTTPFixture{
6970
{ // read log output for correct url...
7071
Method: "GET",
71-
Resource: "/api/2.0/global-init-scripts/1234",
72+
Resource: "/api/2.0/global-init-scripts/1234?",
7273
Response: apierr.APIErrorBody{
7374
ErrorCode: "RESOURCE_DOES_NOT_EXIST",
7475
Message: "The global unit script with ID 1234 does not exist.",
@@ -89,23 +90,22 @@ func TestResourceGlobalInitScriptCreate(t *testing.T) {
8990
{
9091
Method: "POST",
9192
Resource: "/api/2.0/global-init-scripts",
92-
ExpectedRequest: GlobalInitScriptPayload{
93-
Name: "test",
94-
ContentBase64: "ZWNobyBoZWxsbw==",
93+
ExpectedRequest: compute.GlobalInitScriptCreateRequest{
94+
Name: "test",
95+
Script: "ZWNobyBoZWxsbw==",
9596
},
96-
Response: globalInitScriptCreateResponse{
97-
ScriptID: "1234",
97+
Response: compute.CreateResponse{
98+
ScriptId: "1234",
9899
},
99100
},
100101
{
101102
Method: "GET",
102-
Resource: "/api/2.0/global-init-scripts/1234",
103+
Resource: "/api/2.0/global-init-scripts/1234?",
103104
ReuseRequest: true,
104-
Response: GlobalInitScriptInfo{
105-
ScriptID: "1234",
106-
ContentBase64: "ZWNobyBoZWxsbw==",
107-
Position: 0,
108-
Name: "test",
105+
Response: compute.GlobalInitScriptDetailsWithContent{
106+
ScriptId: "1234",
107+
Script: "ZWNobyBoZWxsbw==",
108+
Name: "test",
109109
},
110110
},
111111
},
@@ -156,24 +156,24 @@ func TestResourceGlobalInitScriptUpdate(t *testing.T) {
156156
{
157157
Method: "PATCH",
158158
Resource: "/api/2.0/global-init-scripts/1234",
159-
ExpectedRequest: GlobalInitScriptPayload{
160-
Name: "test",
161-
Position: 0,
162-
ContentBase64: "ZWNobyBoZWxsbw==",
159+
ExpectedRequest: compute.GlobalInitScriptUpdateRequest{
160+
Name: "test",
161+
Position: 0,
162+
Script: "ZWNobyBoZWxsbw==",
163163
},
164-
Response: globalInitScriptCreateResponse{
165-
ScriptID: "1234",
164+
Response: compute.CreateResponse{
165+
ScriptId: "1234",
166166
},
167167
},
168168
{
169169
Method: "GET",
170-
Resource: "/api/2.0/global-init-scripts/1234",
170+
Resource: "/api/2.0/global-init-scripts/1234?",
171171
ReuseRequest: true,
172-
Response: GlobalInitScriptInfo{
173-
ScriptID: "1234",
174-
ContentBase64: "ZWNobyBoZWxsbw==",
175-
Position: 0,
176-
Name: "test",
172+
Response: compute.GlobalInitScriptDetailsWithContent{
173+
ScriptId: "1234",
174+
Script: "ZWNobyBoZWxsbw==",
175+
Position: 0,
176+
Name: "test",
177177
},
178178
},
179179
},

0 commit comments

Comments
 (0)