Skip to content

Commit 99829b9

Browse files
author
Michal Minář
committed
image-pruner: prune images in their own jobs
Instead of pruning in phases: all streams -> all layers -> all blobs -> manifests -> images Prune individual images in parallel jobs: all streams -> parallel [ image1's layers -> image1's blobs -> ... -> image1, image2's layers -> image2's blobs -> ... -> image2, ... ] A failure in streams prune phase is not fatal anymore. Signed-off-by: Michal Minář <[email protected]>
1 parent bb34ae4 commit 99829b9

File tree

8 files changed

+1245
-229
lines changed

8 files changed

+1245
-229
lines changed

pkg/oc/admin/prune/imageprune/helper.go

+37
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ import (
77
"sort"
88
"strings"
99

10+
kmeta "k8s.io/apimachinery/pkg/api/meta"
11+
"k8s.io/apimachinery/pkg/runtime"
12+
"k8s.io/kubernetes/pkg/api/legacyscheme"
13+
kapiref "k8s.io/kubernetes/pkg/api/ref"
1014
kapi "k8s.io/kubernetes/pkg/apis/core"
1115

1216
"github.com/docker/distribution/registry/api/errcode"
@@ -265,3 +269,36 @@ func (e *ErrBadReference) String() string {
265269
}
266270
return fmt.Sprintf("%s[%s]: invalid %s reference %q: %s", e.kind, name, targetKind, e.reference, e.reason)
267271
}
272+
273+
func getName(obj runtime.Object) string {
274+
accessor, err := kmeta.Accessor(obj)
275+
if err != nil {
276+
glog.V(4).Infof("Error getting accessor for %#v", obj)
277+
return "<unknown>"
278+
}
279+
ns := accessor.GetNamespace()
280+
if len(ns) == 0 {
281+
return accessor.GetName()
282+
}
283+
return fmt.Sprintf("%s/%s", ns, accessor.GetName())
284+
}
285+
286+
func getKindName(obj *kapi.ObjectReference) string {
287+
if obj == nil {
288+
return "unknown object"
289+
}
290+
name := obj.Name
291+
if len(obj.Namespace) > 0 {
292+
name = obj.Namespace + "/" + name
293+
}
294+
return fmt.Sprintf("%s[%s]", obj.Kind, name)
295+
}
296+
297+
func getRef(obj runtime.Object) *kapi.ObjectReference {
298+
ref, err := kapiref.GetReference(legacyscheme.Scheme, obj)
299+
if err != nil {
300+
glog.Errorf("failed to get reference to object %T: %v", obj, err)
301+
return nil
302+
}
303+
return ref
304+
}

0 commit comments

Comments
 (0)