diff --git a/cli/command_cat.go b/cli/command_cat.go index bbe594b78..813b49021 100644 --- a/cli/command_cat.go +++ b/cli/command_cat.go @@ -24,7 +24,7 @@ func runCatCommand(context *kingpin.ParseContext) error { if err != nil { return err } - r, err := rep.Open(oid) + r, err := rep.Objects.Open(oid) if err != nil { return err } diff --git a/cli/command_metadata_ls.go b/cli/command_metadata_ls.go index 2153b830b..1858c2a01 100644 --- a/cli/command_metadata_ls.go +++ b/cli/command_metadata_ls.go @@ -18,7 +18,7 @@ func init() { func listMetadataItems(context *kingpin.ParseContext) error { rep := mustOpenRepository(nil) - entries, err := rep.ListMetadata(*metadataListPrefix) + entries, err := rep.Metadata.List(*metadataListPrefix) if err != nil { return err } diff --git a/cli/command_metadata_rm.go b/cli/command_metadata_rm.go index d5e92b108..a8af673a3 100644 --- a/cli/command_metadata_rm.go +++ b/cli/command_metadata_rm.go @@ -14,5 +14,5 @@ func init() { func removeMetadataItem(context *kingpin.ParseContext) error { rep := mustOpenRepository(nil) - return rep.RemoveMany(*metadataRemoveItems) + return rep.Metadata.RemoveMany(*metadataRemoveItems) } diff --git a/cli/command_metadata_show.go b/cli/command_metadata_show.go index a254977de..f447b4651 100644 --- a/cli/command_metadata_show.go +++ b/cli/command_metadata_show.go @@ -22,7 +22,7 @@ func init() { func showMetadataObject(context *kingpin.ParseContext) error { rep := mustOpenRepository(nil) - b, err := rep.MetadataManager.GetMetadata(*metadataShowID) + b, err := rep.Metadata.GetMetadata(*metadataShowID) if err != nil { return err } diff --git a/cli/command_mount.go b/cli/command_mount.go index 3269e499a..2c86d8db3 100644 --- a/cli/command_mount.go +++ b/cli/command_mount.go @@ -32,7 +32,7 @@ func runMountCommand(context *kingpin.ParseContext) error { for { select { case <-time.After(*mountCacheRefreshInterval): - rep.RefreshCache() + rep.Metadata.RefreshCache() // TODO - cancel the loop perhaps? } } diff --git a/cli/command_object_cleanup.go b/cli/command_object_cleanup.go index 3e964cc32..57e37e679 100644 --- a/cli/command_object_cleanup.go +++ b/cli/command_object_cleanup.go @@ -121,7 +121,7 @@ type cleanupContext struct { } func findAliveBlocks(ctx *cleanupContext, wi *cleanupWorkItem) error { - blks, err := ctx.repo.GetStorageBlocks(wi.oid) + blks, err := ctx.repo.Objects.GetStorageBlocks(wi.oid) if err != nil { return err } diff --git a/cli/command_object_show.go b/cli/command_object_show.go index 958b05d09..83cf865ad 100644 --- a/cli/command_object_show.go +++ b/cli/command_object_show.go @@ -47,7 +47,7 @@ func runShowCommand(context *kingpin.ParseContext) error { func showObject(r *repo.Repository, oid repo.ObjectID) error { var rd io.ReadCloser - rd, err := r.Open(oid) + rd, err := r.Objects.Open(oid) if err != nil { return err } diff --git a/cli/command_repository_optimize.go b/cli/command_repository_optimize.go index 1fc578713..2b67d8d99 100644 --- a/cli/command_repository_optimize.go +++ b/cli/command_repository_optimize.go @@ -15,7 +15,7 @@ func runOptimizeCommand(context *kingpin.ParseContext) error { rep := mustOpenRepository(nil) defer rep.Close() - return rep.Optimize(time.Now().Add(-*optimizeMinAge)) + return rep.Objects.Optimize(time.Now().Add(-*optimizeMinAge)) } func init() { diff --git a/cli/command_snapshot_expire.go b/cli/command_snapshot_expire.go index 4f34ddf07..49b665ead 100644 --- a/cli/command_snapshot_expire.go +++ b/cli/command_snapshot_expire.go @@ -208,7 +208,7 @@ func runExpireCommand(context *kingpin.ParseContext) error { } if *snapshotExpireDelete == "yes" { fmt.Fprintf(os.Stderr, "Deleting %v snapshots...\n", len(toDelete)) - if err := rep.RemoveMany(toDelete); err != nil { + if err := rep.Metadata.RemoveMany(toDelete); err != nil { return err } } else { diff --git a/repo/connection.go b/repo/connection.go index 67dfdb9ca..7e4e55c61 100644 --- a/repo/connection.go +++ b/repo/connection.go @@ -87,7 +87,7 @@ func Connect(ctx context.Context, configFile string, st blob.Storage, creds auth return err } - cfg, err := r.connectionConfiguration() + cfg, err := r.Metadata.connectionConfiguration() if err != nil { return err } @@ -130,9 +130,9 @@ func connect(ctx context.Context, st blob.Storage, creds auth.Credentials, optio } return &Repository{ - ObjectManager: om, - MetadataManager: mm, - Storage: st, + Objects: om, + Metadata: mm, + Storage: st, }, nil } diff --git a/repo/metadata_manager.go b/repo/metadata_manager.go index 1b6b4435b..c821d950e 100644 --- a/repo/metadata_manager.go +++ b/repo/metadata_manager.go @@ -66,8 +66,8 @@ type MetadataManager struct { authData []byte // additional data to authenticate } -// PutMetadata saves the specified metadata content under a provided name. -func (mm *MetadataManager) PutMetadata(itemID string, content []byte) error { +// Put saves the specified metadata content under a provided name. +func (mm *MetadataManager) Put(itemID string, content []byte) error { if err := checkReservedName(itemID); err != nil { return err } @@ -139,9 +139,9 @@ func (mm *MetadataManager) GetMetadata(itemID string) ([]byte, error) { return mm.readEncryptedBlock(itemID) } -// MultiGetMetadata gets the contents of a specified multiple metadata items efficiently. +// MultiGet gets the contents of a specified multiple metadata items efficiently. // The results are returned as a map, with items that are not found not present in the map. -func (mm *MetadataManager) MultiGetMetadata(itemIDs []string) (map[string][]byte, error) { +func (mm *MetadataManager) MultiGet(itemIDs []string) (map[string][]byte, error) { type singleReadResult struct { id string contents []byte @@ -205,19 +205,19 @@ func (mm *MetadataManager) putJSON(id string, content interface{}) error { return mm.writeEncryptedBlock(id, j) } -// ListMetadata returns the list of metadata items matching the specified prefix. -func (mm *MetadataManager) ListMetadata(prefix string) ([]string, error) { +// List returns the list of metadata items matching the specified prefix. +func (mm *MetadataManager) List(prefix string) ([]string, error) { return mm.cache.ListBlocks(prefix) } -// ListMetadataContents retrieves metadata contents for all items starting with a given prefix. -func (mm *MetadataManager) ListMetadataContents(prefix string) (map[string][]byte, error) { - itemIDs, err := mm.ListMetadata(prefix) +// ListContents retrieves metadata contents for all items starting with a given prefix. +func (mm *MetadataManager) ListContents(prefix string) (map[string][]byte, error) { + itemIDs, err := mm.List(prefix) if err != nil { return nil, err } - return mm.MultiGetMetadata(itemIDs) + return mm.MultiGet(itemIDs) } // Config returns a configuration of storage its credentials that's suitable @@ -236,8 +236,8 @@ func (mm *MetadataManager) connectionConfiguration() (*config.RepositoryConnecti }, nil } -// RemoveMetadata removes the specified metadata item. -func (mm *MetadataManager) RemoveMetadata(itemID string) error { +// Remove removes the specified metadata item. +func (mm *MetadataManager) Remove(itemID string) error { if err := checkReservedName(itemID); err != nil { return err } @@ -258,7 +258,7 @@ func (mm *MetadataManager) RemoveMany(itemIDs []string) error { defer wg.Done() for id := range ch { - if err := mm.RemoveMetadata(id); err != nil { + if err := mm.Remove(id); err != nil { errch <- err } } diff --git a/repo/metadata_manager_test.go b/repo/metadata_manager_test.go index f7da3e8ba..795a9f43f 100644 --- a/repo/metadata_manager_test.go +++ b/repo/metadata_manager_test.go @@ -62,13 +62,13 @@ func TestMetadataManager(t *testing.T) { return } - if err := v.PutMetadata("foo", []byte("test1")); err != nil { + if err := v.Put("foo", []byte("test1")); err != nil { t.Errorf("error putting: %v", err) } - if err := v.PutMetadata("bar", []byte("test2")); err != nil { + if err := v.Put("bar", []byte("test2")); err != nil { t.Errorf("error putting: %v", err) } - if err := v.PutMetadata("baz", []byte("test3")); err != nil { + if err := v.Put("baz", []byte("test3")); err != nil { t.Errorf("error putting: %v", err) } @@ -87,7 +87,7 @@ func TestMetadataManager(t *testing.T) { assertReservedName(t, v, formatBlockID) assertReservedName(t, v, repositoryConfigBlockID) - v.RemoveMetadata("bar") + v.Remove("bar") assertMetadataItem(t, v, "foo", "test1") assertMetadataItemNotFound(t, v, "bar") @@ -100,13 +100,13 @@ func TestMetadataManager(t *testing.T) { assertMetadataItems(t, v, "baz", []string{"baz"}) assertMetadataItems(t, v, "bazx", nil) - v.RemoveMetadata("baz") + v.Remove("baz") assertMetadataItemNotFound(t, v, "baz") - v.RemoveMetadata("baz") + v.Remove("baz") assertMetadataItemNotFound(t, v, "baz") assertMetadataItem(t, v, "foo", "test1") - if err := v.PutMetadata("baz", []byte("test4")); err != nil { + if err := v.Put("baz", []byte("test4")); err != nil { t.Errorf("error putting: %v", err) } assertMetadataItem(t, v, "baz", "test4") @@ -146,8 +146,8 @@ func assertMetadataItemNotFound(t *testing.T, v *MetadataManager, itemID string) func assertReservedName(t *testing.T, v *MetadataManager, itemID string) { _, err := v.GetMetadata(itemID) assertReservedNameError(t, "Get", itemID, err) - assertReservedNameError(t, "Put", itemID, v.PutMetadata(itemID, nil)) - assertReservedNameError(t, "Remove", itemID, v.RemoveMetadata(itemID)) + assertReservedNameError(t, "Put", itemID, v.Put(itemID, nil)) + assertReservedNameError(t, "Remove", itemID, v.Remove(itemID)) } func assertReservedNameError(t *testing.T, method string, itemID string, err error) { @@ -163,7 +163,7 @@ func assertReservedNameError(t *testing.T, method string, itemID string, err err func assertMetadataItems(t *testing.T, v *MetadataManager, prefix string, expected []string) { t.Helper() - res, err := v.ListMetadata(prefix) + res, err := v.List(prefix) if err != nil { t.Errorf("error listing items beginning with %v: %v", prefix, err) } diff --git a/repo/object_manager_test.go b/repo/object_manager_test.go index bf0a0213d..242f7aa30 100644 --- a/repo/object_manager_test.go +++ b/repo/object_manager_test.go @@ -69,7 +69,7 @@ func TestWriters(t *testing.T) { for _, c := range cases { data, repo := setupTest(t) - writer := repo.NewWriter(WriterOptions{ + writer := repo.Objects.NewWriter(WriterOptions{ BlockNamePrefix: "X", }) @@ -81,7 +81,7 @@ func TestWriters(t *testing.T) { continue } - repo.writeBackWG.Wait() + repo.Objects.writeBackWG.Wait() if !objectIDsEqual(result, c.objectID) { t.Errorf("incorrect result for %v, expected: %v got: %v %#v", c.data, c.objectID.String(), result.String(), result.BinaryContent) @@ -109,7 +109,7 @@ func TestWriterCompleteChunkInTwoWrites(t *testing.T) { _, repo := setupTest(t) bytes := make([]byte, 100) - writer := repo.NewWriter(WriterOptions{ + writer := repo.Objects.NewWriter(WriterOptions{ BlockNamePrefix: "X", }) writer.Write(bytes[0:50]) @@ -129,7 +129,7 @@ func TestPackingSimple(t *testing.T) { content2 := "hi, how are you?" content3 := "thank you!" - if err := repo.BeginPacking(); err != nil { + if err := repo.Objects.BeginPacking(); err != nil { t.Fatalf("error in BeginPacking: %v", err) } @@ -138,9 +138,9 @@ func TestPackingSimple(t *testing.T) { oid2a := writeObject(t, repo, []byte(content2), "packed-object-2a") oid2b := writeObject(t, repo, []byte(content2), "packed-object-2b") - repo.FinishPacking() + repo.Objects.FinishPacking() - if err := repo.BeginPacking(); err != nil { + if err := repo.Objects.BeginPacking(); err != nil { t.Fatalf("error in BeginPacking: %v", err) } @@ -151,7 +151,7 @@ func TestPackingSimple(t *testing.T) { oid2c := writeObject(t, repo, []byte(content2), "packed-object-2c") oid1c := writeObject(t, repo, []byte(content1), "packed-object-1c") - repo.FinishPacking() + repo.Objects.FinishPacking() if got, want := oid1a.String(), oid1b.String(); got != want { t.Errorf("oid1a(%q) != oid1b(%q)", got, want) @@ -189,7 +189,7 @@ func TestPackingSimple(t *testing.T) { verify(t, repo, oid2a, []byte(content2), "packed-object-2") verify(t, repo, oid3a, []byte(content3), "packed-object-3") - if err := repo.Optimize(time.Now().Add(10 * time.Second)); err != nil { + if err := repo.Objects.Optimize(time.Now().Add(10 * time.Second)); err != nil { t.Errorf("optimize error: %v", err) } data, repo = setupTestWithData(t, data, func(n *NewRepositoryOptions) { @@ -200,7 +200,7 @@ func TestPackingSimple(t *testing.T) { verify(t, repo, oid2a, []byte(content2), "packed-object-2") verify(t, repo, oid3a, []byte(content3), "packed-object-3") - if err := repo.Optimize(time.Now().Add(-10 * time.Second)); err != nil { + if err := repo.Objects.Optimize(time.Now().Add(-10 * time.Second)); err != nil { t.Errorf("optimize error: %v", err) } data, repo = setupTestWithData(t, data, func(n *NewRepositoryOptions) { @@ -217,7 +217,7 @@ func verifyIndirectBlock(t *testing.T, r *Repository, oid ObjectID) { direct := *oid.Indirect oid = direct - rd, err := r.Open(direct) + rd, err := r.Objects.Open(direct) if err != nil { t.Errorf("unable to open %v: %v", oid.String(), err) return @@ -262,7 +262,7 @@ func TestIndirection(t *testing.T) { contentBytes := make([]byte, c.dataLength) - writer := repo.NewWriter(WriterOptions{}) + writer := repo.Objects.NewWriter(WriterOptions{}) writer.Write(contentBytes) result, err := writer.Result() if err != nil { @@ -277,7 +277,7 @@ func TestIndirection(t *testing.T) { t.Errorf("unexpected block count for %v: %v, expected %v", c.dataLength, got, want) } - b, err := repo.GetStorageBlocks(result) + b, err := repo.Objects.GetStorageBlocks(result) if err != nil { t.Errorf("error getting storage blocks for %q: %v", result, err) } @@ -303,7 +303,7 @@ func TestHMAC(t *testing.T) { _, repo := setupTest(t) - w := repo.NewWriter(WriterOptions{}) + w := repo.Objects.NewWriter(WriterOptions{}) w.Write(content) result, err := w.Result() if result.String() != "D999732b72ceff665b3f7608411db66a4" { @@ -340,7 +340,7 @@ func TestReader(t *testing.T) { continue } - reader, err := repo.Open(objectID) + reader, err := repo.Objects.Open(objectID) if err != nil { t.Errorf("cannot create reader for %v: %v", objectID, err) continue @@ -375,7 +375,7 @@ func TestMalformedStoredData(t *testing.T) { continue } - reader, err := repo.Open(objectID) + reader, err := repo.Objects.Open(objectID) if err == nil || reader != nil { t.Errorf("expected error for %x", c) } @@ -389,7 +389,7 @@ func TestReaderStoredBlockNotFound(t *testing.T) { if err != nil { t.Errorf("cannot parse object ID: %v", err) } - reader, err := repo.Open(objectID) + reader, err := repo.Objects.Open(objectID) if err != blob.ErrBlockNotFound || reader != nil { t.Errorf("unexpected result: reader: %v err: %v", reader, err) } @@ -403,7 +403,7 @@ func TestEndToEndReadAndSeek(t *testing.T) { randomData := make([]byte, size) cryptorand.Read(randomData) - writer := repo.NewWriter(WriterOptions{ + writer := repo.Objects.NewWriter(WriterOptions{ BlockNamePrefix: "X", }) writer.Write(randomData) @@ -429,7 +429,7 @@ func TestEndToEndReadAndSeek(t *testing.T) { } func writeObject(t *testing.T, repo *Repository, data []byte, testCaseID string) ObjectID { - w := repo.NewWriter(WriterOptions{}) + w := repo.Objects.NewWriter(WriterOptions{}) if _, err := w.Write(data); err != nil { t.Fatalf("can't write object %q - write failed: %v", testCaseID, err) @@ -443,7 +443,7 @@ func writeObject(t *testing.T, repo *Repository, data []byte, testCaseID string) } func verify(t *testing.T, repo *Repository, objectID ObjectID, expectedData []byte, testCaseID string) { - reader, err := repo.Open(objectID) + reader, err := repo.Objects.Open(objectID) if err != nil { t.Errorf("cannot get reader for %v (%v): %v %v", testCaseID, objectID, err, string(debug.Stack())) return @@ -523,7 +523,7 @@ func TestFormats(t *testing.T) { for k, v := range c.oids { bytesToWrite := []byte(k) - w := repo.NewWriter(WriterOptions{}) + w := repo.Objects.NewWriter(WriterOptions{}) w.Write(bytesToWrite) oid, err := w.Result() if err != nil { @@ -533,7 +533,7 @@ func TestFormats(t *testing.T) { t.Errorf("invalid oid for #%v\ngot:\n%#v\nexpected:\n%#v", caseIndex, oid.String(), v.String()) } - rc, err := repo.Open(oid) + rc, err := repo.Objects.Open(oid) if err != nil { t.Errorf("open failed: %v", err) continue diff --git a/repo/repository.go b/repo/repository.go index 4655a0beb..a70439c9b 100644 --- a/repo/repository.go +++ b/repo/repository.go @@ -6,9 +6,9 @@ // Repository represents storage where both content-addressable and user-addressable data is kept. type Repository struct { - *ObjectManager - *MetadataManager - Storage blob.Storage + Objects *ObjectManager + Metadata *MetadataManager + Storage blob.Storage ConfigFile string CacheDirectory string @@ -36,27 +36,27 @@ type StatusInfo struct { // Stats returns repository-wide statistics. func (r *Repository) Stats() Stats { - return r.ObjectManager.stats + return r.Objects.stats } // Status returns a snapshot of repository-wide statistics plus some general information about repository configuration. func (r *Repository) Status() StatusInfo { s := StatusInfo{ - Stats: r.ObjectManager.stats, + Stats: r.Objects.stats, - MetadataManagerVersion: r.MetadataManager.format.Version, - UniqueID: hex.EncodeToString(r.MetadataManager.format.UniqueID), - MetadataEncryptionAlgorithm: r.MetadataManager.format.EncryptionAlgorithm, - KeyDerivationAlgorithm: r.MetadataManager.format.KeyDerivationAlgorithm, + MetadataManagerVersion: r.Metadata.format.Version, + UniqueID: hex.EncodeToString(r.Metadata.format.UniqueID), + MetadataEncryptionAlgorithm: r.Metadata.format.EncryptionAlgorithm, + KeyDerivationAlgorithm: r.Metadata.format.KeyDerivationAlgorithm, - ObjectManagerVersion: fmt.Sprintf("%v", r.ObjectManager.format.Version), - ObjectFormat: r.ObjectManager.format.ObjectFormat, - Splitter: r.ObjectManager.format.Splitter, - MinBlockSize: r.ObjectManager.format.MinBlockSize, - AvgBlockSize: r.ObjectManager.format.AvgBlockSize, - MaxBlockSize: r.ObjectManager.format.MaxBlockSize, + ObjectManagerVersion: fmt.Sprintf("%v", r.Objects.format.Version), + ObjectFormat: r.Objects.format.ObjectFormat, + Splitter: r.Objects.format.Splitter, + MinBlockSize: r.Objects.format.MinBlockSize, + AvgBlockSize: r.Objects.format.AvgBlockSize, + MaxBlockSize: r.Objects.format.MaxBlockSize, - MaxPackedContentLength: r.ObjectManager.format.MaxPackedContentLength, + MaxPackedContentLength: r.Objects.format.MaxPackedContentLength, } if s.Splitter == "" { @@ -68,7 +68,7 @@ func (r *Repository) Status() StatusInfo { // Close closes the repository and releases all resources. func (r *Repository) Close() error { - if err := r.ObjectManager.Close(); err != nil { + if err := r.Objects.Close(); err != nil { return err } if err := r.Storage.Close(); err != nil { @@ -79,11 +79,11 @@ func (r *Repository) Close() error { // Flush waits for all in-flight writes to complete. func (r *Repository) Flush() error { - r.ObjectManager.writeBackWG.Wait() + r.Objects.writeBackWG.Wait() return nil } // ResetStats resets all repository-wide statistics to zero values. func (r *Repository) ResetStats() { - r.ObjectManager.stats = Stats{} + r.Objects.stats = Stats{} } diff --git a/snapshot/manager.go b/snapshot/manager.go index f58149748..cb59f6bbc 100644 --- a/snapshot/manager.go +++ b/snapshot/manager.go @@ -33,7 +33,7 @@ type Manager struct { // ListSources lists all snapshot sources. func (m *Manager) ListSources() ([]*SourceInfo, error) { - names, err := m.repository.ListMetadata(snapshotPrefix) + names, err := m.repository.Metadata.List(snapshotPrefix) if err != nil { return nil, err } @@ -64,7 +64,7 @@ func (m *Manager) ListSources() ([]*SourceInfo, error) { // ListSnapshots lists all snapshots for a given source. func (m *Manager) ListSnapshots(si *SourceInfo) ([]*Manifest, error) { - names, err := m.repository.ListMetadata(m.snapshotIDPrefix(si)) + names, err := m.repository.Metadata.List(m.snapshotIDPrefix(si)) if err != nil { return nil, err } @@ -74,7 +74,7 @@ func (m *Manager) ListSnapshots(si *SourceInfo) ([]*Manifest, error) { // LoadSnapshot loads and parses a snapshot with a given ID. func (m *Manager) LoadSnapshot(manifestID string) (*Manifest, error) { - b, err := m.repository.GetMetadata(manifestID) + b, err := m.repository.Metadata.GetMetadata(manifestID) if err != nil { return nil, fmt.Errorf("error loading previous backup: %v", err) } @@ -99,7 +99,7 @@ func (m *Manager) SaveSnapshot(manifest *Manifest) (string, error) { return "", fmt.Errorf("cannot marshal backup manifest to JSON: %v", err) } - if err := m.repository.PutMetadata(manifestID, b); err != nil { + if err := m.repository.Metadata.Put(manifestID, b); err != nil { return "", err } @@ -147,7 +147,7 @@ func (m *Manager) ListSnapshotManifests(src *SourceInfo) ([]string, error) { prefix = m.snapshotIDPrefix(src) } - return m.repository.ListMetadata(prefix) + return m.repository.Metadata.List(prefix) } // GetEffectivePolicy calculates effective snapshot policy for a given source by combining the source-specifc policy (if any) @@ -228,12 +228,12 @@ func (m *Manager) SavePolicy(p *Policy) error { return fmt.Errorf("cannot marshal policy to JSON: %v", err) } - return m.repository.PutMetadata(m.policyID(&p.Source), b) + return m.repository.Metadata.Put(m.policyID(&p.Source), b) } // RemovePolicy removes the policy for a given source func (m *Manager) RemovePolicy(src *SourceInfo) error { - return m.repository.RemoveMetadata(m.policyID(src)) + return m.repository.Metadata.Remove(m.policyID(src)) } // GetPolicy retrieves the Policy for a given source, if defined. @@ -251,7 +251,7 @@ func (m *Manager) policyID(src *SourceInfo) string { } func (m *Manager) getPolicyItem(itemID string) (*Policy, error) { - b, err := m.repository.GetMetadata(itemID) + b, err := m.repository.Metadata.GetMetadata(itemID) if err == repo.ErrMetadataNotFound { return nil, ErrPolicyNotFound } @@ -270,7 +270,7 @@ func (m *Manager) getPolicyItem(itemID string) (*Policy, error) { // ListPolicies returns a list of all snapshot policies. func (m *Manager) ListPolicies() ([]*Policy, error) { - names, err := m.repository.ListMetadata(policyPrefix) + names, err := m.repository.Metadata.List(policyPrefix) if err != nil { return nil, err } @@ -311,7 +311,7 @@ func (m *Manager) ListPolicies() ([]*Policy, error) { func NewManager(r *repo.Repository) *Manager { return &Manager{ r, - r.DeriveKey([]byte("snapshot-id"), 32), - r.DeriveKey([]byte("policyID-id"), 32), + r.Metadata.DeriveKey([]byte("snapshot-id"), 32), + r.Metadata.DeriveKey([]byte("policyID-id"), 32), } } diff --git a/snapshot/repofs.go b/snapshot/repofs.go index 5d9ae9218..82c370d35 100644 --- a/snapshot/repofs.go +++ b/snapshot/repofs.go @@ -40,7 +40,7 @@ type repositorySymlink struct { } func (rd *repositoryDirectory) Readdir() (fs.Entries, error) { - r, err := rd.repo.Open(rd.metadata.ObjectID) + r, err := rd.repo.Objects.Open(rd.metadata.ObjectID) if err != nil { return nil, err } @@ -60,7 +60,7 @@ func (rd *repositoryDirectory) Readdir() (fs.Entries, error) { } func (rf *repositoryFile) Open() (fs.Reader, error) { - r, err := rf.repo.Open(rf.metadata.ObjectID) + r, err := rf.repo.Objects.Open(rf.metadata.ObjectID) if err != nil { return nil, err } @@ -69,7 +69,7 @@ func (rf *repositoryFile) Open() (fs.Reader, error) { } func (rsl *repositorySymlink) Readlink() (string, error) { - r, err := rsl.repo.Open(rsl.metadata.ObjectID) + r, err := rsl.repo.Objects.Open(rsl.metadata.ObjectID) if err != nil { return "", err } diff --git a/snapshot/upload.go b/snapshot/upload.go index 9cc4897ab..f95fbe008 100644 --- a/snapshot/upload.go +++ b/snapshot/upload.go @@ -91,7 +91,7 @@ func (u *Uploader) uploadFileInternal(f fs.File, relativePath string) (*dir.Entr } defer file.Close() - writer := u.repo.NewWriter(repo.WriterOptions{ + writer := u.repo.Objects.NewWriter(repo.WriterOptions{ Description: "FILE:" + f.Metadata().Name, }) defer writer.Close() @@ -131,7 +131,7 @@ func (u *Uploader) uploadSymlinkInternal(f fs.Symlink, relativePath string) (*di return nil, 0, fmt.Errorf("unable to read symlink: %v", err) } - writer := u.repo.NewWriter(repo.WriterOptions{ + writer := u.repo.Objects.NewWriter(repo.WriterOptions{ Description: "SYMLINK:" + f.Metadata().Name, }) defer writer.Close() @@ -219,11 +219,11 @@ func (u *Uploader) uploadFile(file fs.File) (repo.ObjectID, error) { func (u *Uploader) uploadDir(dir fs.Directory) (repo.ObjectID, repo.ObjectID, error) { var err error - if err := u.repo.BeginPacking(); err != nil { + if err := u.repo.Objects.BeginPacking(); err != nil { return repo.NullObjectID, repo.NullObjectID, err } - mw := u.repo.NewWriter(repo.WriterOptions{ + mw := u.repo.Objects.NewWriter(repo.WriterOptions{ Description: "HASHCACHE:" + dir.Metadata().Name, BlockNamePrefix: "H", PackGroup: "HC", @@ -244,7 +244,7 @@ func (u *Uploader) uploadDir(dir fs.Directory) (repo.ObjectID, repo.ObjectID, er } hcid, err := mw.Result() - if err := u.repo.FinishPacking(); err != nil { + if err := u.repo.Objects.FinishPacking(); err != nil { return repo.NullObjectID, repo.NullObjectID, fmt.Errorf("can't finish packing: %v", err) } return oid, hcid, err @@ -265,7 +265,7 @@ func uploadDirInternal( return repo.NullObjectID, err } - writer := u.repo.NewWriter(repo.WriterOptions{ + writer := u.repo.Objects.NewWriter(repo.WriterOptions{ Description: "DIR:" + relativePath, PackGroup: "DIR", }) @@ -399,7 +399,7 @@ func (u *Uploader) Upload( u.cacheReader = hashcache.Open(nil) u.stats = Stats{} if old != nil { - if r, err := u.repo.Open(old.HashCacheID); err == nil { + if r, err := u.repo.Objects.Open(old.HashCacheID); err == nil { u.cacheReader = hashcache.Open(r) } }