Skip to content

Commit 33be568

Browse files
authored
Merge pull request #2803 from ElijahQuinones/returnCode
Adjust error codes
2 parents e854748 + a37ff26 commit 33be568

File tree

5 files changed

+11
-63
lines changed

5 files changed

+11
-63
lines changed

pkg/cloud/cloud.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,9 @@ var (
168168
// name, but different size, is found.
169169
ErrDiskExistsDiffSize = errors.New("there is already a disk with same name and different size")
170170

171+
// ErrSourceNotFound is returned when a volume's source is not found when provisioning using a source (snapshot or volume).
172+
ErrSourceNotFound = errors.New("source was not found")
173+
171174
// ErrNotFound is returned when a resource is not found.
172175
ErrNotFound = errors.New("resource was not found")
173176

@@ -745,7 +748,9 @@ func (c *cloud) CreateDisk(ctx context.Context, volumeName string, diskOptions *
745748
if err != nil {
746749
switch {
747750
case isAWSErrorSnapshotNotFound(err):
748-
return nil, ErrNotFound
751+
return nil, ErrSourceNotFound
752+
case isAWSErrorVolumeNotFound(err):
753+
return nil, ErrSourceNotFound
749754
case isAWSErrorIdempotentParameterMismatch(err):
750755
nextTokenNumber := 2
751756
if tokenNumber, ok := c.latestClientTokens.Get(volumeName); ok {

pkg/cloud/cloud_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1287,7 +1287,7 @@ func TestCreateDisk(t *testing.T) {
12871287
AvailabilityZone: expZone,
12881288
},
12891289
expCreateVolumeInput: &ec2.CreateVolumeInput{},
1290-
expErr: ErrNotFound,
1290+
expErr: ErrSourceNotFound,
12911291
expCreateVolumeErr: &smithy.GenericAPIError{
12921292
Code: "InvalidSnapshot.NotFound",
12931293
Message: "Snapshot not found",

pkg/driver/controller.go

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -405,16 +405,14 @@ func (d *ControllerService) CreateVolume(ctx context.Context, req *csi.CreateVol
405405
if err != nil {
406406
var errCode codes.Code
407407
switch {
408-
case errors.Is(err, cloud.ErrNotFound):
409-
errCode = codes.NotFound
410408
case errors.Is(err, cloud.ErrIdempotentParameterMismatch), errors.Is(err, cloud.ErrAlreadyExists):
411409
errCode = codes.AlreadyExists
412-
case errors.Is(err, cloud.ErrLimitExceeded):
413-
errCode = codes.ResourceExhausted
414410
case errors.Is(err, cloud.ErrInvalidArgument):
415411
errCode = codes.InvalidArgument
412+
case errors.Is(err, cloud.ErrSourceNotFound):
413+
errCode = codes.NotFound
416414
default:
417-
errCode = codes.Internal
415+
errCode = codes.Aborted
418416
}
419417
return nil, status.Errorf(errCode, "Could not create volume %q: %v", volName, err)
420418
}

pkg/driver/controller_test.go

Lines changed: 0 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -2445,62 +2445,7 @@ func TestCreateVolume(t *testing.T) {
24452445
}
24462446
},
24472447
},
2448-
{
2449-
name: "returns ResourceExhausted with MaxIOPSLimitExceeded error",
2450-
testFunc: func(t *testing.T) {
2451-
t.Helper()
2452-
req := &csi.CreateVolumeRequest{
2453-
Name: "vol-test",
2454-
CapacityRange: stdCapRange,
2455-
VolumeCapabilities: stdVolCap,
2456-
}
2457-
2458-
ctx := t.Context()
2459-
2460-
mockCtl := gomock.NewController(t)
2461-
defer mockCtl.Finish()
24622448

2463-
mockCloud := cloud.NewMockCloud(mockCtl)
2464-
mockCloud.EXPECT().CreateDisk(gomock.Eq(ctx), gomock.Eq(req.GetName()), gomock.Any()).Return(nil, cloud.ErrLimitExceeded)
2465-
2466-
awsDriver := ControllerService{
2467-
cloud: mockCloud,
2468-
inFlight: internal.NewInFlight(),
2469-
options: &Options{},
2470-
}
2471-
2472-
_, err := awsDriver.CreateVolume(ctx, req)
2473-
checkExpectedErrorCode(t, err, codes.ResourceExhausted)
2474-
},
2475-
},
2476-
{
2477-
name: "returns ResourceExhausted with VolumeLimitExceeded error",
2478-
testFunc: func(t *testing.T) {
2479-
t.Helper()
2480-
req := &csi.CreateVolumeRequest{
2481-
Name: "vol-test",
2482-
CapacityRange: stdCapRange,
2483-
VolumeCapabilities: stdVolCap,
2484-
}
2485-
2486-
ctx := t.Context()
2487-
2488-
mockCtl := gomock.NewController(t)
2489-
defer mockCtl.Finish()
2490-
2491-
mockCloud := cloud.NewMockCloud(mockCtl)
2492-
mockCloud.EXPECT().CreateDisk(gomock.Eq(ctx), gomock.Eq(req.GetName()), gomock.Any()).Return(nil, cloud.ErrLimitExceeded)
2493-
2494-
awsDriver := ControllerService{
2495-
cloud: mockCloud,
2496-
inFlight: internal.NewInFlight(),
2497-
options: &Options{},
2498-
}
2499-
2500-
_, err := awsDriver.CreateVolume(ctx, req)
2501-
checkExpectedErrorCode(t, err, codes.ResourceExhausted)
2502-
},
2503-
},
25042449
{
25052450
name: "success user tags override cluster tags",
25062451
testFunc: func(t *testing.T) {

tests/sanity/fake_sanity_cloud.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ func (d *fakeCloud) CreateDisk(ctx context.Context, volumeID string, diskOptions
5555

5656
if diskOptions.SnapshotID != "" {
5757
if _, exists := d.snapshots[diskOptions.SnapshotID]; !exists {
58-
return nil, cloud.ErrNotFound
58+
return nil, cloud.ErrSourceNotFound
5959
}
6060
newDisk := &cloud.Disk{
6161
SnapshotID: diskOptions.SnapshotID,

0 commit comments

Comments
 (0)