From 13d641289238ea9bdcf950fecec3b658a0ef52dc Mon Sep 17 00:00:00 2001 From: Tiger Kaovilai Date: Tue, 11 Jul 2023 17:45:39 -0400 Subject: [PATCH] Moving kopia logging to remove kopia from indirect dependency in velero plugins MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit when running `go mod why -m github.com/kopia/kopia` in velero-plugins prior to this change you will see following ``` ❯ go mod why -m github.com/kopia/kopia github.com/konveyor/openshift-velero-plugin/velero-plugins github.com/vmware-tanzu/velero/pkg/plugin/framework github.com/vmware-tanzu/velero/pkg/util/logging github.com/kopia/kopia/repo/logging ``` after ``` ❯ go mod why -m github.com/kopia/kopia (main module does not need module github.com/kopia/kopia) ``` Signed-off-by: Tiger Kaovilai --- changelogs/unreleased/6484-kaovilai | 1 + pkg/{util/logging => kopia}/kopia_log.go | 4 +-- pkg/{util/logging => kopia}/kopia_log_test.go | 2 +- pkg/repository/udmrepo/kopialib/lib_repo.go | 33 +++++++++++-------- pkg/uploader/kopia/snapshot.go | 6 ++-- 5 files changed, 26 insertions(+), 20 deletions(-) create mode 100644 changelogs/unreleased/6484-kaovilai rename pkg/{util/logging => kopia}/kopia_log.go (99%) rename pkg/{util/logging => kopia}/kopia_log_test.go (99%) diff --git a/changelogs/unreleased/6484-kaovilai b/changelogs/unreleased/6484-kaovilai new file mode 100644 index 0000000000..764f43c6f4 --- /dev/null +++ b/changelogs/unreleased/6484-kaovilai @@ -0,0 +1 @@ +Velero Plugins no longer need kopia indirect dependency in their go.mod \ No newline at end of file diff --git a/pkg/util/logging/kopia_log.go b/pkg/kopia/kopia_log.go similarity index 99% rename from pkg/util/logging/kopia_log.go rename to pkg/kopia/kopia_log.go index d70784d237..f4b44c313d 100644 --- a/pkg/util/logging/kopia_log.go +++ b/pkg/kopia/kopia_log.go @@ -1,3 +1,5 @@ +package kopia + /* Copyright the Velero contributors. @@ -14,8 +16,6 @@ See the License for the specific language governing permissions and limitations under the License. */ -package logging - import ( "context" diff --git a/pkg/util/logging/kopia_log_test.go b/pkg/kopia/kopia_log_test.go similarity index 99% rename from pkg/util/logging/kopia_log_test.go rename to pkg/kopia/kopia_log_test.go index 2498cb418b..5f9ef9e695 100644 --- a/pkg/util/logging/kopia_log_test.go +++ b/pkg/kopia/kopia_log_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package logging +package kopia import ( "testing" diff --git a/pkg/repository/udmrepo/kopialib/lib_repo.go b/pkg/repository/udmrepo/kopialib/lib_repo.go index 0246620bcc..e26586c68d 100644 --- a/pkg/repository/udmrepo/kopialib/lib_repo.go +++ b/pkg/repository/udmrepo/kopialib/lib_repo.go @@ -34,8 +34,8 @@ import ( "github.com/pkg/errors" "github.com/sirupsen/logrus" + "github.com/vmware-tanzu/velero/pkg/kopia" "github.com/vmware-tanzu/velero/pkg/repository/udmrepo" - "github.com/vmware-tanzu/velero/pkg/util/logging" ) type kopiaRepoService struct { @@ -92,7 +92,7 @@ func NewKopiaRepoService(logger logrus.FieldLogger) udmrepo.BackupRepoService { } func (ks *kopiaRepoService) Init(ctx context.Context, repoOption udmrepo.RepoOptions, createNew bool) error { - repoCtx := logging.SetupKopiaLog(ctx, ks.logger) + repoCtx := kopia.SetupKopiaLog(ctx, ks.logger) if createNew { if err := CreateBackupRepo(repoCtx, repoOption); err != nil { @@ -115,7 +115,7 @@ func (ks *kopiaRepoService) Open(ctx context.Context, repoOption udmrepo.RepoOpt return nil, errors.Wrapf(err, "repo config %s doesn't exist", repoConfig) } - repoCtx := logging.SetupKopiaLog(ctx, ks.logger) + repoCtx := kopia.SetupKopiaLog(ctx, ks.logger) r, err := openKopiaRepo(repoCtx, repoConfig, repoOption.RepoPassword) if err != nil { @@ -158,7 +158,7 @@ func (ks *kopiaRepoService) Maintain(ctx context.Context, repoOption udmrepo.Rep return errors.Wrapf(err, "repo config %s doesn't exist", repoConfig) } - repoCtx := logging.SetupKopiaLog(ctx, ks.logger) + repoCtx := kopia.SetupKopiaLog(ctx, ks.logger) r, err := openKopiaRepo(repoCtx, repoConfig, repoOption.RepoPassword) if err != nil { @@ -208,7 +208,7 @@ func (ks *kopiaRepoService) DefaultMaintenanceFrequency() time.Duration { } func (km *kopiaMaintenance) runMaintenance(ctx context.Context, rep repo.DirectRepositoryWriter) error { - err := snapshotmaintenance.Run(logging.SetupKopiaLog(ctx, km.logger), rep, km.mode, false, maintenance.SafetyFull) + err := snapshotmaintenance.Run(kopia.SetupKopiaLog(ctx, km.logger), rep, km.mode, false, maintenance.SafetyFull) if err != nil { return errors.Wrapf(err, "error to run maintenance under mode %s", km.mode) } @@ -235,7 +235,12 @@ func (kr *kopiaRepository) OpenObject(ctx context.Context, id udmrepo.ID) (udmre return nil, errors.New("repo is closed or not open") } - reader, err := kr.rawRepo.OpenObject(logging.SetupKopiaLog(ctx, kr.logger), object.ID(id)) + objID, err := object.ParseID(string(id)) + if err != nil { + return nil, errors.Wrapf(err, "error to parse object ID from %v", id) + } + + reader, err := kr.rawRepo.OpenObject(kopia.SetupKopiaLog(ctx, kr.logger), objID) if err != nil { return nil, errors.Wrap(err, "error to open object") } @@ -250,7 +255,7 @@ func (kr *kopiaRepository) GetManifest(ctx context.Context, id udmrepo.ID, mani return errors.New("repo is closed or not open") } - metadata, err := kr.rawRepo.GetManifest(logging.SetupKopiaLog(ctx, kr.logger), manifest.ID(id), mani.Payload) + metadata, err := kr.rawRepo.GetManifest(kopia.SetupKopiaLog(ctx, kr.logger), manifest.ID(id), mani.Payload) if err != nil { return errors.Wrap(err, "error to get manifest") } @@ -265,7 +270,7 @@ func (kr *kopiaRepository) FindManifests(ctx context.Context, filter udmrepo.Man return nil, errors.New("repo is closed or not open") } - metadata, err := kr.rawRepo.FindManifests(logging.SetupKopiaLog(ctx, kr.logger), filter.Labels) + metadata, err := kr.rawRepo.FindManifests(kopia.SetupKopiaLog(ctx, kr.logger), filter.Labels) if err != nil { return nil, errors.Wrap(err, "error to find manifests") } @@ -283,7 +288,7 @@ func (kr *kopiaRepository) Time() time.Time { func (kr *kopiaRepository) Close(ctx context.Context) error { if kr.rawWriter != nil { - err := kr.rawWriter.Close(logging.SetupKopiaLog(ctx, kr.logger)) + err := kr.rawWriter.Close(kopia.SetupKopiaLog(ctx, kr.logger)) if err != nil { return errors.Wrap(err, "error to close repo writer") } @@ -292,7 +297,7 @@ func (kr *kopiaRepository) Close(ctx context.Context) error { } if kr.rawRepo != nil { - err := kr.rawRepo.Close(logging.SetupKopiaLog(ctx, kr.logger)) + err := kr.rawRepo.Close(kopia.SetupKopiaLog(ctx, kr.logger)) if err != nil { return errors.Wrap(err, "error to close repo") } @@ -308,7 +313,7 @@ func (kr *kopiaRepository) NewObjectWriter(ctx context.Context, opt udmrepo.Obje return nil } - writer := kr.rawWriter.NewObjectWriter(logging.SetupKopiaLog(ctx, kr.logger), object.WriterOptions{ + writer := kr.rawWriter.NewObjectWriter(kopia.SetupKopiaLog(ctx, kr.logger), object.WriterOptions{ Description: opt.Description, Prefix: index.ID(opt.Prefix), AsyncWrites: getAsyncWrites(), @@ -329,7 +334,7 @@ func (kr *kopiaRepository) PutManifest(ctx context.Context, manifest udmrepo.Rep return "", errors.New("repo writer is closed or not open") } - id, err := kr.rawWriter.PutManifest(logging.SetupKopiaLog(ctx, kr.logger), manifest.Metadata.Labels, manifest.Payload) + id, err := kr.rawWriter.PutManifest(kopia.SetupKopiaLog(ctx, kr.logger), manifest.Metadata.Labels, manifest.Payload) if err != nil { return "", errors.Wrap(err, "error to put manifest") } @@ -342,7 +347,7 @@ func (kr *kopiaRepository) DeleteManifest(ctx context.Context, id udmrepo.ID) er return errors.New("repo writer is closed or not open") } - err := kr.rawWriter.DeleteManifest(logging.SetupKopiaLog(ctx, kr.logger), manifest.ID(id)) + err := kr.rawWriter.DeleteManifest(kopia.SetupKopiaLog(ctx, kr.logger), manifest.ID(id)) if err != nil { return errors.Wrap(err, "error to delete manifest") } @@ -355,7 +360,7 @@ func (kr *kopiaRepository) Flush(ctx context.Context) error { return errors.New("repo writer is closed or not open") } - err := kr.rawWriter.Flush(logging.SetupKopiaLog(ctx, kr.logger)) + err := kr.rawWriter.Flush(kopia.SetupKopiaLog(ctx, kr.logger)) if err != nil { return errors.Wrap(err, "error to flush repo") } diff --git a/pkg/uploader/kopia/snapshot.go b/pkg/uploader/kopia/snapshot.go index ce60aadb57..ad6c48dbef 100644 --- a/pkg/uploader/kopia/snapshot.go +++ b/pkg/uploader/kopia/snapshot.go @@ -28,9 +28,9 @@ import ( "github.com/sirupsen/logrus" + "github.com/vmware-tanzu/velero/pkg/kopia" "github.com/vmware-tanzu/velero/pkg/repository/udmrepo" "github.com/vmware-tanzu/velero/pkg/uploader" - "github.com/vmware-tanzu/velero/pkg/util/logging" "github.com/kopia/kopia/fs" "github.com/kopia/kopia/fs/localfs" @@ -121,7 +121,7 @@ func Backup(ctx context.Context, fsUploader *snapshotfs.Uploader, repoWriter rep return nil, false, errors.Wrap(err, "Unable to get local filesystem entry") } - kopiaCtx := logging.SetupKopiaLog(ctx, log) + kopiaCtx := kopia.SetupKopiaLog(ctx, log) snapID, snapshotSize, err := SnapshotSource(kopiaCtx, repoWriter, fsUploader, sourceInfo, rootDir, parentSnapshot, log, "Kopia Uploader") if err != nil { return nil, false, err @@ -277,7 +277,7 @@ func findPreviousSnapshotManifest(ctx context.Context, rep repo.Repository, sour func Restore(ctx context.Context, rep repo.RepositoryWriter, progress *KopiaProgress, snapshotID, dest string, log logrus.FieldLogger, cancleCh chan struct{}) (int64, int32, error) { log.Info("Start to restore...") - kopiaCtx := logging.SetupKopiaLog(ctx, log) + kopiaCtx := kopia.SetupKopiaLog(ctx, log) rootEntry, err := snapshotfs.FilesystemEntryFromIDWithPath(kopiaCtx, rep, snapshotID, false) if err != nil {