Skip to content

Commit b43b129

Browse files
author
OpenShift Bot
committed
Merge pull request #8195 from miminar/registry-quota-refactor
Merged by openshift-bot
2 parents de351a1 + 23f729d commit b43b129

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

67 files changed

+4956
-3142
lines changed

contrib/completions/bash/oadm

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1493,6 +1493,7 @@ _oadm_registry()
14931493
flags_completion+=("__handle_filename_extension_flag kubeconfig")
14941494
flags+=("--daemonset")
14951495
flags+=("--dry-run")
1496+
flags+=("--enforce-quota")
14961497
flags+=("--images=")
14971498
flags+=("--labels=")
14981499
flags+=("--latest-images")

contrib/completions/bash/oc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4513,6 +4513,7 @@ _oc_adm_registry()
45134513
flags_completion+=("__handle_filename_extension_flag kubeconfig")
45144514
flags+=("--daemonset")
45154515
flags+=("--dry-run")
4516+
flags+=("--enforce-quota")
45164517
flags+=("--images=")
45174518
flags+=("--labels=")
45184519
flags+=("--latest-images")

contrib/completions/bash/openshift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2069,6 +2069,7 @@ _openshift_admin_registry()
20692069
flags_completion+=("__handle_filename_extension_flag kubeconfig")
20702070
flags+=("--daemonset")
20712071
flags+=("--dry-run")
2072+
flags+=("--enforce-quota")
20722073
flags+=("--images=")
20732074
flags+=("--labels=")
20742075
flags+=("--latest-images")
@@ -8100,6 +8101,7 @@ _openshift_cli_adm_registry()
81008101
flags_completion+=("__handle_filename_extension_flag kubeconfig")
81018102
flags+=("--daemonset")
81028103
flags+=("--dry-run")
8104+
flags+=("--enforce-quota")
81038105
flags+=("--images=")
81048106
flags+=("--labels=")
81058107
flags+=("--latest-images")

