Skip to content

Commit f5cd1b7

Browse files
authored
direct: internal: merge IResourceNoRefresh and IResourceWithRefresh (#3932)
## Changes Remove ability to specify DoCreate/DoUpdate/Wait.. without remoteState return, now all methods must return remote state (can be nil if not available). ## Why Simplification, there are too many DoUpdate variants. For resources that do not have remote state the new approach is slightly more verbose. However, for some resources it also highlights missing opportunity to return remote state, e.g. database_catalogs.go ## Tests Existing tests.
1 parent f981f2a commit f5cd1b7

File tree

13 files changed

+147
-234
lines changed

13 files changed

+147
-234
lines changed

bundle/direct/dresources/adapter.go

Lines changed: 77 additions & 166 deletions
Large diffs are not rendered by default.

bundle/direct/dresources/app.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,35 +28,35 @@ func (r *ResourceApp) DoRefresh(ctx context.Context, id string) (*apps.App, erro
2828
return r.client.Apps.GetByName(ctx, id)
2929
}
3030

31-
func (r *ResourceApp) DoCreate(ctx context.Context, config *apps.App) (string, error) {
31+
func (r *ResourceApp) DoCreate(ctx context.Context, config *apps.App) (string, *apps.App, error) {
3232
request := apps.CreateAppRequest{
3333
App: *config,
3434
NoCompute: true,
3535
ForceSendFields: nil,
3636
}
3737
waiter, err := r.client.Apps.Create(ctx, request)
3838
if err != nil {
39-
return "", err
39+
return "", nil, err
4040
}
4141

42-
return waiter.Response.Name, nil
42+
return waiter.Response.Name, nil, nil
4343
}
4444

45-
func (r *ResourceApp) DoUpdate(ctx context.Context, id string, config *apps.App) error {
45+
func (r *ResourceApp) DoUpdate(ctx context.Context, id string, config *apps.App) (*apps.App, error) {
4646
request := apps.UpdateAppRequest{
4747
App: *config,
4848
Name: id,
4949
}
5050
response, err := r.client.Apps.Update(ctx, request)
5151
if err != nil {
52-
return err
52+
return nil, err
5353
}
5454

5555
if response.Name != id {
5656
log.Warnf(ctx, "apps: response contains unexpected name=%#v (expected %#v)", response.Name, id)
5757
}
5858

59-
return nil
59+
return nil, nil
6060
}
6161

6262
func (r *ResourceApp) DoDelete(ctx context.Context, id string) error {

bundle/direct/dresources/cluster.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -77,15 +77,15 @@ func (r *ResourceCluster) DoRefresh(ctx context.Context, id string) (*compute.Cl
7777
return r.client.Clusters.GetByClusterId(ctx, id)
7878
}
7979

80-
func (r *ResourceCluster) DoCreate(ctx context.Context, config *compute.ClusterSpec) (string, error) {
80+
func (r *ResourceCluster) DoCreate(ctx context.Context, config *compute.ClusterSpec) (string, *compute.ClusterDetails, error) {
8181
wait, err := r.client.Clusters.Create(ctx, makeCreateCluster(config))
8282
if err != nil {
83-
return "", err
83+
return "", nil, err
8484
}
85-
return wait.ClusterId, nil
85+
return wait.ClusterId, nil, nil
8686
}
8787

88-
func (r *ResourceCluster) DoUpdate(ctx context.Context, id string, config *compute.ClusterSpec) error {
88+
func (r *ResourceCluster) DoUpdate(ctx context.Context, id string, config *compute.ClusterSpec) (*compute.ClusterDetails, error) {
8989
// Same retry as in TF provider logic
9090
// https://github.com/databricks/terraform-provider-databricks/blob/3eecd0f90cf99d7777e79a3d03c41f9b2aafb004/clusters/resource_cluster.go#L624
9191
timeout := 15 * time.Minute
@@ -103,7 +103,7 @@ func (r *ResourceCluster) DoUpdate(ctx context.Context, id string, config *compu
103103
}
104104
return nil, retries.Halt(err)
105105
})
106-
return err
106+
return nil, err
107107
}
108108

109109
func (r *ResourceCluster) DoResize(ctx context.Context, id string, config *compute.ClusterSpec) error {

bundle/direct/dresources/database_catalog.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,25 +24,25 @@ func (r *ResourceDatabaseCatalog) DoRefresh(ctx context.Context, id string) (*da
2424
return r.client.Database.GetDatabaseCatalogByName(ctx, id)
2525
}
2626

27-
func (r *ResourceDatabaseCatalog) DoCreate(ctx context.Context, config *database.DatabaseCatalog) (string, error) {
27+
func (r *ResourceDatabaseCatalog) DoCreate(ctx context.Context, config *database.DatabaseCatalog) (string, *database.DatabaseCatalog, error) {
2828
result, err := r.client.Database.CreateDatabaseCatalog(ctx, database.CreateDatabaseCatalogRequest{
2929
Catalog: *config,
3030
})
3131
if err != nil {
32-
return "", err
32+
return "", nil, err
3333
}
34-
return result.Name, nil
34+
return result.Name, nil, nil
3535
}
3636

37-
func (r *ResourceDatabaseCatalog) DoUpdate(ctx context.Context, id string, config *database.DatabaseCatalog) error {
37+
func (r *ResourceDatabaseCatalog) DoUpdate(ctx context.Context, id string, config *database.DatabaseCatalog) (*database.DatabaseCatalog, error) {
3838
request := database.UpdateDatabaseCatalogRequest{
3939
DatabaseCatalog: *config,
4040
Name: id,
4141
UpdateMask: "*",
4242
}
4343

4444
_, err := r.client.Database.UpdateDatabaseCatalog(ctx, request)
45-
return err
45+
return nil, err
4646
}
4747

4848
func (r *ResourceDatabaseCatalog) DoDelete(ctx context.Context, id string) error {

bundle/direct/dresources/database_instance.go

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,37 +25,39 @@ func (d *ResourceDatabaseInstance) DoRefresh(ctx context.Context, id string) (*d
2525
return d.client.Database.GetDatabaseInstanceByName(ctx, id)
2626
}
2727

28-
func (d *ResourceDatabaseInstance) DoCreate(ctx context.Context, config *database.DatabaseInstance) (string, error) {
28+
func (d *ResourceDatabaseInstance) DoCreate(ctx context.Context, config *database.DatabaseInstance) (string, *database.DatabaseInstance, error) {
2929
waiter, err := d.client.Database.CreateDatabaseInstance(ctx, database.CreateDatabaseInstanceRequest{
3030
DatabaseInstance: *config,
3131
})
3232
if err != nil {
33-
return "", err
33+
return "", nil, err
3434
}
35-
return waiter.Response.Name, nil
35+
return waiter.Response.Name, nil, nil
3636
}
3737

38-
func (d *ResourceDatabaseInstance) DoUpdate(ctx context.Context, id string, config *database.DatabaseInstance) error {
38+
func (d *ResourceDatabaseInstance) DoUpdate(ctx context.Context, id string, config *database.DatabaseInstance) (*database.DatabaseInstance, error) {
3939
request := database.UpdateDatabaseInstanceRequest{
4040
DatabaseInstance: *config,
4141
Name: config.Name,
4242
UpdateMask: "*",
4343
}
4444
request.DatabaseInstance.Uid = id
4545
_, err := d.client.Database.UpdateDatabaseInstance(ctx, request)
46-
return err
46+
return nil, err
4747
}
4848

49-
func (d *ResourceDatabaseInstance) WaitAfterCreate(ctx context.Context, config *database.DatabaseInstance) error {
49+
func (d *ResourceDatabaseInstance) WaitAfterCreate(ctx context.Context, config *database.DatabaseInstance) (*database.DatabaseInstance, error) {
5050
waiter := &database.WaitGetDatabaseInstanceDatabaseAvailable[database.DatabaseInstance]{
5151
Response: config,
5252
Name: config.Name,
5353
Poll: func(timeout time.Duration, callback func(*database.DatabaseInstance)) (*database.DatabaseInstance, error) {
5454
return d.client.Database.WaitGetDatabaseInstanceDatabaseAvailable(ctx, config.Name, timeout, callback)
5555
},
5656
}
57+
58+
// _ is remoteState, should we return it here?
5759
_, err := waiter.GetWithTimeout(20 * time.Minute)
58-
return err
60+
return nil, err
5961
}
6062

6163
func (d *ResourceDatabaseInstance) DoDelete(ctx context.Context, name string) error {

bundle/direct/dresources/experiment.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -48,22 +48,22 @@ func (r *ResourceExperiment) DoRefresh(ctx context.Context, id string) (*ml.Expe
4848
return result.Experiment, nil
4949
}
5050

51-
func (r *ResourceExperiment) DoCreate(ctx context.Context, config *ml.CreateExperiment) (string, error) {
51+
func (r *ResourceExperiment) DoCreate(ctx context.Context, config *ml.CreateExperiment) (string, *ml.Experiment, error) {
5252
result, err := r.client.Experiments.CreateExperiment(ctx, *config)
5353
if err != nil {
54-
return "", err
54+
return "", nil, err
5555
}
56-
return result.ExperimentId, nil
56+
return result.ExperimentId, nil, nil
5757
}
5858

59-
func (r *ResourceExperiment) DoUpdate(ctx context.Context, id string, config *ml.CreateExperiment) error {
59+
func (r *ResourceExperiment) DoUpdate(ctx context.Context, id string, config *ml.CreateExperiment) (*ml.Experiment, error) {
6060
updateReq := ml.UpdateExperiment{
6161
ExperimentId: id,
6262
NewName: config.Name,
6363
ForceSendFields: utils.FilterFields[ml.UpdateExperiment](config.ForceSendFields),
6464
}
6565

66-
return r.client.Experiments.UpdateExperiment(ctx, updateReq)
66+
return nil, r.client.Experiments.UpdateExperiment(ctx, updateReq)
6767
}
6868

6969
func (r *ResourceExperiment) DoDelete(ctx context.Context, id string) error {

bundle/direct/dresources/grants.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -136,17 +136,17 @@ func (r *ResourceGrants) DoRefresh(ctx context.Context, id string) (*GrantsState
136136
}, nil
137137
}
138138

139-
func (r *ResourceGrants) DoCreate(ctx context.Context, state *GrantsState) (string, error) {
139+
func (r *ResourceGrants) DoCreate(ctx context.Context, state *GrantsState) (string, *GrantsState, error) {
140140
err := r.applyGrants(ctx, state)
141141
if err != nil {
142-
return "", err
142+
return "", nil, err
143143
}
144144

145-
return makeGrantsID(state.SecurableType, state.FullName), nil
145+
return makeGrantsID(state.SecurableType, state.FullName), nil, nil
146146
}
147147

148-
func (r *ResourceGrants) DoUpdate(ctx context.Context, _ string, state *GrantsState) error {
149-
return r.applyGrants(ctx, state)
148+
func (r *ResourceGrants) DoUpdate(ctx context.Context, _ string, state *GrantsState) (*GrantsState, error) {
149+
return nil, r.applyGrants(ctx, state)
150150
}
151151

152152
func (r *ResourceGrants) DoDelete(ctx context.Context, id string) error {

bundle/direct/dresources/job.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -37,24 +37,24 @@ func (r *ResourceJob) DoRefresh(ctx context.Context, id string) (*jobs.Job, erro
3737
return r.client.Jobs.GetByJobId(ctx, idInt)
3838
}
3939

40-
func (r *ResourceJob) DoCreate(ctx context.Context, config *jobs.JobSettings) (string, error) {
40+
func (r *ResourceJob) DoCreate(ctx context.Context, config *jobs.JobSettings) (string, *jobs.Job, error) {
4141
request, err := makeCreateJob(*config)
4242
if err != nil {
43-
return "", err
43+
return "", nil, err
4444
}
4545
response, err := r.client.Jobs.Create(ctx, request)
4646
if err != nil {
47-
return "", err
47+
return "", nil, err
4848
}
49-
return strconv.FormatInt(response.JobId, 10), nil
49+
return strconv.FormatInt(response.JobId, 10), nil, nil
5050
}
5151

52-
func (r *ResourceJob) DoUpdate(ctx context.Context, id string, config *jobs.JobSettings) error {
52+
func (r *ResourceJob) DoUpdate(ctx context.Context, id string, config *jobs.JobSettings) (*jobs.Job, error) {
5353
request, err := makeResetJob(*config, id)
5454
if err != nil {
55-
return err
55+
return nil, err
5656
}
57-
return r.client.Jobs.Reset(ctx, request)
57+
return nil, r.client.Jobs.Reset(ctx, request)
5858
}
5959

6060
func (r *ResourceJob) DoDelete(ctx context.Context, id string) error {

bundle/direct/dresources/model_serving_endpoint.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -115,13 +115,13 @@ func (r *ResourceModelServingEndpoint) DoRefresh(ctx context.Context, id string)
115115
}, nil
116116
}
117117

118-
func (r *ResourceModelServingEndpoint) DoCreate(ctx context.Context, config *serving.CreateServingEndpoint) (string, error) {
118+
func (r *ResourceModelServingEndpoint) DoCreate(ctx context.Context, config *serving.CreateServingEndpoint) (string, *RefreshOutput, error) {
119119
waiter, err := r.client.ServingEndpoints.Create(ctx, *config)
120120
if err != nil {
121-
return "", err
121+
return "", nil, err
122122
}
123123

124-
return waiter.Response.Name, nil
124+
return waiter.Response.Name, nil, nil
125125
}
126126

127127
// waitForEndpointReady waits for the serving endpoint to be ready (not updating)
@@ -273,7 +273,7 @@ func (r *ResourceModelServingEndpoint) updateTags(ctx context.Context, id string
273273
return nil
274274
}
275275

276-
func (r *ResourceModelServingEndpoint) DoUpdate(ctx context.Context, id string, config *serving.CreateServingEndpoint) error {
276+
func (r *ResourceModelServingEndpoint) DoUpdate(ctx context.Context, id string, config *serving.CreateServingEndpoint) (*RefreshOutput, error) {
277277
errGroup := errgroup.Group{}
278278
errGroup.Go(func() error {
279279
return r.updateAiGateway(ctx, id, config.AiGateway)
@@ -287,7 +287,7 @@ func (r *ResourceModelServingEndpoint) DoUpdate(ctx context.Context, id string,
287287
errGroup.Go(func() error {
288288
return r.updateTags(ctx, id, config.Tags)
289289
})
290-
return errGroup.Wait()
290+
return nil, errGroup.Wait()
291291
}
292292

293293
func (r *ResourceModelServingEndpoint) WaitAfterUpdate(ctx context.Context, config *serving.CreateServingEndpoint) (*RefreshOutput, error) {

bundle/direct/dresources/permissions.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -145,21 +145,21 @@ func (r *ResourcePermissions) DoRefresh(ctx context.Context, id string) (*Permis
145145
}
146146

147147
// DoCreate calls https://docs.databricks.com/api/workspace/jobs/setjobpermissions.
148-
func (r *ResourcePermissions) DoCreate(ctx context.Context, newState *PermissionsState) (string, error) {
148+
func (r *ResourcePermissions) DoCreate(ctx context.Context, newState *PermissionsState) (string, *PermissionsState, error) {
149149
// should we remember the default here?
150-
err := r.DoUpdate(ctx, newState.ObjectID, newState)
150+
_, err := r.DoUpdate(ctx, newState.ObjectID, newState)
151151
if err != nil {
152-
return "", err
152+
return "", nil, err
153153
}
154154

155-
return newState.ObjectID, nil
155+
return newState.ObjectID, nil, nil
156156
}
157157

158158
// DoUpdate calls https://docs.databricks.com/api/workspace/jobs/setjobpermissions.
159-
func (r *ResourcePermissions) DoUpdate(ctx context.Context, _ string, newState *PermissionsState) error {
159+
func (r *ResourcePermissions) DoUpdate(ctx context.Context, _ string, newState *PermissionsState) (*PermissionsState, error) {
160160
extractedType, extractedID, err := parsePermissionsID(newState.ObjectID)
161161
if err != nil {
162-
return err
162+
return nil, err
163163
}
164164

165165
_, err = r.client.Permissions.Set(ctx, iam.SetObjectPermissions{
@@ -168,7 +168,7 @@ func (r *ResourcePermissions) DoUpdate(ctx context.Context, _ string, newState *
168168
AccessControlList: newState.Permissions,
169169
})
170170

171-
return err
171+
return nil, err
172172
}
173173

174174
// DoDelete is activated in 2 distinct cases:

0 commit comments

Comments
 (0)