Skip to content

Commit 39bffa5

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 0a478b4 commit 39bffa5

File tree

11 files changed

+2016
-396
lines changed

11 files changed

+2016
-396
lines changed

pkg/cmd/server/bootstrappolicy/policy.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -505,7 +505,7 @@ func GetOpenshiftBootstrapClusterRoles() []rbac.ClusterRole {
505505
rbac.NewRule("get", "list").Groups(appsGroup, extensionsGroup).Resources("replicasets").RuleOrDie(),
506506

507507
rbac.NewRule("delete").Groups(imageGroup, legacyImageGroup).Resources("images").RuleOrDie(),
508-
rbac.NewRule("get", "list").Groups(imageGroup, legacyImageGroup).Resources("images", "imagestreams").RuleOrDie(),
508+
rbac.NewRule("get", "list", "watch").Groups(imageGroup, legacyImageGroup).Resources("images", "imagestreams").RuleOrDie(),
509509
rbac.NewRule("update").Groups(imageGroup, legacyImageGroup).Resources("imagestreams/status").RuleOrDie(),
510510
},
511511
},

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

+38-2
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,15 @@ import (
77
"sort"
88
"strings"
99

10-
kapi "k8s.io/kubernetes/pkg/apis/core"
11-
1210
"github.com/docker/distribution/registry/api/errcode"
1311
"github.com/golang/glog"
1412

13+
kmeta "k8s.io/apimachinery/pkg/api/meta"
14+
"k8s.io/apimachinery/pkg/runtime"
1515
kerrors "k8s.io/apimachinery/pkg/util/errors"
16+
"k8s.io/kubernetes/pkg/api/legacyscheme"
17+
kapiref "k8s.io/kubernetes/pkg/api/ref"
18+
kapi "k8s.io/kubernetes/pkg/apis/core"
1619

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

0 commit comments

Comments
 (0)