hack/lib/util/environment.sh

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,7 @@ function os::util::environment::setup_server_vars() {
239239
# Returns:
240240
# - export USE_IMAGES
241241
# - export TAG
242+
# - export MAX_IMAGES_BULK_IMPORTED_PER_REPOSITORY
242243
function os::util::environment::setup_images_vars() {
243244
# Use either the latest release built images, or latest.
244245
if [[ -z "${USE_IMAGES-}" ]]; then
@@ -250,4 +251,5 @@ function os::util::environment::setup_images_vars() {
250251
export USE_IMAGES="openshift/origin-\${component}:${TAG}"
251252
fi
252253
fi
254+
export MAX_IMAGES_BULK_IMPORTED_PER_REPOSITORY="${MAX_IMAGES_BULK_IMPORTED_PER_REPOSITORY:-3}"
253255
}

hack/util.sh

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -84,9 +84,14 @@ function configure_os_server {
8484
--images="${USE_IMAGES}"
8585

8686

87-
# Don't try this at home. We don't have flags for setting etcd ports in the config, but we want deconflicted ones. Use sed to replace defaults in a completely unsafe way
88-
os::util::sed "s/:4001$/:${ETCD_PORT}/g" ${SERVER_CONFIG_DIR}/master/master-config.yaml
89-
os::util::sed "s/:7001$/:${ETCD_PEER_PORT}/g" ${SERVER_CONFIG_DIR}/master/master-config.yaml
87+
# Don't try this at home. We don't have flags for setting etcd ports in the config, but we want
88+
# deconflicted ones. Use sed to replace defaults in a completely unsafe way.
89+
# And be sure to use the same limit for bulk image import from repository in tests and server.
90+
os::util::sed \
91+
-e "s/:4001$/:${ETCD_PORT}/g" \
92+
-e "s/:7001$/:${ETCD_PEER_PORT}/g" \
93+
-e "s/\(maxImagesBulkImportedPerRepository:\s*\)\(.*\)/\1${MAX_IMAGES_BULK_IMPORTED_PER_REPOSITORY:-\2}/" \
94+
${SERVER_CONFIG_DIR}/master/master-config.yaml
9095

9196

9297
# Make oc use ${MASTER_CONFIG_DIR}/admin.kubeconfig, and ignore anything in the running user's $HOME dir
@@ -636,7 +641,11 @@ function install_router {
636641
function install_registry {
637642
# The --mount-host option is provided to reuse local storage.
638643
echo "[INFO] Installing the registry"
639-
openshift admin registry --config="${ADMIN_KUBECONFIG}" --images="${USE_IMAGES}"
644+
# For testing purposes, ensure the quota objects are always up to date in the registry by
645+
# disabling project cache.
646+
openshift admin registry --config="${ADMIN_KUBECONFIG}" --images="${USE_IMAGES}" -o json | \
647+
oc env -f - --output json "REGISTRY_MIDDLEWARE_REPOSITORY_OPENSHIFT_PROJECTCACHETTL=0" | \
648+
oc create -f -
640649
}
641650

642651
function wait_for_registry {

images/dockerregistry/config.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,3 +18,5 @@ middleware:
1818
- name: openshift
1919
options:
2020
pullthrough: true
21+
enforcequota: false
22+
projectcachettl: 1m

pkg/assets/bindata.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9199,9 +9199,7 @@ cpu:"CPU (Request)",
91999199
"limits.cpu":"CPU (Limit)",
92009200
"limits.memory":"Memory (Limit)",
92019201
memory:"Memory (Request)",
9202-
"openshift.io/imagesize":"Image Size",
9203-
"openshift.io/imagestreamsize":"Image Stream Size",
9204-
"openshift.io/projectimagessize":"Project Image Size",
9202+
"openshift.io/imagestreams":"Image Streams",
92059203
persistentvolumeclaims:"Persistent Volume Claims",
92069204
pods:"Pods",
92079205
replicationcontrollers:"Replication Controllers",

pkg/client/imagestreamimages.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
package client
22

33
import (
4-
"fmt"
5-
64
"github.com/openshift/origin/pkg/image/api"
75
)
86

@@ -33,6 +31,6 @@ func newImageStreamImages(c *Client, namespace string) *imageStreamImages {
3331
// Get finds the specified image by name of an image repository and id.
3432
func (c *imageStreamImages) Get(name, id string) (result *api.ImageStreamImage, err error) {
3533
result = &api.ImageStreamImage{}
36-
err = c.r.Get().Namespace(c.ns).Resource("imageStreamImages").Name(fmt.Sprintf("%s@%s", name, id)).Do().Into(result)
34+
err = c.r.Get().Namespace(c.ns).Resource("imageStreamImages").Name(api.MakeImageStreamImageName(name, id)).Do().Into(result)
3735
return
3836
}

pkg/client/imagestreams.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"k8s.io/kubernetes/pkg/watch"
99

1010
imageapi "github.com/openshift/origin/pkg/image/api"
11+
quotautil "github.com/openshift/origin/pkg/quota/util"
1112
)
1213

1314
var ErrImageStreamImportUnsupported = errors.New("the server does not support directly importing images - create an image stream with tags or the dockerImageRepository field set")
@@ -139,7 +140,7 @@ func transformUnsupported(err error) error {
139140
// enabled by policy. A create request will return a Forbidden(403) error.
140141
// We want to return ErrImageStreamImportUnsupported to allow fallback behavior
141142
// in clients.
142-
if apierrs.IsForbidden(err) {
143+
if apierrs.IsForbidden(err) && !quotautil.IsErrorQuotaExceeded(err) {
143144
return ErrImageStreamImportUnsupported
144145
}
145146
return err

pkg/client/imagestreamtags.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
package client
22

33
import (
4-
"fmt"
5-
64
"github.com/openshift/origin/pkg/image/api"
75
)
86

@@ -35,7 +33,7 @@ func newImageStreamTags(c *Client, namespace string) *imageStreamTags {
3533
// Get finds the specified image by name of an image stream and tag.
3634
func (c *imageStreamTags) Get(name, tag string) (result *api.ImageStreamTag, err error) {
3735
result = &api.ImageStreamTag{}
38-
err = c.r.Get().Namespace(c.ns).Resource("imageStreamTags").Name(fmt.Sprintf("%s:%s", name, tag)).Do().Into(result)
36+
err = c.r.Get().Namespace(c.ns).Resource("imageStreamTags").Name(api.JoinImageStreamTag(name, tag)).Do().Into(result)
3937
return
4038
}
4139

@@ -48,5 +46,5 @@ func (c *imageStreamTags) Update(tag *api.ImageStreamTag) (result *api.ImageStre
4846

4947
// Delete deletes the specified tag from the image stream.
5048
func (c *imageStreamTags) Delete(name, tag string) error {
51-
return c.r.Delete().Namespace(c.ns).Resource("imageStreamTags").Name(fmt.Sprintf("%s:%s", name, tag)).Do().Error()
49+
return c.r.Delete().Namespace(c.ns).Resource("imageStreamTags").Name(api.JoinImageStreamTag(name, tag)).Do().Error()
5250
}

0 commit comments

Comments
 (0)