Refactor the multi-host salt install page.
[arvados.git] / services / keepstore / azure_blob_volume.go
index 6806c8c6ce4ffa2b5c93dde2ca54f5d7e7754872..f9b383e70e5a1d531c414f7c180e1d623e7c55b2 100644 (file)
@@ -2,7 +2,7 @@
 //
 // SPDX-License-Identifier: AGPL-3.0
 
-package main
+package keepstore
 
 import (
        "bytes"
@@ -21,8 +21,8 @@ import (
        "sync/atomic"
        "time"
 
-       "git.curoverse.com/arvados.git/sdk/go/arvados"
-       "git.curoverse.com/arvados.git/sdk/go/ctxlog"
+       "git.arvados.org/arvados.git/sdk/go/arvados"
+       "git.arvados.org/arvados.git/sdk/go/ctxlog"
        "github.com/Azure/azure-sdk-for-go/storage"
        "github.com/prometheus/client_golang/prometheus"
        "github.com/sirupsen/logrus"
@@ -34,7 +34,6 @@ func init() {
 
 func newAzureBlobVolume(cluster *arvados.Cluster, volume arvados.Volume, logger logrus.FieldLogger, metrics *volumeMetricsVecs) (Volume, error) {
        v := &AzureBlobVolume{
-               StorageBaseURL:    storage.DefaultBaseURL,
                RequestTimeout:    azureDefaultRequestTimeout,
                WriteRaceInterval: azureDefaultWriteRaceInterval,
                WriteRacePollTime: azureDefaultWriteRacePollTime,
@@ -53,6 +52,9 @@ func newAzureBlobVolume(cluster *arvados.Cluster, volume arvados.Volume, logger
        if v.ListBlobsMaxAttempts == 0 {
                v.ListBlobsMaxAttempts = azureDefaultListBlobsMaxAttempts
        }
+       if v.StorageBaseURL == "" {
+               v.StorageBaseURL = storage.DefaultBaseURL
+       }
        if v.ContainerName == "" || v.StorageAccountName == "" || v.StorageAccountKey == "" {
                return nil, errors.New("DriverParameters: ContainerName, StorageAccountName, and StorageAccountKey must be provided")
        }
@@ -556,6 +558,9 @@ func (v *AzureBlobVolume) translateError(err error) error {
        case strings.Contains(err.Error(), "Not Found"):
                // "storage: service returned without a response body (404 Not Found)"
                return os.ErrNotExist
+       case strings.Contains(err.Error(), "ErrorCode=BlobNotFound"):
+               // "storage: service returned error: StatusCode=404, ErrorCode=BlobNotFound, ErrorMessage=The specified blob does not exist.\n..."
+               return os.ErrNotExist
        default:
                return err
        }