Skip to content

Commit

Permalink
Expose chunkzie variable for S3 storage driver
Browse files Browse the repository at this point in the history
  • Loading branch information
deepsm007 committed Apr 29, 2024
1 parent f39cf2e commit 2a14f59
Show file tree
Hide file tree
Showing 9 changed files with 9,624 additions and 1 deletion.
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
apiVersion: apiextensions.k8s.io/v1 # Hack because controller-gen complains if we don't have this
name: "Config"
crdName: configs.imageregistry.operator.openshift.io
featureGate: ChunkSizeMiB
tests:
onCreate:
- name: Should be able to create a minimal Config
initial: |
apiVersion: imageregistry.operator.openshift.io/v1
kind: Config
spec:
replicas: 1
expected: |
apiVersion: imageregistry.operator.openshift.io/v1
kind: Config
spec:
logLevel: Normal
operatorLogLevel: Normal
replicas: 1
- name: Should be able to configure ChunkSizeMiB for storage s3
initial: |
apiVersion: imageregistry.operator.openshift.io/v1
kind: Config
spec:
replicas: 1
storage:
s3:
bucket: bucket-1
region: region-1
ChunkSizeMiB: 10
expected: |
apiVersion: imageregistry.operator.openshift.io/v1
kind: Config
spec:
logLevel: Normal
operatorLogLevel: Normal
replicas: 1
storage:
s3:
bucket: bucket-1
region: region-1
ChunkSizeMiB: 10485760
- name: Should not be able to configure ChunkSizeMiB for storage s3 without details
initial: |
apiVersion: imageregistry.operator.openshift.io/v1
kind: Config
spec:
replicas: 1
storage:
s3:
bucket: bucket-2
region: region-2
expected: |
apiVersion: imageregistry.operator.openshift.io/v1
kind: Config
spec:
logLevel: Normal
operatorLogLevel: Normal
replicas: 1
storage:
s3:
bucket: bucket-2
region: region-2
- name: Should reject configuration with value less than 5 in ChunkSizeMiB for storage s3
initial: |
apiVersion: imageregistry.operator.openshift.io/v1
kind: Config
spec:
replicas: 1
storage:
s3:
bucket: bucket-2
region: region-2
ChunkSizeMiB: 2
expectedError: "spec.storage.s3.chunksizemib in body should match '^(5\\d{0,2}|[1-4]\\d{3}|5120)$'"
- name: Should reject configuration with value more than 5120 in ChunkSizeMiB for storage s3
initial: |
apiVersion: imageregistry.operator.openshift.io/v1
kind: Config
spec:
replicas: 1
storage:
s3:
bucket: bucket-3
region: region-3
ChunkSizeMiB: 6000
expectedError: "spec.storage.s3.chunksizemib in body should match '^(5\\d{0,2}|[1-4]\\d{3}|5120)$'"
- name: Should reject configuration with decimal value in ChunkSizeMiB for storage s3
initial: |
apiVersion: imageregistry.operator.openshift.io/v1
kind: Config
spec:
replicas: 1
storage:
s3:
bucket: bucket-4
region: region-4
ChunkSizeMiB: 19.5
expectedError: "spec.storage.s3.chunksizemib in body should match '^(5\\d{0,2}|[1-4]\\d{3}|5120)$'"
10 changes: 10 additions & 0 deletions imageregistry/v1/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,16 @@ type ImageRegistryConfigStorageS3 struct {
// Optional, defaults based on the Region that is provided.
// +optional
RegionEndpoint string `json:"regionEndpoint,omitempty"`
// chunkSizeMiB defines the size of the multipart upload chunks of the S3 API.
// The S3 API requires multipart upload chunks to be at least 5MiB.
// When omitted, this means no opinion and the platform is left to choose a reasonable default, which is subject to change over time.
// The current default value is 10 MiB.
// The value is an integer number of MiB
// +kubebuilder:validation:Minimum=5
// +kubebuilder:validation:Maximum=5120
// +openshift:enable:FeatureGate=ChunkSizeMiB
// +optional
ChunkSizeMiB int32 `json:"chunkSizeMiB,omitempty"`
// encrypt specifies whether the registry stores the image in encrypted
// format or not.
// Optional, defaults to false.
Expand Down
2,394 changes: 2,394 additions & 0 deletions imageregistry/v1/zz_generated.crd-manifests/00_configs-CustomNoUpgrade.crd.yaml

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ metadata:
api.openshift.io/merged-by-featuregates: "true"
include.release.openshift.io/ibm-cloud-managed: "true"
include.release.openshift.io/self-managed-high-availability: "true"
release.openshift.io/feature-set: Default
name: configs.imageregistry.operator.openshift.io
spec:
group: imageregistry.operator.openshift.io
Expand Down

0 comments on commit 2a14f59

Please sign in to comment.