Skip to content

Commit 83a494b

Browse files
committed
remove ErrNotFound custom error and use generic openapi error
1 parent 1e0a726 commit 83a494b

8 files changed

Lines changed: 19 additions & 43 deletions

File tree

pkg/ccm/instances.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import (
2525

2626
"github.com/stackitcloud/cloud-provider-stackit/pkg/labels"
2727
stackitclient "github.com/stackitcloud/cloud-provider-stackit/pkg/stackit/client"
28+
"github.com/stackitcloud/cloud-provider-stackit/pkg/stackit/stackiterrors"
2829
iaas "github.com/stackitcloud/stackit-sdk-go/services/iaas/v2api"
2930
corev1 "k8s.io/api/core/v1"
3031
cloudprovider "k8s.io/cloud-provider"
@@ -239,7 +240,7 @@ func (i *Instances) getInstance(ctx context.Context, node *corev1.Node) (*iaas.S
239240
}
240241

241242
server, err := i.iaasClient.GetServer(ctx, instanceID)
242-
if stackitclient.IsNotFound(err) {
243+
if stackiterrors.IsNotFound(err) {
243244
return nil, cloudprovider.InstanceNotFound
244245
}
245246
if err != nil {

pkg/ccm/instances_test.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,12 @@ package ccm
1919
import (
2020
"context"
2121
"fmt"
22+
"net/http"
2223

2324
. "github.com/onsi/ginkgo/v2"
2425
. "github.com/onsi/gomega"
26+
oapiError "github.com/stackitcloud/stackit-sdk-go/core/oapierror"
2527

26-
stackitclient "github.com/stackitcloud/cloud-provider-stackit/pkg/stackit/client"
2728
stackitclientmock "github.com/stackitcloud/cloud-provider-stackit/pkg/stackit/client/mock"
2829
iaas "github.com/stackitcloud/stackit-sdk-go/services/iaas/v2api"
2930
"go.uber.org/mock/gomock"
@@ -158,7 +159,7 @@ var _ = Describe("Node Controller", func() {
158159
})
159160

160161
It("does not error when get server instance not found", func() {
161-
nodeMockClient.EXPECT().GetServer(gomock.Any(), serverID).Return(nil, stackitclient.ErrorNotFound)
162+
nodeMockClient.EXPECT().GetServer(gomock.Any(), serverID).Return(nil, &oapiError.GenericOpenAPIError{StatusCode: http.StatusNotFound})
162163

163164
node := &corev1.Node{
164165
ObjectMeta: metav1.ObjectMeta{Name: "foo"},
@@ -210,7 +211,7 @@ var _ = Describe("Node Controller", func() {
210211
})
211212

212213
It("fails if server not found", func() {
213-
nodeMockClient.EXPECT().ListServers(gomock.Any()).Return(nil, stackitclient.ErrorNotFound)
214+
nodeMockClient.EXPECT().ListServers(gomock.Any()).Return(nil, &oapiError.GenericOpenAPIError{StatusCode: http.StatusNotFound})
214215

215216
node := &corev1.Node{
216217
ObjectMeta: metav1.ObjectMeta{Name: "foo"},

pkg/ccm/loadbalancer.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010
"github.com/stackitcloud/cloud-provider-stackit/pkg/cmp"
1111
stackitclient "github.com/stackitcloud/cloud-provider-stackit/pkg/stackit/client"
1212
stackitconfig "github.com/stackitcloud/cloud-provider-stackit/pkg/stackit/config"
13+
"github.com/stackitcloud/cloud-provider-stackit/pkg/stackit/stackiterrors"
1314
loadbalancer "github.com/stackitcloud/stackit-sdk-go/services/loadbalancer/v2api"
1415
lbwait "github.com/stackitcloud/stackit-sdk-go/services/loadbalancer/v2api/wait"
1516
corev1 "k8s.io/api/core/v1"
@@ -68,7 +69,7 @@ func (l *LoadBalancer) GetLoadBalancer(ctx context.Context, clusterName string,
6869
) {
6970
lb, err := l.client.GetLoadBalancer(ctx, l.GetLoadBalancerName(ctx, clusterName, service))
7071
switch {
71-
case stackitclient.IsNotFound(err):
72+
case stackiterrors.IsNotFound(err):
7273
// Also for non-STACKIT load balancers in "update" & "updateAndCreate" mode return with no error if not found.
7374
return nil, false, nil
7475
case err != nil:
@@ -112,10 +113,10 @@ func (l *LoadBalancer) EnsureLoadBalancer( //nolint:gocyclo // not really comple
112113
) (*corev1.LoadBalancerStatus, error) {
113114
name := l.GetLoadBalancerName(ctx, clusterName, service)
114115
lb, err := l.client.GetLoadBalancer(ctx, name)
115-
if err != nil && !stackitclient.IsNotFound(err) {
116+
if err != nil && !stackiterrors.IsNotFound(err) {
116117
return nil, err
117118
}
118-
if stackitclient.IsNotFound(err) {
119+
if stackiterrors.IsNotFound(err) {
119120
return l.createLoadBalancer(ctx, clusterName, service, nodes)
120121
}
121122

@@ -269,7 +270,7 @@ func (l *LoadBalancer) EnsureLoadBalancerDeleted(
269270

270271
lb, err := l.client.GetLoadBalancer(ctx, name)
271272
switch {
272-
case stackitclient.IsNotFound(err):
273+
case stackiterrors.IsNotFound(err):
273274
return nil
274275
case err != nil:
275276
return err

pkg/ccm/loadbalancer_test.go

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,14 @@ package ccm
33
import (
44
"context"
55
"errors"
6+
"net/http"
67
"time"
78

89
. "github.com/onsi/ginkgo/v2"
910
. "github.com/onsi/gomega"
10-
stackitclient "github.com/stackitcloud/cloud-provider-stackit/pkg/stackit/client"
1111
stackitclientmock "github.com/stackitcloud/cloud-provider-stackit/pkg/stackit/client/mock"
1212
stackitconfig "github.com/stackitcloud/cloud-provider-stackit/pkg/stackit/config"
13+
oapiError "github.com/stackitcloud/stackit-sdk-go/core/oapierror"
1314
loadbalancer "github.com/stackitcloud/stackit-sdk-go/services/loadbalancer/v2api"
1415
lbwait "github.com/stackitcloud/stackit-sdk-go/services/loadbalancer/v2api/wait"
1516
"go.uber.org/mock/gomock"
@@ -100,7 +101,7 @@ var _ = Describe("LoadBalancer", func() {
100101

101102
Describe("GetLoadBalancer", func() {
102103
It("should report LB does not exist", func() {
103-
mockClient.EXPECT().GetLoadBalancer(gomock.Any(), gomock.Any()).Return(nil, stackitclient.ErrorNotFound)
104+
mockClient.EXPECT().GetLoadBalancer(gomock.Any(), gomock.Any()).Return(nil, &oapiError.GenericOpenAPIError{StatusCode: http.StatusNotFound})
104105

105106
svc := minimalLoadBalancerService()
106107

@@ -190,7 +191,7 @@ var _ = Describe("LoadBalancer", func() {
190191

191192
Describe("EnsureLoadBalancer", func() {
192193
It("ensure load balancer should trigger load balancer creation if LB doesn't exist", func() {
193-
mockClient.EXPECT().GetLoadBalancer(gomock.Any(), gomock.Any()).Return(nil, stackitclient.ErrorNotFound)
194+
mockClient.EXPECT().GetLoadBalancer(gomock.Any(), gomock.Any()).Return(nil, &oapiError.GenericOpenAPIError{StatusCode: http.StatusNotFound})
194195
mockClient.EXPECT().CreateLoadBalancer(gomock.Any(), gomock.Any()).MinTimes(1).Return(&loadbalancer.LoadBalancer{}, nil)
195196

196197
_, err := loadBalancer.EnsureLoadBalancer(context.Background(), clusterName, minimalLoadBalancerService(), []*corev1.Node{})
@@ -199,7 +200,7 @@ var _ = Describe("LoadBalancer", func() {
199200
})
200201

201202
It("should create a load balancer with observability configured", func() {
202-
mockClient.EXPECT().GetLoadBalancer(gomock.Any(), gomock.Any()).Return(nil, stackitclient.ErrorNotFound)
203+
mockClient.EXPECT().GetLoadBalancer(gomock.Any(), gomock.Any()).Return(nil, &oapiError.GenericOpenAPIError{StatusCode: http.StatusNotFound})
203204
mockClient.EXPECT().ListCredentials(gomock.Any()).Return(&loadbalancer.ListCredentialsResponse{
204205
Credentials: []loadbalancer.CredentialsResponse{},
205206
}, nil)
@@ -399,7 +400,7 @@ var _ = Describe("LoadBalancer", func() {
399400
})
400401

401402
It("should finalize deletion if LB API returns not found", func() {
402-
mockClient.EXPECT().GetLoadBalancer(gomock.Any(), gomock.Any()).Return(nil, stackitclient.ErrorNotFound)
403+
mockClient.EXPECT().GetLoadBalancer(gomock.Any(), gomock.Any()).Return(nil, &oapiError.GenericOpenAPIError{StatusCode: http.StatusNotFound})
403404

404405
err := loadBalancer.EnsureLoadBalancerDeleted(context.Background(), clusterName, minimalLoadBalancerService())
405406
Expect(err).NotTo(HaveOccurred())
@@ -417,7 +418,7 @@ var _ = Describe("LoadBalancer", func() {
417418
})
418419

419420
It("should report no error if LB not found", func() {
420-
mockClient.EXPECT().GetLoadBalancer(gomock.Any(), gomock.Any()).Return(nil, stackitclient.ErrorNotFound)
421+
mockClient.EXPECT().GetLoadBalancer(gomock.Any(), gomock.Any()).Return(nil, &oapiError.GenericOpenAPIError{StatusCode: http.StatusNotFound})
421422

422423
svc := minimalLoadBalancerService()
423424

pkg/stackit/client/factory.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package client
22

33
import (
4-
"errors"
54
"io"
65
"os"
76

@@ -23,7 +22,6 @@ const (
2322
// userAgentData is used to add extra information to the STACKIT SDK user-agent
2423
var (
2524
userAgentData []string
26-
ErrorNotFound = errors.New("not found")
2725
)
2826

2927
// Factory produces clients for various STACKIT services.

pkg/stackit/client/iaas.go

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -109,11 +109,7 @@ func NewIaaSClient(region, projectID string, options []sdkconfig.ConfigurationOp
109109

110110
func (i iaasClient) GetServer(ctx context.Context, serverID string) (*iaas.Server, error) {
111111
server, err := i.Client.GetServer(ctx, i.projectID, i.region, serverID).Execute()
112-
if isOpenAPINotFound(err) {
113-
return nil, ErrorNotFound
114-
}
115-
116-
return server, nil
112+
return server, err
117113
}
118114

119115
func (i iaasClient) DeleteServer(ctx context.Context, serverID string) error {
@@ -122,9 +118,6 @@ func (i iaasClient) DeleteServer(ctx context.Context, serverID string) error {
122118

123119
func (i iaasClient) CreateServer(ctx context.Context, create *iaas.CreateServerPayload) (*iaas.Server, error) {
124120
server, err := i.Client.CreateServer(ctx, i.projectID, i.region).CreateServerPayload(*create).Execute()
125-
if isOpenAPINotFound(err) {
126-
return nil, ErrorNotFound
127-
}
128121
return server, err
129122
}
130123

pkg/stackit/client/loadbalancer.go

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,6 @@ func NewLoadBalancingClient(region, projectID string, options []sdkconfig.Config
4242

4343
func (l loadBalancingClient) CreateLoadBalancer(ctx context.Context, payload *loadbalancer.CreateLoadBalancerPayload) (*loadbalancer.LoadBalancer, error) {
4444
lb, err := l.Client.CreateLoadBalancer(ctx, l.projectID, l.region).CreateLoadBalancerPayload(*payload).Execute()
45-
if isOpenAPINotFound(err) {
46-
return lb, ErrorNotFound
47-
}
4845
return lb, err
4946
}
5047

pkg/stackit/client/utils.go

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,9 @@
11
package client
22

33
import (
4-
"errors"
5-
"net/http"
6-
7-
oapiError "github.com/stackitcloud/stackit-sdk-go/core/oapierror"
84
iaas "github.com/stackitcloud/stackit-sdk-go/services/iaas/v2api"
95
)
106

11-
func isOpenAPINotFound(err error) bool {
12-
apiErr := &oapiError.GenericOpenAPIError{}
13-
if !errors.As(err, &apiErr) {
14-
return false
15-
}
16-
return apiErr.StatusCode == http.StatusNotFound
17-
}
18-
197
func FilterVolumes(volumes []iaas.Volume, filters map[string]string) []iaas.Volume {
208
filteredVolumes := make([]iaas.Volume, 0)
219

@@ -81,7 +69,3 @@ func FilterBackups(backups []iaas.Backup, filters map[string]string) []iaas.Back
8169

8270
return filteredBackups
8371
}
84-
85-
func IsNotFound(err error) bool {
86-
return errors.Is(err, ErrorNotFound)
87-
}

0 commit comments

Comments
 (0)