Skip to content

Commit 10b6e91

Browse files
changed back to waiting in Creation
1 parent a778056 commit 10b6e91

File tree

2 files changed

+16
-114
lines changed

2 files changed

+16
-114
lines changed

internal/providers/pluginfw/products/app/resource_app.go

Lines changed: 16 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package app
22

33
import (
44
"context"
5+
"errors"
56
"fmt"
67
"reflect"
78
"slices"
@@ -28,7 +29,7 @@ import (
2829
const (
2930
resourceName = "app"
3031
resourceNamePlural = "apps"
31-
appDeletionTimeout = 10 * time.Minute
32+
appCreateTimeout = 1 * time.Minute
3233
)
3334

3435
type AppResource struct {
@@ -129,15 +130,26 @@ func (a *resourceApp) Create(ctx context.Context, req resource.CreateRequest, re
129130
return
130131
}
131132

132-
// Create the app
133133
var forceSendFields []string
134134
if !app.NoCompute.IsNull() {
135135
forceSendFields = append(forceSendFields, "NoCompute")
136136
}
137-
waiter, err := w.Apps.Create(ctx, apps.CreateAppRequest{
137+
createReq := apps.CreateAppRequest{
138138
App: appGoSdk,
139139
NoCompute: app.NoCompute.ValueBool(),
140140
ForceSendFields: forceSendFields,
141+
}
142+
143+
retrier := retries.New[apps.App](retries.WithTimeout(appCreateTimeout), retries.WithRetryFunc(shouldRetry))
144+
createdApp, err := retrier.Run(ctx, func(ctx context.Context) (*apps.App, error) {
145+
waiter, err := w.Apps.Create(ctx, createReq)
146+
if err != nil {
147+
if errors.Is(err, apierr.ErrResourceAlreadyExists) {
148+
return nil, retries.Continues("app already exists, retrying")
149+
}
150+
return nil, retries.Halt(err)
151+
}
152+
return waiter.Response, nil
141153
})
142154
if err != nil {
143155
resp.Diagnostics.AddError("failed to create app", err.Error())
@@ -146,7 +158,7 @@ func (a *resourceApp) Create(ctx context.Context, req resource.CreateRequest, re
146158

147159
// Store the initial version of the app in state
148160
var newApp AppResource
149-
resp.Diagnostics.Append(converters.GoSdkToTfSdkStruct(ctx, waiter.Response, &newApp)...)
161+
resp.Diagnostics.Append(converters.GoSdkToTfSdkStruct(ctx, createdApp, &newApp)...)
150162
if resp.Diagnostics.HasError() {
151163
return
152164
}
@@ -213,31 +225,6 @@ func (a *resourceApp) waitForApp(ctx context.Context, w *databricks.WorkspaceCli
213225
})
214226
}
215227

216-
func waitForAppDeleted(ctx context.Context, w *databricks.WorkspaceClient, name string) error {
217-
retrier := retries.New[struct{}](retries.WithTimeout(appDeletionTimeout), retries.WithRetryFunc(shouldRetry))
218-
_, err := retrier.Run(ctx, func(ctx context.Context) (*struct{}, error) {
219-
app, err := w.Apps.GetByName(ctx, name)
220-
if apierr.IsMissing(err) {
221-
return &struct{}{}, nil
222-
}
223-
if err != nil {
224-
return nil, retries.Halt(err)
225-
}
226-
if app.ComputeStatus == nil {
227-
return nil, retries.Continues("waiting for compute status")
228-
}
229-
switch app.ComputeStatus.State {
230-
case apps.ComputeStateDeleting:
231-
return nil, retries.Continues("app is deleting")
232-
case apps.ComputeStateActive, apps.ComputeStateStopped, apps.ComputeStateError:
233-
return nil, retries.Halt(fmt.Errorf("app %s was not deleted, current state: %s", name, app.ComputeStatus.State))
234-
default:
235-
return nil, retries.Continues(fmt.Sprintf("app is in %s state", app.ComputeStatus.State))
236-
}
237-
})
238-
return err
239-
}
240-
241228
func (a *resourceApp) Read(ctx context.Context, req resource.ReadRequest, resp *resource.ReadResponse) {
242229
ctx = pluginfwcontext.SetUserAgentInResourceContext(ctx, resourceName)
243230

@@ -353,11 +340,6 @@ func (a *resourceApp) Delete(ctx context.Context, req resource.DeleteRequest, re
353340
resp.Diagnostics.AddError("failed to delete app", err.Error())
354341
return
355342
}
356-
357-
if err := waitForAppDeleted(ctx, w, app.Name.ValueString()); err != nil {
358-
resp.Diagnostics.AddError("failed to wait for app deletion", err.Error())
359-
return
360-
}
361343
}
362344

363345
func (a *resourceApp) ImportState(ctx context.Context, req resource.ImportStateRequest, resp *resource.ImportStateResponse) {

internal/providers/pluginfw/products/app/resource_app_test.go

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

0 commit comments

Comments
 (0)