From 672722ec03feda3063810229b8f5cc759c23c9b7 Mon Sep 17 00:00:00 2001 From: kubevirt-bot <25687724+kubevirt-bot@users.noreply.github.com> Date: Tue, 2 Apr 2024 05:05:09 +0000 Subject: [PATCH 1/2] Bump CDI to v1.59.0 Signed-off-by: HCO Bump Bot --- deploy/cluster_role.yaml | 45 ++++++ .../containerized-data-importer00.crd.yaml | 136 ++++++++++++++++-- deploy/images.csv | 14 +- deploy/images.env | 28 ++-- .../containerized-data-importer00.crd.yaml | 136 ++++++++++++++++-- ...perator.v1.12.0.clusterserviceversion.yaml | 90 +++++++++--- .../containerized-data-importer00.crd.yaml | 136 ++++++++++++++++-- ...perator.v1.12.0.clusterserviceversion.yaml | 92 +++++++++--- deploy/operator.yaml | 31 ++-- go.mod | 2 +- go.sum | 4 +- hack/config | 2 +- tests/go.mod | 4 +- tests/go.sum | 4 +- .../pkg/apis/core/v1beta1/types.go | 63 +++++++- .../core/v1beta1/types_swagger_generated.go | 33 ++++- .../core/v1beta1/zz_generated.deepcopy.go | 112 +++++++++++++++ tests/vendor/modules.txt | 6 +- .../pkg/apis/core/v1beta1/types.go | 63 +++++++- .../core/v1beta1/types_swagger_generated.go | 33 ++++- .../core/v1beta1/zz_generated.deepcopy.go | 112 +++++++++++++++ vendor/modules.txt | 4 +- 22 files changed, 1042 insertions(+), 108 deletions(-) diff --git a/deploy/cluster_role.yaml b/deploy/cluster_role.yaml index dd699a772d..b5979b9a72 100644 --- a/deploy/cluster_role.yaml +++ b/deploy/cluster_role.yaml @@ -2914,6 +2914,7 @@ rules: - admissionregistration.k8s.io resourceNames: - cdi-api-datavolume-mutate + - cdi-api-pvc-mutate resources: - mutatingwebhookconfigurations verbs: @@ -2951,6 +2952,24 @@ rules: - persistentvolumeclaims verbs: - get + - list + - watch +- apiGroups: + - "" + resources: + - persistentvolumes + verbs: + - get + - list + - watch +- apiGroups: + - storage.k8s.io + resources: + - storageclasses + verbs: + - get + - list + - watch - apiGroups: - "" resources: @@ -2963,6 +2982,8 @@ rules: - volumesnapshots verbs: - get + - list + - watch - apiGroups: - cdi.kubevirt.io resources: @@ -2976,12 +2997,30 @@ rules: - datasources verbs: - get +- apiGroups: + - cdi.kubevirt.io + resources: + - volumeclonesources + verbs: + - get + - list + - watch +- apiGroups: + - cdi.kubevirt.io + resources: + - storageprofiles + verbs: + - get + - list + - watch - apiGroups: - cdi.kubevirt.io resources: - cdis verbs: - get + - list + - watch - apiGroups: - cdi.kubevirt.io resources: @@ -3067,6 +3106,12 @@ rules: - get - list - watch +- apiGroups: + - config.openshift.io + resources: + - clusterversions + verbs: + - get - apiGroups: - cdi.kubevirt.io resources: diff --git a/deploy/crds/containerized-data-importer00.crd.yaml b/deploy/crds/containerized-data-importer00.crd.yaml index a2d4c402b5..51a8d71e6f 100644 --- a/deploy/crds/containerized-data-importer00.crd.yaml +++ b/deploy/crds/containerized-data-importer00.crd.yaml @@ -184,7 +184,8 @@ spec: description: "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation - feature gate. \n This field is immutable." + feature gate. \n This field is immutable. It can only be + set for containers." items: description: ResourceClaim references one entry in PodSpec.ResourceClaims. properties: @@ -221,7 +222,8 @@ spec: description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise - to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + to an implementation-defined value. Requests cannot exceed + Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object type: object preallocation: @@ -332,6 +334,52 @@ spec: description: Override the URL used when uploading to a DataVolume type: string type: object + customizeComponents: + description: CustomizeComponents defines patches for components deployed + by the CDI operator. + properties: + flags: + description: Configure the value used for deployment and daemonset + resources + properties: + api: + additionalProperties: + type: string + type: object + controller: + additionalProperties: + type: string + type: object + uploadProxy: + additionalProperties: + type: string + type: object + type: object + patches: + items: + description: CustomizeComponentsPatch defines a patch for some + resource. + properties: + patch: + type: string + resourceName: + minLength: 1 + type: string + resourceType: + minLength: 1 + type: string + type: + description: PatchType defines the patch type. + type: string + required: + - patch + - resourceName + - resourceType + - type + type: object + type: array + x-kubernetes-list-type: atomic + type: object imagePullPolicy: description: PullPolicy describes a policy for if/when to pull a container image @@ -341,8 +389,8 @@ spec: - Never type: string infra: - description: Rules on which nodes CDI infrastructure pods will be - scheduled + description: Selectors and tolerations that should apply to cdi infrastructure + components properties: affinity: description: affinity enables pod affinity/anti-affinity placement @@ -1215,6 +1263,14 @@ spec: type: array type: object type: object + apiServerReplicas: + description: ApiserverReplicas set Replicas for cdi-apiserver + format: int32 + type: integer + deploymentReplicas: + description: DeploymentReplicas set Replicas for cdi-deployment + format: int32 + type: integer nodeSelector: additionalProperties: type: string @@ -1268,6 +1324,10 @@ spec: type: string type: object type: array + uploadProxyReplicas: + description: UploadproxyReplicas set Replicas for cdi-uploadproxy + format: int32 + type: integer type: object priorityClass: description: PriorityClass of the CDI control plane @@ -2424,7 +2484,8 @@ spec: description: "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation - feature gate. \n This field is immutable." + feature gate. \n This field is immutable. It can only be + set for containers." items: description: ResourceClaim references one entry in PodSpec.ResourceClaims. properties: @@ -2461,7 +2522,8 @@ spec: description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise - to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + to an implementation-defined value. Requests cannot exceed + Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object type: object preallocation: @@ -2572,6 +2634,52 @@ spec: description: Override the URL used when uploading to a DataVolume type: string type: object + customizeComponents: + description: CustomizeComponents defines patches for components deployed + by the CDI operator. + properties: + flags: + description: Configure the value used for deployment and daemonset + resources + properties: + api: + additionalProperties: + type: string + type: object + controller: + additionalProperties: + type: string + type: object + uploadProxy: + additionalProperties: + type: string + type: object + type: object + patches: + items: + description: CustomizeComponentsPatch defines a patch for some + resource. + properties: + patch: + type: string + resourceName: + minLength: 1 + type: string + resourceType: + minLength: 1 + type: string + type: + description: PatchType defines the patch type. + type: string + required: + - patch + - resourceName + - resourceType + - type + type: object + type: array + x-kubernetes-list-type: atomic + type: object imagePullPolicy: description: PullPolicy describes a policy for if/when to pull a container image @@ -2581,8 +2689,8 @@ spec: - Never type: string infra: - description: Rules on which nodes CDI infrastructure pods will be - scheduled + description: Selectors and tolerations that should apply to cdi infrastructure + components properties: affinity: description: affinity enables pod affinity/anti-affinity placement @@ -3455,6 +3563,14 @@ spec: type: array type: object type: object + apiServerReplicas: + description: ApiserverReplicas set Replicas for cdi-apiserver + format: int32 + type: integer + deploymentReplicas: + description: DeploymentReplicas set Replicas for cdi-deployment + format: int32 + type: integer nodeSelector: additionalProperties: type: string @@ -3508,6 +3624,10 @@ spec: type: string type: object type: array + uploadProxyReplicas: + description: UploadproxyReplicas set Replicas for cdi-uploadproxy + format: int32 + type: integer type: object priorityClass: description: PriorityClass of the CDI control plane diff --git a/deploy/images.csv b/deploy/images.csv index eab64e4652..f0528738b3 100644 --- a/deploy/images.csv +++ b/deploy/images.csv @@ -11,13 +11,13 @@ KUBEVIRT_EXPORSERVER_IMAGE,quay.io/kubevirt/virt-exportserver,KUBEVIRT_VERSION,f CNA_OPERATOR_IMAGE,quay.io/kubevirt/cluster-network-addons-operator,NETWORK_ADDONS_VERSION,bf17da674ed6dac95aa4fd7637173fd4e026ebb4523b66f529c0eff394a25bcc SSP_OPERATOR_IMAGE,quay.io/kubevirt/ssp-operator,SSP_VERSION,d57ef05fea09c4690dbe728ebe6a39d9df1a3574dfa7d18346bf3fe66afed702 SSP_VALIDATOR_IMAGE,quay.io/kubevirt/kubevirt-template-validator,SSP_VERSION,f6db539fe4d4b752644c6bc8a308f5a80ae09a71da5c5d535114dc4c3cf18e0a -CDI_OPERATOR_IMAGE,quay.io/kubevirt/cdi-operator,CDI_VERSION,f76a486f1b7c8f53ab5e009bfa0374c102767e58e875fceccd787368a09ae442 -CDI_CONTROLLER_IMAGE,quay.io/kubevirt/cdi-controller,CDI_VERSION,6aea91b795e4b60f963ef74e4f2eda4d08eb89772c8caa15e77b2a81940bcd10 -CDI_APISERVER_IMAGE,quay.io/kubevirt/cdi-apiserver,CDI_VERSION,699ecd04e9c16490f920daba4e6bee4f148ab323c24d07ac554272a9694c8c6f -CDI_CLONER_IMAGE,quay.io/kubevirt/cdi-cloner,CDI_VERSION,df1502ad04fb910715c2f7ab822abd1fd167ad63ccc45e32343ce5c06c329722 -CDI_IMPORTER_IMAGE,quay.io/kubevirt/cdi-importer,CDI_VERSION,f5005a344533fd2d1ac84ee13357e5f9fa291dc5b8ae3467956c72547ad19071 -CDI_UPLOADPROXY_IMAGE,quay.io/kubevirt/cdi-uploadproxy,CDI_VERSION,78f49c4858cbe685d596cffdfebbc62e4a581d3369b419622d1d25d4dbb00469 -CDI_UPLOADSERVER_IMAGE,quay.io/kubevirt/cdi-uploadserver,CDI_VERSION,d9c84bef695700f674ca5526a17fe337d6d2d3a046a9c1fb7e7ff23e6d29adc7 +CDI_OPERATOR_IMAGE,quay.io/kubevirt/cdi-operator,CDI_VERSION,f68e4f2a082fc72d92bc1df0340285af03cd12d8c7721b38c619d1de0f4c175a +CDI_CONTROLLER_IMAGE,quay.io/kubevirt/cdi-controller,CDI_VERSION,392ead2fdc5050c584765ebf99706cc5c0ab9c2b424b692ad35005e77d110b58 +CDI_APISERVER_IMAGE,quay.io/kubevirt/cdi-apiserver,CDI_VERSION,4ba004f57e7d589ddb5372a9729360460a97effecc6e5ecaccd7fbf16c6fcf13 +CDI_CLONER_IMAGE,quay.io/kubevirt/cdi-cloner,CDI_VERSION,05da8df0b64024f9e2a48a1a54f06c821d79a3efe7828fad2c4fda6a01d0cd86 +CDI_IMPORTER_IMAGE,quay.io/kubevirt/cdi-importer,CDI_VERSION,de5b89c879a531165482d540deffdc2dec0c188fd0f7b5fbd49c0298cf9a5b1d +CDI_UPLOADPROXY_IMAGE,quay.io/kubevirt/cdi-uploadproxy,CDI_VERSION,86285df5cf52533732ddf4fdb74674cbce877ba69833cb8ed058c2a157cb5573 +CDI_UPLOADSERVER_IMAGE,quay.io/kubevirt/cdi-uploadserver,CDI_VERSION,d7fb653bb33dade84583fff6048092346639532d6675aaf9f88070171cb0fe7c HPPO_IMAGE,quay.io/kubevirt/hostpath-provisioner-operator,HPPO_VERSION,dd2948ca8e62d17eafba40bdcaad8367a97f092fd3b8d9849b2d62aec3152a72 HPP_IMAGE,quay.io/kubevirt/hostpath-provisioner,HPP_VERSION,adb1d33e95e8991dc47107926172469b5ecbeace509391ce021ca42d305a41d3 HPP_CSI_IMAGE,quay.io/kubevirt/hostpath-csi-driver,HPP_VERSION,8d84b9a33e0ec3749aece7c5f9879d1e0d248e8028ab3f776528a044d387033c diff --git a/deploy/images.env b/deploy/images.env index 834eccbeb6..65ec8c1385 100755 --- a/deploy/images.env +++ b/deploy/images.env @@ -10,13 +10,13 @@ KUBEVIRT_EXPORSERVER_IMAGE=quay.io/kubevirt/virt-exportserver@sha256:f9cd1dbb87e CNA_OPERATOR_IMAGE=quay.io/kubevirt/cluster-network-addons-operator@sha256:bf17da674ed6dac95aa4fd7637173fd4e026ebb4523b66f529c0eff394a25bcc SSP_OPERATOR_IMAGE=quay.io/kubevirt/ssp-operator@sha256:d57ef05fea09c4690dbe728ebe6a39d9df1a3574dfa7d18346bf3fe66afed702 SSP_VALIDATOR_IMAGE=quay.io/kubevirt/kubevirt-template-validator@sha256:f6db539fe4d4b752644c6bc8a308f5a80ae09a71da5c5d535114dc4c3cf18e0a -CDI_OPERATOR_IMAGE=quay.io/kubevirt/cdi-operator@sha256:f76a486f1b7c8f53ab5e009bfa0374c102767e58e875fceccd787368a09ae442 -CDI_CONTROLLER_IMAGE=quay.io/kubevirt/cdi-controller@sha256:6aea91b795e4b60f963ef74e4f2eda4d08eb89772c8caa15e77b2a81940bcd10 -CDI_APISERVER_IMAGE=quay.io/kubevirt/cdi-apiserver@sha256:699ecd04e9c16490f920daba4e6bee4f148ab323c24d07ac554272a9694c8c6f -CDI_CLONER_IMAGE=quay.io/kubevirt/cdi-cloner@sha256:df1502ad04fb910715c2f7ab822abd1fd167ad63ccc45e32343ce5c06c329722 -CDI_IMPORTER_IMAGE=quay.io/kubevirt/cdi-importer@sha256:f5005a344533fd2d1ac84ee13357e5f9fa291dc5b8ae3467956c72547ad19071 -CDI_UPLOADPROXY_IMAGE=quay.io/kubevirt/cdi-uploadproxy@sha256:78f49c4858cbe685d596cffdfebbc62e4a581d3369b419622d1d25d4dbb00469 -CDI_UPLOADSERVER_IMAGE=quay.io/kubevirt/cdi-uploadserver@sha256:d9c84bef695700f674ca5526a17fe337d6d2d3a046a9c1fb7e7ff23e6d29adc7 +CDI_OPERATOR_IMAGE=quay.io/kubevirt/cdi-operator@sha256:f68e4f2a082fc72d92bc1df0340285af03cd12d8c7721b38c619d1de0f4c175a +CDI_CONTROLLER_IMAGE=quay.io/kubevirt/cdi-controller@sha256:392ead2fdc5050c584765ebf99706cc5c0ab9c2b424b692ad35005e77d110b58 +CDI_APISERVER_IMAGE=quay.io/kubevirt/cdi-apiserver@sha256:4ba004f57e7d589ddb5372a9729360460a97effecc6e5ecaccd7fbf16c6fcf13 +CDI_CLONER_IMAGE=quay.io/kubevirt/cdi-cloner@sha256:05da8df0b64024f9e2a48a1a54f06c821d79a3efe7828fad2c4fda6a01d0cd86 +CDI_IMPORTER_IMAGE=quay.io/kubevirt/cdi-importer@sha256:de5b89c879a531165482d540deffdc2dec0c188fd0f7b5fbd49c0298cf9a5b1d +CDI_UPLOADPROXY_IMAGE=quay.io/kubevirt/cdi-uploadproxy@sha256:86285df5cf52533732ddf4fdb74674cbce877ba69833cb8ed058c2a157cb5573 +CDI_UPLOADSERVER_IMAGE=quay.io/kubevirt/cdi-uploadserver@sha256:d7fb653bb33dade84583fff6048092346639532d6675aaf9f88070171cb0fe7c HPPO_IMAGE=quay.io/kubevirt/hostpath-provisioner-operator@sha256:dd2948ca8e62d17eafba40bdcaad8367a97f092fd3b8d9849b2d62aec3152a72 HPP_IMAGE=quay.io/kubevirt/hostpath-provisioner@sha256:adb1d33e95e8991dc47107926172469b5ecbeace509391ce021ca42d305a41d3 HPP_CSI_IMAGE=quay.io/kubevirt/hostpath-csi-driver@sha256:8d84b9a33e0ec3749aece7c5f9879d1e0d248e8028ab3f776528a044d387033c @@ -45,13 +45,13 @@ DIGEST_LIST="${DIGEST_LIST},quay.io/kubevirt/virt-exportserver@sha256:f9cd1dbb87 DIGEST_LIST="${DIGEST_LIST},quay.io/kubevirt/cluster-network-addons-operator@sha256:bf17da674ed6dac95aa4fd7637173fd4e026ebb4523b66f529c0eff394a25bcc" DIGEST_LIST="${DIGEST_LIST},quay.io/kubevirt/ssp-operator@sha256:d57ef05fea09c4690dbe728ebe6a39d9df1a3574dfa7d18346bf3fe66afed702" DIGEST_LIST="${DIGEST_LIST},quay.io/kubevirt/kubevirt-template-validator@sha256:f6db539fe4d4b752644c6bc8a308f5a80ae09a71da5c5d535114dc4c3cf18e0a" -DIGEST_LIST="${DIGEST_LIST},quay.io/kubevirt/cdi-operator@sha256:f76a486f1b7c8f53ab5e009bfa0374c102767e58e875fceccd787368a09ae442" -DIGEST_LIST="${DIGEST_LIST},quay.io/kubevirt/cdi-controller@sha256:6aea91b795e4b60f963ef74e4f2eda4d08eb89772c8caa15e77b2a81940bcd10" -DIGEST_LIST="${DIGEST_LIST},quay.io/kubevirt/cdi-apiserver@sha256:699ecd04e9c16490f920daba4e6bee4f148ab323c24d07ac554272a9694c8c6f" -DIGEST_LIST="${DIGEST_LIST},quay.io/kubevirt/cdi-cloner@sha256:df1502ad04fb910715c2f7ab822abd1fd167ad63ccc45e32343ce5c06c329722" -DIGEST_LIST="${DIGEST_LIST},quay.io/kubevirt/cdi-importer@sha256:f5005a344533fd2d1ac84ee13357e5f9fa291dc5b8ae3467956c72547ad19071" -DIGEST_LIST="${DIGEST_LIST},quay.io/kubevirt/cdi-uploadproxy@sha256:78f49c4858cbe685d596cffdfebbc62e4a581d3369b419622d1d25d4dbb00469" -DIGEST_LIST="${DIGEST_LIST},quay.io/kubevirt/cdi-uploadserver@sha256:d9c84bef695700f674ca5526a17fe337d6d2d3a046a9c1fb7e7ff23e6d29adc7" +DIGEST_LIST="${DIGEST_LIST},quay.io/kubevirt/cdi-operator@sha256:f68e4f2a082fc72d92bc1df0340285af03cd12d8c7721b38c619d1de0f4c175a" +DIGEST_LIST="${DIGEST_LIST},quay.io/kubevirt/cdi-controller@sha256:392ead2fdc5050c584765ebf99706cc5c0ab9c2b424b692ad35005e77d110b58" +DIGEST_LIST="${DIGEST_LIST},quay.io/kubevirt/cdi-apiserver@sha256:4ba004f57e7d589ddb5372a9729360460a97effecc6e5ecaccd7fbf16c6fcf13" +DIGEST_LIST="${DIGEST_LIST},quay.io/kubevirt/cdi-cloner@sha256:05da8df0b64024f9e2a48a1a54f06c821d79a3efe7828fad2c4fda6a01d0cd86" +DIGEST_LIST="${DIGEST_LIST},quay.io/kubevirt/cdi-importer@sha256:de5b89c879a531165482d540deffdc2dec0c188fd0f7b5fbd49c0298cf9a5b1d" +DIGEST_LIST="${DIGEST_LIST},quay.io/kubevirt/cdi-uploadproxy@sha256:86285df5cf52533732ddf4fdb74674cbce877ba69833cb8ed058c2a157cb5573" +DIGEST_LIST="${DIGEST_LIST},quay.io/kubevirt/cdi-uploadserver@sha256:d7fb653bb33dade84583fff6048092346639532d6675aaf9f88070171cb0fe7c" DIGEST_LIST="${DIGEST_LIST},quay.io/kubevirt/hostpath-provisioner-operator@sha256:dd2948ca8e62d17eafba40bdcaad8367a97f092fd3b8d9849b2d62aec3152a72" DIGEST_LIST="${DIGEST_LIST},quay.io/kubevirt/hostpath-provisioner@sha256:adb1d33e95e8991dc47107926172469b5ecbeace509391ce021ca42d305a41d3" DIGEST_LIST="${DIGEST_LIST},quay.io/kubevirt/hostpath-csi-driver@sha256:8d84b9a33e0ec3749aece7c5f9879d1e0d248e8028ab3f776528a044d387033c" diff --git a/deploy/index-image/community-kubevirt-hyperconverged/1.12.0/manifests/containerized-data-importer00.crd.yaml b/deploy/index-image/community-kubevirt-hyperconverged/1.12.0/manifests/containerized-data-importer00.crd.yaml index a2d4c402b5..51a8d71e6f 100644 --- a/deploy/index-image/community-kubevirt-hyperconverged/1.12.0/manifests/containerized-data-importer00.crd.yaml +++ b/deploy/index-image/community-kubevirt-hyperconverged/1.12.0/manifests/containerized-data-importer00.crd.yaml @@ -184,7 +184,8 @@ spec: description: "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation - feature gate. \n This field is immutable." + feature gate. \n This field is immutable. It can only be + set for containers." items: description: ResourceClaim references one entry in PodSpec.ResourceClaims. properties: @@ -221,7 +222,8 @@ spec: description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise - to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + to an implementation-defined value. Requests cannot exceed + Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object type: object preallocation: @@ -332,6 +334,52 @@ spec: description: Override the URL used when uploading to a DataVolume type: string type: object + customizeComponents: + description: CustomizeComponents defines patches for components deployed + by the CDI operator. + properties: + flags: + description: Configure the value used for deployment and daemonset + resources + properties: + api: + additionalProperties: + type: string + type: object + controller: + additionalProperties: + type: string + type: object + uploadProxy: + additionalProperties: + type: string + type: object + type: object + patches: + items: + description: CustomizeComponentsPatch defines a patch for some + resource. + properties: + patch: + type: string + resourceName: + minLength: 1 + type: string + resourceType: + minLength: 1 + type: string + type: + description: PatchType defines the patch type. + type: string + required: + - patch + - resourceName + - resourceType + - type + type: object + type: array + x-kubernetes-list-type: atomic + type: object imagePullPolicy: description: PullPolicy describes a policy for if/when to pull a container image @@ -341,8 +389,8 @@ spec: - Never type: string infra: - description: Rules on which nodes CDI infrastructure pods will be - scheduled + description: Selectors and tolerations that should apply to cdi infrastructure + components properties: affinity: description: affinity enables pod affinity/anti-affinity placement @@ -1215,6 +1263,14 @@ spec: type: array type: object type: object + apiServerReplicas: + description: ApiserverReplicas set Replicas for cdi-apiserver + format: int32 + type: integer + deploymentReplicas: + description: DeploymentReplicas set Replicas for cdi-deployment + format: int32 + type: integer nodeSelector: additionalProperties: type: string @@ -1268,6 +1324,10 @@ spec: type: string type: object type: array + uploadProxyReplicas: + description: UploadproxyReplicas set Replicas for cdi-uploadproxy + format: int32 + type: integer type: object priorityClass: description: PriorityClass of the CDI control plane @@ -2424,7 +2484,8 @@ spec: description: "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation - feature gate. \n This field is immutable." + feature gate. \n This field is immutable. It can only be + set for containers." items: description: ResourceClaim references one entry in PodSpec.ResourceClaims. properties: @@ -2461,7 +2522,8 @@ spec: description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise - to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + to an implementation-defined value. Requests cannot exceed + Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object type: object preallocation: @@ -2572,6 +2634,52 @@ spec: description: Override the URL used when uploading to a DataVolume type: string type: object + customizeComponents: + description: CustomizeComponents defines patches for components deployed + by the CDI operator. + properties: + flags: + description: Configure the value used for deployment and daemonset + resources + properties: + api: + additionalProperties: + type: string + type: object + controller: + additionalProperties: + type: string + type: object + uploadProxy: + additionalProperties: + type: string + type: object + type: object + patches: + items: + description: CustomizeComponentsPatch defines a patch for some + resource. + properties: + patch: + type: string + resourceName: + minLength: 1 + type: string + resourceType: + minLength: 1 + type: string + type: + description: PatchType defines the patch type. + type: string + required: + - patch + - resourceName + - resourceType + - type + type: object + type: array + x-kubernetes-list-type: atomic + type: object imagePullPolicy: description: PullPolicy describes a policy for if/when to pull a container image @@ -2581,8 +2689,8 @@ spec: - Never type: string infra: - description: Rules on which nodes CDI infrastructure pods will be - scheduled + description: Selectors and tolerations that should apply to cdi infrastructure + components properties: affinity: description: affinity enables pod affinity/anti-affinity placement @@ -3455,6 +3563,14 @@ spec: type: array type: object type: object + apiServerReplicas: + description: ApiserverReplicas set Replicas for cdi-apiserver + format: int32 + type: integer + deploymentReplicas: + description: DeploymentReplicas set Replicas for cdi-deployment + format: int32 + type: integer nodeSelector: additionalProperties: type: string @@ -3508,6 +3624,10 @@ spec: type: string type: object type: array + uploadProxyReplicas: + description: UploadproxyReplicas set Replicas for cdi-uploadproxy + format: int32 + type: integer type: object priorityClass: description: PriorityClass of the CDI control plane diff --git a/deploy/index-image/community-kubevirt-hyperconverged/1.12.0/manifests/kubevirt-hyperconverged-operator.v1.12.0.clusterserviceversion.yaml b/deploy/index-image/community-kubevirt-hyperconverged/1.12.0/manifests/kubevirt-hyperconverged-operator.v1.12.0.clusterserviceversion.yaml index 1c1474d1cf..5c6b31451c 100644 --- a/deploy/index-image/community-kubevirt-hyperconverged/1.12.0/manifests/kubevirt-hyperconverged-operator.v1.12.0.clusterserviceversion.yaml +++ b/deploy/index-image/community-kubevirt-hyperconverged/1.12.0/manifests/kubevirt-hyperconverged-operator.v1.12.0.clusterserviceversion.yaml @@ -2381,6 +2381,7 @@ spec: - admissionregistration.k8s.io resourceNames: - cdi-api-datavolume-mutate + - cdi-api-pvc-mutate resources: - mutatingwebhookconfigurations verbs: @@ -2418,6 +2419,24 @@ spec: - persistentvolumeclaims verbs: - get + - list + - watch + - apiGroups: + - "" + resources: + - persistentvolumes + verbs: + - get + - list + - watch + - apiGroups: + - storage.k8s.io + resources: + - storageclasses + verbs: + - get + - list + - watch - apiGroups: - "" resources: @@ -2430,6 +2449,8 @@ spec: - volumesnapshots verbs: - get + - list + - watch - apiGroups: - cdi.kubevirt.io resources: @@ -2443,12 +2464,30 @@ spec: - datasources verbs: - get + - apiGroups: + - cdi.kubevirt.io + resources: + - volumeclonesources + verbs: + - get + - list + - watch + - apiGroups: + - cdi.kubevirt.io + resources: + - storageprofiles + verbs: + - get + - list + - watch - apiGroups: - cdi.kubevirt.io resources: - cdis verbs: - get + - list + - watch - apiGroups: - cdi.kubevirt.io resources: @@ -2534,6 +2573,12 @@ spec: - get - list - watch + - apiGroups: + - config.openshift.io + resources: + - clusterversions + verbs: + - get - apiGroups: - cdi.kubevirt.io resources: @@ -3271,7 +3316,7 @@ spec: - name: KUBEVIRT_VERSION value: v1.2.0 - name: CDI_VERSION - value: v1.58.3 + value: v1.59.0 - name: NETWORK_ADDONS_VERSION value: v0.91.0 - name: SSP_VERSION @@ -3770,34 +3815,47 @@ spec: app.kubernetes.io/managed-by: olm app.kubernetes.io/part-of: hyperconverged-cluster app.kubernetes.io/version: 1.12.0 + cdi.kubevirt.io: cdi-operator name: cdi-operator operator.cdi.kubevirt.io: "" prometheus.cdi.kubevirt.io: "true" spec: + affinity: + podAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - podAffinityTerm: + labelSelector: + matchExpressions: + - key: cdi.kubevirt.io + operator: In + values: + - cdi-operator + topologyKey: kubernetes.io/hostname + weight: 1 containers: - env: - name: DEPLOY_CLUSTER_RESOURCES value: "true" - name: OPERATOR_VERSION - value: v1.58.3 + value: v1.59.0 - name: CONTROLLER_IMAGE - value: quay.io/kubevirt/cdi-controller@sha256:6aea91b795e4b60f963ef74e4f2eda4d08eb89772c8caa15e77b2a81940bcd10 + value: quay.io/kubevirt/cdi-controller@sha256:392ead2fdc5050c584765ebf99706cc5c0ab9c2b424b692ad35005e77d110b58 - name: IMPORTER_IMAGE - value: quay.io/kubevirt/cdi-importer@sha256:f5005a344533fd2d1ac84ee13357e5f9fa291dc5b8ae3467956c72547ad19071 + value: quay.io/kubevirt/cdi-importer@sha256:de5b89c879a531165482d540deffdc2dec0c188fd0f7b5fbd49c0298cf9a5b1d - name: CLONER_IMAGE - value: quay.io/kubevirt/cdi-cloner@sha256:df1502ad04fb910715c2f7ab822abd1fd167ad63ccc45e32343ce5c06c329722 + value: quay.io/kubevirt/cdi-cloner@sha256:05da8df0b64024f9e2a48a1a54f06c821d79a3efe7828fad2c4fda6a01d0cd86 - name: APISERVER_IMAGE - value: quay.io/kubevirt/cdi-apiserver@sha256:699ecd04e9c16490f920daba4e6bee4f148ab323c24d07ac554272a9694c8c6f + value: quay.io/kubevirt/cdi-apiserver@sha256:4ba004f57e7d589ddb5372a9729360460a97effecc6e5ecaccd7fbf16c6fcf13 - name: UPLOAD_SERVER_IMAGE - value: quay.io/kubevirt/cdi-uploadserver@sha256:d9c84bef695700f674ca5526a17fe337d6d2d3a046a9c1fb7e7ff23e6d29adc7 + value: quay.io/kubevirt/cdi-uploadserver@sha256:d7fb653bb33dade84583fff6048092346639532d6675aaf9f88070171cb0fe7c - name: UPLOAD_PROXY_IMAGE - value: quay.io/kubevirt/cdi-uploadproxy@sha256:78f49c4858cbe685d596cffdfebbc62e4a581d3369b419622d1d25d4dbb00469 + value: quay.io/kubevirt/cdi-uploadproxy@sha256:86285df5cf52533732ddf4fdb74674cbce877ba69833cb8ed058c2a157cb5573 - name: VERBOSITY value: "1" - name: PULL_POLICY value: IfNotPresent - name: MONITORING_NAMESPACE - image: quay.io/kubevirt/cdi-operator@sha256:f76a486f1b7c8f53ab5e009bfa0374c102767e58e875fceccd787368a09ae442 + image: quay.io/kubevirt/cdi-operator@sha256:f68e4f2a082fc72d92bc1df0340285af03cd12d8c7721b38c619d1de0f4c175a imagePullPolicy: IfNotPresent name: cdi-operator ports: @@ -4779,19 +4837,19 @@ spec: name: aaq-server - image: quay.io/kubevirt/bridge-marker@sha256:bba066e3b5ff3fb8c5e20861fe8abe51e3c9b50ad6ce3b2616af9cb5479a06d0 name: bridge-marker - - image: quay.io/kubevirt/cdi-apiserver@sha256:699ecd04e9c16490f920daba4e6bee4f148ab323c24d07ac554272a9694c8c6f + - image: quay.io/kubevirt/cdi-apiserver@sha256:4ba004f57e7d589ddb5372a9729360460a97effecc6e5ecaccd7fbf16c6fcf13 name: cdi-apiserver - - image: quay.io/kubevirt/cdi-cloner@sha256:df1502ad04fb910715c2f7ab822abd1fd167ad63ccc45e32343ce5c06c329722 + - image: quay.io/kubevirt/cdi-cloner@sha256:05da8df0b64024f9e2a48a1a54f06c821d79a3efe7828fad2c4fda6a01d0cd86 name: cdi-cloner - - image: quay.io/kubevirt/cdi-controller@sha256:6aea91b795e4b60f963ef74e4f2eda4d08eb89772c8caa15e77b2a81940bcd10 + - image: quay.io/kubevirt/cdi-controller@sha256:392ead2fdc5050c584765ebf99706cc5c0ab9c2b424b692ad35005e77d110b58 name: cdi-controller - - image: quay.io/kubevirt/cdi-importer@sha256:f5005a344533fd2d1ac84ee13357e5f9fa291dc5b8ae3467956c72547ad19071 + - image: quay.io/kubevirt/cdi-importer@sha256:de5b89c879a531165482d540deffdc2dec0c188fd0f7b5fbd49c0298cf9a5b1d name: cdi-importer - - image: quay.io/kubevirt/cdi-operator@sha256:f76a486f1b7c8f53ab5e009bfa0374c102767e58e875fceccd787368a09ae442 + - image: quay.io/kubevirt/cdi-operator@sha256:f68e4f2a082fc72d92bc1df0340285af03cd12d8c7721b38c619d1de0f4c175a name: cdi-operator - - image: quay.io/kubevirt/cdi-uploadproxy@sha256:78f49c4858cbe685d596cffdfebbc62e4a581d3369b419622d1d25d4dbb00469 + - image: quay.io/kubevirt/cdi-uploadproxy@sha256:86285df5cf52533732ddf4fdb74674cbce877ba69833cb8ed058c2a157cb5573 name: cdi-uploadproxy - - image: quay.io/kubevirt/cdi-uploadserver@sha256:d9c84bef695700f674ca5526a17fe337d6d2d3a046a9c1fb7e7ff23e6d29adc7 + - image: quay.io/kubevirt/cdi-uploadserver@sha256:d7fb653bb33dade84583fff6048092346639532d6675aaf9f88070171cb0fe7c name: cdi-uploadserver - image: quay.io/kubevirt/cluster-network-addons-operator@sha256:bf17da674ed6dac95aa4fd7637173fd4e026ebb4523b66f529c0eff394a25bcc name: cluster-network-addons-operator diff --git a/deploy/olm-catalog/community-kubevirt-hyperconverged/1.12.0/manifests/containerized-data-importer00.crd.yaml b/deploy/olm-catalog/community-kubevirt-hyperconverged/1.12.0/manifests/containerized-data-importer00.crd.yaml index a2d4c402b5..51a8d71e6f 100644 --- a/deploy/olm-catalog/community-kubevirt-hyperconverged/1.12.0/manifests/containerized-data-importer00.crd.yaml +++ b/deploy/olm-catalog/community-kubevirt-hyperconverged/1.12.0/manifests/containerized-data-importer00.crd.yaml @@ -184,7 +184,8 @@ spec: description: "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation - feature gate. \n This field is immutable." + feature gate. \n This field is immutable. It can only be + set for containers." items: description: ResourceClaim references one entry in PodSpec.ResourceClaims. properties: @@ -221,7 +222,8 @@ spec: description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise - to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + to an implementation-defined value. Requests cannot exceed + Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object type: object preallocation: @@ -332,6 +334,52 @@ spec: description: Override the URL used when uploading to a DataVolume type: string type: object + customizeComponents: + description: CustomizeComponents defines patches for components deployed + by the CDI operator. + properties: + flags: + description: Configure the value used for deployment and daemonset + resources + properties: + api: + additionalProperties: + type: string + type: object + controller: + additionalProperties: + type: string + type: object + uploadProxy: + additionalProperties: + type: string + type: object + type: object + patches: + items: + description: CustomizeComponentsPatch defines a patch for some + resource. + properties: + patch: + type: string + resourceName: + minLength: 1 + type: string + resourceType: + minLength: 1 + type: string + type: + description: PatchType defines the patch type. + type: string + required: + - patch + - resourceName + - resourceType + - type + type: object + type: array + x-kubernetes-list-type: atomic + type: object imagePullPolicy: description: PullPolicy describes a policy for if/when to pull a container image @@ -341,8 +389,8 @@ spec: - Never type: string infra: - description: Rules on which nodes CDI infrastructure pods will be - scheduled + description: Selectors and tolerations that should apply to cdi infrastructure + components properties: affinity: description: affinity enables pod affinity/anti-affinity placement @@ -1215,6 +1263,14 @@ spec: type: array type: object type: object + apiServerReplicas: + description: ApiserverReplicas set Replicas for cdi-apiserver + format: int32 + type: integer + deploymentReplicas: + description: DeploymentReplicas set Replicas for cdi-deployment + format: int32 + type: integer nodeSelector: additionalProperties: type: string @@ -1268,6 +1324,10 @@ spec: type: string type: object type: array + uploadProxyReplicas: + description: UploadproxyReplicas set Replicas for cdi-uploadproxy + format: int32 + type: integer type: object priorityClass: description: PriorityClass of the CDI control plane @@ -2424,7 +2484,8 @@ spec: description: "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation - feature gate. \n This field is immutable." + feature gate. \n This field is immutable. It can only be + set for containers." items: description: ResourceClaim references one entry in PodSpec.ResourceClaims. properties: @@ -2461,7 +2522,8 @@ spec: description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise - to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + to an implementation-defined value. Requests cannot exceed + Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object type: object preallocation: @@ -2572,6 +2634,52 @@ spec: description: Override the URL used when uploading to a DataVolume type: string type: object + customizeComponents: + description: CustomizeComponents defines patches for components deployed + by the CDI operator. + properties: + flags: + description: Configure the value used for deployment and daemonset + resources + properties: + api: + additionalProperties: + type: string + type: object + controller: + additionalProperties: + type: string + type: object + uploadProxy: + additionalProperties: + type: string + type: object + type: object + patches: + items: + description: CustomizeComponentsPatch defines a patch for some + resource. + properties: + patch: + type: string + resourceName: + minLength: 1 + type: string + resourceType: + minLength: 1 + type: string + type: + description: PatchType defines the patch type. + type: string + required: + - patch + - resourceName + - resourceType + - type + type: object + type: array + x-kubernetes-list-type: atomic + type: object imagePullPolicy: description: PullPolicy describes a policy for if/when to pull a container image @@ -2581,8 +2689,8 @@ spec: - Never type: string infra: - description: Rules on which nodes CDI infrastructure pods will be - scheduled + description: Selectors and tolerations that should apply to cdi infrastructure + components properties: affinity: description: affinity enables pod affinity/anti-affinity placement @@ -3455,6 +3563,14 @@ spec: type: array type: object type: object + apiServerReplicas: + description: ApiserverReplicas set Replicas for cdi-apiserver + format: int32 + type: integer + deploymentReplicas: + description: DeploymentReplicas set Replicas for cdi-deployment + format: int32 + type: integer nodeSelector: additionalProperties: type: string @@ -3508,6 +3624,10 @@ spec: type: string type: object type: array + uploadProxyReplicas: + description: UploadproxyReplicas set Replicas for cdi-uploadproxy + format: int32 + type: integer type: object priorityClass: description: PriorityClass of the CDI control plane diff --git a/deploy/olm-catalog/community-kubevirt-hyperconverged/1.12.0/manifests/kubevirt-hyperconverged-operator.v1.12.0.clusterserviceversion.yaml b/deploy/olm-catalog/community-kubevirt-hyperconverged/1.12.0/manifests/kubevirt-hyperconverged-operator.v1.12.0.clusterserviceversion.yaml index 4e6e3fa3fc..0946c6bfb1 100644 --- a/deploy/olm-catalog/community-kubevirt-hyperconverged/1.12.0/manifests/kubevirt-hyperconverged-operator.v1.12.0.clusterserviceversion.yaml +++ b/deploy/olm-catalog/community-kubevirt-hyperconverged/1.12.0/manifests/kubevirt-hyperconverged-operator.v1.12.0.clusterserviceversion.yaml @@ -9,7 +9,7 @@ metadata: certified: "false" console.openshift.io/disable-operand-delete: "true" containerImage: quay.io/kubevirt/hyperconverged-cluster-operator:1.12.0-unstable - createdAt: "2024-03-22 05:05:33" + createdAt: "2024-04-02 05:04:52" description: A unified operator deploying and controlling KubeVirt and its supporting operators with opinionated defaults features.operators.openshift.io/cnf: "false" @@ -2381,6 +2381,7 @@ spec: - admissionregistration.k8s.io resourceNames: - cdi-api-datavolume-mutate + - cdi-api-pvc-mutate resources: - mutatingwebhookconfigurations verbs: @@ -2418,6 +2419,24 @@ spec: - persistentvolumeclaims verbs: - get + - list + - watch + - apiGroups: + - "" + resources: + - persistentvolumes + verbs: + - get + - list + - watch + - apiGroups: + - storage.k8s.io + resources: + - storageclasses + verbs: + - get + - list + - watch - apiGroups: - "" resources: @@ -2430,6 +2449,8 @@ spec: - volumesnapshots verbs: - get + - list + - watch - apiGroups: - cdi.kubevirt.io resources: @@ -2443,12 +2464,30 @@ spec: - datasources verbs: - get + - apiGroups: + - cdi.kubevirt.io + resources: + - volumeclonesources + verbs: + - get + - list + - watch + - apiGroups: + - cdi.kubevirt.io + resources: + - storageprofiles + verbs: + - get + - list + - watch - apiGroups: - cdi.kubevirt.io resources: - cdis verbs: - get + - list + - watch - apiGroups: - cdi.kubevirt.io resources: @@ -2534,6 +2573,12 @@ spec: - get - list - watch + - apiGroups: + - config.openshift.io + resources: + - clusterversions + verbs: + - get - apiGroups: - cdi.kubevirt.io resources: @@ -3271,7 +3316,7 @@ spec: - name: KUBEVIRT_VERSION value: v1.2.0 - name: CDI_VERSION - value: v1.58.3 + value: v1.59.0 - name: NETWORK_ADDONS_VERSION value: v0.91.0 - name: SSP_VERSION @@ -3770,34 +3815,47 @@ spec: app.kubernetes.io/managed-by: olm app.kubernetes.io/part-of: hyperconverged-cluster app.kubernetes.io/version: 1.12.0 + cdi.kubevirt.io: cdi-operator name: cdi-operator operator.cdi.kubevirt.io: "" prometheus.cdi.kubevirt.io: "true" spec: + affinity: + podAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - podAffinityTerm: + labelSelector: + matchExpressions: + - key: cdi.kubevirt.io + operator: In + values: + - cdi-operator + topologyKey: kubernetes.io/hostname + weight: 1 containers: - env: - name: DEPLOY_CLUSTER_RESOURCES value: "true" - name: OPERATOR_VERSION - value: v1.58.3 + value: v1.59.0 - name: CONTROLLER_IMAGE - value: quay.io/kubevirt/cdi-controller@sha256:6aea91b795e4b60f963ef74e4f2eda4d08eb89772c8caa15e77b2a81940bcd10 + value: quay.io/kubevirt/cdi-controller@sha256:392ead2fdc5050c584765ebf99706cc5c0ab9c2b424b692ad35005e77d110b58 - name: IMPORTER_IMAGE - value: quay.io/kubevirt/cdi-importer@sha256:f5005a344533fd2d1ac84ee13357e5f9fa291dc5b8ae3467956c72547ad19071 + value: quay.io/kubevirt/cdi-importer@sha256:de5b89c879a531165482d540deffdc2dec0c188fd0f7b5fbd49c0298cf9a5b1d - name: CLONER_IMAGE - value: quay.io/kubevirt/cdi-cloner@sha256:df1502ad04fb910715c2f7ab822abd1fd167ad63ccc45e32343ce5c06c329722 + value: quay.io/kubevirt/cdi-cloner@sha256:05da8df0b64024f9e2a48a1a54f06c821d79a3efe7828fad2c4fda6a01d0cd86 - name: APISERVER_IMAGE - value: quay.io/kubevirt/cdi-apiserver@sha256:699ecd04e9c16490f920daba4e6bee4f148ab323c24d07ac554272a9694c8c6f + value: quay.io/kubevirt/cdi-apiserver@sha256:4ba004f57e7d589ddb5372a9729360460a97effecc6e5ecaccd7fbf16c6fcf13 - name: UPLOAD_SERVER_IMAGE - value: quay.io/kubevirt/cdi-uploadserver@sha256:d9c84bef695700f674ca5526a17fe337d6d2d3a046a9c1fb7e7ff23e6d29adc7 + value: quay.io/kubevirt/cdi-uploadserver@sha256:d7fb653bb33dade84583fff6048092346639532d6675aaf9f88070171cb0fe7c - name: UPLOAD_PROXY_IMAGE - value: quay.io/kubevirt/cdi-uploadproxy@sha256:78f49c4858cbe685d596cffdfebbc62e4a581d3369b419622d1d25d4dbb00469 + value: quay.io/kubevirt/cdi-uploadproxy@sha256:86285df5cf52533732ddf4fdb74674cbce877ba69833cb8ed058c2a157cb5573 - name: VERBOSITY value: "1" - name: PULL_POLICY value: IfNotPresent - name: MONITORING_NAMESPACE - image: quay.io/kubevirt/cdi-operator@sha256:f76a486f1b7c8f53ab5e009bfa0374c102767e58e875fceccd787368a09ae442 + image: quay.io/kubevirt/cdi-operator@sha256:f68e4f2a082fc72d92bc1df0340285af03cd12d8c7721b38c619d1de0f4c175a imagePullPolicy: IfNotPresent name: cdi-operator ports: @@ -4779,19 +4837,19 @@ spec: name: aaq-server - image: quay.io/kubevirt/bridge-marker@sha256:bba066e3b5ff3fb8c5e20861fe8abe51e3c9b50ad6ce3b2616af9cb5479a06d0 name: bridge-marker - - image: quay.io/kubevirt/cdi-apiserver@sha256:699ecd04e9c16490f920daba4e6bee4f148ab323c24d07ac554272a9694c8c6f + - image: quay.io/kubevirt/cdi-apiserver@sha256:4ba004f57e7d589ddb5372a9729360460a97effecc6e5ecaccd7fbf16c6fcf13 name: cdi-apiserver - - image: quay.io/kubevirt/cdi-cloner@sha256:df1502ad04fb910715c2f7ab822abd1fd167ad63ccc45e32343ce5c06c329722 + - image: quay.io/kubevirt/cdi-cloner@sha256:05da8df0b64024f9e2a48a1a54f06c821d79a3efe7828fad2c4fda6a01d0cd86 name: cdi-cloner - - image: quay.io/kubevirt/cdi-controller@sha256:6aea91b795e4b60f963ef74e4f2eda4d08eb89772c8caa15e77b2a81940bcd10 + - image: quay.io/kubevirt/cdi-controller@sha256:392ead2fdc5050c584765ebf99706cc5c0ab9c2b424b692ad35005e77d110b58 name: cdi-controller - - image: quay.io/kubevirt/cdi-importer@sha256:f5005a344533fd2d1ac84ee13357e5f9fa291dc5b8ae3467956c72547ad19071 + - image: quay.io/kubevirt/cdi-importer@sha256:de5b89c879a531165482d540deffdc2dec0c188fd0f7b5fbd49c0298cf9a5b1d name: cdi-importer - - image: quay.io/kubevirt/cdi-operator@sha256:f76a486f1b7c8f53ab5e009bfa0374c102767e58e875fceccd787368a09ae442 + - image: quay.io/kubevirt/cdi-operator@sha256:f68e4f2a082fc72d92bc1df0340285af03cd12d8c7721b38c619d1de0f4c175a name: cdi-operator - - image: quay.io/kubevirt/cdi-uploadproxy@sha256:78f49c4858cbe685d596cffdfebbc62e4a581d3369b419622d1d25d4dbb00469 + - image: quay.io/kubevirt/cdi-uploadproxy@sha256:86285df5cf52533732ddf4fdb74674cbce877ba69833cb8ed058c2a157cb5573 name: cdi-uploadproxy - - image: quay.io/kubevirt/cdi-uploadserver@sha256:d9c84bef695700f674ca5526a17fe337d6d2d3a046a9c1fb7e7ff23e6d29adc7 + - image: quay.io/kubevirt/cdi-uploadserver@sha256:d7fb653bb33dade84583fff6048092346639532d6675aaf9f88070171cb0fe7c name: cdi-uploadserver - image: quay.io/kubevirt/cluster-network-addons-operator@sha256:bf17da674ed6dac95aa4fd7637173fd4e026ebb4523b66f529c0eff394a25bcc name: cluster-network-addons-operator diff --git a/deploy/operator.yaml b/deploy/operator.yaml index ba85cafb7f..afc7dd0380 100644 --- a/deploy/operator.yaml +++ b/deploy/operator.yaml @@ -55,7 +55,7 @@ spec: - name: KUBEVIRT_VERSION value: v1.2.0 - name: CDI_VERSION - value: v1.58.3 + value: v1.59.0 - name: NETWORK_ADDONS_VERSION value: v0.91.0 - name: SSP_VERSION @@ -591,34 +591,47 @@ spec: app.kubernetes.io/component: storage app.kubernetes.io/part-of: hyperconverged-cluster app.kubernetes.io/version: 1.12.0 + cdi.kubevirt.io: cdi-operator name: cdi-operator operator.cdi.kubevirt.io: "" prometheus.cdi.kubevirt.io: "true" spec: + affinity: + podAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - podAffinityTerm: + labelSelector: + matchExpressions: + - key: cdi.kubevirt.io + operator: In + values: + - cdi-operator + topologyKey: kubernetes.io/hostname + weight: 1 containers: - env: - name: DEPLOY_CLUSTER_RESOURCES value: "true" - name: OPERATOR_VERSION - value: v1.58.3 + value: v1.59.0 - name: CONTROLLER_IMAGE - value: quay.io/kubevirt/cdi-controller@sha256:6aea91b795e4b60f963ef74e4f2eda4d08eb89772c8caa15e77b2a81940bcd10 + value: quay.io/kubevirt/cdi-controller@sha256:392ead2fdc5050c584765ebf99706cc5c0ab9c2b424b692ad35005e77d110b58 - name: IMPORTER_IMAGE - value: quay.io/kubevirt/cdi-importer@sha256:f5005a344533fd2d1ac84ee13357e5f9fa291dc5b8ae3467956c72547ad19071 + value: quay.io/kubevirt/cdi-importer@sha256:de5b89c879a531165482d540deffdc2dec0c188fd0f7b5fbd49c0298cf9a5b1d - name: CLONER_IMAGE - value: quay.io/kubevirt/cdi-cloner@sha256:df1502ad04fb910715c2f7ab822abd1fd167ad63ccc45e32343ce5c06c329722 + value: quay.io/kubevirt/cdi-cloner@sha256:05da8df0b64024f9e2a48a1a54f06c821d79a3efe7828fad2c4fda6a01d0cd86 - name: APISERVER_IMAGE - value: quay.io/kubevirt/cdi-apiserver@sha256:699ecd04e9c16490f920daba4e6bee4f148ab323c24d07ac554272a9694c8c6f + value: quay.io/kubevirt/cdi-apiserver@sha256:4ba004f57e7d589ddb5372a9729360460a97effecc6e5ecaccd7fbf16c6fcf13 - name: UPLOAD_SERVER_IMAGE - value: quay.io/kubevirt/cdi-uploadserver@sha256:d9c84bef695700f674ca5526a17fe337d6d2d3a046a9c1fb7e7ff23e6d29adc7 + value: quay.io/kubevirt/cdi-uploadserver@sha256:d7fb653bb33dade84583fff6048092346639532d6675aaf9f88070171cb0fe7c - name: UPLOAD_PROXY_IMAGE - value: quay.io/kubevirt/cdi-uploadproxy@sha256:78f49c4858cbe685d596cffdfebbc62e4a581d3369b419622d1d25d4dbb00469 + value: quay.io/kubevirt/cdi-uploadproxy@sha256:86285df5cf52533732ddf4fdb74674cbce877ba69833cb8ed058c2a157cb5573 - name: VERBOSITY value: "1" - name: PULL_POLICY value: IfNotPresent - name: MONITORING_NAMESPACE - image: quay.io/kubevirt/cdi-operator@sha256:f76a486f1b7c8f53ab5e009bfa0374c102767e58e875fceccd787368a09ae442 + image: quay.io/kubevirt/cdi-operator@sha256:f68e4f2a082fc72d92bc1df0340285af03cd12d8c7721b38c619d1de0f4c175a imagePullPolicy: IfNotPresent name: cdi-operator ports: diff --git a/go.mod b/go.mod index 635af7930f..050d0a3e63 100644 --- a/go.mod +++ b/go.mod @@ -35,7 +35,7 @@ require ( k8s.io/utils v0.0.0-20240102154912-e7106e64919e kubevirt.io/api v1.2.0 kubevirt.io/application-aware-quota v1.1.5 - kubevirt.io/containerized-data-importer-api v1.58.3 + kubevirt.io/containerized-data-importer-api v1.59.0 kubevirt.io/controller-lifecycle-operator-sdk/api v0.2.4 kubevirt.io/managed-tenant-quota v1.2.0 kubevirt.io/ssp-operator/api v0.19.0 diff --git a/go.sum b/go.sum index f3830c069c..dd68bbd95d 100644 --- a/go.sum +++ b/go.sum @@ -460,8 +460,8 @@ kubevirt.io/api v1.2.0 h1:1f8XQLPl4BuHPsc6SHTPnYSYeDxucKCQGa8CdrGJSRc= kubevirt.io/api v1.2.0/go.mod h1:SbeR9ma4EwnaOZEUkh/lNz0kzYm5LPpEDE30vKXC5Zg= kubevirt.io/application-aware-quota v1.1.5 h1:CfHP8fjgrYfnCrwLTn5syAHN9zggYgqKaAbce+u7Af8= kubevirt.io/application-aware-quota v1.1.5/go.mod h1:Owe2lP1IH9SeXdLqzWtTkmBx59ilWJulaLUK8VG+b34= -kubevirt.io/containerized-data-importer-api v1.58.3 h1:gTccZSu7CTD/wswbm68AUlz9YThz/5SsdLK1Htt7uL8= -kubevirt.io/containerized-data-importer-api v1.58.3/go.mod h1:Y/8ETgHS1GjO89bl682DPtQOYEU/1ctPFBz6Sjxm4DM= +kubevirt.io/containerized-data-importer-api v1.59.0 h1:GdDt9BlR0qHejpMaPfASbsG8JWDmBf1s7xZBj5W9qn0= +kubevirt.io/containerized-data-importer-api v1.59.0/go.mod h1:4yOGtCE7HvgKp7wftZZ3TBvDJ0x9d6N6KaRjRYcUFpE= kubevirt.io/controller-lifecycle-operator-sdk/api v0.2.4 h1:fZYvD3/Vnitfkx6IJxjLAk8ugnZQ7CXVYcRfkSKmuZY= kubevirt.io/controller-lifecycle-operator-sdk/api v0.2.4/go.mod h1:018lASpFYBsYN6XwmA2TIrPCx6e0gviTd/ZNtSitKgc= kubevirt.io/managed-tenant-quota v1.2.0 h1:AE+rmmVfwzvUrWlBfplr/Mhw60YDDEI3j0/Tyh8nebk= diff --git a/hack/config b/hack/config index 4ac5956025..1111b54fde 100644 --- a/hack/config +++ b/hack/config @@ -1,7 +1,7 @@ #!/bin/bash KUBEVIRT_VERSION="v1.2.0" -CDI_VERSION="v1.58.3" +CDI_VERSION="v1.59.0" NETWORK_ADDONS_VERSION="v0.91.0" SSP_VERSION="v0.19.0" TTO_VERSION="v0.5.0" diff --git a/tests/go.mod b/tests/go.mod index 3294804fb9..a398ccde6e 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -17,7 +17,7 @@ require ( k8s.io/utils v0.0.0-20240102154912-e7106e64919e kubevirt.io/api v1.2.0 kubevirt.io/client-go v1.2.0 - kubevirt.io/containerized-data-importer-api v1.58.3 + kubevirt.io/containerized-data-importer-api v1.59.0 kubevirt.io/kubevirt v1.2.0 ) @@ -206,7 +206,7 @@ replace ( github.com/kubevirt/cluster-network-addons-operator/pkg/apis => github.com/kubevirt/cluster-network-addons-operator/pkg/apis v0.91.0 github.com/openshift/machine-api-operator => github.com/openshift/machine-api-operator v0.2.1-0.20191025120018-fb3724fc7bdf go.mongodb.org/mongo-driver => go.mongodb.org/mongo-driver v1.5.1 - kubevirt.io/containerized-data-importer-api => kubevirt.io/containerized-data-importer-api v1.58.3 + kubevirt.io/containerized-data-importer-api => kubevirt.io/containerized-data-importer-api v1.59.0 ) replace ( diff --git a/tests/go.sum b/tests/go.sum index b903d41c80..6321362b9b 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -586,8 +586,8 @@ kubevirt.io/application-aware-quota v1.1.5 h1:CfHP8fjgrYfnCrwLTn5syAHN9zggYgqKaA kubevirt.io/application-aware-quota v1.1.5/go.mod h1:Owe2lP1IH9SeXdLqzWtTkmBx59ilWJulaLUK8VG+b34= kubevirt.io/client-go v1.2.0 h1:KniuG2wse98++ecRCWTZEl0wLZAQiRn+HdvzlpyekgA= kubevirt.io/client-go v1.2.0/go.mod h1:ib4Ewy6u/+4J7w79mz0rxaJjsAbPvzJjYWQqGsrN7pM= -kubevirt.io/containerized-data-importer-api v1.58.3 h1:gTccZSu7CTD/wswbm68AUlz9YThz/5SsdLK1Htt7uL8= -kubevirt.io/containerized-data-importer-api v1.58.3/go.mod h1:Y/8ETgHS1GjO89bl682DPtQOYEU/1ctPFBz6Sjxm4DM= +kubevirt.io/containerized-data-importer-api v1.59.0 h1:GdDt9BlR0qHejpMaPfASbsG8JWDmBf1s7xZBj5W9qn0= +kubevirt.io/containerized-data-importer-api v1.59.0/go.mod h1:4yOGtCE7HvgKp7wftZZ3TBvDJ0x9d6N6KaRjRYcUFpE= kubevirt.io/controller-lifecycle-operator-sdk/api v0.2.4 h1:fZYvD3/Vnitfkx6IJxjLAk8ugnZQ7CXVYcRfkSKmuZY= kubevirt.io/controller-lifecycle-operator-sdk/api v0.2.4/go.mod h1:018lASpFYBsYN6XwmA2TIrPCx6e0gviTd/ZNtSitKgc= kubevirt.io/kubevirt v1.2.0 h1:d6gua0uoCdruSDetlKkgaY3X+A0HRQkQdqMbO2GO/Og= diff --git a/tests/vendor/kubevirt.io/containerized-data-importer-api/pkg/apis/core/v1beta1/types.go b/tests/vendor/kubevirt.io/containerized-data-importer-api/pkg/apis/core/v1beta1/types.go index 4f85a7bcfe..e2c54111bf 100644 --- a/tests/vendor/kubevirt.io/containerized-data-importer-api/pkg/apis/core/v1beta1/types.go +++ b/tests/vendor/kubevirt.io/containerized-data-importer-api/pkg/apis/core/v1beta1/types.go @@ -106,6 +106,9 @@ type StorageSpec struct { DataSourceRef *corev1.TypedObjectReference `json:"dataSourceRef,omitempty"` } +// PersistentVolumeFromStorageProfile means the volume mode will be auto selected by CDI according to a matching StorageProfile +const PersistentVolumeFromStorageProfile corev1.PersistentVolumeMode = "FromStorageProfile" + // DataVolumeCheckpoint defines a stage in a warm migration. type DataVolumeCheckpoint struct { // Previous is the identifier of the snapshot from the previous checkpoint. @@ -827,10 +830,11 @@ type CDISpec struct { // +kubebuilder:validation:Enum=RemoveWorkloads;BlockUninstallIfWorkloadsExist // CDIUninstallStrategy defines the state to leave CDI on uninstall UninstallStrategy *CDIUninstallStrategy `json:"uninstallStrategy,omitempty"` - // Rules on which nodes CDI infrastructure pods will be scheduled - Infra sdkapi.NodePlacement `json:"infra,omitempty"` + // Selectors and tolerations that should apply to cdi infrastructure components + Infra ComponentConfig `json:"infra,omitempty"` // Restrict on which nodes CDI workload pods will be scheduled - Workloads sdkapi.NodePlacement `json:"workload,omitempty"` + Workloads sdkapi.NodePlacement `json:"workload,omitempty"` + CustomizeComponents CustomizeComponents `json:"customizeComponents,omitempty"` // Clone strategy override: should we use a host-assisted copy even if snapshots are available? // +kubebuilder:validation:Enum="copy";"snapshot";"csi-clone" CloneStrategyOverride *CDICloneStrategy `json:"cloneStrategyOverride,omitempty"` @@ -842,6 +846,18 @@ type CDISpec struct { PriorityClass *CDIPriorityClass `json:"priorityClass,omitempty"` } +// ComponentConfig defines the scheduling and replicas configuration for CDI components +type ComponentConfig struct { + // NodePlacement describes scheduling configuration for specific CDI components + sdkapi.NodePlacement `json:",inline"` + // DeploymentReplicas set Replicas for cdi-deployment + DeploymentReplicas *int32 `json:"deploymentReplicas,omitempty"` + // ApiserverReplicas set Replicas for cdi-apiserver + APIServerReplicas *int32 `json:"apiServerReplicas,omitempty"` + // UploadproxyReplicas set Replicas for cdi-uploadproxy + UploadProxyReplicas *int32 `json:"uploadProxyReplicas,omitempty"` +} + // CDIPriorityClass defines the priority class of the CDI control plane. type CDIPriorityClass string @@ -859,6 +875,47 @@ const ( CloneStrategyCsiClone CDICloneStrategy = "csi-clone" ) +// CustomizeComponents defines patches for components deployed by the CDI operator. +type CustomizeComponents struct { + // +listType=atomic + Patches []CustomizeComponentsPatch `json:"patches,omitempty"` + + // Configure the value used for deployment and daemonset resources + Flags *Flags `json:"flags,omitempty"` +} + +// Flags will create a patch that will replace all flags for the container's +// command field. The only flags that will be used are those define. There are no +// guarantees around forward/backward compatibility. If set incorrectly this will +// cause the resource when rolled out to error until flags are updated. +type Flags struct { + API map[string]string `json:"api,omitempty"` + Controller map[string]string `json:"controller,omitempty"` + UploadProxy map[string]string `json:"uploadProxy,omitempty"` +} + +// CustomizeComponentsPatch defines a patch for some resource. +type CustomizeComponentsPatch struct { + // +kubebuilder:validation:MinLength=1 + ResourceName string `json:"resourceName"` + // +kubebuilder:validation:MinLength=1 + ResourceType string `json:"resourceType"` + Patch string `json:"patch"` + Type PatchType `json:"type"` +} + +// PatchType defines the patch type. +type PatchType string + +const ( + // JSONPatchType is a constant that represents the type of JSON patch. + JSONPatchType PatchType = "json" + // MergePatchType is a constant that represents the type of JSON Merge patch. + MergePatchType PatchType = "merge" + // StrategicMergePatchType is a constant that represents the type of Strategic Merge patch. + StrategicMergePatchType PatchType = "strategic" +) + // DataImportCronSourceFormat defines the format of the DataImportCron-created disk image sources type DataImportCronSourceFormat string diff --git a/tests/vendor/kubevirt.io/containerized-data-importer-api/pkg/apis/core/v1beta1/types_swagger_generated.go b/tests/vendor/kubevirt.io/containerized-data-importer-api/pkg/apis/core/v1beta1/types_swagger_generated.go index ac3579d911..49246a9125 100644 --- a/tests/vendor/kubevirt.io/containerized-data-importer-api/pkg/apis/core/v1beta1/types_swagger_generated.go +++ b/tests/vendor/kubevirt.io/containerized-data-importer-api/pkg/apis/core/v1beta1/types_swagger_generated.go @@ -428,7 +428,7 @@ func (CDISpec) SwaggerDoc() map[string]string { "": "CDISpec defines our specification for the CDI installation", "imagePullPolicy": "+kubebuilder:validation:Enum=Always;IfNotPresent;Never\nPullPolicy describes a policy for if/when to pull a container image", "uninstallStrategy": "+kubebuilder:validation:Enum=RemoveWorkloads;BlockUninstallIfWorkloadsExist\nCDIUninstallStrategy defines the state to leave CDI on uninstall", - "infra": "Rules on which nodes CDI infrastructure pods will be scheduled", + "infra": "Selectors and tolerations that should apply to cdi infrastructure components", "workload": "Restrict on which nodes CDI workload pods will be scheduled", "cloneStrategyOverride": "Clone strategy override: should we use a host-assisted copy even if snapshots are available?\n+kubebuilder:validation:Enum=\"copy\";\"snapshot\";\"csi-clone\"", "config": "CDIConfig at CDI level", @@ -437,6 +437,37 @@ func (CDISpec) SwaggerDoc() map[string]string { } } +func (ComponentConfig) SwaggerDoc() map[string]string { + return map[string]string{ + "": "ComponentConfig defines the scheduling and replicas configuration for CDI components", + "deploymentReplicas": "DeploymentReplicas set Replicas for cdi-deployment", + "apiServerReplicas": "ApiserverReplicas set Replicas for cdi-apiserver", + "uploadProxyReplicas": "UploadproxyReplicas set Replicas for cdi-uploadproxy", + } +} + +func (CustomizeComponents) SwaggerDoc() map[string]string { + return map[string]string{ + "": "CustomizeComponents defines patches for components deployed by the CDI operator.", + "patches": "+listType=atomic", + "flags": "Configure the value used for deployment and daemonset resources", + } +} + +func (Flags) SwaggerDoc() map[string]string { + return map[string]string{ + "": "Flags will create a patch that will replace all flags for the container's\ncommand field. The only flags that will be used are those define. There are no\nguarantees around forward/backward compatibility. If set incorrectly this will\ncause the resource when rolled out to error until flags are updated.", + } +} + +func (CustomizeComponentsPatch) SwaggerDoc() map[string]string { + return map[string]string{ + "": "CustomizeComponentsPatch defines a patch for some resource.", + "resourceName": "+kubebuilder:validation:MinLength=1", + "resourceType": "+kubebuilder:validation:MinLength=1", + } +} + func (CDIStatus) SwaggerDoc() map[string]string { return map[string]string{ "": "CDIStatus defines the status of the installation", diff --git a/tests/vendor/kubevirt.io/containerized-data-importer-api/pkg/apis/core/v1beta1/zz_generated.deepcopy.go b/tests/vendor/kubevirt.io/containerized-data-importer-api/pkg/apis/core/v1beta1/zz_generated.deepcopy.go index 39d84a69ea..30b665b738 100644 --- a/tests/vendor/kubevirt.io/containerized-data-importer-api/pkg/apis/core/v1beta1/zz_generated.deepcopy.go +++ b/tests/vendor/kubevirt.io/containerized-data-importer-api/pkg/apis/core/v1beta1/zz_generated.deepcopy.go @@ -303,6 +303,7 @@ func (in *CDISpec) DeepCopyInto(out *CDISpec) { } in.Infra.DeepCopyInto(&out.Infra) in.Workloads.DeepCopyInto(&out.Workloads) + in.CustomizeComponents.DeepCopyInto(&out.CustomizeComponents) if in.CloneStrategyOverride != nil { in, out := &in.CloneStrategyOverride, &out.CloneStrategyOverride *out = new(CDICloneStrategy) @@ -405,6 +406,38 @@ func (in *ClaimPropertySet) DeepCopy() *ClaimPropertySet { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ComponentConfig) DeepCopyInto(out *ComponentConfig) { + *out = *in + in.NodePlacement.DeepCopyInto(&out.NodePlacement) + if in.DeploymentReplicas != nil { + in, out := &in.DeploymentReplicas, &out.DeploymentReplicas + *out = new(int32) + **out = **in + } + if in.APIServerReplicas != nil { + in, out := &in.APIServerReplicas, &out.APIServerReplicas + *out = new(int32) + **out = **in + } + if in.UploadProxyReplicas != nil { + in, out := &in.UploadProxyReplicas, &out.UploadProxyReplicas + *out = new(int32) + **out = **in + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ComponentConfig. +func (in *ComponentConfig) DeepCopy() *ComponentConfig { + if in == nil { + return nil + } + out := new(ComponentConfig) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ConditionState) DeepCopyInto(out *ConditionState) { *out = *in @@ -423,6 +456,48 @@ func (in *ConditionState) DeepCopy() *ConditionState { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CustomizeComponents) DeepCopyInto(out *CustomizeComponents) { + *out = *in + if in.Patches != nil { + in, out := &in.Patches, &out.Patches + *out = make([]CustomizeComponentsPatch, len(*in)) + copy(*out, *in) + } + if in.Flags != nil { + in, out := &in.Flags, &out.Flags + *out = new(Flags) + (*in).DeepCopyInto(*out) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomizeComponents. +func (in *CustomizeComponents) DeepCopy() *CustomizeComponents { + if in == nil { + return nil + } + out := new(CustomizeComponents) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CustomizeComponentsPatch) DeepCopyInto(out *CustomizeComponentsPatch) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomizeComponentsPatch. +func (in *CustomizeComponentsPatch) DeepCopy() *CustomizeComponentsPatch { + if in == nil { + return nil + } + out := new(CustomizeComponentsPatch) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *DataImportCron) DeepCopyInto(out *DataImportCron) { *out = *in @@ -1193,6 +1268,43 @@ func (in *FilesystemOverhead) DeepCopy() *FilesystemOverhead { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Flags) DeepCopyInto(out *Flags) { + *out = *in + if in.API != nil { + in, out := &in.API, &out.API + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.Controller != nil { + in, out := &in.Controller, &out.Controller + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.UploadProxy != nil { + in, out := &in.UploadProxy, &out.UploadProxy + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Flags. +func (in *Flags) DeepCopy() *Flags { + if in == nil { + return nil + } + out := new(Flags) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ImportProxy) DeepCopyInto(out *ImportProxy) { *out = *in diff --git a/tests/vendor/modules.txt b/tests/vendor/modules.txt index 5d5a6c1a91..2133bce6e3 100644 --- a/tests/vendor/modules.txt +++ b/tests/vendor/modules.txt @@ -916,8 +916,8 @@ kubevirt.io/client-go/precond kubevirt.io/client-go/subresources kubevirt.io/client-go/util kubevirt.io/client-go/version -# kubevirt.io/containerized-data-importer-api v1.58.3 => kubevirt.io/containerized-data-importer-api v1.58.3 -## explicit; go 1.19 +# kubevirt.io/containerized-data-importer-api v1.59.0 => kubevirt.io/containerized-data-importer-api v1.59.0 +## explicit; go 1.21 kubevirt.io/containerized-data-importer-api/pkg/apis/core kubevirt.io/containerized-data-importer-api/pkg/apis/core/v1beta1 kubevirt.io/containerized-data-importer-api/pkg/apis/upload @@ -1054,7 +1054,7 @@ sigs.k8s.io/yaml/goyaml.v2 # github.com/kubevirt/cluster-network-addons-operator/pkg/apis => github.com/kubevirt/cluster-network-addons-operator/pkg/apis v0.91.0 # github.com/openshift/machine-api-operator => github.com/openshift/machine-api-operator v0.2.1-0.20191025120018-fb3724fc7bdf # go.mongodb.org/mongo-driver => go.mongodb.org/mongo-driver v1.5.1 -# kubevirt.io/containerized-data-importer-api => kubevirt.io/containerized-data-importer-api v1.58.3 +# kubevirt.io/containerized-data-importer-api => kubevirt.io/containerized-data-importer-api v1.59.0 # github.com/openshift/api => github.com/openshift/api v0.0.0-20230825144922-938af62eda38 # github.com/openshift/client-go => github.com/openshift/client-go v0.0.0-20230807132528-be5346fb33cb # github.com/openshift/library-go => github.com/openshift/library-go v0.0.0-20230809121909-d7e7beca5bae diff --git a/vendor/kubevirt.io/containerized-data-importer-api/pkg/apis/core/v1beta1/types.go b/vendor/kubevirt.io/containerized-data-importer-api/pkg/apis/core/v1beta1/types.go index 4f85a7bcfe..e2c54111bf 100644 --- a/vendor/kubevirt.io/containerized-data-importer-api/pkg/apis/core/v1beta1/types.go +++ b/vendor/kubevirt.io/containerized-data-importer-api/pkg/apis/core/v1beta1/types.go @@ -106,6 +106,9 @@ type StorageSpec struct { DataSourceRef *corev1.TypedObjectReference `json:"dataSourceRef,omitempty"` } +// PersistentVolumeFromStorageProfile means the volume mode will be auto selected by CDI according to a matching StorageProfile +const PersistentVolumeFromStorageProfile corev1.PersistentVolumeMode = "FromStorageProfile" + // DataVolumeCheckpoint defines a stage in a warm migration. type DataVolumeCheckpoint struct { // Previous is the identifier of the snapshot from the previous checkpoint. @@ -827,10 +830,11 @@ type CDISpec struct { // +kubebuilder:validation:Enum=RemoveWorkloads;BlockUninstallIfWorkloadsExist // CDIUninstallStrategy defines the state to leave CDI on uninstall UninstallStrategy *CDIUninstallStrategy `json:"uninstallStrategy,omitempty"` - // Rules on which nodes CDI infrastructure pods will be scheduled - Infra sdkapi.NodePlacement `json:"infra,omitempty"` + // Selectors and tolerations that should apply to cdi infrastructure components + Infra ComponentConfig `json:"infra,omitempty"` // Restrict on which nodes CDI workload pods will be scheduled - Workloads sdkapi.NodePlacement `json:"workload,omitempty"` + Workloads sdkapi.NodePlacement `json:"workload,omitempty"` + CustomizeComponents CustomizeComponents `json:"customizeComponents,omitempty"` // Clone strategy override: should we use a host-assisted copy even if snapshots are available? // +kubebuilder:validation:Enum="copy";"snapshot";"csi-clone" CloneStrategyOverride *CDICloneStrategy `json:"cloneStrategyOverride,omitempty"` @@ -842,6 +846,18 @@ type CDISpec struct { PriorityClass *CDIPriorityClass `json:"priorityClass,omitempty"` } +// ComponentConfig defines the scheduling and replicas configuration for CDI components +type ComponentConfig struct { + // NodePlacement describes scheduling configuration for specific CDI components + sdkapi.NodePlacement `json:",inline"` + // DeploymentReplicas set Replicas for cdi-deployment + DeploymentReplicas *int32 `json:"deploymentReplicas,omitempty"` + // ApiserverReplicas set Replicas for cdi-apiserver + APIServerReplicas *int32 `json:"apiServerReplicas,omitempty"` + // UploadproxyReplicas set Replicas for cdi-uploadproxy + UploadProxyReplicas *int32 `json:"uploadProxyReplicas,omitempty"` +} + // CDIPriorityClass defines the priority class of the CDI control plane. type CDIPriorityClass string @@ -859,6 +875,47 @@ const ( CloneStrategyCsiClone CDICloneStrategy = "csi-clone" ) +// CustomizeComponents defines patches for components deployed by the CDI operator. +type CustomizeComponents struct { + // +listType=atomic + Patches []CustomizeComponentsPatch `json:"patches,omitempty"` + + // Configure the value used for deployment and daemonset resources + Flags *Flags `json:"flags,omitempty"` +} + +// Flags will create a patch that will replace all flags for the container's +// command field. The only flags that will be used are those define. There are no +// guarantees around forward/backward compatibility. If set incorrectly this will +// cause the resource when rolled out to error until flags are updated. +type Flags struct { + API map[string]string `json:"api,omitempty"` + Controller map[string]string `json:"controller,omitempty"` + UploadProxy map[string]string `json:"uploadProxy,omitempty"` +} + +// CustomizeComponentsPatch defines a patch for some resource. +type CustomizeComponentsPatch struct { + // +kubebuilder:validation:MinLength=1 + ResourceName string `json:"resourceName"` + // +kubebuilder:validation:MinLength=1 + ResourceType string `json:"resourceType"` + Patch string `json:"patch"` + Type PatchType `json:"type"` +} + +// PatchType defines the patch type. +type PatchType string + +const ( + // JSONPatchType is a constant that represents the type of JSON patch. + JSONPatchType PatchType = "json" + // MergePatchType is a constant that represents the type of JSON Merge patch. + MergePatchType PatchType = "merge" + // StrategicMergePatchType is a constant that represents the type of Strategic Merge patch. + StrategicMergePatchType PatchType = "strategic" +) + // DataImportCronSourceFormat defines the format of the DataImportCron-created disk image sources type DataImportCronSourceFormat string diff --git a/vendor/kubevirt.io/containerized-data-importer-api/pkg/apis/core/v1beta1/types_swagger_generated.go b/vendor/kubevirt.io/containerized-data-importer-api/pkg/apis/core/v1beta1/types_swagger_generated.go index ac3579d911..49246a9125 100644 --- a/vendor/kubevirt.io/containerized-data-importer-api/pkg/apis/core/v1beta1/types_swagger_generated.go +++ b/vendor/kubevirt.io/containerized-data-importer-api/pkg/apis/core/v1beta1/types_swagger_generated.go @@ -428,7 +428,7 @@ func (CDISpec) SwaggerDoc() map[string]string { "": "CDISpec defines our specification for the CDI installation", "imagePullPolicy": "+kubebuilder:validation:Enum=Always;IfNotPresent;Never\nPullPolicy describes a policy for if/when to pull a container image", "uninstallStrategy": "+kubebuilder:validation:Enum=RemoveWorkloads;BlockUninstallIfWorkloadsExist\nCDIUninstallStrategy defines the state to leave CDI on uninstall", - "infra": "Rules on which nodes CDI infrastructure pods will be scheduled", + "infra": "Selectors and tolerations that should apply to cdi infrastructure components", "workload": "Restrict on which nodes CDI workload pods will be scheduled", "cloneStrategyOverride": "Clone strategy override: should we use a host-assisted copy even if snapshots are available?\n+kubebuilder:validation:Enum=\"copy\";\"snapshot\";\"csi-clone\"", "config": "CDIConfig at CDI level", @@ -437,6 +437,37 @@ func (CDISpec) SwaggerDoc() map[string]string { } } +func (ComponentConfig) SwaggerDoc() map[string]string { + return map[string]string{ + "": "ComponentConfig defines the scheduling and replicas configuration for CDI components", + "deploymentReplicas": "DeploymentReplicas set Replicas for cdi-deployment", + "apiServerReplicas": "ApiserverReplicas set Replicas for cdi-apiserver", + "uploadProxyReplicas": "UploadproxyReplicas set Replicas for cdi-uploadproxy", + } +} + +func (CustomizeComponents) SwaggerDoc() map[string]string { + return map[string]string{ + "": "CustomizeComponents defines patches for components deployed by the CDI operator.", + "patches": "+listType=atomic", + "flags": "Configure the value used for deployment and daemonset resources", + } +} + +func (Flags) SwaggerDoc() map[string]string { + return map[string]string{ + "": "Flags will create a patch that will replace all flags for the container's\ncommand field. The only flags that will be used are those define. There are no\nguarantees around forward/backward compatibility. If set incorrectly this will\ncause the resource when rolled out to error until flags are updated.", + } +} + +func (CustomizeComponentsPatch) SwaggerDoc() map[string]string { + return map[string]string{ + "": "CustomizeComponentsPatch defines a patch for some resource.", + "resourceName": "+kubebuilder:validation:MinLength=1", + "resourceType": "+kubebuilder:validation:MinLength=1", + } +} + func (CDIStatus) SwaggerDoc() map[string]string { return map[string]string{ "": "CDIStatus defines the status of the installation", diff --git a/vendor/kubevirt.io/containerized-data-importer-api/pkg/apis/core/v1beta1/zz_generated.deepcopy.go b/vendor/kubevirt.io/containerized-data-importer-api/pkg/apis/core/v1beta1/zz_generated.deepcopy.go index 39d84a69ea..30b665b738 100644 --- a/vendor/kubevirt.io/containerized-data-importer-api/pkg/apis/core/v1beta1/zz_generated.deepcopy.go +++ b/vendor/kubevirt.io/containerized-data-importer-api/pkg/apis/core/v1beta1/zz_generated.deepcopy.go @@ -303,6 +303,7 @@ func (in *CDISpec) DeepCopyInto(out *CDISpec) { } in.Infra.DeepCopyInto(&out.Infra) in.Workloads.DeepCopyInto(&out.Workloads) + in.CustomizeComponents.DeepCopyInto(&out.CustomizeComponents) if in.CloneStrategyOverride != nil { in, out := &in.CloneStrategyOverride, &out.CloneStrategyOverride *out = new(CDICloneStrategy) @@ -405,6 +406,38 @@ func (in *ClaimPropertySet) DeepCopy() *ClaimPropertySet { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ComponentConfig) DeepCopyInto(out *ComponentConfig) { + *out = *in + in.NodePlacement.DeepCopyInto(&out.NodePlacement) + if in.DeploymentReplicas != nil { + in, out := &in.DeploymentReplicas, &out.DeploymentReplicas + *out = new(int32) + **out = **in + } + if in.APIServerReplicas != nil { + in, out := &in.APIServerReplicas, &out.APIServerReplicas + *out = new(int32) + **out = **in + } + if in.UploadProxyReplicas != nil { + in, out := &in.UploadProxyReplicas, &out.UploadProxyReplicas + *out = new(int32) + **out = **in + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ComponentConfig. +func (in *ComponentConfig) DeepCopy() *ComponentConfig { + if in == nil { + return nil + } + out := new(ComponentConfig) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ConditionState) DeepCopyInto(out *ConditionState) { *out = *in @@ -423,6 +456,48 @@ func (in *ConditionState) DeepCopy() *ConditionState { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CustomizeComponents) DeepCopyInto(out *CustomizeComponents) { + *out = *in + if in.Patches != nil { + in, out := &in.Patches, &out.Patches + *out = make([]CustomizeComponentsPatch, len(*in)) + copy(*out, *in) + } + if in.Flags != nil { + in, out := &in.Flags, &out.Flags + *out = new(Flags) + (*in).DeepCopyInto(*out) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomizeComponents. +func (in *CustomizeComponents) DeepCopy() *CustomizeComponents { + if in == nil { + return nil + } + out := new(CustomizeComponents) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CustomizeComponentsPatch) DeepCopyInto(out *CustomizeComponentsPatch) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomizeComponentsPatch. +func (in *CustomizeComponentsPatch) DeepCopy() *CustomizeComponentsPatch { + if in == nil { + return nil + } + out := new(CustomizeComponentsPatch) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *DataImportCron) DeepCopyInto(out *DataImportCron) { *out = *in @@ -1193,6 +1268,43 @@ func (in *FilesystemOverhead) DeepCopy() *FilesystemOverhead { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Flags) DeepCopyInto(out *Flags) { + *out = *in + if in.API != nil { + in, out := &in.API, &out.API + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.Controller != nil { + in, out := &in.Controller, &out.Controller + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.UploadProxy != nil { + in, out := &in.UploadProxy, &out.UploadProxy + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Flags. +func (in *Flags) DeepCopy() *Flags { + if in == nil { + return nil + } + out := new(Flags) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ImportProxy) DeepCopyInto(out *ImportProxy) { *out = *in diff --git a/vendor/modules.txt b/vendor/modules.txt index c5f65f53cd..a00d3a1879 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -683,8 +683,8 @@ kubevirt.io/api/core/v1 ## explicit; go 1.20 kubevirt.io/application-aware-quota/staging/src/kubevirt.io/application-aware-quota-api/pkg/apis/core kubevirt.io/application-aware-quota/staging/src/kubevirt.io/application-aware-quota-api/pkg/apis/core/v1alpha1 -# kubevirt.io/containerized-data-importer-api v1.58.3 -## explicit; go 1.19 +# kubevirt.io/containerized-data-importer-api v1.59.0 +## explicit; go 1.21 kubevirt.io/containerized-data-importer-api/pkg/apis/core kubevirt.io/containerized-data-importer-api/pkg/apis/core/v1beta1 # kubevirt.io/controller-lifecycle-operator-sdk/api v0.2.4 From 3cfaae583c0662e9c9ab2bed60f835770cbd761e Mon Sep 17 00:00:00 2001 From: stirabos Date: Wed, 3 Apr 2024 12:47:25 +0200 Subject: [PATCH 2/2] Fix according to CDI api changes https://github.com/kubevirt/containerized-data-importer/pull/2933 introduced a compatibility breaking change. Fixing CDI handler. Signed-off-by: Simone Tiraboschi --- controllers/operands/cdi.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/controllers/operands/cdi.go b/controllers/operands/cdi.go index ba80ecad6d..4a2ca14f10 100644 --- a/controllers/operands/cdi.go +++ b/controllers/operands/cdi.go @@ -137,7 +137,7 @@ func NewCDI(hc *hcov1beta1.HyperConverged, opts ...string) (*cdiv1beta1.CDI, err } if hc.Spec.Infra.NodePlacement != nil { - hc.Spec.Infra.NodePlacement.DeepCopyInto(&spec.Infra) + hc.Spec.Infra.NodePlacement.DeepCopyInto(&spec.Infra.NodePlacement) } if hc.Spec.Workloads.NodePlacement != nil {