From c8bdf07c3afdc29a46edee2f89dd2918fcae6f96 Mon Sep 17 00:00:00 2001 From: Priyansh Choudhary Date: Fri, 8 Aug 2025 17:12:46 +0530 Subject: [PATCH 1/5] Add context logger utilities for enhanced logging support Signed-off-by: Priyansh Choudhary --- .../udmrepo/kopialib/backend/azure.go | 3 +-- .../backend/azure/azure_storage_wrapper.go | 12 +++++++----- .../udmrepo/kopialib/backend/file_system.go | 3 +++ pkg/repository/udmrepo/kopialib/backend/gcs.go | 3 +++ pkg/repository/udmrepo/kopialib/backend/s3.go | 3 +++ pkg/repository/udmrepo/repo.go | 17 +++++++++++++++++ 6 files changed, 34 insertions(+), 7 deletions(-) diff --git a/pkg/repository/udmrepo/kopialib/backend/azure.go b/pkg/repository/udmrepo/kopialib/backend/azure.go index ead95406c..090c56bff 100644 --- a/pkg/repository/udmrepo/kopialib/backend/azure.go +++ b/pkg/repository/udmrepo/kopialib/backend/azure.go @@ -38,12 +38,11 @@ func (c *AzureBackend) Setup(ctx context.Context, flags map[string]string, logge c.option = azure.Option{ Config: flags, Limits: setupLimits(ctx, flags), - Logger: logger, } return nil } func (c *AzureBackend) Connect(ctx context.Context, isCreate bool, logger logrus.FieldLogger) (blob.Storage, error) { - c.option.Logger = logger + ctx = udmrepo.WithLogger(ctx, logger) return azure.NewStorage(ctx, &c.option, false) } diff --git a/pkg/repository/udmrepo/kopialib/backend/azure/azure_storage_wrapper.go b/pkg/repository/udmrepo/kopialib/backend/azure/azure_storage_wrapper.go index 967de3dea..7d4fad9ff 100644 --- a/pkg/repository/udmrepo/kopialib/backend/azure/azure_storage_wrapper.go +++ b/pkg/repository/udmrepo/kopialib/backend/azure/azure_storage_wrapper.go @@ -19,8 +19,6 @@ package azure import ( "context" - "github.com/sirupsen/logrus" - "github.com/kopia/kopia/repo/blob" "github.com/kopia/kopia/repo/blob/azure" "github.com/kopia/kopia/repo/blob/throttling" @@ -34,13 +32,12 @@ const ( ) func init() { - blob.AddSupportedStorage(storageType, Option{Logger: logrus.New()}, NewStorage) + blob.AddSupportedStorage(storageType, Option{}, NewStorage) } type Option struct { Config map[string]string `json:"config" kopia:"sensitive"` Limits throttling.Limits - Logger logrus.FieldLogger } type Storage struct { @@ -58,7 +55,10 @@ func (s *Storage) ConnectionInfo() blob.ConnectionInfo { func NewStorage(ctx context.Context, option *Option, isCreate bool) (blob.Storage, error) { cfg := option.Config - client, _, err := azureutil.NewStorageClient(option.Logger, cfg) + // Get logger from context + logger := udmrepo.LoggerFromContext(ctx) + + client, _, err := azureutil.NewStorageClient(logger, cfg) if err != nil { return nil, err } @@ -73,6 +73,8 @@ func NewStorage(ctx context.Context, option *Option, isCreate bool) (blob.Storag return nil, err } + logger.Info("Successfully created Azure storage backend") + return &Storage{ Option: option, Storage: azStorage, diff --git a/pkg/repository/udmrepo/kopialib/backend/file_system.go b/pkg/repository/udmrepo/kopialib/backend/file_system.go index 98f272c46..f5aa6c891 100644 --- a/pkg/repository/udmrepo/kopialib/backend/file_system.go +++ b/pkg/repository/udmrepo/kopialib/backend/file_system.go @@ -50,6 +50,8 @@ func (c *FsBackend) Setup(ctx context.Context, flags map[string]string, logger l c.options.FileMode = defaultFileMode c.options.DirectoryMode = defaultDirMode + ctx = udmrepo.WithLogger(ctx, logger) + c.options.Limits = setupLimits(ctx, flags) return nil @@ -59,6 +61,7 @@ func (c *FsBackend) Connect(ctx context.Context, isCreate bool, logger logrus.Fi if !filepath.IsAbs(c.options.Path) { return nil, errors.Errorf("filesystem repository path is not absolute, path: %s", c.options.Path) } + ctx = udmrepo.WithLogger(ctx, logger) return filesystem.New(ctx, &c.options, isCreate) } diff --git a/pkg/repository/udmrepo/kopialib/backend/gcs.go b/pkg/repository/udmrepo/kopialib/backend/gcs.go index 243f054dc..01f43a0af 100644 --- a/pkg/repository/udmrepo/kopialib/backend/gcs.go +++ b/pkg/repository/udmrepo/kopialib/backend/gcs.go @@ -46,11 +46,14 @@ func (c *GCSBackend) Setup(ctx context.Context, flags map[string]string, logger c.options.Prefix = optionalHaveString(udmrepo.StoreOptionPrefix, flags) c.options.ReadOnly = optionalHaveBool(ctx, udmrepo.StoreOptionGcsReadonly, flags) + ctx = udmrepo.WithLogger(ctx, logger) + c.options.Limits = setupLimits(ctx, flags) return nil } func (c *GCSBackend) Connect(ctx context.Context, isCreate bool, logger logrus.FieldLogger) (blob.Storage, error) { + ctx = udmrepo.WithLogger(ctx, logger) return gcs.New(ctx, &c.options, false) } diff --git a/pkg/repository/udmrepo/kopialib/backend/s3.go b/pkg/repository/udmrepo/kopialib/backend/s3.go index 2f7f7d93c..bd15bae59 100644 --- a/pkg/repository/udmrepo/kopialib/backend/s3.go +++ b/pkg/repository/udmrepo/kopialib/backend/s3.go @@ -48,11 +48,14 @@ func (c *S3Backend) Setup(ctx context.Context, flags map[string]string, logger l c.options.SessionToken = optionalHaveString(udmrepo.StoreOptionS3Token, flags) c.options.RootCA = optionalHaveBase64(ctx, udmrepo.StoreOptionCACert, flags) + ctx = udmrepo.WithLogger(ctx, logger) + c.options.Limits = setupLimits(ctx, flags) return nil } func (c *S3Backend) Connect(ctx context.Context, isCreate bool, logger logrus.FieldLogger) (blob.Storage, error) { + ctx = udmrepo.WithLogger(ctx, logger) return s3.New(ctx, &c.options, false) } diff --git a/pkg/repository/udmrepo/repo.go b/pkg/repository/udmrepo/repo.go index 0adb39751..204146242 100644 --- a/pkg/repository/udmrepo/repo.go +++ b/pkg/repository/udmrepo/repo.go @@ -20,6 +20,8 @@ import ( "context" "io" "time" + + "github.com/sirupsen/logrus" ) type ID string @@ -156,3 +158,18 @@ type ObjectWriter interface { // Result returns the object's unified identifier after the write completes. Result() (ID, error) } + +type ctxKeyLogger struct{} + +// WithLogger returns a new context with the provided logger. +func WithLogger(ctx context.Context, logger logrus.FieldLogger) context.Context { + return context.WithValue(ctx, ctxKeyLogger{}, logger) +} + +// LoggerFromContext retrieves the logger from the context, or returns a default logger if none found. +func LoggerFromContext(ctx context.Context) logrus.FieldLogger { + if logger, ok := ctx.Value(ctxKeyLogger{}).(logrus.FieldLogger); ok && logger != nil { + return logger + } + return logrus.New() +} From 560df6edc3eff24ba194a096fd9d6234bae92fb5 Mon Sep 17 00:00:00 2001 From: Priyansh Choudhary Date: Mon, 11 Aug 2025 13:42:13 +0530 Subject: [PATCH 2/5] Implement context-based logging utilities for UDM repositories Signed-off-by: Priyansh Choudhary --- changelogs/unreleased/9168-priyansh17 | 6 +++ .../udmrepo/kopialib/backend/azure.go | 3 +- .../backend/azure/azure_storage_wrapper.go | 3 +- .../udmrepo/kopialib/backend/file_system.go | 5 ++- .../udmrepo/kopialib/backend/gcs.go | 5 ++- pkg/repository/udmrepo/kopialib/backend/s3.go | 5 ++- pkg/repository/udmrepo/logging/context.go | 38 +++++++++++++++++++ pkg/repository/udmrepo/repo.go | 15 -------- 8 files changed, 57 insertions(+), 23 deletions(-) create mode 100644 changelogs/unreleased/9168-priyansh17 create mode 100644 pkg/repository/udmrepo/logging/context.go diff --git a/changelogs/unreleased/9168-priyansh17 b/changelogs/unreleased/9168-priyansh17 new file mode 100644 index 000000000..5d3e83baf --- /dev/null +++ b/changelogs/unreleased/9168-priyansh17 @@ -0,0 +1,6 @@ +### Enhanced Logging Support for UDM Repositories + +- Introduced context-based logger utilities (`WithLogger` and `LoggerFromContext`) in `pkg/repository/udmrepo/logging/context.go` to allow passing and retrieving loggers via context. +- Refactored backend implementations (Azure, GCS, S3, and Filesystem) to use context-based logging instead of passing loggers directly through options or arguments + +**PR:** [#9168](https://github.com/vmware-tanzu/velero/pull/9168) - Add context logger utilities for enhanced logging support \ No newline at end of file diff --git a/pkg/repository/udmrepo/kopialib/backend/azure.go b/pkg/repository/udmrepo/kopialib/backend/azure.go index 090c56bff..f88a759bb 100644 --- a/pkg/repository/udmrepo/kopialib/backend/azure.go +++ b/pkg/repository/udmrepo/kopialib/backend/azure.go @@ -25,6 +25,7 @@ import ( "github.com/vmware-tanzu/velero/pkg/repository/udmrepo" "github.com/vmware-tanzu/velero/pkg/repository/udmrepo/kopialib/backend/azure" + "github.com/vmware-tanzu/velero/pkg/repository/udmrepo/logging" ) type AzureBackend struct { @@ -43,6 +44,6 @@ func (c *AzureBackend) Setup(ctx context.Context, flags map[string]string, logge } func (c *AzureBackend) Connect(ctx context.Context, isCreate bool, logger logrus.FieldLogger) (blob.Storage, error) { - ctx = udmrepo.WithLogger(ctx, logger) + ctx = logging.WithLogger(ctx, logger) return azure.NewStorage(ctx, &c.option, false) } diff --git a/pkg/repository/udmrepo/kopialib/backend/azure/azure_storage_wrapper.go b/pkg/repository/udmrepo/kopialib/backend/azure/azure_storage_wrapper.go index 7d4fad9ff..3b74b807a 100644 --- a/pkg/repository/udmrepo/kopialib/backend/azure/azure_storage_wrapper.go +++ b/pkg/repository/udmrepo/kopialib/backend/azure/azure_storage_wrapper.go @@ -24,6 +24,7 @@ import ( "github.com/kopia/kopia/repo/blob/throttling" "github.com/vmware-tanzu/velero/pkg/repository/udmrepo" + "github.com/vmware-tanzu/velero/pkg/repository/udmrepo/logging" azureutil "github.com/vmware-tanzu/velero/pkg/util/azure" ) @@ -56,7 +57,7 @@ func NewStorage(ctx context.Context, option *Option, isCreate bool) (blob.Storag cfg := option.Config // Get logger from context - logger := udmrepo.LoggerFromContext(ctx) + logger := logging.LoggerFromContext(ctx) client, _, err := azureutil.NewStorageClient(logger, cfg) if err != nil { diff --git a/pkg/repository/udmrepo/kopialib/backend/file_system.go b/pkg/repository/udmrepo/kopialib/backend/file_system.go index f5aa6c891..e94e44a84 100644 --- a/pkg/repository/udmrepo/kopialib/backend/file_system.go +++ b/pkg/repository/udmrepo/kopialib/backend/file_system.go @@ -27,6 +27,7 @@ import ( "github.com/pkg/errors" "github.com/vmware-tanzu/velero/pkg/repository/udmrepo" + "github.com/vmware-tanzu/velero/pkg/repository/udmrepo/logging" ) type FsBackend struct { @@ -50,7 +51,7 @@ func (c *FsBackend) Setup(ctx context.Context, flags map[string]string, logger l c.options.FileMode = defaultFileMode c.options.DirectoryMode = defaultDirMode - ctx = udmrepo.WithLogger(ctx, logger) + ctx = logging.WithLogger(ctx, logger) c.options.Limits = setupLimits(ctx, flags) @@ -61,7 +62,7 @@ func (c *FsBackend) Connect(ctx context.Context, isCreate bool, logger logrus.Fi if !filepath.IsAbs(c.options.Path) { return nil, errors.Errorf("filesystem repository path is not absolute, path: %s", c.options.Path) } - ctx = udmrepo.WithLogger(ctx, logger) + ctx = logging.WithLogger(ctx, logger) return filesystem.New(ctx, &c.options, isCreate) } diff --git a/pkg/repository/udmrepo/kopialib/backend/gcs.go b/pkg/repository/udmrepo/kopialib/backend/gcs.go index 01f43a0af..3eed31e31 100644 --- a/pkg/repository/udmrepo/kopialib/backend/gcs.go +++ b/pkg/repository/udmrepo/kopialib/backend/gcs.go @@ -25,6 +25,7 @@ import ( "github.com/kopia/kopia/repo/blob/gcs" "github.com/vmware-tanzu/velero/pkg/repository/udmrepo" + "github.com/vmware-tanzu/velero/pkg/repository/udmrepo/logging" ) type GCSBackend struct { @@ -46,7 +47,7 @@ func (c *GCSBackend) Setup(ctx context.Context, flags map[string]string, logger c.options.Prefix = optionalHaveString(udmrepo.StoreOptionPrefix, flags) c.options.ReadOnly = optionalHaveBool(ctx, udmrepo.StoreOptionGcsReadonly, flags) - ctx = udmrepo.WithLogger(ctx, logger) + ctx = logging.WithLogger(ctx, logger) c.options.Limits = setupLimits(ctx, flags) @@ -54,6 +55,6 @@ func (c *GCSBackend) Setup(ctx context.Context, flags map[string]string, logger } func (c *GCSBackend) Connect(ctx context.Context, isCreate bool, logger logrus.FieldLogger) (blob.Storage, error) { - ctx = udmrepo.WithLogger(ctx, logger) + ctx = logging.WithLogger(ctx, logger) return gcs.New(ctx, &c.options, false) } diff --git a/pkg/repository/udmrepo/kopialib/backend/s3.go b/pkg/repository/udmrepo/kopialib/backend/s3.go index bd15bae59..77277bd18 100644 --- a/pkg/repository/udmrepo/kopialib/backend/s3.go +++ b/pkg/repository/udmrepo/kopialib/backend/s3.go @@ -25,6 +25,7 @@ import ( "github.com/kopia/kopia/repo/blob/s3" "github.com/vmware-tanzu/velero/pkg/repository/udmrepo" + "github.com/vmware-tanzu/velero/pkg/repository/udmrepo/logging" ) type S3Backend struct { @@ -48,7 +49,7 @@ func (c *S3Backend) Setup(ctx context.Context, flags map[string]string, logger l c.options.SessionToken = optionalHaveString(udmrepo.StoreOptionS3Token, flags) c.options.RootCA = optionalHaveBase64(ctx, udmrepo.StoreOptionCACert, flags) - ctx = udmrepo.WithLogger(ctx, logger) + ctx = logging.WithLogger(ctx, logger) c.options.Limits = setupLimits(ctx, flags) @@ -56,6 +57,6 @@ func (c *S3Backend) Setup(ctx context.Context, flags map[string]string, logger l } func (c *S3Backend) Connect(ctx context.Context, isCreate bool, logger logrus.FieldLogger) (blob.Storage, error) { - ctx = udmrepo.WithLogger(ctx, logger) + ctx = logging.WithLogger(ctx, logger) return s3.New(ctx, &c.options, false) } diff --git a/pkg/repository/udmrepo/logging/context.go b/pkg/repository/udmrepo/logging/context.go new file mode 100644 index 000000000..4ac63d302 --- /dev/null +++ b/pkg/repository/udmrepo/logging/context.go @@ -0,0 +1,38 @@ +/* +Copyright the Velero contributors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package logging + +import ( + "context" + + "github.com/sirupsen/logrus" +) + +type ctxKeyLogger struct{} + +// WithLogger returns a new context with the provided logger. +func WithLogger(ctx context.Context, logger logrus.FieldLogger) context.Context { + return context.WithValue(ctx, ctxKeyLogger{}, logger) +} + +// LoggerFromContext retrieves the logger from the context, or returns a default logger if none found. +func LoggerFromContext(ctx context.Context) logrus.FieldLogger { + if logger, ok := ctx.Value(ctxKeyLogger{}).(logrus.FieldLogger); ok && logger != nil { + return logger + } + return logrus.New() +} diff --git a/pkg/repository/udmrepo/repo.go b/pkg/repository/udmrepo/repo.go index 204146242..7acbd426c 100644 --- a/pkg/repository/udmrepo/repo.go +++ b/pkg/repository/udmrepo/repo.go @@ -20,8 +20,6 @@ import ( "context" "io" "time" - - "github.com/sirupsen/logrus" ) type ID string @@ -159,17 +157,4 @@ type ObjectWriter interface { Result() (ID, error) } -type ctxKeyLogger struct{} -// WithLogger returns a new context with the provided logger. -func WithLogger(ctx context.Context, logger logrus.FieldLogger) context.Context { - return context.WithValue(ctx, ctxKeyLogger{}, logger) -} - -// LoggerFromContext retrieves the logger from the context, or returns a default logger if none found. -func LoggerFromContext(ctx context.Context) logrus.FieldLogger { - if logger, ok := ctx.Value(ctxKeyLogger{}).(logrus.FieldLogger); ok && logger != nil { - return logger - } - return logrus.New() -} From 815ae8af02d5930f2c96fbc1980137693e588396 Mon Sep 17 00:00:00 2001 From: Priyansh Choudhary Date: Mon, 11 Aug 2025 14:34:05 +0530 Subject: [PATCH 3/5] Remove redundant blank lines in repo.go Signed-off-by: Priyansh Choudhary --- pkg/repository/udmrepo/repo.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/pkg/repository/udmrepo/repo.go b/pkg/repository/udmrepo/repo.go index 7acbd426c..0adb39751 100644 --- a/pkg/repository/udmrepo/repo.go +++ b/pkg/repository/udmrepo/repo.go @@ -156,5 +156,3 @@ type ObjectWriter interface { // Result returns the object's unified identifier after the write completes. Result() (ID, error) } - - From e471e0f561626f6a092010f20538b6a03dcbb248 Mon Sep 17 00:00:00 2001 From: Priyansh Choudhary Date: Mon, 11 Aug 2025 15:08:33 +0530 Subject: [PATCH 4/5] Updated chnagelog Signed-off-by: Priyansh Choudhary --- changelogs/unreleased/9168-priyansh17 | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/changelogs/unreleased/9168-priyansh17 b/changelogs/unreleased/9168-priyansh17 index 5d3e83baf..66b97075a 100644 --- a/changelogs/unreleased/9168-priyansh17 +++ b/changelogs/unreleased/9168-priyansh17 @@ -1,6 +1 @@ -### Enhanced Logging Support for UDM Repositories - -- Introduced context-based logger utilities (`WithLogger` and `LoggerFromContext`) in `pkg/repository/udmrepo/logging/context.go` to allow passing and retrieving loggers via context. -- Refactored backend implementations (Azure, GCS, S3, and Filesystem) to use context-based logging instead of passing loggers directly through options or arguments - -**PR:** [#9168](https://github.com/vmware-tanzu/velero/pull/9168) - Add context logger utilities for enhanced logging support \ No newline at end of file +Introduced context-based logger for backend implementations (Azure, GCS, S3, and Filesystem) \ No newline at end of file From 8d4203ee30a6006d041b9db7a71f938c152e4514 Mon Sep 17 00:00:00 2001 From: Priyansh Choudhary Date: Thu, 14 Aug 2025 11:33:39 +0530 Subject: [PATCH 5/5] Refactor logging package structure and move context.go to kopialib/backend Signed-off-by: Priyansh Choudhary --- pkg/repository/udmrepo/kopialib/backend/azure.go | 2 +- .../udmrepo/kopialib/backend/azure/azure_storage_wrapper.go | 2 +- pkg/repository/udmrepo/kopialib/backend/file_system.go | 2 +- pkg/repository/udmrepo/kopialib/backend/gcs.go | 2 +- .../udmrepo/{ => kopialib/backend}/logging/context.go | 0 pkg/repository/udmrepo/kopialib/backend/s3.go | 2 +- 6 files changed, 5 insertions(+), 5 deletions(-) rename pkg/repository/udmrepo/{ => kopialib/backend}/logging/context.go (100%) diff --git a/pkg/repository/udmrepo/kopialib/backend/azure.go b/pkg/repository/udmrepo/kopialib/backend/azure.go index f88a759bb..79bf1bbc2 100644 --- a/pkg/repository/udmrepo/kopialib/backend/azure.go +++ b/pkg/repository/udmrepo/kopialib/backend/azure.go @@ -25,7 +25,7 @@ import ( "github.com/vmware-tanzu/velero/pkg/repository/udmrepo" "github.com/vmware-tanzu/velero/pkg/repository/udmrepo/kopialib/backend/azure" - "github.com/vmware-tanzu/velero/pkg/repository/udmrepo/logging" + "github.com/vmware-tanzu/velero/pkg/repository/udmrepo/kopialib/backend/logging" ) type AzureBackend struct { diff --git a/pkg/repository/udmrepo/kopialib/backend/azure/azure_storage_wrapper.go b/pkg/repository/udmrepo/kopialib/backend/azure/azure_storage_wrapper.go index 3b74b807a..5e2443a42 100644 --- a/pkg/repository/udmrepo/kopialib/backend/azure/azure_storage_wrapper.go +++ b/pkg/repository/udmrepo/kopialib/backend/azure/azure_storage_wrapper.go @@ -24,7 +24,7 @@ import ( "github.com/kopia/kopia/repo/blob/throttling" "github.com/vmware-tanzu/velero/pkg/repository/udmrepo" - "github.com/vmware-tanzu/velero/pkg/repository/udmrepo/logging" + "github.com/vmware-tanzu/velero/pkg/repository/udmrepo/kopialib/backend/logging" azureutil "github.com/vmware-tanzu/velero/pkg/util/azure" ) diff --git a/pkg/repository/udmrepo/kopialib/backend/file_system.go b/pkg/repository/udmrepo/kopialib/backend/file_system.go index e94e44a84..075099cf8 100644 --- a/pkg/repository/udmrepo/kopialib/backend/file_system.go +++ b/pkg/repository/udmrepo/kopialib/backend/file_system.go @@ -27,7 +27,7 @@ import ( "github.com/pkg/errors" "github.com/vmware-tanzu/velero/pkg/repository/udmrepo" - "github.com/vmware-tanzu/velero/pkg/repository/udmrepo/logging" + "github.com/vmware-tanzu/velero/pkg/repository/udmrepo/kopialib/backend/logging" ) type FsBackend struct { diff --git a/pkg/repository/udmrepo/kopialib/backend/gcs.go b/pkg/repository/udmrepo/kopialib/backend/gcs.go index 3eed31e31..2c46609a4 100644 --- a/pkg/repository/udmrepo/kopialib/backend/gcs.go +++ b/pkg/repository/udmrepo/kopialib/backend/gcs.go @@ -25,7 +25,7 @@ import ( "github.com/kopia/kopia/repo/blob/gcs" "github.com/vmware-tanzu/velero/pkg/repository/udmrepo" - "github.com/vmware-tanzu/velero/pkg/repository/udmrepo/logging" + "github.com/vmware-tanzu/velero/pkg/repository/udmrepo/kopialib/backend/logging" ) type GCSBackend struct { diff --git a/pkg/repository/udmrepo/logging/context.go b/pkg/repository/udmrepo/kopialib/backend/logging/context.go similarity index 100% rename from pkg/repository/udmrepo/logging/context.go rename to pkg/repository/udmrepo/kopialib/backend/logging/context.go diff --git a/pkg/repository/udmrepo/kopialib/backend/s3.go b/pkg/repository/udmrepo/kopialib/backend/s3.go index 77277bd18..202c3c449 100644 --- a/pkg/repository/udmrepo/kopialib/backend/s3.go +++ b/pkg/repository/udmrepo/kopialib/backend/s3.go @@ -25,7 +25,7 @@ import ( "github.com/kopia/kopia/repo/blob/s3" "github.com/vmware-tanzu/velero/pkg/repository/udmrepo" - "github.com/vmware-tanzu/velero/pkg/repository/udmrepo/logging" + "github.com/vmware-tanzu/velero/pkg/repository/udmrepo/kopialib/backend/logging" ) type S3Backend struct {