Skip to content

Commit 4b0752f

Browse files
Merge pull request #21030 from openshift-cherrypick-robot/cherry-pick-21024-to-release-3.11
[release-3.11] Fix image quota evaluators to support both internal and external resources
2 parents e3ff49a + 2a97d4a commit 4b0752f

File tree

3 files changed

+23
-2
lines changed

3 files changed

+23
-2
lines changed

pkg/quota/image/imagestreamimport_evaluator.go

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import (
1717
imagev1 "github.com/openshift/api/image/v1"
1818
imagev1lister "github.com/openshift/client-go/image/listers/image/v1"
1919
imageapi "github.com/openshift/origin/pkg/image/apis/image"
20+
imagev1conversions "github.com/openshift/origin/pkg/image/apis/image/v1"
2021
)
2122

2223
var imageStreamImportResources = []kapi.ResourceName{
@@ -38,7 +39,9 @@ func NewImageStreamImportEvaluator(store imagev1lister.ImageStreamLister) kquota
3839

3940
// Constraints checks that given object is an image stream import.
4041
func (i *imageStreamImportEvaluator) Constraints(required []kapi.ResourceName, object runtime.Object) error {
41-
if _, ok := object.(*imagev1.ImageStreamImport); !ok {
42+
_, okInt := object.(*imageapi.ImageStreamImport)
43+
_, okExt := object.(*imagev1.ImageStreamImport)
44+
if !okInt && !okExt {
4245
return fmt.Errorf("unexpected input object %v", object)
4346
}
4447
return nil
@@ -70,6 +73,13 @@ func (i *imageStreamImportEvaluator) MatchingResources(input []kapi.ResourceName
7073
}
7174

7275
func (i *imageStreamImportEvaluator) Usage(item runtime.Object) (kapi.ResourceList, error) {
76+
if isiInternal, ok := item.(*imageapi.ImageStreamImport); ok {
77+
out := &imagev1.ImageStreamImport{}
78+
if err := imagev1conversions.Convert_image_ImageStreamImport_To_v1_ImageStreamImport(isiInternal, out, nil); err != nil {
79+
return kapi.ResourceList{}, fmt.Errorf("error converting ImageStreamImport: %v", err)
80+
}
81+
item = out
82+
}
7383
isi, ok := item.(*imagev1.ImageStreamImport)
7484
if !ok {
7585
return kapi.ResourceList{}, fmt.Errorf("item is not an ImageStreamImport: %T", item)

pkg/quota/image/imagestreamtag_evaluator.go

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import (
1818
imagev1typedclient "github.com/openshift/client-go/image/clientset/versioned/typed/image/v1"
1919
imagev1lister "github.com/openshift/client-go/image/listers/image/v1"
2020
imageapi "github.com/openshift/origin/pkg/image/apis/image"
21+
imagev1conversions "github.com/openshift/origin/pkg/image/apis/image/v1"
2122
)
2223

2324
var imageStreamTagResources = []kapi.ResourceName{
@@ -40,7 +41,9 @@ func NewImageStreamTagEvaluator(store imagev1lister.ImageStreamLister, istGetter
4041

4142
// Constraints checks that given object is an image stream tag
4243
func (i *imageStreamTagEvaluator) Constraints(required []kapi.ResourceName, object runtime.Object) error {
43-
if _, ok := object.(*imagev1.ImageStreamTag); !ok {
44+
_, okInt := object.(*imageapi.ImageStreamTag)
45+
_, okExt := object.(*imagev1.ImageStreamTag)
46+
if !okInt && !okExt {
4447
return fmt.Errorf("unexpected input object %v", object)
4548
}
4649
return nil
@@ -73,6 +76,13 @@ func (i *imageStreamTagEvaluator) MatchingResources(input []kapi.ResourceName) [
7376
}
7477

7578
func (i *imageStreamTagEvaluator) Usage(item runtime.Object) (kapi.ResourceList, error) {
79+
if istInternal, ok := item.(*imageapi.ImageStreamTag); ok {
80+
out := &imagev1.ImageStreamTag{}
81+
if err := imagev1conversions.Convert_image_ImageStreamTag_To_v1_ImageStreamTag(istInternal, out, nil); err != nil {
82+
return kapi.ResourceList{}, fmt.Errorf("error converting ImageStreamImport: %v", err)
83+
}
84+
item = out
85+
}
7686
ist, ok := item.(*imagev1.ImageStreamTag)
7787
if !ok {
7888
return kapi.ResourceList{}, nil

test/cmd/quota.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ os::cmd::expect_success 'oc new-project quota-images --as=deads --as-group=syst
5050
os::cmd::expect_success 'oc create quota -n quota-images is-quota --hard openshift.io/imagestreams=1'
5151
os::cmd::try_until_success 'oc tag -n quota-images openshift/hello-openshift myis2:v2'
5252
os::cmd::expect_failure_and_text 'oc tag -n quota-images busybox mybox:v1' "exceeded quota"
53+
os::cmd::expect_failure_and_text 'oc import-image centos -n quota-images --from=docker.io/centos:latest --confirm=true' "exceeded quota"
5354
os::cmd::expect_success 'oc delete project quota-images'
5455

5556
echo "imagestreams: ok"

0 commit comments

Comments
 (0)