add possibility to clean untagged manifests
add tests add possibility to clean untagged manifests Signed-off-by: Jesse Haka <haka.jesse@gmail.com> add dry tests Signed-off-by: Jesse Haka <haka.jesse@gmail.com> remove underscores Signed-off-by: Jesse Haka <haka.jesse@gmail.com> fixes Signed-off-by: Jesse Haka <haka.jesse@gmail.com> opts struct+use camelcase Signed-off-by: Jesse Haka <haka.jesse@gmail.com> doublecheck manifest in paths.go Signed-off-by: Jesse Haka <haka.jesse@gmail.com> add gofmt Signed-off-by: Jesse Haka <haka.jesse@gmail.com> fix lint Signed-off-by: Jesse Haka <haka.jesse@gmail.com> add log print Signed-off-by: Jesse Haka <haka.jesse@gmail.com> move log to dryrun as well Signed-off-by: Jesse Haka <haka.jesse@gmail.com> remove counter Signed-off-by: Jesse Haka <haka.jesse@gmail.com> remove manifest tag references Signed-off-by: Jesse Haka <haka.jesse@gmail.com> add tag to tests Signed-off-by: Jesse Haka <haka.jesse@gmail.com> manifestsWithoutTags -> removeUntagged Signed-off-by: Jesse Haka <haka.jesse@gmail.com> remove RemoveManifestTagReferences and use removemanifests Signed-off-by: Jesse Haka <haka.jesse@gmail.com> remove comment Signed-off-by: Jesse Haka <haka.jesse@gmail.com> remove pathfor Signed-off-by: Jesse Haka <haka.jesse@gmail.com> move removemanifest out of manifestenumerator, it does not work correctly if we delete stuff in it Signed-off-by: Jesse Haka <haka.jesse@gmail.com> add comment Signed-off-by: Jesse Haka <haka.jesse@gmail.com> fix context -> dcontext Signed-off-by: Jesse Haka <haka.jesse@gmail.com> fix gofmt
This commit is contained in:
@@ -50,6 +50,40 @@ func (v Vacuum) RemoveBlob(dgst string) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// RemoveManifest removes a manifest from the filesystem
|
||||
func (v Vacuum) RemoveManifest(name string, dgst digest.Digest, tags []string) error {
|
||||
// remove a tag manifest reference, in case of not found continue to next one
|
||||
for _, tag := range tags {
|
||||
|
||||
tagsPath, err := pathFor(manifestTagIndexEntryPathSpec{name: name, revision: dgst, tag: tag})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
_, err = v.driver.Stat(v.ctx, tagsPath)
|
||||
if err != nil {
|
||||
switch err := err.(type) {
|
||||
case driver.PathNotFoundError:
|
||||
continue
|
||||
default:
|
||||
return err
|
||||
}
|
||||
}
|
||||
dcontext.GetLogger(v.ctx).Infof("deleting manifest tag reference: %s", tagsPath)
|
||||
err = v.driver.Delete(v.ctx, tagsPath)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
manifestPath, err := pathFor(manifestRevisionPathSpec{name: name, revision: dgst})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
dcontext.GetLogger(v.ctx).Infof("deleting manifest: %s", manifestPath)
|
||||
return v.driver.Delete(v.ctx, manifestPath)
|
||||
}
|
||||
|
||||
// RemoveRepository removes a repository directory from the
|
||||
// filesystem
|
||||
func (v Vacuum) RemoveRepository(repoName string) error {
|
||||
|
Reference in New Issue
Block a user