Skip to content

Commit 159d1ce

Browse files
authored
refactor: make resource create backward compatible (#754)
1 parent 964c654 commit 159d1ce

File tree

5 files changed

+76
-111
lines changed

5 files changed

+76
-111
lines changed

core/resource/service/resource_manager.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,8 @@ func (m *ResourceMgr) CreateResource(ctx context.Context, res *resource.Resource
4848
me.Append(res.MarkExistInStore())
4949
} else {
5050
me.Append(res.MarkFailure())
51+
me.Append(err)
5152
}
52-
me.Append(err)
5353
} else {
5454
me.Append(res.MarkSuccess())
5555
}

core/resource/service/resource_manager_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ func TestResourceManager(t *testing.T) {
115115
manager.RegisterDatastore(store, storeService)
116116

117117
err = manager.CreateResource(ctx, createRequest)
118-
assert.Error(t, err)
118+
assert.NoError(t, err)
119119
})
120120
t.Run("creates the resource on the datastore", func(t *testing.T) {
121121
spec := map[string]any{"description": "test spec"}

core/resource/service/resource_service.go

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -26,24 +26,18 @@ type ResourceManager interface {
2626
GetURN(res *resource.Resource) (string, error)
2727
}
2828

29-
type TenantDetailsGetter interface {
30-
GetDetails(ctx context.Context, tnnt tenant.Tenant) (*tenant.WithDetails, error)
31-
}
32-
3329
type ResourceService struct {
34-
repo ResourceRepository
35-
mgr ResourceManager
36-
tnntDetailsGetter TenantDetailsGetter
30+
repo ResourceRepository
31+
mgr ResourceManager
3732

3833
logger log.Logger
3934
}
4035

41-
func NewResourceService(logger log.Logger, repo ResourceRepository, mgr ResourceManager, tnntDetailsGetter TenantDetailsGetter) *ResourceService {
36+
func NewResourceService(logger log.Logger, repo ResourceRepository, mgr ResourceManager) *ResourceService {
4237
return &ResourceService{
43-
repo: repo,
44-
mgr: mgr,
45-
tnntDetailsGetter: tnntDetailsGetter,
46-
logger: logger,
38+
repo: repo,
39+
mgr: mgr,
40+
logger: logger,
4741
}
4842
}
4943

@@ -70,17 +64,17 @@ func (rs ResourceService) Create(ctx context.Context, incoming *resource.Resourc
7064
return err
7165
}
7266

73-
if _, err := rs.tnntDetailsGetter.GetDetails(ctx, incoming.Tenant()); err != nil {
74-
rs.logger.Error("error getting tenant for resource [%s] details: %s", incoming.FullName(), err)
75-
return err
76-
}
7767
incoming.MarkToCreate()
7868

7969
if err := rs.repo.Create(ctx, incoming); err != nil {
8070
rs.logger.Error("error creating resource [%s] to db: %s", incoming.FullName(), err)
8171
return err
8272
}
8373
} else {
74+
if existing.Status() == resource.StatusSuccess || existing.Status() == resource.StatusExistInStore {
75+
return nil // Note: return in case resource already exists
76+
}
77+
8478
if !resource.StatusForToCreate(existing.Status()) {
8579
msg := fmt.Sprintf("cannot create resource [%s] since it already exists with status [%s]", incoming.FullName(), existing.Status())
8680
rs.logger.Error(msg)

0 commit comments

Comments
 (0)