Browse Source

Fix nil pointer when creating volume with “” storage account

Signed-off-by: Guillaume Tardif <[email protected]>
Guillaume Tardif 5 years ago
parent
commit
7eda96bea4
2 changed files with 12 additions and 4 deletions
  1. 3 4
      aci/volumes.go
  2. 9 0
      tests/aci-e2e/e2e-aci_test.go

+ 3 - 4
aci/volumes.go

@@ -92,10 +92,9 @@ func (cs *aciVolumeService) Create(ctx context.Context, options interface{}) (vo
 	account, err := accountClient.GetProperties(ctx, cs.aciContext.ResourceGroup, opts.Account, "")
 	if err == nil {
 		w.Event(event(opts.Account, progress.Done, "Use existing"))
+	} else if !account.HasHTTPStatus(http.StatusNotFound) {
+		return volumes.Volume{}, err
 	} else {
-		if account.StatusCode != http.StatusNotFound {
-			return volumes.Volume{}, err
-		}
 		result, err := accountClient.CheckNameAvailability(ctx, storage.AccountCheckNameAvailabilityParameters{
 			Name: to.StringPtr(opts.Account),
 			Type: to.StringPtr("Microsoft.Storage/storageAccounts"),
@@ -137,7 +136,7 @@ func (cs *aciVolumeService) Create(ctx context.Context, options interface{}) (vo
 		w.Event(errorEvent(opts.Fileshare))
 		return volumes.Volume{}, errors.Wrapf(errdefs.ErrAlreadyExists, "Azure fileshare %q already exists", opts.Fileshare)
 	}
-	if fileShare.StatusCode != http.StatusNotFound {
+	if !fileShare.HasHTTPStatus(http.StatusNotFound) {
 		w.Event(errorEvent(opts.Fileshare))
 		return volumes.Volume{}, err
 	}

+ 9 - 0
tests/aci-e2e/e2e-aci_test.go

@@ -150,6 +150,15 @@ func TestContainerRunVolume(t *testing.T) {
 		accountName = "e2e" + strconv.Itoa(int(time.Now().UnixNano()))
 	)
 
+	t.Run("check empty volume name validity", func(t *testing.T) {
+		invalidName := ""
+		res := c.RunDockerOrExitError("volume", "create", "--storage-account", invalidName, "--fileshare", fileshareName)
+		res.Assert(t, icmd.Expected{
+			ExitCode: 1,
+			Err:      `parameter=accountName constraint=MinLength value="" details: value length must be greater than or equal to 3`,
+		})
+	})
+
 	t.Run("check volume name validity", func(t *testing.T) {
 		invalidName := "some-storage-123"
 		res := c.RunDockerOrExitError("volume", "create", "--storage-account", invalidName, "--fileshare", fileshareName)