Skip to content

Commit 9cbf414

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

7 files changed

Lines changed: 1138 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: 26 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,20 @@ 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+
func (kr *kopiaRepository) WriteMetadata(ctx context.Context, meta *udmrepo.Metadata, opt udmrepo.ObjectWriteOptions) (udmrepo.ID, error) {
414+
return "", errors.New("not supported")
415+
}
416+
417+
func (kr *kopiaRepository) ReadMetadata(ctx context.Context, id udmrepo.ID) (*udmrepo.Metadata, error) {
418+
return nil, errors.New("not supported")
411419
}
412420

413421
func (kr *kopiaRepository) PutManifest(ctx context.Context, manifest udmrepo.RepoManifest) (udmrepo.ID, error) {
@@ -436,6 +444,18 @@ func (kr *kopiaRepository) DeleteManifest(ctx context.Context, id udmrepo.ID) er
436444
return nil
437445
}
438446

447+
func (kr *kopiaRepository) SaveSnapshot(ctx context.Context, snap udmrepo.Snapshot) (udmrepo.ID, error) {
448+
return "", errors.New("not supported")
449+
}
450+
451+
func (kr *kopiaRepository) GetSnapshot(ctx context.Context, id udmrepo.ID) (udmrepo.Snapshot, error) {
452+
return udmrepo.Snapshot{}, errors.New("not supported")
453+
}
454+
455+
func (kr *kopiaRepository) DeleteSnapshot(ctx context.Context, id udmrepo.ID) error {
456+
return errors.New("not supported")
457+
}
458+
439459
func (kr *kopiaRepository) Flush(ctx context.Context) error {
440460
if kr.rawWriter == nil {
441461
return errors.New("repo writer is closed or not open")
@@ -546,8 +566,8 @@ func (kow *kopiaObjectWriter) Write(p []byte) (int, error) {
546566
return kow.rawWriter.Write(p)
547567
}
548568

549-
func (kow *kopiaObjectWriter) Seek(offset int64, whence int) (int64, error) {
550-
return -1, errors.New("not supported")
569+
func (kow *kopiaObjectWriter) WriteAt(p []byte, offset int64) (int, error) {
570+
return 0, errors.New("not supported")
551571
}
552572

553573
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)