Skip to content

Commit 913b36c

Browse files
committed
unified repo interface extension for block data mover
Signed-off-by: Lyndon-Li <lyonghui@vmware.com>
1 parent c5fa50b commit 913b36c

7 files changed

Lines changed: 1144 additions & 183 deletions

File tree

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Fix issue #9723, extend Unified Repo Interface to support block uploader

pkg/repository/udmrepo/kopialib/lib_repo.go

Lines changed: 32 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -388,9 +388,9 @@ func (kr *kopiaRepository) Close(ctx context.Context) error {
388388
return nil
389389
}
390390

391-
func (kr *kopiaRepository) NewObjectWriter(ctx context.Context, opt udmrepo.ObjectWriteOptions) udmrepo.ObjectWriter {
391+
func (kr *kopiaRepository) NewObjectWriter(ctx context.Context, opt udmrepo.ObjectWriteOptions) (udmrepo.ObjectWriter, error) {
392392
if kr.rawWriter == nil {
393-
return nil
393+
return nil, errors.New("repo writer is closed or not open")
394394
}
395395

396396
writer := kr.rawWriter.NewObjectWriter(kopia.SetupKopiaLog(ctx, kr.logger), object.WriterOptions{
@@ -402,12 +402,22 @@ func (kr *kopiaRepository) NewObjectWriter(ctx context.Context, opt udmrepo.Obje
402402
})
403403

404404
if writer == nil {
405-
return nil
405+
return nil, errors.Errorf("error creating writer for object %s", opt.Description)
406406
}
407407

408408
return &kopiaObjectWriter{
409409
rawWriter: writer,
410-
}
410+
}, nil
411+
}
412+
413+
// TODO add implementation in following PRs
414+
func (kr *kopiaRepository) WriteMetadata(ctx context.Context, meta *udmrepo.Metadata, opt udmrepo.ObjectWriteOptions) (udmrepo.ID, error) {
415+
return "", errors.New("not supported")
416+
}
417+
418+
// TODO add implementation in following PRs
419+
func (kr *kopiaRepository) ReadMetadata(ctx context.Context, id udmrepo.ID) (*udmrepo.Metadata, error) {
420+
return nil, errors.New("not supported")
411421
}
412422

413423
func (kr *kopiaRepository) PutManifest(ctx context.Context, manifest udmrepo.RepoManifest) (udmrepo.ID, error) {
@@ -436,6 +446,21 @@ func (kr *kopiaRepository) DeleteManifest(ctx context.Context, id udmrepo.ID) er
436446
return nil
437447
}
438448

449+
// TODO add implementation in following PRs
450+
func (kr *kopiaRepository) SaveSnapshot(ctx context.Context, snap udmrepo.Snapshot) (udmrepo.ID, error) {
451+
return "", errors.New("not supported")
452+
}
453+
454+
// TODO add implementation in following PRs
455+
func (kr *kopiaRepository) GetSnapshot(ctx context.Context, id udmrepo.ID) (udmrepo.Snapshot, error) {
456+
return udmrepo.Snapshot{}, errors.New("not supported")
457+
}
458+
459+
// TODO add implementation in following PRs
460+
func (kr *kopiaRepository) DeleteSnapshot(ctx context.Context, id udmrepo.ID) error {
461+
return errors.New("not supported")
462+
}
463+
439464
func (kr *kopiaRepository) Flush(ctx context.Context) error {
440465
if kr.rawWriter == nil {
441466
return errors.New("repo writer is closed or not open")
@@ -546,8 +571,9 @@ func (kow *kopiaObjectWriter) Write(p []byte) (int, error) {
546571
return kow.rawWriter.Write(p)
547572
}
548573

549-
func (kow *kopiaObjectWriter) Seek(offset int64, whence int) (int64, error) {
550-
return -1, errors.New("not supported")
574+
// TODO add implementation in following PRs
575+
func (kow *kopiaObjectWriter) WriteAt(p []byte, offset int64) (int, error) {
576+
return 0, errors.New("not supported")
551577
}
552578

553579
func (kow *kopiaObjectWriter) Checkpoint() (udmrepo.ID, error) {

pkg/repository/udmrepo/kopialib/lib_repo_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -688,7 +688,7 @@ func TestNewObjectWriter(t *testing.T) {
688688
kr.rawWriter = tc.rawWriter
689689
}
690690

691-
ret := kr.NewObjectWriter(t.Context(), udmrepo.ObjectWriteOptions{})
691+
ret, _ := kr.NewObjectWriter(t.Context(), udmrepo.ObjectWriteOptions{})
692692

693693
assert.Equal(t, tc.expectedRet, ret)
694694
})

0 commit comments

Comments
 (0)