From 5515e3cf41981d205c2ad266e0ec73675d990e1d Mon Sep 17 00:00:00 2001 From: hco-bot <71450783+hco-bot@users.noreply.github.com> Date: Tue, 24 Oct 2023 13:22:11 +0300 Subject: [PATCH] Bump KUBEVIRT to v1.0.1 (#2571) Signed-off-by: HCO Bump Bot Co-authored-by: kubevirt-bot --- deploy/cluster_role.yaml | 65 +++++++---- deploy/crds/kubevirt00.crd.yaml | 2 + deploy/images.csv | 16 +-- deploy/images.env | 32 +++--- ...perator.v1.10.0.clusterserviceversion.yaml | 103 ++++++++++------- .../1.10.0/manifests/kubevirt00.crd.yaml | 2 + ...perator.v1.10.0.clusterserviceversion.yaml | 105 ++++++++++-------- .../1.10.0/manifests/kubevirt00.crd.yaml | 2 + deploy/operator.yaml | 22 ++-- hack/config | 2 +- tests/go.mod | 6 +- tests/go.sum | 11 +- .../kubevirt/pkg/container-disk/BUILD.bazel | 1 - .../pkg/container-disk/container-disk.go | 4 - .../kubevirt/pkg/controller/controller.go | 27 +++-- .../kubevirt/pkg/host-disk/host-disk.go | 5 + .../kubevirt/pkg/instancetype/instancetype.go | 11 +- .../kubevirt/pkg/network/vmispec/interface.go | 27 ----- .../kubevirt/pkg/storage/reservation/pr.go | 7 +- .../kubevirt/pkg/storage/types/dv.go | 95 +++++----------- .../kubevirt/pkg/testutils/mock_config.go | 19 +++- .../kubevirt.io/kubevirt/pkg/util/util.go | 16 +-- .../kubevirt/pkg/virt-config/configuration.go | 5 +- .../kubevirt/pkg/virt-config/feature-gates.go | 6 + .../kubevirt/pkg/virt-config/virt-config.go | 4 + .../services/renderresources.go | 82 ++++++++++++++ .../pkg/virt-controller/services/template.go | 32 +++++- .../virt-controller/watch/topology/filter.go | 29 +++++ .../virt-controller/watch/topology/hinter.go | 4 + .../pkg/virt-launcher/virtwrap/api/schema.go | 4 +- .../resource/generate/components/BUILD.bazel | 1 + .../generate/components/daemonsets.go | 15 ++- .../generate/components/prometheus.go | 4 +- .../resource/generate/components/scc.go | 2 + .../components/validations_generated.go | 5 +- .../resource/generate/components/webhooks.go | 26 +++++ .../kubevirt.io/kubevirt/tests/BUILD.bazel | 1 - .../kubevirt/tests/libnet/interface.go | 10 ++ .../kubevirt/tests/libstorage/BUILD.bazel | 2 + .../kubevirt/tests/libstorage/datavolume.go | 2 +- .../kubevirt/tests/libstorage/pvc.go | 6 +- .../kubevirt/tests/libstorage/storageclass.go | 46 ++++++++ .../tests/libstorage/volumesnapshot.go | 42 +++++++ .../kubevirt/tests/libwait/wait.go | 2 +- .../kubevirt/tests/testsuite/fixture.go | 2 +- .../tests/testsuite/kubevirtresource.go | 1 + .../tests/testsuite/runconfiguration.go | 10 +- .../tests/testsuite/serviceaccount.go | 49 ++++++++ .../kubevirt.io/kubevirt/tests/utils.go | 40 +++---- tests/vendor/modules.txt | 8 +- 50 files changed, 685 insertions(+), 335 deletions(-) create mode 100644 tests/vendor/kubevirt.io/kubevirt/tests/libstorage/volumesnapshot.go diff --git a/deploy/cluster_role.yaml b/deploy/cluster_role.yaml index 29d6eb3e30..2bc4f5135b 100644 --- a/deploy/cluster_role.yaml +++ b/deploy/cluster_role.yaml @@ -129,6 +129,18 @@ rules: - routes/custom-host verbs: - create +- apiGroups: + - coordination.k8s.io + resources: + - leases + verbs: + - get + - list + - watch + - delete + - update + - create + - patch --- apiVersion: rbac.authorization.k8s.io/v1 kind: Role @@ -1096,18 +1108,6 @@ rules: - update - delete - patch -- apiGroups: - - coordination.k8s.io - resources: - - leases - verbs: - - get - - list - - watch - - delete - - update - - create - - patch - apiGroups: - "" resources: @@ -1368,6 +1368,14 @@ rules: - get - list - watch +- apiGroups: + - "" + resources: + - namespaces + verbs: + - get + - list + - watch - apiGroups: - instancetype.kubevirt.io resources: @@ -1438,18 +1446,6 @@ rules: - update - create - patch -- apiGroups: - - coordination.k8s.io - resources: - - leases - verbs: - - get - - list - - watch - - delete - - update - - create - - patch - apiGroups: - "" resources: @@ -1688,6 +1684,18 @@ rules: - list - get - watch +- apiGroups: + - coordination.k8s.io + resources: + - leases + verbs: + - get + - list + - watch + - delete + - update + - create + - patch - apiGroups: - kubevirt.io resources: @@ -2156,6 +2164,15 @@ rules: - get - list - watch +- apiGroups: + - instancetype.kubevirt.io + resources: + - virtualmachineclusterinstancetypes + - virtualmachineclusterpreferences + verbs: + - get + - list + - watch - apiGroups: - authentication.k8s.io resources: diff --git a/deploy/crds/kubevirt00.crd.yaml b/deploy/crds/kubevirt00.crd.yaml index b701b7bea0..6779479f7f 100644 --- a/deploy/crds/kubevirt00.crd.yaml +++ b/deploy/crds/kubevirt00.crd.yaml @@ -461,6 +461,7 @@ spec: type: integer type: object machineType: + description: Deprecated. Use architectureConfiguration instead. type: string mediatedDevicesConfiguration: description: MediatedDevicesConfiguration holds information about @@ -3459,6 +3460,7 @@ spec: type: integer type: object machineType: + description: Deprecated. Use architectureConfiguration instead. type: string mediatedDevicesConfiguration: description: MediatedDevicesConfiguration holds information about diff --git a/deploy/images.csv b/deploy/images.csv index 02aa7ea1c9..3380bad758 100644 --- a/deploy/images.csv +++ b/deploy/images.csv @@ -1,13 +1,13 @@ image_var,name,tag,digest -KUBEVIRT_OPERATOR_IMAGE,quay.io/kubevirt/virt-operator,KUBEVIRT_VERSION,ddcd86fdaa29fc451f6b9c06d18642bdd12b344e49a82330445a0ed084e4e231 -KUBEVIRT_API_IMAGE,quay.io/kubevirt/virt-api,KUBEVIRT_VERSION,5c375d9919853f9eec63bd68a0910fbd4d216235ec8e2835e6261d5778a7ae0b -KUBEVIRT_CONTROLLER_IMAGE,quay.io/kubevirt/virt-controller,KUBEVIRT_VERSION,248c61bb6662bda1e2b3f2da3e4ef7aca2802d96b38a848bfa631dad5295ef92 -KUBEVIRT_LAUNCHER_IMAGE,quay.io/kubevirt/virt-launcher,KUBEVIRT_VERSION,b9b04d9d06ada4486e6acaa08e99aaa6a050e1843624ba4f291f8d167ebec36b -KUBEVIRT_HANDLER_IMAGE,quay.io/kubevirt/virt-handler,KUBEVIRT_VERSION,b33b761bfc9e78121825b1c243e126fa6378ba973bbd1c38fe967f763388522f +KUBEVIRT_OPERATOR_IMAGE,quay.io/kubevirt/virt-operator,KUBEVIRT_VERSION,cbca7f93afbb18a840f7e763e4c03aeeb1fd97967f381c12c443cc179b51da29 +KUBEVIRT_API_IMAGE,quay.io/kubevirt/virt-api,KUBEVIRT_VERSION,707003b221496b4432da2f507d1e36e528b45888b5d321e06d460f0678da44ae +KUBEVIRT_CONTROLLER_IMAGE,quay.io/kubevirt/virt-controller,KUBEVIRT_VERSION,0789fafed2913b35a771e3db882748502b3250be04ece86d97f30201779b4e54 +KUBEVIRT_LAUNCHER_IMAGE,quay.io/kubevirt/virt-launcher,KUBEVIRT_VERSION,4c5fce3de2e2589197de72fb0c9436490ea318aca952c05a622c43e067023f35 +KUBEVIRT_HANDLER_IMAGE,quay.io/kubevirt/virt-handler,KUBEVIRT_VERSION,138dfda5fea8622f3da0d6413fe214fef80c2fd6a6f9533592a0dbfa7e1865b5 KUBEVIRT_VIRTIO_IMAGE,quay.io/kubevirt/virtio-container-disk,KUBEVIRT_VERSION,f8e71a3a930ce95d646d80862d5ff6f9d3ed7ef2541dd2e2acec0bce26274734 -KUBEVIRT_LIBGUESTFS_TOOLS_IMAGE,quay.io/kubevirt/libguestfs-tools,KUBEVIRT_VERSION,12cf13c034ef0e87c6d6a9e1e26fa0779348e26b1e20fa4cf5fe8074e1b5581b -KUBEVIRT_EXPORTPROXY_IMAGE,quay.io/kubevirt/virt-exportproxy,KUBEVIRT_VERSION,3e8fe55dc7ebeb86ff0be428f3d29d7768ee442471b5f1f0590faaef2c5682af -KUBEVIRT_EXPORSERVER_IMAGE,quay.io/kubevirt/virt-exportserver,KUBEVIRT_VERSION,e93ae0eb0af085c0a4eb9d059e71cfd18d04e8f8932255704982f16eddaa0103 +KUBEVIRT_LIBGUESTFS_TOOLS_IMAGE,quay.io/kubevirt/libguestfs-tools,KUBEVIRT_VERSION,b7e248be783691daad1326cf41641d5042be80c5c057ebc5315ca7a1619b0581 +KUBEVIRT_EXPORTPROXY_IMAGE,quay.io/kubevirt/virt-exportproxy,KUBEVIRT_VERSION,f14444b0200a85efb4b3c176caefe70aabba7d295e33d2af14027a59ce297e24 +KUBEVIRT_EXPORSERVER_IMAGE,quay.io/kubevirt/virt-exportserver,KUBEVIRT_VERSION,73311f79a9c71007f8572b3cc40cd6f6da404c7ef0a9c6509fb717d979546582 CNA_OPERATOR_IMAGE,quay.io/kubevirt/cluster-network-addons-operator,NETWORK_ADDONS_VERSION,56bbf4869317dc63210d73084f8dada558b48ceb75ab56f4509f8f81c59e027f SSP_OPERATOR_IMAGE,quay.io/kubevirt/ssp-operator,SSP_VERSION,49cac00844f091d6e80301573e00235d685415185ec29c89b4bd7361f938711e CDI_OPERATOR_IMAGE,quay.io/kubevirt/cdi-operator,CDI_VERSION,6c63521d835578b0fbb77d3145b648f95ab0932d5d1b36ff2068ed8fcd91bc5a diff --git a/deploy/images.env b/deploy/images.env index f5f64229ca..28e6ec2ad3 100755 --- a/deploy/images.env +++ b/deploy/images.env @@ -1,12 +1,12 @@ -KUBEVIRT_OPERATOR_IMAGE=quay.io/kubevirt/virt-operator@sha256:ddcd86fdaa29fc451f6b9c06d18642bdd12b344e49a82330445a0ed084e4e231 -KUBEVIRT_API_IMAGE=quay.io/kubevirt/virt-api@sha256:5c375d9919853f9eec63bd68a0910fbd4d216235ec8e2835e6261d5778a7ae0b -KUBEVIRT_CONTROLLER_IMAGE=quay.io/kubevirt/virt-controller@sha256:248c61bb6662bda1e2b3f2da3e4ef7aca2802d96b38a848bfa631dad5295ef92 -KUBEVIRT_LAUNCHER_IMAGE=quay.io/kubevirt/virt-launcher@sha256:b9b04d9d06ada4486e6acaa08e99aaa6a050e1843624ba4f291f8d167ebec36b -KUBEVIRT_HANDLER_IMAGE=quay.io/kubevirt/virt-handler@sha256:b33b761bfc9e78121825b1c243e126fa6378ba973bbd1c38fe967f763388522f +KUBEVIRT_OPERATOR_IMAGE=quay.io/kubevirt/virt-operator@sha256:cbca7f93afbb18a840f7e763e4c03aeeb1fd97967f381c12c443cc179b51da29 +KUBEVIRT_API_IMAGE=quay.io/kubevirt/virt-api@sha256:707003b221496b4432da2f507d1e36e528b45888b5d321e06d460f0678da44ae +KUBEVIRT_CONTROLLER_IMAGE=quay.io/kubevirt/virt-controller@sha256:0789fafed2913b35a771e3db882748502b3250be04ece86d97f30201779b4e54 +KUBEVIRT_LAUNCHER_IMAGE=quay.io/kubevirt/virt-launcher@sha256:4c5fce3de2e2589197de72fb0c9436490ea318aca952c05a622c43e067023f35 +KUBEVIRT_HANDLER_IMAGE=quay.io/kubevirt/virt-handler@sha256:138dfda5fea8622f3da0d6413fe214fef80c2fd6a6f9533592a0dbfa7e1865b5 KUBEVIRT_VIRTIO_IMAGE=quay.io/kubevirt/virtio-container-disk@sha256:f8e71a3a930ce95d646d80862d5ff6f9d3ed7ef2541dd2e2acec0bce26274734 -KUBEVIRT_LIBGUESTFS_TOOLS_IMAGE=quay.io/kubevirt/libguestfs-tools@sha256:12cf13c034ef0e87c6d6a9e1e26fa0779348e26b1e20fa4cf5fe8074e1b5581b -KUBEVIRT_EXPORTPROXY_IMAGE=quay.io/kubevirt/virt-exportproxy@sha256:3e8fe55dc7ebeb86ff0be428f3d29d7768ee442471b5f1f0590faaef2c5682af -KUBEVIRT_EXPORSERVER_IMAGE=quay.io/kubevirt/virt-exportserver@sha256:e93ae0eb0af085c0a4eb9d059e71cfd18d04e8f8932255704982f16eddaa0103 +KUBEVIRT_LIBGUESTFS_TOOLS_IMAGE=quay.io/kubevirt/libguestfs-tools@sha256:b7e248be783691daad1326cf41641d5042be80c5c057ebc5315ca7a1619b0581 +KUBEVIRT_EXPORTPROXY_IMAGE=quay.io/kubevirt/virt-exportproxy@sha256:f14444b0200a85efb4b3c176caefe70aabba7d295e33d2af14027a59ce297e24 +KUBEVIRT_EXPORSERVER_IMAGE=quay.io/kubevirt/virt-exportserver@sha256:73311f79a9c71007f8572b3cc40cd6f6da404c7ef0a9c6509fb717d979546582 CNA_OPERATOR_IMAGE=quay.io/kubevirt/cluster-network-addons-operator@sha256:56bbf4869317dc63210d73084f8dada558b48ceb75ab56f4509f8f81c59e027f SSP_OPERATOR_IMAGE=quay.io/kubevirt/ssp-operator@sha256:49cac00844f091d6e80301573e00235d685415185ec29c89b4bd7361f938711e CDI_OPERATOR_IMAGE=quay.io/kubevirt/cdi-operator@sha256:6c63521d835578b0fbb77d3145b648f95ab0932d5d1b36ff2068ed8fcd91bc5a @@ -29,15 +29,15 @@ CSI_SIG_STORAGE_PROVISIONER_IMAGE=registry.k8s.io/sig-storage/csi-provisioner@sh KUBE_RBAC_PROXY_IMAGE=quay.io/openshift/origin-kube-rbac-proxy@sha256:6ad10b8ac43d4994090b90a384a71a6e6b174e328495d858cbf44eec860fbcff KUBEVIRT_CONSOLE_PLUGIN_IMAGE=quay.io/kubevirt-ui/kubevirt-plugin@sha256:e79027973b09aac75860f267c7d7f830599978c38a081001f404b9a1c3d2990f KUBEVIRT_CONSOLE_PROXY_IMAGE=quay.io/kubevirt-ui/kubevirt-apiserver-proxy@sha256:83b0b88993ea1ab2fddf9f9fc17b5d4d2d5640f3c5cb624b1022a5ba84e16134 -DIGEST_LIST="quay.io/kubevirt/virt-operator@sha256:ddcd86fdaa29fc451f6b9c06d18642bdd12b344e49a82330445a0ed084e4e231" -DIGEST_LIST="${DIGEST_LIST},quay.io/kubevirt/virt-api@sha256:5c375d9919853f9eec63bd68a0910fbd4d216235ec8e2835e6261d5778a7ae0b" -DIGEST_LIST="${DIGEST_LIST},quay.io/kubevirt/virt-controller@sha256:248c61bb6662bda1e2b3f2da3e4ef7aca2802d96b38a848bfa631dad5295ef92" -DIGEST_LIST="${DIGEST_LIST},quay.io/kubevirt/virt-launcher@sha256:b9b04d9d06ada4486e6acaa08e99aaa6a050e1843624ba4f291f8d167ebec36b" -DIGEST_LIST="${DIGEST_LIST},quay.io/kubevirt/virt-handler@sha256:b33b761bfc9e78121825b1c243e126fa6378ba973bbd1c38fe967f763388522f" +DIGEST_LIST="quay.io/kubevirt/virt-operator@sha256:cbca7f93afbb18a840f7e763e4c03aeeb1fd97967f381c12c443cc179b51da29" +DIGEST_LIST="${DIGEST_LIST},quay.io/kubevirt/virt-api@sha256:707003b221496b4432da2f507d1e36e528b45888b5d321e06d460f0678da44ae" +DIGEST_LIST="${DIGEST_LIST},quay.io/kubevirt/virt-controller@sha256:0789fafed2913b35a771e3db882748502b3250be04ece86d97f30201779b4e54" +DIGEST_LIST="${DIGEST_LIST},quay.io/kubevirt/virt-launcher@sha256:4c5fce3de2e2589197de72fb0c9436490ea318aca952c05a622c43e067023f35" +DIGEST_LIST="${DIGEST_LIST},quay.io/kubevirt/virt-handler@sha256:138dfda5fea8622f3da0d6413fe214fef80c2fd6a6f9533592a0dbfa7e1865b5" DIGEST_LIST="${DIGEST_LIST},quay.io/kubevirt/virtio-container-disk@sha256:f8e71a3a930ce95d646d80862d5ff6f9d3ed7ef2541dd2e2acec0bce26274734" -DIGEST_LIST="${DIGEST_LIST},quay.io/kubevirt/libguestfs-tools@sha256:12cf13c034ef0e87c6d6a9e1e26fa0779348e26b1e20fa4cf5fe8074e1b5581b" -DIGEST_LIST="${DIGEST_LIST},quay.io/kubevirt/virt-exportproxy@sha256:3e8fe55dc7ebeb86ff0be428f3d29d7768ee442471b5f1f0590faaef2c5682af" -DIGEST_LIST="${DIGEST_LIST},quay.io/kubevirt/virt-exportserver@sha256:e93ae0eb0af085c0a4eb9d059e71cfd18d04e8f8932255704982f16eddaa0103" +DIGEST_LIST="${DIGEST_LIST},quay.io/kubevirt/libguestfs-tools@sha256:b7e248be783691daad1326cf41641d5042be80c5c057ebc5315ca7a1619b0581" +DIGEST_LIST="${DIGEST_LIST},quay.io/kubevirt/virt-exportproxy@sha256:f14444b0200a85efb4b3c176caefe70aabba7d295e33d2af14027a59ce297e24" +DIGEST_LIST="${DIGEST_LIST},quay.io/kubevirt/virt-exportserver@sha256:73311f79a9c71007f8572b3cc40cd6f6da404c7ef0a9c6509fb717d979546582" DIGEST_LIST="${DIGEST_LIST},quay.io/kubevirt/cluster-network-addons-operator@sha256:56bbf4869317dc63210d73084f8dada558b48ceb75ab56f4509f8f81c59e027f" DIGEST_LIST="${DIGEST_LIST},quay.io/kubevirt/ssp-operator@sha256:49cac00844f091d6e80301573e00235d685415185ec29c89b4bd7361f938711e" DIGEST_LIST="${DIGEST_LIST},quay.io/kubevirt/cdi-operator@sha256:6c63521d835578b0fbb77d3145b648f95ab0932d5d1b36ff2068ed8fcd91bc5a" diff --git a/deploy/index-image/community-kubevirt-hyperconverged/1.10.0/manifests/kubevirt-hyperconverged-operator.v1.10.0.clusterserviceversion.yaml b/deploy/index-image/community-kubevirt-hyperconverged/1.10.0/manifests/kubevirt-hyperconverged-operator.v1.10.0.clusterserviceversion.yaml index 11e7a99a3f..1ad914bc14 100644 --- a/deploy/index-image/community-kubevirt-hyperconverged/1.10.0/manifests/kubevirt-hyperconverged-operator.v1.10.0.clusterserviceversion.yaml +++ b/deploy/index-image/community-kubevirt-hyperconverged/1.10.0/manifests/kubevirt-hyperconverged-operator.v1.10.0.clusterserviceversion.yaml @@ -766,18 +766,6 @@ spec: - update - delete - patch - - apiGroups: - - coordination.k8s.io - resources: - - leases - verbs: - - get - - list - - watch - - delete - - update - - create - - patch - apiGroups: - "" resources: @@ -1038,6 +1026,14 @@ spec: - get - list - watch + - apiGroups: + - "" + resources: + - namespaces + verbs: + - get + - list + - watch - apiGroups: - instancetype.kubevirt.io resources: @@ -1108,18 +1104,6 @@ spec: - update - create - patch - - apiGroups: - - coordination.k8s.io - resources: - - leases - verbs: - - get - - list - - watch - - delete - - update - - create - - patch - apiGroups: - "" resources: @@ -1358,6 +1342,18 @@ spec: - list - get - watch + - apiGroups: + - coordination.k8s.io + resources: + - leases + verbs: + - get + - list + - watch + - delete + - update + - create + - patch - apiGroups: - kubevirt.io resources: @@ -1826,6 +1822,15 @@ spec: - get - list - watch + - apiGroups: + - instancetype.kubevirt.io + resources: + - virtualmachineclusterinstancetypes + - virtualmachineclusterpreferences + verbs: + - get + - list + - watch - apiGroups: - authentication.k8s.io resources: @@ -3050,7 +3055,7 @@ spec: - name: HCO_KV_IO_VERSION value: 1.10.0 - name: KUBEVIRT_VERSION - value: v1.0.0 + value: v1.0.1 - name: CDI_VERSION value: v1.57.0 - name: NETWORK_ADDONS_VERSION @@ -3379,28 +3384,28 @@ spec: - virt-operator env: - name: VIRT_OPERATOR_IMAGE - value: quay.io/kubevirt/virt-operator@sha256:ddcd86fdaa29fc451f6b9c06d18642bdd12b344e49a82330445a0ed084e4e231 + value: quay.io/kubevirt/virt-operator@sha256:cbca7f93afbb18a840f7e763e4c03aeeb1fd97967f381c12c443cc179b51da29 - name: WATCH_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.annotations['olm.targetNamespaces'] - name: VIRT_API_IMAGE - value: quay.io/kubevirt/virt-api@sha256:5c375d9919853f9eec63bd68a0910fbd4d216235ec8e2835e6261d5778a7ae0b + value: quay.io/kubevirt/virt-api@sha256:707003b221496b4432da2f507d1e36e528b45888b5d321e06d460f0678da44ae - name: VIRT_CONTROLLER_IMAGE - value: quay.io/kubevirt/virt-controller@sha256:248c61bb6662bda1e2b3f2da3e4ef7aca2802d96b38a848bfa631dad5295ef92 + value: quay.io/kubevirt/virt-controller@sha256:0789fafed2913b35a771e3db882748502b3250be04ece86d97f30201779b4e54 - name: VIRT_HANDLER_IMAGE - value: quay.io/kubevirt/virt-handler@sha256:b33b761bfc9e78121825b1c243e126fa6378ba973bbd1c38fe967f763388522f + value: quay.io/kubevirt/virt-handler@sha256:138dfda5fea8622f3da0d6413fe214fef80c2fd6a6f9533592a0dbfa7e1865b5 - name: VIRT_LAUNCHER_IMAGE - value: quay.io/kubevirt/virt-launcher@sha256:b9b04d9d06ada4486e6acaa08e99aaa6a050e1843624ba4f291f8d167ebec36b + value: quay.io/kubevirt/virt-launcher@sha256:4c5fce3de2e2589197de72fb0c9436490ea318aca952c05a622c43e067023f35 - name: VIRT_EXPORTPROXY_IMAGE - value: quay.io/kubevirt/virt-exportproxy@sha256:3e8fe55dc7ebeb86ff0be428f3d29d7768ee442471b5f1f0590faaef2c5682af + value: quay.io/kubevirt/virt-exportproxy@sha256:f14444b0200a85efb4b3c176caefe70aabba7d295e33d2af14027a59ce297e24 - name: VIRT_EXPORTSERVER_IMAGE - value: quay.io/kubevirt/virt-exportserver@sha256:e93ae0eb0af085c0a4eb9d059e71cfd18d04e8f8932255704982f16eddaa0103 + value: quay.io/kubevirt/virt-exportserver@sha256:73311f79a9c71007f8572b3cc40cd6f6da404c7ef0a9c6509fb717d979546582 - name: GS_IMAGE - value: quay.io/kubevirt/libguestfs-tools@sha256:12cf13c034ef0e87c6d6a9e1e26fa0779348e26b1e20fa4cf5fe8074e1b5581b + value: quay.io/kubevirt/libguestfs-tools@sha256:b7e248be783691daad1326cf41641d5042be80c5c057ebc5315ca7a1619b0581 - name: KUBEVIRT_VERSION - value: v1.0.0 - image: quay.io/kubevirt/virt-operator@sha256:ddcd86fdaa29fc451f6b9c06d18642bdd12b344e49a82330445a0ed084e4e231 + value: v1.0.1 + image: quay.io/kubevirt/virt-operator@sha256:cbca7f93afbb18a840f7e763e4c03aeeb1fd97967f381c12c443cc179b51da29 imagePullPolicy: IfNotPresent name: virt-operator ports: @@ -3910,6 +3915,18 @@ spec: - routes/custom-host verbs: - create + - apiGroups: + - coordination.k8s.io + resources: + - leases + verbs: + - get + - list + - watch + - delete + - update + - create + - patch serviceAccountName: kubevirt-operator - rules: - apiGroups: @@ -4325,7 +4342,7 @@ spec: name: kubevirt-apiserver-proxy - image: quay.io/kubevirt-ui/kubevirt-plugin@sha256:e79027973b09aac75860f267c7d7f830599978c38a081001f404b9a1c3d2990f name: kubevirt-plugin - - image: quay.io/kubevirt/libguestfs-tools@sha256:12cf13c034ef0e87c6d6a9e1e26fa0779348e26b1e20fa4cf5fe8074e1b5581b + - image: quay.io/kubevirt/libguestfs-tools@sha256:b7e248be783691daad1326cf41641d5042be80c5c057ebc5315ca7a1619b0581 name: libguestfs-tools - image: registry.k8s.io/sig-storage/livenessprobe@sha256:4dc0b87ccd69f9865b89234d8555d3a614ab0a16ed94a3016ffd27f8106132ce name: livenessprobe @@ -4347,19 +4364,19 @@ spec: name: ovs-cni-plugin - image: quay.io/kubevirt/ssp-operator@sha256:49cac00844f091d6e80301573e00235d685415185ec29c89b4bd7361f938711e name: ssp-operator - - image: quay.io/kubevirt/virt-api@sha256:5c375d9919853f9eec63bd68a0910fbd4d216235ec8e2835e6261d5778a7ae0b + - image: quay.io/kubevirt/virt-api@sha256:707003b221496b4432da2f507d1e36e528b45888b5d321e06d460f0678da44ae name: virt-api - - image: quay.io/kubevirt/virt-controller@sha256:248c61bb6662bda1e2b3f2da3e4ef7aca2802d96b38a848bfa631dad5295ef92 + - image: quay.io/kubevirt/virt-controller@sha256:0789fafed2913b35a771e3db882748502b3250be04ece86d97f30201779b4e54 name: virt-controller - - image: quay.io/kubevirt/virt-exportproxy@sha256:3e8fe55dc7ebeb86ff0be428f3d29d7768ee442471b5f1f0590faaef2c5682af + - image: quay.io/kubevirt/virt-exportproxy@sha256:f14444b0200a85efb4b3c176caefe70aabba7d295e33d2af14027a59ce297e24 name: virt-exportproxy - - image: quay.io/kubevirt/virt-exportserver@sha256:e93ae0eb0af085c0a4eb9d059e71cfd18d04e8f8932255704982f16eddaa0103 + - image: quay.io/kubevirt/virt-exportserver@sha256:73311f79a9c71007f8572b3cc40cd6f6da404c7ef0a9c6509fb717d979546582 name: virt-exportserver - - image: quay.io/kubevirt/virt-handler@sha256:b33b761bfc9e78121825b1c243e126fa6378ba973bbd1c38fe967f763388522f + - image: quay.io/kubevirt/virt-handler@sha256:138dfda5fea8622f3da0d6413fe214fef80c2fd6a6f9533592a0dbfa7e1865b5 name: virt-handler - - image: quay.io/kubevirt/virt-launcher@sha256:b9b04d9d06ada4486e6acaa08e99aaa6a050e1843624ba4f291f8d167ebec36b + - image: quay.io/kubevirt/virt-launcher@sha256:4c5fce3de2e2589197de72fb0c9436490ea318aca952c05a622c43e067023f35 name: virt-launcher - - image: quay.io/kubevirt/virt-operator@sha256:ddcd86fdaa29fc451f6b9c06d18642bdd12b344e49a82330445a0ed084e4e231 + - image: quay.io/kubevirt/virt-operator@sha256:cbca7f93afbb18a840f7e763e4c03aeeb1fd97967f381c12c443cc179b51da29 name: virt-operator - image: quay.io/kubevirt/virtio-container-disk@sha256:f8e71a3a930ce95d646d80862d5ff6f9d3ed7ef2541dd2e2acec0bce26274734 name: virtio-container-disk diff --git a/deploy/index-image/community-kubevirt-hyperconverged/1.10.0/manifests/kubevirt00.crd.yaml b/deploy/index-image/community-kubevirt-hyperconverged/1.10.0/manifests/kubevirt00.crd.yaml index b701b7bea0..6779479f7f 100644 --- a/deploy/index-image/community-kubevirt-hyperconverged/1.10.0/manifests/kubevirt00.crd.yaml +++ b/deploy/index-image/community-kubevirt-hyperconverged/1.10.0/manifests/kubevirt00.crd.yaml @@ -461,6 +461,7 @@ spec: type: integer type: object machineType: + description: Deprecated. Use architectureConfiguration instead. type: string mediatedDevicesConfiguration: description: MediatedDevicesConfiguration holds information about @@ -3459,6 +3460,7 @@ spec: type: integer type: object machineType: + description: Deprecated. Use architectureConfiguration instead. type: string mediatedDevicesConfiguration: description: MediatedDevicesConfiguration holds information about diff --git a/deploy/olm-catalog/community-kubevirt-hyperconverged/1.10.0/manifests/kubevirt-hyperconverged-operator.v1.10.0.clusterserviceversion.yaml b/deploy/olm-catalog/community-kubevirt-hyperconverged/1.10.0/manifests/kubevirt-hyperconverged-operator.v1.10.0.clusterserviceversion.yaml index 1a9e8fb4f0..3a3090e29e 100644 --- a/deploy/olm-catalog/community-kubevirt-hyperconverged/1.10.0/manifests/kubevirt-hyperconverged-operator.v1.10.0.clusterserviceversion.yaml +++ b/deploy/olm-catalog/community-kubevirt-hyperconverged/1.10.0/manifests/kubevirt-hyperconverged-operator.v1.10.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.10.0-unstable - createdAt: "2023-10-21 05:13:26" + createdAt: "2023-10-23 05:13:48" description: A unified operator deploying and controlling KubeVirt and its supporting operators with opinionated defaults operatorframework.io/initialization-resource: '{"apiVersion":"hco.kubevirt.io/v1beta1","kind":"HyperConverged","metadata":{"annotations":{"deployOVS":"false"},"name":"kubevirt-hyperconverged","namespace":"kubevirt-hyperconverged"},"spec":{}}' @@ -766,18 +766,6 @@ spec: - update - delete - patch - - apiGroups: - - coordination.k8s.io - resources: - - leases - verbs: - - get - - list - - watch - - delete - - update - - create - - patch - apiGroups: - "" resources: @@ -1038,6 +1026,14 @@ spec: - get - list - watch + - apiGroups: + - "" + resources: + - namespaces + verbs: + - get + - list + - watch - apiGroups: - instancetype.kubevirt.io resources: @@ -1108,18 +1104,6 @@ spec: - update - create - patch - - apiGroups: - - coordination.k8s.io - resources: - - leases - verbs: - - get - - list - - watch - - delete - - update - - create - - patch - apiGroups: - "" resources: @@ -1358,6 +1342,18 @@ spec: - list - get - watch + - apiGroups: + - coordination.k8s.io + resources: + - leases + verbs: + - get + - list + - watch + - delete + - update + - create + - patch - apiGroups: - kubevirt.io resources: @@ -1826,6 +1822,15 @@ spec: - get - list - watch + - apiGroups: + - instancetype.kubevirt.io + resources: + - virtualmachineclusterinstancetypes + - virtualmachineclusterpreferences + verbs: + - get + - list + - watch - apiGroups: - authentication.k8s.io resources: @@ -3050,7 +3055,7 @@ spec: - name: HCO_KV_IO_VERSION value: 1.10.0 - name: KUBEVIRT_VERSION - value: v1.0.0 + value: v1.0.1 - name: CDI_VERSION value: v1.57.0 - name: NETWORK_ADDONS_VERSION @@ -3379,28 +3384,28 @@ spec: - virt-operator env: - name: VIRT_OPERATOR_IMAGE - value: quay.io/kubevirt/virt-operator@sha256:ddcd86fdaa29fc451f6b9c06d18642bdd12b344e49a82330445a0ed084e4e231 + value: quay.io/kubevirt/virt-operator@sha256:cbca7f93afbb18a840f7e763e4c03aeeb1fd97967f381c12c443cc179b51da29 - name: WATCH_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.annotations['olm.targetNamespaces'] - name: VIRT_API_IMAGE - value: quay.io/kubevirt/virt-api@sha256:5c375d9919853f9eec63bd68a0910fbd4d216235ec8e2835e6261d5778a7ae0b + value: quay.io/kubevirt/virt-api@sha256:707003b221496b4432da2f507d1e36e528b45888b5d321e06d460f0678da44ae - name: VIRT_CONTROLLER_IMAGE - value: quay.io/kubevirt/virt-controller@sha256:248c61bb6662bda1e2b3f2da3e4ef7aca2802d96b38a848bfa631dad5295ef92 + value: quay.io/kubevirt/virt-controller@sha256:0789fafed2913b35a771e3db882748502b3250be04ece86d97f30201779b4e54 - name: VIRT_HANDLER_IMAGE - value: quay.io/kubevirt/virt-handler@sha256:b33b761bfc9e78121825b1c243e126fa6378ba973bbd1c38fe967f763388522f + value: quay.io/kubevirt/virt-handler@sha256:138dfda5fea8622f3da0d6413fe214fef80c2fd6a6f9533592a0dbfa7e1865b5 - name: VIRT_LAUNCHER_IMAGE - value: quay.io/kubevirt/virt-launcher@sha256:b9b04d9d06ada4486e6acaa08e99aaa6a050e1843624ba4f291f8d167ebec36b + value: quay.io/kubevirt/virt-launcher@sha256:4c5fce3de2e2589197de72fb0c9436490ea318aca952c05a622c43e067023f35 - name: VIRT_EXPORTPROXY_IMAGE - value: quay.io/kubevirt/virt-exportproxy@sha256:3e8fe55dc7ebeb86ff0be428f3d29d7768ee442471b5f1f0590faaef2c5682af + value: quay.io/kubevirt/virt-exportproxy@sha256:f14444b0200a85efb4b3c176caefe70aabba7d295e33d2af14027a59ce297e24 - name: VIRT_EXPORTSERVER_IMAGE - value: quay.io/kubevirt/virt-exportserver@sha256:e93ae0eb0af085c0a4eb9d059e71cfd18d04e8f8932255704982f16eddaa0103 + value: quay.io/kubevirt/virt-exportserver@sha256:73311f79a9c71007f8572b3cc40cd6f6da404c7ef0a9c6509fb717d979546582 - name: GS_IMAGE - value: quay.io/kubevirt/libguestfs-tools@sha256:12cf13c034ef0e87c6d6a9e1e26fa0779348e26b1e20fa4cf5fe8074e1b5581b + value: quay.io/kubevirt/libguestfs-tools@sha256:b7e248be783691daad1326cf41641d5042be80c5c057ebc5315ca7a1619b0581 - name: KUBEVIRT_VERSION - value: v1.0.0 - image: quay.io/kubevirt/virt-operator@sha256:ddcd86fdaa29fc451f6b9c06d18642bdd12b344e49a82330445a0ed084e4e231 + value: v1.0.1 + image: quay.io/kubevirt/virt-operator@sha256:cbca7f93afbb18a840f7e763e4c03aeeb1fd97967f381c12c443cc179b51da29 imagePullPolicy: IfNotPresent name: virt-operator ports: @@ -3910,6 +3915,18 @@ spec: - routes/custom-host verbs: - create + - apiGroups: + - coordination.k8s.io + resources: + - leases + verbs: + - get + - list + - watch + - delete + - update + - create + - patch serviceAccountName: kubevirt-operator - rules: - apiGroups: @@ -4325,7 +4342,7 @@ spec: name: kubevirt-apiserver-proxy - image: quay.io/kubevirt-ui/kubevirt-plugin@sha256:e79027973b09aac75860f267c7d7f830599978c38a081001f404b9a1c3d2990f name: kubevirt-plugin - - image: quay.io/kubevirt/libguestfs-tools@sha256:12cf13c034ef0e87c6d6a9e1e26fa0779348e26b1e20fa4cf5fe8074e1b5581b + - image: quay.io/kubevirt/libguestfs-tools@sha256:b7e248be783691daad1326cf41641d5042be80c5c057ebc5315ca7a1619b0581 name: libguestfs-tools - image: registry.k8s.io/sig-storage/livenessprobe@sha256:4dc0b87ccd69f9865b89234d8555d3a614ab0a16ed94a3016ffd27f8106132ce name: livenessprobe @@ -4347,19 +4364,19 @@ spec: name: ovs-cni-plugin - image: quay.io/kubevirt/ssp-operator@sha256:49cac00844f091d6e80301573e00235d685415185ec29c89b4bd7361f938711e name: ssp-operator - - image: quay.io/kubevirt/virt-api@sha256:5c375d9919853f9eec63bd68a0910fbd4d216235ec8e2835e6261d5778a7ae0b + - image: quay.io/kubevirt/virt-api@sha256:707003b221496b4432da2f507d1e36e528b45888b5d321e06d460f0678da44ae name: virt-api - - image: quay.io/kubevirt/virt-controller@sha256:248c61bb6662bda1e2b3f2da3e4ef7aca2802d96b38a848bfa631dad5295ef92 + - image: quay.io/kubevirt/virt-controller@sha256:0789fafed2913b35a771e3db882748502b3250be04ece86d97f30201779b4e54 name: virt-controller - - image: quay.io/kubevirt/virt-exportproxy@sha256:3e8fe55dc7ebeb86ff0be428f3d29d7768ee442471b5f1f0590faaef2c5682af + - image: quay.io/kubevirt/virt-exportproxy@sha256:f14444b0200a85efb4b3c176caefe70aabba7d295e33d2af14027a59ce297e24 name: virt-exportproxy - - image: quay.io/kubevirt/virt-exportserver@sha256:e93ae0eb0af085c0a4eb9d059e71cfd18d04e8f8932255704982f16eddaa0103 + - image: quay.io/kubevirt/virt-exportserver@sha256:73311f79a9c71007f8572b3cc40cd6f6da404c7ef0a9c6509fb717d979546582 name: virt-exportserver - - image: quay.io/kubevirt/virt-handler@sha256:b33b761bfc9e78121825b1c243e126fa6378ba973bbd1c38fe967f763388522f + - image: quay.io/kubevirt/virt-handler@sha256:138dfda5fea8622f3da0d6413fe214fef80c2fd6a6f9533592a0dbfa7e1865b5 name: virt-handler - - image: quay.io/kubevirt/virt-launcher@sha256:b9b04d9d06ada4486e6acaa08e99aaa6a050e1843624ba4f291f8d167ebec36b + - image: quay.io/kubevirt/virt-launcher@sha256:4c5fce3de2e2589197de72fb0c9436490ea318aca952c05a622c43e067023f35 name: virt-launcher - - image: quay.io/kubevirt/virt-operator@sha256:ddcd86fdaa29fc451f6b9c06d18642bdd12b344e49a82330445a0ed084e4e231 + - image: quay.io/kubevirt/virt-operator@sha256:cbca7f93afbb18a840f7e763e4c03aeeb1fd97967f381c12c443cc179b51da29 name: virt-operator - image: quay.io/kubevirt/virtio-container-disk@sha256:f8e71a3a930ce95d646d80862d5ff6f9d3ed7ef2541dd2e2acec0bce26274734 name: virtio-container-disk diff --git a/deploy/olm-catalog/community-kubevirt-hyperconverged/1.10.0/manifests/kubevirt00.crd.yaml b/deploy/olm-catalog/community-kubevirt-hyperconverged/1.10.0/manifests/kubevirt00.crd.yaml index b701b7bea0..6779479f7f 100644 --- a/deploy/olm-catalog/community-kubevirt-hyperconverged/1.10.0/manifests/kubevirt00.crd.yaml +++ b/deploy/olm-catalog/community-kubevirt-hyperconverged/1.10.0/manifests/kubevirt00.crd.yaml @@ -461,6 +461,7 @@ spec: type: integer type: object machineType: + description: Deprecated. Use architectureConfiguration instead. type: string mediatedDevicesConfiguration: description: MediatedDevicesConfiguration holds information about @@ -3459,6 +3460,7 @@ spec: type: integer type: object machineType: + description: Deprecated. Use architectureConfiguration instead. type: string mediatedDevicesConfiguration: description: MediatedDevicesConfiguration holds information about diff --git a/deploy/operator.yaml b/deploy/operator.yaml index fdc55d17f2..1c953608fc 100644 --- a/deploy/operator.yaml +++ b/deploy/operator.yaml @@ -54,7 +54,7 @@ spec: - name: HCO_KV_IO_VERSION value: 1.10.0 - name: KUBEVIRT_VERSION - value: v1.0.0 + value: v1.0.1 - name: CDI_VERSION value: v1.57.0 - name: NETWORK_ADDONS_VERSION @@ -402,28 +402,28 @@ spec: - virt-operator env: - name: VIRT_OPERATOR_IMAGE - value: quay.io/kubevirt/virt-operator@sha256:ddcd86fdaa29fc451f6b9c06d18642bdd12b344e49a82330445a0ed084e4e231 + value: quay.io/kubevirt/virt-operator@sha256:cbca7f93afbb18a840f7e763e4c03aeeb1fd97967f381c12c443cc179b51da29 - name: WATCH_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.annotations['olm.targetNamespaces'] - name: VIRT_API_IMAGE - value: quay.io/kubevirt/virt-api@sha256:5c375d9919853f9eec63bd68a0910fbd4d216235ec8e2835e6261d5778a7ae0b + value: quay.io/kubevirt/virt-api@sha256:707003b221496b4432da2f507d1e36e528b45888b5d321e06d460f0678da44ae - name: VIRT_CONTROLLER_IMAGE - value: quay.io/kubevirt/virt-controller@sha256:248c61bb6662bda1e2b3f2da3e4ef7aca2802d96b38a848bfa631dad5295ef92 + value: quay.io/kubevirt/virt-controller@sha256:0789fafed2913b35a771e3db882748502b3250be04ece86d97f30201779b4e54 - name: VIRT_HANDLER_IMAGE - value: quay.io/kubevirt/virt-handler@sha256:b33b761bfc9e78121825b1c243e126fa6378ba973bbd1c38fe967f763388522f + value: quay.io/kubevirt/virt-handler@sha256:138dfda5fea8622f3da0d6413fe214fef80c2fd6a6f9533592a0dbfa7e1865b5 - name: VIRT_LAUNCHER_IMAGE - value: quay.io/kubevirt/virt-launcher@sha256:b9b04d9d06ada4486e6acaa08e99aaa6a050e1843624ba4f291f8d167ebec36b + value: quay.io/kubevirt/virt-launcher@sha256:4c5fce3de2e2589197de72fb0c9436490ea318aca952c05a622c43e067023f35 - name: VIRT_EXPORTPROXY_IMAGE - value: quay.io/kubevirt/virt-exportproxy@sha256:3e8fe55dc7ebeb86ff0be428f3d29d7768ee442471b5f1f0590faaef2c5682af + value: quay.io/kubevirt/virt-exportproxy@sha256:f14444b0200a85efb4b3c176caefe70aabba7d295e33d2af14027a59ce297e24 - name: VIRT_EXPORTSERVER_IMAGE - value: quay.io/kubevirt/virt-exportserver@sha256:e93ae0eb0af085c0a4eb9d059e71cfd18d04e8f8932255704982f16eddaa0103 + value: quay.io/kubevirt/virt-exportserver@sha256:73311f79a9c71007f8572b3cc40cd6f6da404c7ef0a9c6509fb717d979546582 - name: GS_IMAGE - value: quay.io/kubevirt/libguestfs-tools@sha256:12cf13c034ef0e87c6d6a9e1e26fa0779348e26b1e20fa4cf5fe8074e1b5581b + value: quay.io/kubevirt/libguestfs-tools@sha256:b7e248be783691daad1326cf41641d5042be80c5c057ebc5315ca7a1619b0581 - name: KUBEVIRT_VERSION - value: v1.0.0 - image: quay.io/kubevirt/virt-operator@sha256:ddcd86fdaa29fc451f6b9c06d18642bdd12b344e49a82330445a0ed084e4e231 + value: v1.0.1 + image: quay.io/kubevirt/virt-operator@sha256:cbca7f93afbb18a840f7e763e4c03aeeb1fd97967f381c12c443cc179b51da29 imagePullPolicy: IfNotPresent name: virt-operator ports: diff --git a/hack/config b/hack/config index 4450e095ae..b2843a1f91 100644 --- a/hack/config +++ b/hack/config @@ -1,6 +1,6 @@ #!/bin/bash -KUBEVIRT_VERSION="v1.0.0" +KUBEVIRT_VERSION="v1.0.1" CDI_VERSION="v1.57.0" NETWORK_ADDONS_VERSION="v0.89.1" SSP_VERSION="v0.18.3" diff --git a/tests/go.mod b/tests/go.mod index 6006dc1123..e63cc4f3ed 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -25,10 +25,10 @@ require ( // ----- // to be able to bump k8s/* deps to 0.26.3, see: https://github.com/kubevirt/kubevirt/pull/9623 -// remove when we will move to kubevirt.io/kubevirt v1.0.0 -replace kubevirt.io/kubevirt => kubevirt.io/kubevirt v1.0.0 +// remove when we will move to kubevirt.io/kubevirt v1.0.1 +replace kubevirt.io/kubevirt => kubevirt.io/kubevirt v1.0.1 -replace kubevirt.io/client-go => kubevirt.io/client-go v1.0.0 +replace kubevirt.io/client-go => kubevirt.io/client-go v1.0.1 // ----- diff --git a/tests/go.sum b/tests/go.sum index a23e3fb1d6..748cec3a5a 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -182,8 +182,8 @@ github.com/elastic/go-sysinfo v1.0.1/go.mod h1:O/D5m1VpYLwGjCYzEt63g3Z1uO3jXfwyz github.com/elastic/go-sysinfo v1.1.1/go.mod h1:i1ZYdU10oLNfRzq4vq62BEwD2fH8KaWh6eh0ikPT9F0= github.com/elastic/go-windows v1.0.0/go.mod h1:TsU0Nrp7/y3+VwE82FoZF8gC/XFg/Elz6CcloAxnPgU= github.com/elastic/go-windows v1.0.1/go.mod h1:FoVvqWSun28vaDQPbj2Elfc0JahhPB7WQEGa3c814Ss= -github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153 h1:yUdfgN0XgIJw7foRItutHYUIhlcKzcSf5vDpdhQAKTc= github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= +github.com/elazarl/goproxy v0.0.0-20190911111923-ecfe977594f1 h1:yY9rWGoXv1U5pl4gxqlULARMQD7x0QG85lqEXTWysik= github.com/emicklei/go-restful v2.15.0+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= github.com/emicklei/go-restful/v3 v3.8.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= github.com/emicklei/go-restful/v3 v3.9.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= @@ -1523,15 +1523,14 @@ k8s.io/utils v0.0.0-20230505201702-9f6742963106 h1:EObNQ3TW2D+WptiYXlApGNLVy0zm/ k8s.io/utils v0.0.0-20230505201702-9f6742963106/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= kubevirt.io/api v1.0.1 h1:JvsinO+zBJ2VWRV5c8WLi5HmBIl2mYEB5OTbg54eK/Y= kubevirt.io/api v1.0.1/go.mod h1:CJ4vZsaWhVN3jNbyc9y3lIZhw8nUHbWjap0xHABQiqc= -kubevirt.io/client-go v1.0.0 h1:MMn41j/lFd+lJ7gWn7yuIZYW/aT9fI3bUimAuxAQ+Xk= -kubevirt.io/client-go v1.0.0/go.mod h1:zvYQ/L5OmTP2Pn7XcawtoR07p8VhgviADWtgdGCniWA= -kubevirt.io/containerized-data-importer v1.56.0 h1:3HjrFVRbzAkL/6MEUoNpaiNS+EuVXQ/Ox5h8wDw5kTs= +kubevirt.io/client-go v1.0.1 h1:Gu95z955ocbWbdO27xnQsV38uB0zjvqmmPda6/DRpDA= +kubevirt.io/client-go v1.0.1/go.mod h1:i47JPMmNbCCdgPnfCa/kXAFtZkS1BIl3pWm9jOwQGoE= kubevirt.io/containerized-data-importer-api v1.57.0 h1:IpRCUyDS0x7BaVa5q5MCzuWRAfvXT54GpEnNJke5hSE= kubevirt.io/containerized-data-importer-api v1.57.0/go.mod h1:Y/8ETgHS1GjO89bl682DPtQOYEU/1ctPFBz6Sjxm4DM= 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.0.0 h1:9K21GCiqTW8vcs9Y8izRsU+0zP3TPHNS15teHu/ieuY= -kubevirt.io/kubevirt v1.0.0/go.mod h1:k6z7NJFBFh6EJKrK8kBIs5+rvTC9Ov+cExtFuSxdcg4= +kubevirt.io/kubevirt v1.0.1 h1:VKP6q13umUodxI8Z1vPdBly0+U7bqHgP+1EVpoWkvV4= +kubevirt.io/kubevirt v1.0.1/go.mod h1:Tzdi2xxZhFBPKomvjIEdQqPsgPFkjd73fYbDukCn9c4= kubevirt.io/managed-tenant-quota v1.1.9 h1:NVNll98XZfMirxLVWl3VB8kyXy/JUB2nhMkDCC+qZ9I= kubevirt.io/managed-tenant-quota v1.1.9/go.mod h1:E5CkhJR9WPj44suhmhJAuWdEHcdKnbh2cKSf5D5jMvk= kubevirt.io/qe-tools v0.1.8 h1:Ar7qicmzHdd+Ia+6rjHDg3D7GReIyq7QFXoC4F7TjhQ= diff --git a/tests/vendor/kubevirt.io/kubevirt/pkg/container-disk/BUILD.bazel b/tests/vendor/kubevirt.io/kubevirt/pkg/container-disk/BUILD.bazel index 7f68642b07..b171d7598b 100644 --- a/tests/vendor/kubevirt.io/kubevirt/pkg/container-disk/BUILD.bazel +++ b/tests/vendor/kubevirt.io/kubevirt/pkg/container-disk/BUILD.bazel @@ -15,7 +15,6 @@ go_library( "//pkg/util:go_default_library", "//pkg/virt-config:go_default_library", "//staging/src/kubevirt.io/api/core/v1:go_default_library", - "//staging/src/kubevirt.io/client-go/log:go_default_library", "//vendor/k8s.io/api/core/v1:go_default_library", "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", ], diff --git a/tests/vendor/kubevirt.io/kubevirt/pkg/container-disk/container-disk.go b/tests/vendor/kubevirt.io/kubevirt/pkg/container-disk/container-disk.go index e0f77e0849..ddf103332d 100644 --- a/tests/vendor/kubevirt.io/kubevirt/pkg/container-disk/container-disk.go +++ b/tests/vendor/kubevirt.io/kubevirt/pkg/container-disk/container-disk.go @@ -28,8 +28,6 @@ import ( "strconv" "strings" - "kubevirt.io/client-go/log" - kubev1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/resource" @@ -326,8 +324,6 @@ func generateContainerFromVolume(vmi *v1.VirtualMachineInstance, config *virtcon name = diskContainerName copyPathArg := path.Join(volumeMountDir, mountedDiskName) args = []string{"--copy-path", copyPathArg} - - log.Log.Object(vmi).Infof("arguments for container-disk \"%s\": --copy-path %s", name, copyPathArg) } noPrivilegeEscalation := false diff --git a/tests/vendor/kubevirt.io/kubevirt/pkg/controller/controller.go b/tests/vendor/kubevirt.io/kubevirt/pkg/controller/controller.go index 62fcb977b7..a152de860c 100644 --- a/tests/vendor/kubevirt.io/kubevirt/pkg/controller/controller.go +++ b/tests/vendor/kubevirt.io/kubevirt/pkg/controller/controller.go @@ -387,20 +387,29 @@ func AttachmentPods(ownerPod *k8sv1.Pod, podInformer cache.SharedIndexInformer) return attachmentPods, nil } -func ApplyNetworkInterfaceRequestOnVMISpec(vmiSpec *v1.VirtualMachineInstanceSpec, request *v1.VirtualMachineInterfaceRequest) *v1.VirtualMachineInstanceSpec { +func ApplyNetworkInterfaceRequestOnVMTemplateSpec(vmiSpec *v1.VirtualMachineInstanceSpec, request *v1.VirtualMachineInterfaceRequest) *v1.VirtualMachineInstanceSpec { switch { case request.AddInterfaceOptions != nil: - if iface := vmispec.LookupInterfaceByName(vmiSpec.Domain.Devices.Interfaces, request.AddInterfaceOptions.Name); iface == nil { - newNetwork, newIface := newNetworkInterface(request.AddInterfaceOptions.Name, request.AddInterfaceOptions.NetworkAttachmentDefinitionName) - vmiSpec.Networks = append(vmiSpec.Networks, newNetwork) - vmiSpec.Domain.Devices.Interfaces = append(vmiSpec.Domain.Devices.Interfaces, newIface) - } + vmiSpec = ApplyNetworkInterfaceAddRequest(vmiSpec, request.AddInterfaceOptions) case request.RemoveInterfaceOptions != nil: - if iface := vmispec.LookupInterfaceByName(vmiSpec.Domain.Devices.Interfaces, request.RemoveInterfaceOptions.Name); iface != nil { - iface.State = v1.InterfaceStateAbsent - } + vmiSpec = ApplyNetworkInterfaceRemoveRequest(vmiSpec, request.RemoveInterfaceOptions) } + return vmiSpec +} +func ApplyNetworkInterfaceAddRequest(vmiSpec *v1.VirtualMachineInstanceSpec, options *v1.AddInterfaceOptions) *v1.VirtualMachineInstanceSpec { + if iface := vmispec.LookupInterfaceByName(vmiSpec.Domain.Devices.Interfaces, options.Name); iface == nil { + newNetwork, newIface := newNetworkInterface(options.Name, options.NetworkAttachmentDefinitionName) + vmiSpec.Networks = append(vmiSpec.Networks, newNetwork) + vmiSpec.Domain.Devices.Interfaces = append(vmiSpec.Domain.Devices.Interfaces, newIface) + } + return vmiSpec +} + +func ApplyNetworkInterfaceRemoveRequest(vmiSpec *v1.VirtualMachineInstanceSpec, options *v1.RemoveInterfaceOptions) *v1.VirtualMachineInstanceSpec { + if iface := vmispec.LookupInterfaceByName(vmiSpec.Domain.Devices.Interfaces, options.Name); iface != nil { + iface.State = v1.InterfaceStateAbsent + } return vmiSpec } diff --git a/tests/vendor/kubevirt.io/kubevirt/pkg/host-disk/host-disk.go b/tests/vendor/kubevirt.io/kubevirt/pkg/host-disk/host-disk.go index 7ada596d87..b81d93b876 100644 --- a/tests/vendor/kubevirt.io/kubevirt/pkg/host-disk/host-disk.go +++ b/tests/vendor/kubevirt.io/kubevirt/pkg/host-disk/host-disk.go @@ -110,6 +110,11 @@ func replaceForHostDisk(volumeSource *v1.VolumeSource, volumeName string, pvcVol isShared := types.HasSharedAccessMode(volumeStatus.PersistentVolumeClaimInfo.AccessModes) file := getPVCDiskImgPath(volumeName, "disk.img") capacity := volumeStatus.PersistentVolumeClaimInfo.Capacity[k8sv1.ResourceStorage] + requested := volumeStatus.PersistentVolumeClaimInfo.Requests[k8sv1.ResourceStorage] + // Use the requested size if it is smaller than the overall capacity of the PVC to ensure the created disks are the size requested by the user + if capacity.Value() > requested.Value() { + capacity = requested + } // The host-disk must be 1MiB-aligned. If the volume specifies a misaligned size, shrink it down to the nearest multiple of 1MiB size := util.AlignImageSizeTo1MiB(capacity.Value(), log.Log) if size == 0 { diff --git a/tests/vendor/kubevirt.io/kubevirt/pkg/instancetype/instancetype.go b/tests/vendor/kubevirt.io/kubevirt/pkg/instancetype/instancetype.go index 643035206e..baf782fcc5 100644 --- a/tests/vendor/kubevirt.io/kubevirt/pkg/instancetype/instancetype.go +++ b/tests/vendor/kubevirt.io/kubevirt/pkg/instancetype/instancetype.go @@ -105,6 +105,13 @@ func CreateControllerRevision(vm *virtv1.VirtualMachine, object runtime.Object) Name: revisionName, Namespace: vm.Namespace, OwnerReferences: []metav1.OwnerReference{*metav1.NewControllerRef(vm, virtv1.VirtualMachineGroupVersionKind)}, + Labels: map[string]string{ + apiinstancetype.ControllerRevisionObjectGenerationLabel: fmt.Sprintf("%d", metaObj.GetGeneration()), + apiinstancetype.ControllerRevisionObjectKindLabel: obj.GetObjectKind().GroupVersionKind().Kind, + apiinstancetype.ControllerRevisionObjectNameLabel: metaObj.GetName(), + apiinstancetype.ControllerRevisionObjectUIDLabel: string(metaObj.GetUID()), + apiinstancetype.ControllerRevisionObjectVersionLabel: obj.GetObjectKind().GroupVersionKind().Version, + }, }, Data: runtime.RawExtension{ Object: obj, @@ -1320,7 +1327,7 @@ func applyFirmwarePreferences(preferenceSpec *instancetypev1beta1.VirtualMachine vmiSpec.Domain.Firmware.Bootloader.BIOS = &virtv1.BIOS{} } - if preferenceSpec.Firmware.PreferredUseBiosSerial != nil && vmiSpec.Domain.Firmware.Bootloader.BIOS != nil { + if preferenceSpec.Firmware.PreferredUseBiosSerial != nil && vmiSpec.Domain.Firmware.Bootloader.BIOS != nil && vmiSpec.Domain.Firmware.Bootloader.BIOS.UseSerial == nil { vmiSpec.Domain.Firmware.Bootloader.BIOS.UseSerial = pointer.Bool(*preferenceSpec.Firmware.PreferredUseBiosSerial) } @@ -1328,7 +1335,7 @@ func applyFirmwarePreferences(preferenceSpec *instancetypev1beta1.VirtualMachine vmiSpec.Domain.Firmware.Bootloader.EFI = &virtv1.EFI{} } - if preferenceSpec.Firmware.PreferredUseSecureBoot != nil && vmiSpec.Domain.Firmware.Bootloader.EFI != nil { + if preferenceSpec.Firmware.PreferredUseSecureBoot != nil && vmiSpec.Domain.Firmware.Bootloader.EFI != nil && vmiSpec.Domain.Firmware.Bootloader.EFI.SecureBoot == nil { vmiSpec.Domain.Firmware.Bootloader.EFI.SecureBoot = pointer.Bool(*preferenceSpec.Firmware.PreferredUseSecureBoot) } } diff --git a/tests/vendor/kubevirt.io/kubevirt/pkg/network/vmispec/interface.go b/tests/vendor/kubevirt.io/kubevirt/pkg/network/vmispec/interface.go index f7378165a1..6e769f1da2 100644 --- a/tests/vendor/kubevirt.io/kubevirt/pkg/network/vmispec/interface.go +++ b/tests/vendor/kubevirt.io/kubevirt/pkg/network/vmispec/interface.go @@ -128,30 +128,3 @@ func LookupInterfaceByName(ifaces []v1.Interface, name string) *v1.Interface { } return nil } - -// InterfacesNames returns slice with the names of the given interfaces. -func InterfacesNames(interfaces []v1.Interface) []string { - var ifaceNames []string - for _, iface := range interfaces { - ifaceNames = append(ifaceNames, iface.Name) - } - return ifaceNames -} - -// FilterStatusInterfacesByNames returns filtered slice of interfaces by the given slice of names. -// Matching by the interface 'Name' attribute. -func FilterStatusInterfacesByNames(interfaces []v1.VirtualMachineInstanceNetworkInterface, names []string) []v1.VirtualMachineInstanceNetworkInterface { - lookupNameSet := map[string]struct{}{} - for _, name := range names { - lookupNameSet[name] = struct{}{} - } - - var filtered []v1.VirtualMachineInstanceNetworkInterface - for _, iface := range interfaces { - if _, exists := lookupNameSet[iface.Name]; exists { - filtered = append(filtered, iface) - } - } - - return filtered -} diff --git a/tests/vendor/kubevirt.io/kubevirt/pkg/storage/reservation/pr.go b/tests/vendor/kubevirt.io/kubevirt/pkg/storage/reservation/pr.go index 5ab0dec4c2..afda2c8b40 100644 --- a/tests/vendor/kubevirt.io/kubevirt/pkg/storage/reservation/pr.go +++ b/tests/vendor/kubevirt.io/kubevirt/pkg/storage/reservation/pr.go @@ -1,7 +1,6 @@ package reservation import ( - "fmt" "path/filepath" v1 "kubevirt.io/api/core/v1" @@ -20,15 +19,15 @@ func GetPrResourceName() string { } func GetPrHelperSocketDir() string { - return fmt.Sprintf(filepath.Join(sourceDaemonsPath, prHelperDir)) + return filepath.Join(sourceDaemonsPath, prHelperDir) } func GetPrHelperHostSocketDir() string { - return fmt.Sprintf(filepath.Join(hostSourceDaemonsPath, prHelperDir)) + return filepath.Join(hostSourceDaemonsPath, prHelperDir) } func GetPrHelperSocketPath() string { - return fmt.Sprintf(filepath.Join(GetPrHelperSocketDir(), prHelperSocket)) + return filepath.Join(GetPrHelperSocketDir(), prHelperSocket) } func GetPrHelperSocket() string { diff --git a/tests/vendor/kubevirt.io/kubevirt/pkg/storage/types/dv.go b/tests/vendor/kubevirt.io/kubevirt/pkg/storage/types/dv.go index 302100a4dc..bd94621680 100644 --- a/tests/vendor/kubevirt.io/kubevirt/pkg/storage/types/dv.go +++ b/tests/vendor/kubevirt.io/kubevirt/pkg/storage/types/dv.go @@ -66,83 +66,45 @@ func HasFailedDataVolumes(dvs []*cdiv1.DataVolume) bool { return false } -func GetCloneSourceWithInformers(vm *virtv1.VirtualMachine, dvSpec *cdiv1.DataVolumeSpec, dataSourceInformer cache.SharedInformer) (*CloneSource, error) { - var cloneSource *CloneSource - if dvSpec.Source != nil && dvSpec.Source.PVC != nil { - cloneSource = &CloneSource{ - Namespace: dvSpec.Source.PVC.Namespace, - Name: dvSpec.Source.PVC.Name, - } +// GetResolvedCloneSource resolves the clone source of a datavolume with sourceRef +// This will be moved to the CDI API package +func GetResolvedCloneSource(ctx context.Context, client kubecli.KubevirtClient, namespace string, dvSpec *cdiv1.DataVolumeSpec) (*cdiv1.DataVolumeSource, error) { + ns := namespace + source := dvSpec.Source - if cloneSource.Namespace == "" { - cloneSource.Namespace = vm.Namespace - } - } else if dvSpec.SourceRef != nil && dvSpec.SourceRef.Kind == "DataSource" { - ns := vm.Namespace + if dvSpec.SourceRef != nil && dvSpec.SourceRef.Kind == "DataSource" { if dvSpec.SourceRef.Namespace != nil { ns = *dvSpec.SourceRef.Namespace } - key := fmt.Sprintf("%v/%v", ns, dvSpec.SourceRef.Name) - obj, exists, err := dataSourceInformer.GetStore().GetByKey(key) + ds, err := client.CdiClient().CdiV1beta1().DataSources(ns).Get(ctx, dvSpec.SourceRef.Name, metav1.GetOptions{}) if err != nil { return nil, err - } else if !exists { - return nil, fmt.Errorf("DataSource %s/%s does not exist", ns, dvSpec.SourceRef.Name) } - ds := obj.(*cdiv1.DataSource) - - if ds.Spec.Source.PVC != nil { - cloneSource = &CloneSource{ - Namespace: ds.Spec.Source.PVC.Namespace, - Name: ds.Spec.Source.PVC.Name, - } - - if cloneSource.Namespace == "" { - cloneSource.Namespace = ns - } + source = &cdiv1.DataVolumeSource{ + PVC: ds.Spec.Source.PVC, + Snapshot: ds.Spec.Source.Snapshot, } } - return cloneSource, nil -} - -func GetCloneSource(ctx context.Context, client kubecli.KubevirtClient, namespace string, dvSpec *cdiv1.DataVolumeSpec) (*CloneSource, error) { - var cloneSource *CloneSource - if dvSpec.Source != nil && dvSpec.Source.PVC != nil { - cloneSource = &CloneSource{ - Namespace: dvSpec.Source.PVC.Namespace, - Name: dvSpec.Source.PVC.Name, - } - - if cloneSource.Namespace == "" { - cloneSource.Namespace = namespace - } - } else if dvSpec.SourceRef != nil && dvSpec.SourceRef.Kind == "DataSource" { - ns := namespace - if dvSpec.SourceRef.Namespace != nil { - ns = *dvSpec.SourceRef.Namespace - } - - ds, err := client.CdiClient().CdiV1beta1().DataSources(ns).Get(ctx, dvSpec.SourceRef.Name, metav1.GetOptions{}) - if err != nil { - return nil, err + if source == nil { + return source, nil + } + switch { + case source.PVC != nil: + if source.PVC.Namespace == "" { + source.PVC.Namespace = ns } - - if ds.Spec.Source.PVC != nil { - cloneSource = &CloneSource{ - Namespace: ds.Spec.Source.PVC.Namespace, - Name: ds.Spec.Source.PVC.Name, - } - - if cloneSource.Namespace == "" { - cloneSource.Namespace = ns - } + case source.Snapshot != nil: + if source.Snapshot.Namespace == "" { + source.Snapshot.Namespace = ns } + default: + source = nil } - return cloneSource, nil + return source, nil } func GenerateDataVolumeFromTemplate(clientset kubecli.KubevirtClient, dataVolumeTemplate virtv1.DataVolumeTemplateSpec, namespace, priorityClassName string) (*cdiv1.DataVolume, error) { @@ -166,23 +128,18 @@ func GenerateDataVolumeFromTemplate(clientset kubecli.KubevirtClient, dataVolume newDataVolume.Spec.PriorityClassName = priorityClassName } - cloneSource, err := GetCloneSource(context.TODO(), clientset, namespace, &newDataVolume.Spec) + dvSource, err := GetResolvedCloneSource(context.TODO(), clientset, namespace, &newDataVolume.Spec) if err != nil { return nil, err } - if cloneSource != nil { + if dvSource != nil { // If SourceRef is set, populate spec.Source with data from the DataSource // If not, update the field anyway to account for possible namespace changes if newDataVolume.Spec.SourceRef != nil { newDataVolume.Spec.SourceRef = nil } - newDataVolume.Spec.Source = &cdiv1.DataVolumeSource{ - PVC: &cdiv1.DataVolumeSourcePVC{ - Namespace: cloneSource.Namespace, - Name: cloneSource.Name, - }, - } + newDataVolume.Spec.Source = dvSource } return newDataVolume, nil diff --git a/tests/vendor/kubevirt.io/kubevirt/pkg/testutils/mock_config.go b/tests/vendor/kubevirt.io/kubevirt/pkg/testutils/mock_config.go index 71453313ec..d15bb9ab7a 100644 --- a/tests/vendor/kubevirt.io/kubevirt/pkg/testutils/mock_config.go +++ b/tests/vendor/kubevirt.io/kubevirt/pkg/testutils/mock_config.go @@ -16,7 +16,8 @@ import ( ) const ( - namespace = "kubevirt" + kvObjectNamespace = "kubevirt" + kvObjectName = "kubevirt" ) func NewFakeClusterConfigUsingKV(kv *KVv1.KubeVirt) (*virtconfig.ClusterConfig, cache.SharedIndexInformer, cache.SharedIndexInformer) { @@ -32,15 +33,15 @@ func NewFakeClusterConfigUsingKVWithCPUArch(kv *KVv1.KubeVirt, CPUArch string) ( kubeVirtInformer.GetStore().Add(kv) AddDataVolumeAPI(crdInformer) - cfg, _ := virtconfig.NewClusterConfigWithCPUArch(crdInformer, kubeVirtInformer, namespace, CPUArch) + cfg, _ := virtconfig.NewClusterConfigWithCPUArch(crdInformer, kubeVirtInformer, kvObjectNamespace, CPUArch) return cfg, crdInformer, kubeVirtInformer } func NewFakeClusterConfigUsingKVConfig(config *KVv1.KubeVirtConfiguration) (*virtconfig.ClusterConfig, cache.SharedIndexInformer, cache.SharedIndexInformer) { kv := &KVv1.KubeVirt{ ObjectMeta: metav1.ObjectMeta{ - Name: "kubevirt", - Namespace: "kubevirt", + Name: kvObjectName, + Namespace: kvObjectNamespace, }, Spec: KVv1.KubeVirtSpec{ Configuration: *config, @@ -94,11 +95,17 @@ func AddDataVolumeAPI(crdInformer cache.SharedIndexInformer) { }) } +func GetFakeKubeVirtClusterConfig(kubeVirtInformer cache.SharedIndexInformer) *KVv1.KubeVirt { + obj, _, _ := kubeVirtInformer.GetStore().GetByKey(kvObjectNamespace + "/" + kvObjectName) + return obj.(*KVv1.KubeVirt) + +} + func UpdateFakeKubeVirtClusterConfig(kubeVirtInformer cache.SharedIndexInformer, kv *KVv1.KubeVirt) { clone := kv.DeepCopy() clone.ResourceVersion = rand.String(10) - clone.Name = "kubevirt" - clone.Namespace = "kubevirt" + clone.Name = kvObjectName + clone.Namespace = kvObjectNamespace clone.Status.Phase = "Deployed" kubeVirtInformer.GetStore().Update(clone) diff --git a/tests/vendor/kubevirt.io/kubevirt/pkg/util/util.go b/tests/vendor/kubevirt.io/kubevirt/pkg/util/util.go index dbf14064ac..fef626f9f7 100644 --- a/tests/vendor/kubevirt.io/kubevirt/pkg/util/util.go +++ b/tests/vendor/kubevirt.io/kubevirt/pkg/util/util.go @@ -27,15 +27,17 @@ const ( HostRootMount = "/proc/1/root/" CPUManagerOS3Path = HostRootMount + "var/lib/origin/openshift.local.volumes/cpu_manager_state" CPUManagerPath = HostRootMount + "var/lib/kubelet/cpu_manager_state" -) -// Alphanums is the list of alphanumeric characters used to create a securely generated random string -const Alphanums = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" + // Alphanums is the list of alphanumeric characters used to create a securely generated random string + Alphanums = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" + + NonRootUID = 107 + NonRootUserString = "qemu" + RootUser = 0 + memoryDumpOverhead = 100 * 1024 * 1024 -const NonRootUID = 107 -const NonRootUserString = "qemu" -const RootUser = 0 -const memoryDumpOverhead = 100 * 1024 * 1024 + UnprivilegedContainerSELinuxLabel = "system_u:object_r:container_file_t:s0" +) func IsNonRootVMI(vmi *v1.VirtualMachineInstance) bool { _, ok := vmi.Annotations[v1.DeprecatedNonRootVMIAnnotation] diff --git a/tests/vendor/kubevirt.io/kubevirt/pkg/virt-config/configuration.go b/tests/vendor/kubevirt.io/kubevirt/pkg/virt-config/configuration.go index 04ee3f1fd2..f2b5f2adf2 100644 --- a/tests/vendor/kubevirt.io/kubevirt/pkg/virt-config/configuration.go +++ b/tests/vendor/kubevirt.io/kubevirt/pkg/virt-config/configuration.go @@ -175,10 +175,11 @@ func defaultClusterConfig(cpuArch string) *v1.KubeVirtConfiguration { Product: SmbiosConfigDefaultProduct, } supportedQEMUGuestAgentVersions := strings.Split(strings.TrimRight(SupportedGuestAgentVersions, ","), ",") - DefaultOVMFPath, DefaultMachineType, emulatedMachinesDefault := getCPUArchSpecificDefault(cpuArch) + DefaultOVMFPath, _, emulatedMachinesDefault := getCPUArchSpecificDefault(cpuArch) defaultDiskVerification := &v1.DiskVerification{ MemoryLimit: resource.NewScaledQuantity(DefaultDiskVerificationMemoryLimitMBytes, resource.Mega), } + defaultEvictionStrategy := v1.EvictionStrategyNone return &v1.KubeVirtConfiguration{ ImagePullPolicy: DefaultImagePullPolicy, @@ -198,6 +199,7 @@ func defaultClusterConfig(cpuArch string) *v1.KubeVirtConfiguration { VirtLauncher: DefaultVirtLauncherLogVerbosity, }, }, + EvictionStrategy: &defaultEvictionStrategy, MigrationConfiguration: &v1.MigrationConfiguration{ ParallelMigrationsPerCluster: ¶llelMigrationsPerClusterDefault, ParallelOutboundMigrationsPerNode: ¶llelOutboundMigrationsPerNodeDefault, @@ -209,7 +211,6 @@ func defaultClusterConfig(cpuArch string) *v1.KubeVirtConfiguration { AllowAutoConverge: &allowAutoConverge, AllowPostCopy: &allowPostCopy, }, - MachineType: DefaultMachineType, CPURequest: &cpuRequestDefault, EmulatedMachines: emulatedMachinesDefault, NetworkConfiguration: &v1.NetworkConfiguration{ diff --git a/tests/vendor/kubevirt.io/kubevirt/pkg/virt-config/feature-gates.go b/tests/vendor/kubevirt.io/kubevirt/pkg/virt-config/feature-gates.go index 0ba4ecb675..4bf3845417 100644 --- a/tests/vendor/kubevirt.io/kubevirt/pkg/virt-config/feature-gates.go +++ b/tests/vendor/kubevirt.io/kubevirt/pkg/virt-config/feature-gates.go @@ -70,6 +70,8 @@ const ( Multiarchitecture = "MultiArchitecture" // VMLiveUpdateFeaturesGate allows updating ceratin VM fields, such as CPU sockets to enable hot-plug functionality. VMLiveUpdateFeaturesGate = "VMLiveUpdateFeatures" + // AutoResourceLimitsGate enables automatic setting of vmi limits if there is a ResourceQuota with limits associated with the vmi namespace. + AutoResourceLimitsGate = "AutoResourceLimitsGate" ) var deprecatedFeatureGates = [...]string{ @@ -230,3 +232,7 @@ func (config *ClusterConfig) MultiArchitectureEnabled() bool { func (config *ClusterConfig) VMLiveUpdateFeaturesEnabled() bool { return config.isFeatureGateEnabled(VMLiveUpdateFeaturesGate) } + +func (config *ClusterConfig) AutoResourceLimitsEnabled() bool { + return config.isFeatureGateEnabled(AutoResourceLimitsGate) +} diff --git a/tests/vendor/kubevirt.io/kubevirt/pkg/virt-config/virt-config.go b/tests/vendor/kubevirt.io/kubevirt/pkg/virt-config/virt-config.go index 688eb2ece5..1ffc13565c 100644 --- a/tests/vendor/kubevirt.io/kubevirt/pkg/virt-config/virt-config.go +++ b/tests/vendor/kubevirt.io/kubevirt/pkg/virt-config/virt-config.go @@ -130,6 +130,10 @@ func (c *ClusterConfig) GetResourceVersion() string { } func (c *ClusterConfig) GetMachineType(arch string) string { + if c.GetConfig().MachineType != "" { + return c.GetConfig().MachineType + } + switch arch { case "arm64": return c.GetConfig().ArchitectureConfiguration.Arm64.MachineType diff --git a/tests/vendor/kubevirt.io/kubevirt/pkg/virt-controller/services/renderresources.go b/tests/vendor/kubevirt.io/kubevirt/pkg/virt-controller/services/renderresources.go index 5ba669bb7d..142c2194dd 100644 --- a/tests/vendor/kubevirt.io/kubevirt/pkg/virt-controller/services/renderresources.go +++ b/tests/vendor/kubevirt.io/kubevirt/pkg/virt-controller/services/renderresources.go @@ -6,6 +6,8 @@ import ( "strconv" "strings" + "k8s.io/client-go/tools/cache" + "kubevirt.io/client-go/log" k8sv1 "k8s.io/api/core/v1" @@ -188,6 +190,15 @@ func WithMemoryOverhead(guestResourceSpec v1.ResourceRequirements, memoryOverhea } } +func WithAutoMemoryLimits(namespace string, namespaceStore cache.Store) ResourceRendererOption { + return func(renderer *ResourceRenderer) { + requestRatio := getMemoryLimitsRatio(namespace, namespaceStore) + memoryRequest := renderer.vmRequests[k8sv1.ResourceMemory] + value := int64(float64(memoryRequest.Value()) * requestRatio) + renderer.calculatedLimits[k8sv1.ResourceMemory] = *resource.NewQuantity(value, memoryRequest.Format) + } +} + func WithCPUPinning(cpu *v1.CPU) ResourceRendererOption { return func(renderer *ResourceRenderer) { vcpus := hardware.GetNumberOfVCPUs(cpu) @@ -646,6 +657,43 @@ func hotplugContainerRequests(config *virtconfig.ClusterConfig) k8sv1.ResourceLi } } +func vmExportContainerResourceRequirements(config *virtconfig.ClusterConfig) k8sv1.ResourceRequirements { + return k8sv1.ResourceRequirements{ + Limits: vmExportContainerLimits(config), + Requests: vmExportContainerRequests(config), + } +} + +func vmExportContainerLimits(config *virtconfig.ClusterConfig) k8sv1.ResourceList { + cpuQuantity := resource.MustParse("1") + if cpu := config.GetSupportContainerLimit(v1.VMExport, k8sv1.ResourceCPU); cpu != nil { + cpuQuantity = *cpu + } + memQuantity := resource.MustParse("1024Mi") + if mem := config.GetSupportContainerLimit(v1.VMExport, k8sv1.ResourceMemory); mem != nil { + memQuantity = *mem + } + return k8sv1.ResourceList{ + k8sv1.ResourceCPU: cpuQuantity, + k8sv1.ResourceMemory: memQuantity, + } +} + +func vmExportContainerRequests(config *virtconfig.ClusterConfig) k8sv1.ResourceList { + cpuQuantity := resource.MustParse("100m") + if cpu := config.GetSupportContainerRequest(v1.VMExport, k8sv1.ResourceCPU); cpu != nil { + cpuQuantity = *cpu + } + memQuantity := resource.MustParse("200Mi") + if mem := config.GetSupportContainerRequest(v1.VMExport, k8sv1.ResourceMemory); mem != nil { + memQuantity = *mem + } + return k8sv1.ResourceList{ + k8sv1.ResourceCPU: cpuQuantity, + k8sv1.ResourceMemory: memQuantity, + } +} + func multiplyMemory(mem resource.Quantity, multiplication float64) resource.Quantity { overheadAddition := float64(mem.ScaledValue(resource.Kilo)) * (multiplication - 1.0) additionalOverhead := resource.NewScaledQuantity(int64(overheadAddition), resource.Kilo) @@ -653,3 +701,37 @@ func multiplyMemory(mem resource.Quantity, multiplication float64) resource.Quan mem.Add(*additionalOverhead) return mem } + +func getMemoryLimitsRatio(namespace string, namespaceStore cache.Store) float64 { + if namespaceStore == nil { + return DefaultMemoryLimitOverheadRatio + } + + obj, exists, err := namespaceStore.GetByKey(namespace) + if err != nil { + log.Log.Warningf("Error retrieving namespace from informer. Using the default memory limits ratio. %s", err.Error()) + return DefaultMemoryLimitOverheadRatio + } else if !exists { + log.Log.Warningf("namespace %s does not exist. Using the default memory limits ratio.", namespace) + return DefaultMemoryLimitOverheadRatio + } + + ns, ok := obj.(*k8sv1.Namespace) + if !ok { + log.Log.Errorf("couldn't cast object to Namespace: %+v", obj) + return DefaultMemoryLimitOverheadRatio + } + + value, ok := ns.GetLabels()[v1.AutoMemoryLimitsRatioLabel] + if !ok { + return DefaultMemoryLimitOverheadRatio + } + + limitRatioValue, err := strconv.ParseFloat(value, 64) + if err != nil || limitRatioValue < 1.0 { + log.Log.Warningf("%s is an invalid value for %s label in namespace %s. Using the default one: %f", value, v1.AutoMemoryLimitsRatioLabel, namespace, DefaultMemoryLimitOverheadRatio) + return DefaultMemoryLimitOverheadRatio + } + + return limitRatioValue +} diff --git a/tests/vendor/kubevirt.io/kubevirt/pkg/virt-controller/services/template.go b/tests/vendor/kubevirt.io/kubevirt/pkg/virt-controller/services/template.go index d4124ea563..ebd07438d1 100644 --- a/tests/vendor/kubevirt.io/kubevirt/pkg/virt-controller/services/template.go +++ b/tests/vendor/kubevirt.io/kubevirt/pkg/virt-controller/services/template.go @@ -126,6 +126,8 @@ const ( VirtlogdOverhead = "20Mi" // The `ps` RSS for virtlogd VirtqemudOverhead = "35Mi" // The `ps` RSS for virtqemud QemuOverhead = "30Mi" // The `ps` RSS for qemu, minus the RAM of its (stressed) guest, minus the virtual page table + // Default: limits.memory = 2*requests.memory + DefaultMemoryLimitOverheadRatio = float64(2.0) ) const customSELinuxType = "virt_launcher.process" @@ -156,6 +158,8 @@ type templateService struct { virtClient kubecli.KubevirtClient clusterConfig *virtconfig.ClusterConfig launcherSubGid int64 + resourceQuotaStore cache.Store + namespaceStore cache.Store } func isFeatureStateEnabled(fs *v1.FeatureState) bool { @@ -1039,6 +1043,7 @@ func (t *templateService) RenderExporterManifest(vmExport *exportv1.VirtualMachi AllowPrivilegeEscalation: pointer.Bool(false), Capabilities: &k8sv1.Capabilities{Drop: []k8sv1.Capability{"ALL"}}, }, + Resources: vmExportContainerResourceRequirements(t.clusterConfig), }, }, }, @@ -1128,7 +1133,9 @@ func NewTemplateService(launcherImage string, virtClient kubecli.KubevirtClient, clusterConfig *virtconfig.ClusterConfig, launcherSubGid int64, - exporterImage string) TemplateService { + exporterImage string, + resourceQuotaStore cache.Store, + namespaceStore cache.Store) TemplateService { precond.MustNotBeEmpty(launcherImage) log.Log.V(1).Infof("Exporter Image: %s", exporterImage) @@ -1146,6 +1153,8 @@ func NewTemplateService(launcherImage string, clusterConfig: clusterConfig, launcherSubGid: launcherSubGid, exporterImage: exporterImage, + resourceQuotaStore: resourceQuotaStore, + namespaceStore: namespaceStore, } return &svc @@ -1357,6 +1366,7 @@ func (t *templateService) VMIResourcePredicates(vmi *v1.VirtualMachineInstance, NewVMIResourceRule(not(doesVMIRequireDedicatedCPU), WithoutDedicatedCPU(vmi.Spec.Domain.CPU, t.clusterConfig.GetCPUAllocationRatio(), withCPULimits)), NewVMIResourceRule(util.HasHugePages, WithHugePages(vmi.Spec.Domain.Memory, memoryOverhead)), NewVMIResourceRule(not(util.HasHugePages), WithMemoryOverhead(vmi.Spec.Domain.Resources, memoryOverhead)), + NewVMIResourceRule(t.doesVMIRequireAutoMemoryLimits, WithAutoMemoryLimits(vmi.Namespace, t.namespaceStore)), NewVMIResourceRule(func(*v1.VirtualMachineInstance) bool { return len(networkToResourceMap) > 0 }, WithNetworkResources(networkToResourceMap)), @@ -1368,6 +1378,26 @@ func (t *templateService) VMIResourcePredicates(vmi *v1.VirtualMachineInstance, } } +func (t *templateService) doesVMIRequireAutoMemoryLimits(vmi *v1.VirtualMachineInstance) bool { + if !t.clusterConfig.AutoResourceLimitsEnabled() { + return false + } + + if _, memLimitsExists := vmi.Spec.Domain.Resources.Limits[k8sv1.ResourceMemory]; memLimitsExists { + return false + } + + for _, obj := range t.resourceQuotaStore.List() { + if resourceQuota, ok := obj.(*k8sv1.ResourceQuota); ok { + if _, exists := resourceQuota.Spec.Hard[k8sv1.ResourceLimitsMemory]; exists && resourceQuota.Namespace == vmi.Namespace { + return true + } + } + } + + return false +} + func (p VMIResourcePredicates) Apply() []ResourceRendererOption { var options []ResourceRendererOption for _, rule := range p.resourceRules { diff --git a/tests/vendor/kubevirt.io/kubevirt/pkg/virt-controller/watch/topology/filter.go b/tests/vendor/kubevirt.io/kubevirt/pkg/virt-controller/watch/topology/filter.go index ddf05489ab..95048fd399 100644 --- a/tests/vendor/kubevirt.io/kubevirt/pkg/virt-controller/watch/topology/filter.go +++ b/tests/vendor/kubevirt.io/kubevirt/pkg/virt-controller/watch/topology/filter.go @@ -3,6 +3,8 @@ package topology import ( "math" + "k8s.io/client-go/tools/cache" + v1 "k8s.io/api/core/v1" virtv1 "kubevirt.io/api/core/v1" @@ -75,6 +77,17 @@ func Not(f FilterPredicateFunc) FilterPredicateFunc { } } +func Or(predicates ...FilterPredicateFunc) FilterPredicateFunc { + return func(node *v1.Node) bool { + for _, p := range predicates { + if p(node) { + return true + } + } + return false + } +} + func FilterNodesFromCache(objs []interface{}, predicates ...FilterPredicateFunc) []*v1.Node { match := []*v1.Node{} for _, obj := range objs { @@ -93,6 +106,22 @@ func FilterNodesFromCache(objs []interface{}, predicates ...FilterPredicateFunc) return match } +func IsNodeRunningVmis(vmiStore cache.Store) FilterPredicateFunc { + return func(node *v1.Node) bool { + if node == nil { + return false + } + + for _, vmi := range vmiStore.List() { + vmi := vmi.(*virtv1.VirtualMachineInstance) + if vmi.Status.NodeName == node.Name { + return true + } + } + return false + } +} + // ToleranceForFrequency returns TSCTolerancePPM parts per million of freq, rounded down to the nearest Hz func ToleranceForFrequency(freq int64) int64 { return int64(math.Floor(float64(freq) * (TSCTolerancePPM / 1000000))) diff --git a/tests/vendor/kubevirt.io/kubevirt/pkg/virt-controller/watch/topology/hinter.go b/tests/vendor/kubevirt.io/kubevirt/pkg/virt-controller/watch/topology/hinter.go index d11c874005..6072c2eb47 100644 --- a/tests/vendor/kubevirt.io/kubevirt/pkg/virt-controller/watch/topology/hinter.go +++ b/tests/vendor/kubevirt.io/kubevirt/pkg/virt-controller/watch/topology/hinter.go @@ -56,6 +56,10 @@ func (t *topologyHinter) LowestTSCFrequencyOnCluster() (int64, error) { } nodes := FilterNodesFromCache(t.nodeStore.List(), HasInvTSCFrequency, + Or( + IsSchedulable, + IsNodeRunningVmis(t.vmiStore), + ), ) freq := LowestTSCFrequency(nodes) return freq, nil diff --git a/tests/vendor/kubevirt.io/kubevirt/pkg/virt-launcher/virtwrap/api/schema.go b/tests/vendor/kubevirt.io/kubevirt/pkg/virt-launcher/virtwrap/api/schema.go index 465c6c6c10..5e0dd6b8e0 100644 --- a/tests/vendor/kubevirt.io/kubevirt/pkg/virt-launcher/virtwrap/api/schema.go +++ b/tests/vendor/kubevirt.io/kubevirt/pkg/virt-launcher/virtwrap/api/schema.go @@ -907,8 +907,8 @@ type Boot struct { } type BootMenu struct { - Enabled bool `xml:"enabled,attr"` - Timeout *uint `xml:"timeout,attr,omitempty"` + Enable string `xml:"enable,attr"` + Timeout *uint `xml:"timeout,attr,omitempty"` } type Loader struct { diff --git a/tests/vendor/kubevirt.io/kubevirt/pkg/virt-operator/resource/generate/components/BUILD.bazel b/tests/vendor/kubevirt.io/kubevirt/pkg/virt-operator/resource/generate/components/BUILD.bazel index 0f4625a449..4f0046de05 100644 --- a/tests/vendor/kubevirt.io/kubevirt/pkg/virt-operator/resource/generate/components/BUILD.bazel +++ b/tests/vendor/kubevirt.io/kubevirt/pkg/virt-operator/resource/generate/components/BUILD.bazel @@ -22,6 +22,7 @@ go_library( "//pkg/certificates/triple:go_default_library", "//pkg/certificates/triple/cert:go_default_library", "//pkg/storage/reservation:go_default_library", + "//pkg/util:go_default_library", "//pkg/virt-operator/util:go_default_library", "//staging/src/kubevirt.io/api/clone:go_default_library", "//staging/src/kubevirt.io/api/clone/v1alpha1:go_default_library", diff --git a/tests/vendor/kubevirt.io/kubevirt/pkg/virt-operator/resource/generate/components/daemonsets.go b/tests/vendor/kubevirt.io/kubevirt/pkg/virt-operator/resource/generate/components/daemonsets.go index 9066fd23a1..fccc4161a4 100644 --- a/tests/vendor/kubevirt.io/kubevirt/pkg/virt-operator/resource/generate/components/daemonsets.go +++ b/tests/vendor/kubevirt.io/kubevirt/pkg/virt-operator/resource/generate/components/daemonsets.go @@ -13,6 +13,7 @@ import ( virtv1 "kubevirt.io/api/core/v1" "kubevirt.io/kubevirt/pkg/storage/reservation" + "kubevirt.io/kubevirt/pkg/util" operatorutil "kubevirt.io/kubevirt/pkg/virt-operator/util" ) @@ -41,6 +42,7 @@ func RenderPrHelperContainer(image string, pullPolicy corev1.PullPolicy) corev1. }, }, SecurityContext: &corev1.SecurityContext{ + RunAsUser: pointer.Int64(util.RootUser), Privileged: pointer.Bool(true), }, } @@ -274,9 +276,6 @@ func NewHandlerDaemonSet(namespace, repository, imagePrefix, version, launcherVe {"kubelet-pods", kubeletPodsPath, kubeletPodsPath, &bidi}, {"node-labeller", "/var/lib/kubevirt-node-labeller", "/var/lib/kubevirt-node-labeller", nil}, } - if enablePrHelper { - volumes = append(volumes, volume{prVolumeName, reservation.GetPrHelperSocketDir(), reservation.GetPrHelperSocketDir(), &bidi}) - } for _, volume := range volumes { container.VolumeMounts = append(container.VolumeMounts, corev1.VolumeMount{ @@ -326,6 +325,16 @@ func NewHandlerDaemonSet(namespace, repository, imagePrefix, version, launcherVe } if enablePrHelper { + directoryOrCreate := corev1.HostPathDirectoryOrCreate + pod.Volumes = append(pod.Volumes, corev1.Volume{ + Name: prVolumeName, + VolumeSource: corev1.VolumeSource{ + HostPath: &corev1.HostPathVolumeSource{ + Path: reservation.GetPrHelperSocketDir(), + Type: &directoryOrCreate, + }, + }, + }) pod.Containers = append(pod.Containers, RenderPrHelperContainer(prHelperImage, pullPolicy)) } return daemonset, nil diff --git a/tests/vendor/kubevirt.io/kubevirt/pkg/virt-operator/resource/generate/components/prometheus.go b/tests/vendor/kubevirt.io/kubevirt/pkg/virt-operator/resource/generate/components/prometheus.go index edd81c7c24..d6c6f2cd57 100644 --- a/tests/vendor/kubevirt.io/kubevirt/pkg/virt-operator/resource/generate/components/prometheus.go +++ b/tests/vendor/kubevirt.io/kubevirt/pkg/virt-operator/resource/generate/components/prometheus.go @@ -482,12 +482,12 @@ func NewPrometheusRuleSpec(ns string, workloadUpdatesEnabled bool) *v1.Prometheu }, }, { - Alert: "KubeVirtDeprecatedAPIsRequested", + Alert: "KubeVirtDeprecatedAPIRequested", Expr: intstr.FromString("sum by (resource,group,version) ((round(increase(kubevirt_api_request_deprecated_total{verb!~\"LIST|WATCH\"}[10m])) > 0 and kubevirt_api_request_deprecated_total{verb!~\"LIST|WATCH\"} offset 10m) or (kubevirt_api_request_deprecated_total{verb!~\"LIST|WATCH\"} != 0 unless kubevirt_api_request_deprecated_total{verb!~\"LIST|WATCH\"} offset 10m))"), Annotations: map[string]string{ "description": "Detected requests to the deprecated {{ $labels.resource }}.{{ $labels.group }}/{{ $labels.version }} API.", "summary": "Detected {{ $value }} requests in the last 10 minutes.", - "runbook_url": fmt.Sprintf(runbookURLTemplate, "KubeVirtDeprecatedAPIsRequested"), + "runbook_url": fmt.Sprintf(runbookURLTemplate, "KubeVirtDeprecatedAPIRequested"), }, Labels: map[string]string{ severityAlertLabelKey: "info", diff --git a/tests/vendor/kubevirt.io/kubevirt/pkg/virt-operator/resource/generate/components/scc.go b/tests/vendor/kubevirt.io/kubevirt/pkg/virt-operator/resource/generate/components/scc.go index a430f3302b..5241367fac 100644 --- a/tests/vendor/kubevirt.io/kubevirt/pkg/virt-operator/resource/generate/components/scc.go +++ b/tests/vendor/kubevirt.io/kubevirt/pkg/virt-operator/resource/generate/components/scc.go @@ -84,6 +84,8 @@ func NewKubeVirtControllerSCC(namespace string) *secv1.SecurityContextConstraint "SYS_NICE", // add CAP_NET_BIND_SERVICE capability to allow dhcp and slirp operations "NET_BIND_SERVICE", + // add CAP_SYS_PTRACE capability needed for libvirt <8.1.0 to find the pid of swtpm + "SYS_PTRACE", } scc.AllowHostDirVolumePlugin = true scc.Users = []string{fmt.Sprintf("system:serviceaccount:%s:kubevirt-controller", namespace)} diff --git a/tests/vendor/kubevirt.io/kubevirt/pkg/virt-operator/resource/generate/components/validations_generated.go b/tests/vendor/kubevirt.io/kubevirt/pkg/virt-operator/resource/generate/components/validations_generated.go index b28062b00e..971d144b1d 100644 --- a/tests/vendor/kubevirt.io/kubevirt/pkg/virt-operator/resource/generate/components/validations_generated.go +++ b/tests/vendor/kubevirt.io/kubevirt/pkg/virt-operator/resource/generate/components/validations_generated.go @@ -1064,6 +1064,7 @@ var CRDsValidation map[string]string = map[string]string{ type: integer type: object machineType: + description: Deprecated. Use architectureConfiguration instead. type: string mediatedDevicesConfiguration: description: MediatedDevicesConfiguration holds information about MDEV @@ -7887,7 +7888,7 @@ var CRDsValidation map[string]string = map[string]string{ guest: description: "Required number of vCPUs to expose to the guest. \n The resulting CPU topology being derived from the optional PreferredCPUTopology - attribute of CPUPreferences that itself defaults to PreferCores." + attribute of CPUPreferences that itself defaults to PreferSockets." format: int32 type: integer isolateEmulatorThread: @@ -16649,7 +16650,7 @@ var CRDsValidation map[string]string = map[string]string{ guest: description: "Required number of vCPUs to expose to the guest. \n The resulting CPU topology being derived from the optional PreferredCPUTopology - attribute of CPUPreferences that itself defaults to PreferCores." + attribute of CPUPreferences that itself defaults to PreferSockets." format: int32 type: integer isolateEmulatorThread: diff --git a/tests/vendor/kubevirt.io/kubevirt/pkg/virt-operator/resource/generate/components/webhooks.go b/tests/vendor/kubevirt.io/kubevirt/pkg/virt-operator/resource/generate/components/webhooks.go index 2600f8f390..2e9a0a4de5 100644 --- a/tests/vendor/kubevirt.io/kubevirt/pkg/virt-operator/resource/generate/components/webhooks.go +++ b/tests/vendor/kubevirt.io/kubevirt/pkg/virt-operator/resource/generate/components/webhooks.go @@ -137,6 +137,30 @@ func NewOpertorValidatingWebhookConfiguration(operatorNamespace string) *admissi }, }, }, + { + Name: "kubevirt-create-validator.kubevirt.io", + AdmissionReviewVersions: []string{"v1", "v1beta1"}, + FailurePolicy: &failurePolicy, + TimeoutSeconds: &defaultTimeoutSeconds, + SideEffects: &sideEffectNone, + Rules: []admissionregistrationv1.RuleWithOperations{{ + Operations: []admissionregistrationv1.OperationType{ + admissionregistrationv1.Create, + }, + Rule: admissionregistrationv1.Rule{ + APIGroups: []string{core.GroupName}, + APIVersions: virtv1.ApiSupportedWebhookVersions, + Resources: []string{"kubevirts"}, + }, + }}, + ClientConfig: admissionregistrationv1.WebhookClientConfig{ + Service: &admissionregistrationv1.ServiceReference{ + Namespace: operatorNamespace, + Name: VirtOperatorServiceName, + Path: pointer.String(KubeVirtCreateValidatePath), + }, + }, + }, }, } } @@ -803,6 +827,8 @@ func NewVirtAPIValidatingWebhookConfiguration(installNamespace string) *admissio const KubeVirtUpdateValidatePath = "/kubevirt-validate-update" +const KubeVirtCreateValidatePath = "/kubevirt-validate-create" + const VMICreateValidatePath = "/virtualmachineinstances-validate-create" const VMIUpdateValidatePath = "/virtualmachineinstances-validate-update" diff --git a/tests/vendor/kubevirt.io/kubevirt/tests/BUILD.bazel b/tests/vendor/kubevirt.io/kubevirt/tests/BUILD.bazel index 28145e77ba..bc59d36075 100644 --- a/tests/vendor/kubevirt.io/kubevirt/tests/BUILD.bazel +++ b/tests/vendor/kubevirt.io/kubevirt/tests/BUILD.bazel @@ -180,7 +180,6 @@ go_test( "//pkg/util:go_default_library", "//pkg/util/cluster:go_default_library", "//pkg/util/hardware:go_default_library", - "//pkg/util/migrations:go_default_library", "//pkg/util/net/dns:go_default_library", "//pkg/util/tls:go_default_library", "//pkg/virt-api:go_default_library", diff --git a/tests/vendor/kubevirt.io/kubevirt/tests/libnet/interface.go b/tests/vendor/kubevirt.io/kubevirt/tests/libnet/interface.go index 7d734b7675..de39e8aae4 100644 --- a/tests/vendor/kubevirt.io/kubevirt/tests/libnet/interface.go +++ b/tests/vendor/kubevirt.io/kubevirt/tests/libnet/interface.go @@ -36,3 +36,13 @@ func InterfaceExists(vmi *v1.VirtualMachineInstance, interfaceName string) error } return nil } + +func LookupNetworkByName(networks []v1.Network, name string) *v1.Network { + for i, net := range networks { + if net.Name == name { + return &networks[i] + } + } + + return nil +} diff --git a/tests/vendor/kubevirt.io/kubevirt/tests/libstorage/BUILD.bazel b/tests/vendor/kubevirt.io/kubevirt/tests/libstorage/BUILD.bazel index a108fe444d..b77643d552 100644 --- a/tests/vendor/kubevirt.io/kubevirt/tests/libstorage/BUILD.bazel +++ b/tests/vendor/kubevirt.io/kubevirt/tests/libstorage/BUILD.bazel @@ -7,6 +7,7 @@ go_library( "datavolume.go", "pvc.go", "storageclass.go", + "volumesnapshot.go", ], importpath = "kubevirt.io/kubevirt/tests/libstorage", visibility = ["//visibility:public"], @@ -21,6 +22,7 @@ go_library( "//tests/framework/matcher:go_default_library", "//tests/libnode:go_default_library", "//tests/util:go_default_library", + "//vendor/github.com/kubernetes-csi/external-snapshotter/client/v4/apis/volumesnapshot/v1:go_default_library", "//vendor/github.com/onsi/ginkgo/v2:go_default_library", "//vendor/github.com/onsi/gomega:go_default_library", "//vendor/github.com/onsi/gomega/types:go_default_library", diff --git a/tests/vendor/kubevirt.io/kubevirt/tests/libstorage/datavolume.go b/tests/vendor/kubevirt.io/kubevirt/tests/libstorage/datavolume.go index 57586a51f5..ebdd9155b7 100644 --- a/tests/vendor/kubevirt.io/kubevirt/tests/libstorage/datavolume.go +++ b/tests/vendor/kubevirt.io/kubevirt/tests/libstorage/datavolume.go @@ -172,7 +172,7 @@ func SetDataVolumeGC(virtCli kubecli.KubevirtClient, ttlSec *int32) { func IsDataVolumeGC(virtCli kubecli.KubevirtClient) bool { config, err := virtCli.CdiClient().CdiV1beta1().CDIConfigs().Get(context.TODO(), "config", v12.GetOptions{}) Expect(err).ToNot(HaveOccurred()) - return config.Spec.DataVolumeTTLSeconds == nil || *config.Spec.DataVolumeTTLSeconds >= 0 + return config.Spec.DataVolumeTTLSeconds != nil && *config.Spec.DataVolumeTTLSeconds >= 0 } func GetCDI(virtCli kubecli.KubevirtClient) *v1beta1.CDI { diff --git a/tests/vendor/kubevirt.io/kubevirt/tests/libstorage/pvc.go b/tests/vendor/kubevirt.io/kubevirt/tests/libstorage/pvc.go index f2dbdf8d3b..b9157eac19 100644 --- a/tests/vendor/kubevirt.io/kubevirt/tests/libstorage/pvc.go +++ b/tests/vendor/kubevirt.io/kubevirt/tests/libstorage/pvc.go @@ -52,7 +52,7 @@ const ( func RenderPodWithPVC(name string, cmd []string, args []string, pvc *k8sv1.PersistentVolumeClaim) *k8sv1.Pod { volumeName := "disk0" - nonRootUser := int64(1042) + nonRootUser := int64(107) // Change to 'pod := RenderPod(name, cmd, args)' once we have a libpod package pod := &k8sv1.Pod{ @@ -102,6 +102,10 @@ func RenderPodWithPVC(name string, cmd []string, args []string, pvc *k8sv1.Persi if volumeMode != nil && *volumeMode == k8sv1.PersistentVolumeBlock { pod.Spec.Containers[0].VolumeDevices = addVolumeDevices(volumeName) } else { + if pod.Spec.SecurityContext == nil { + pod.Spec.SecurityContext = &k8sv1.PodSecurityContext{} + } + pod.Spec.SecurityContext.FSGroup = &nonRootUser pod.Spec.Containers[0].VolumeMounts = addVolumeMounts(volumeName) } diff --git a/tests/vendor/kubevirt.io/kubevirt/tests/libstorage/storageclass.go b/tests/vendor/kubevirt.io/kubevirt/tests/libstorage/storageclass.go index a2e2790ecb..4ae21cbdd9 100644 --- a/tests/vendor/kubevirt.io/kubevirt/tests/libstorage/storageclass.go +++ b/tests/vendor/kubevirt.io/kubevirt/tests/libstorage/storageclass.go @@ -133,6 +133,52 @@ func GetSnapshotStorageClass(client kubecli.KubevirtClient) (string, error) { return storageClass, nil } +func GetSnapshotClass(scName string, client kubecli.KubevirtClient) (string, error) { + crd, err := client. + ExtensionsClient(). + ApiextensionsV1(). + CustomResourceDefinitions(). + Get(context.Background(), "volumesnapshotclasses.snapshot.storage.k8s.io", metav1.GetOptions{}) + if err != nil { + if errors.IsNotFound(err) { + return "", nil + } + + return "", err + } + + hasV1 := false + for _, v := range crd.Spec.Versions { + if v.Name == "v1" && v.Served { + hasV1 = true + } + } + + if !hasV1 { + return "", nil + } + + volumeSnapshotClasses, err := client.KubernetesSnapshotClient().SnapshotV1().VolumeSnapshotClasses().List(context.Background(), metav1.ListOptions{}) + if err != nil { + return "", err + } + if len(volumeSnapshotClasses.Items) == 0 { + return "", nil + } + sc, err := client.StorageV1().StorageClasses().Get(context.Background(), scName, metav1.GetOptions{}) + if err != nil { + return "", err + } + for _, snapClass := range volumeSnapshotClasses.Items { + // Validate association between snapshot class and storage class + if snapClass.Driver == sc.Provisioner { + return snapClass.Name, nil + } + } + + return "", nil +} + func GetRWXFileSystemStorageClass() (string, bool) { storageRWXFileSystem := Config.StorageRWXFileSystem return storageRWXFileSystem, storageRWXFileSystem != "" diff --git a/tests/vendor/kubevirt.io/kubevirt/tests/libstorage/volumesnapshot.go b/tests/vendor/kubevirt.io/kubevirt/tests/libstorage/volumesnapshot.go new file mode 100644 index 0000000000..20b532269f --- /dev/null +++ b/tests/vendor/kubevirt.io/kubevirt/tests/libstorage/volumesnapshot.go @@ -0,0 +1,42 @@ +/* + * This file is part of the KubeVirt project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Copyright 2023 Red Hat, Inc. + * + */ + +package libstorage + +import ( + vsv1 "github.com/kubernetes-csi/external-snapshotter/client/v4/apis/volumesnapshot/v1" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +// NewVolumeSnapshot initializes a VolumeSnapshot struct +func NewVolumeSnapshot(name, namespace, sourcePvcName string, snapshotClassName *string) *vsv1.VolumeSnapshot { + return &vsv1.VolumeSnapshot{ + ObjectMeta: metav1.ObjectMeta{ + Name: name, + Namespace: namespace, + }, + Spec: vsv1.VolumeSnapshotSpec{ + Source: vsv1.VolumeSnapshotSource{ + PersistentVolumeClaimName: &sourcePvcName, + }, + VolumeSnapshotClassName: snapshotClassName, + }, + } +} diff --git a/tests/vendor/kubevirt.io/kubevirt/tests/libwait/wait.go b/tests/vendor/kubevirt.io/kubevirt/tests/libwait/wait.go index 657095e318..8b2adc52f7 100644 --- a/tests/vendor/kubevirt.io/kubevirt/tests/libwait/wait.go +++ b/tests/vendor/kubevirt.io/kubevirt/tests/libwait/wait.go @@ -116,7 +116,7 @@ func WithWarningsIgnoreList(warningIgnoreList []string) Option { waiting.wp = &watcher.WarningsPolicy{FailOnWarnings: true} } - waiting.wp.WarningsIgnoreList = warningIgnoreList + waiting.wp.WarningsIgnoreList = append(waiting.wp.WarningsIgnoreList, warningIgnoreList...) } } diff --git a/tests/vendor/kubevirt.io/kubevirt/tests/testsuite/fixture.go b/tests/vendor/kubevirt.io/kubevirt/tests/testsuite/fixture.go index 69866aec22..a54a367516 100644 --- a/tests/vendor/kubevirt.io/kubevirt/tests/testsuite/fixture.go +++ b/tests/vendor/kubevirt.io/kubevirt/tests/testsuite/fixture.go @@ -95,7 +95,6 @@ func SynchronizedBeforeTestSetup() []byte { EnsureKVMPresent() AdjustKubeVirtResource() EnsureKubevirtReady() - InitRunConfiguration() return nil } @@ -120,6 +119,7 @@ func BeforeTestSuiteSetup(_ []byte) { // Wait for schedulable nodes virtClient := kubevirt.Client() + initRunConfiguration(virtClient) Eventually(func() int { nodes := libnode.GetAllSchedulableNodes(virtClient) if len(nodes.Items) > 0 { diff --git a/tests/vendor/kubevirt.io/kubevirt/tests/testsuite/kubevirtresource.go b/tests/vendor/kubevirt.io/kubevirt/tests/testsuite/kubevirtresource.go index 61bfefe7ec..49dbe05dca 100644 --- a/tests/vendor/kubevirt.io/kubevirt/tests/testsuite/kubevirtresource.go +++ b/tests/vendor/kubevirt.io/kubevirt/tests/testsuite/kubevirtresource.go @@ -109,6 +109,7 @@ func AdjustKubeVirtResource() { virtconfig.HotplugNetworkIfacesGate, virtconfig.VMPersistentState, virtconfig.VMLiveUpdateFeaturesGate, + virtconfig.AutoResourceLimitsGate, ) if flags.DisableCustomSELinuxPolicy { kv.Spec.Configuration.DeveloperConfiguration.FeatureGates = append(kv.Spec.Configuration.DeveloperConfiguration.FeatureGates, diff --git a/tests/vendor/kubevirt.io/kubevirt/tests/testsuite/runconfiguration.go b/tests/vendor/kubevirt.io/kubevirt/tests/testsuite/runconfiguration.go index 71c251759b..24e7d74099 100644 --- a/tests/vendor/kubevirt.io/kubevirt/tests/testsuite/runconfiguration.go +++ b/tests/vendor/kubevirt.io/kubevirt/tests/testsuite/runconfiguration.go @@ -2,6 +2,9 @@ package testsuite import ( v1 "kubevirt.io/api/core/v1" + "kubevirt.io/client-go/kubecli" + + "kubevirt.io/kubevirt/tests/util" ) var ( @@ -12,10 +15,11 @@ type RunConfiguration struct { WarningToIgnoreList []string } -func InitRunConfiguration() { +func initRunConfiguration(virtClient kubecli.KubevirtClient) { + kv := util.GetCurrentKv(virtClient) runConfig := RunConfiguration{} - if KubeVirtDefaultConfig.EvictionStrategy != nil && - *KubeVirtDefaultConfig.EvictionStrategy == v1.EvictionStrategyLiveMigrate { + if kv.Spec.Configuration.EvictionStrategy != nil && + *kv.Spec.Configuration.EvictionStrategy == v1.EvictionStrategyLiveMigrate { runConfig.WarningToIgnoreList = append(runConfig.WarningToIgnoreList, "EvictionStrategy is set but vmi is not migratable") } diff --git a/tests/vendor/kubevirt.io/kubevirt/tests/testsuite/serviceaccount.go b/tests/vendor/kubevirt.io/kubevirt/tests/testsuite/serviceaccount.go index bc972d30b0..924f343865 100644 --- a/tests/vendor/kubevirt.io/kubevirt/tests/testsuite/serviceaccount.go +++ b/tests/vendor/kubevirt.io/kubevirt/tests/testsuite/serviceaccount.go @@ -21,6 +21,9 @@ package testsuite import ( "context" + "fmt" + + . "github.com/onsi/ginkgo/v2" "kubevirt.io/kubevirt/tests/framework/kubevirt" @@ -36,10 +39,17 @@ const ( AdminServiceAccountName = "kubevirt-admin-test-sa" EditServiceAccountName = "kubevirt-edit-test-sa" ViewServiceAccountName = "kubevirt-view-test-sa" + ViewInstancetypeServiceAccountName = "kubevirt-instancetype-view-test-sa" SubresourceServiceAccountName = "kubevirt-subresource-test-sa" SubresourceUnprivilegedServiceAccountName = "kubevirt-subresource-test-unprivileged-sa" ) +// As our tests run in parallel we need to ensure each worker creates a +// unique clusterRoleBinding to avoid cleaning up anothers prematurely +func getClusterRoleBindingName(saName string) string { + return fmt.Sprintf("%s-%d", saName, GinkgoParallelProcess()) +} + func createServiceAccounts() { createServiceAccount(AdminServiceAccountName) createRoleBinding(AdminServiceAccountName, "kubevirt.io:admin") @@ -50,6 +60,9 @@ func createServiceAccounts() { createServiceAccount(ViewServiceAccountName) createRoleBinding(ViewServiceAccountName, "kubevirt.io:view") + createServiceAccount(ViewInstancetypeServiceAccountName) + createClusterRoleBinding(ViewInstancetypeServiceAccountName, "instancetype.kubevirt.io:view") + createServiceAccount(SubresourceServiceAccountName) createSubresourceRole(SubresourceServiceAccountName) @@ -60,6 +73,7 @@ func cleanupServiceAccounts() { cleanupServiceAccount(AdminServiceAccountName) cleanupServiceAccount(EditServiceAccountName) cleanupServiceAccount(ViewServiceAccountName) + cleanupServiceAccount(ViewInstancetypeServiceAccountName) cleanupServiceAccount(SubresourceServiceAccountName) cleanupServiceAccount(SubresourceUnprivilegedServiceAccountName) } @@ -96,6 +110,36 @@ func createServiceAccount(saName string) { } } +func createClusterRoleBinding(saName string, clusterRole string) { + virtCli := kubevirt.Client() + + clusterRoleBinding := rbacv1.ClusterRoleBinding{ + ObjectMeta: metav1.ObjectMeta{ + Name: getClusterRoleBindingName(saName), + Labels: map[string]string{ + util.KubevirtIoTest: saName, + }, + }, + RoleRef: rbacv1.RoleRef{ + Kind: "ClusterRole", + Name: clusterRole, + APIGroup: "rbac.authorization.k8s.io", + }, + Subjects: []rbacv1.Subject{ + { + Kind: "ServiceAccount", + Name: saName, + Namespace: GetTestNamespace(nil), + }, + }, + } + + _, err := virtCli.RbacV1().ClusterRoleBindings().Create(context.Background(), &clusterRoleBinding, metav1.CreateOptions{}) + if !k8serrors.IsAlreadyExists(err) { + util.PanicOnError(err) + } +} + func createRoleBinding(saName string, clusterRole string) { virtCli := kubevirt.Client() @@ -199,4 +243,9 @@ func cleanupServiceAccount(saName string) { if !k8serrors.IsNotFound(err) { util.PanicOnError(err) } + + err = virtCli.RbacV1().ClusterRoleBindings().Delete(context.Background(), getClusterRoleBindingName(saName), metav1.DeleteOptions{}) + if !k8serrors.IsNotFound(err) { + util.PanicOnError(err) + } } diff --git a/tests/vendor/kubevirt.io/kubevirt/tests/utils.go b/tests/vendor/kubevirt.io/kubevirt/tests/utils.go index 5c54423fcf..c51656291c 100644 --- a/tests/vendor/kubevirt.io/kubevirt/tests/utils.go +++ b/tests/vendor/kubevirt.io/kubevirt/tests/utils.go @@ -363,46 +363,34 @@ func GetProcessName(pod *k8sv1.Pod, pid string) (output string, err error) { func GetVcpuMask(pod *k8sv1.Pod, cpu string) (output string, err error) { virtClient := kubevirt.Client() - pscmd := "ps -LC qemu-kvm -o lwp,comm| grep \"CPU " + cpu + "\" | cut -f 1 -d \"C\"" - output, err = exec.ExecuteCommandOnPod( - virtClient, - pod, - "compute", - []string{BinBash, "-c", pscmd}, - ) - Expect(err).ToNot(HaveOccurred()) + pscmd := `ps -LC qemu-kvm -o lwp,comm | grep "CPU ` + cpu + `" | cut -f1 -dC` + args := []string{BinBash, "-c", pscmd} + Eventually(func() error { + output, err = exec.ExecuteCommandOnPod(virtClient, pod, "compute", args) + return err + }).Should(Succeed()) vcpupid := strings.TrimSpace(strings.Trim(output, "\n")) - tasksetcmd := "taskset -c -p " + vcpupid + " | cut -f 2 -d \":\"" - args := []string{BinBash, "-c", tasksetcmd} + tasksetcmd := "taskset -c -p " + vcpupid + " | cut -f2 -d:" + args = []string{BinBash, "-c", tasksetcmd} output, err = exec.ExecuteCommandOnPod(virtClient, pod, "compute", args) Expect(err).ToNot(HaveOccurred()) - return output, err + return strings.TrimSpace(output), err } -func GetKvmPitMask(pod *k8sv1.Pod, nodeName string) (output string, err error) { - virtClient := kubevirt.Client() - - output, err = exec.ExecuteCommandOnPod( - virtClient, - pod, - "compute", - []string{"ps", "-C", "qemu-kvm", "-o", "pid", "--noheader"}, - ) - Expect(err).ToNot(HaveOccurred()) - qemupid := strings.TrimSpace(strings.Trim(output, "\n")) +func GetKvmPitMask(qemupid, nodeName string) (output string, err error) { kvmpitcomm := "kvm-pit/" + qemupid - args := []string{"ps", "-C", kvmpitcomm, "-o", "pid", "--noheader"} + args := []string{"pgrep", "-f", kvmpitcomm} output, err = ExecuteCommandInVirtHandlerPod(nodeName, args) Expect(err).ToNot(HaveOccurred()) - kvmpitpid := strings.TrimSpace(strings.Trim(output, "\n")) - tasksetcmd := "taskset -c -p " + kvmpitpid + " | cut -f 2 -d \":\"" + kvmpitpid := strings.TrimSpace(output) + tasksetcmd := "taskset -c -p " + kvmpitpid + " | cut -f2 -d:" args = []string{BinBash, "-c", tasksetcmd} output, err = ExecuteCommandInVirtHandlerPod(nodeName, args) Expect(err).ToNot(HaveOccurred()) - return output, err + return strings.TrimSpace(output), err } func ListCgroupThreads(pod *k8sv1.Pod) (output string, err error) { diff --git a/tests/vendor/modules.txt b/tests/vendor/modules.txt index 62d9ead485..cbf351eaad 100644 --- a/tests/vendor/modules.txt +++ b/tests/vendor/modules.txt @@ -891,7 +891,7 @@ kubevirt.io/api/pool kubevirt.io/api/pool/v1alpha1 kubevirt.io/api/snapshot kubevirt.io/api/snapshot/v1alpha1 -# kubevirt.io/client-go v1.0.1 => kubevirt.io/client-go v1.0.0 +# kubevirt.io/client-go v1.0.1 => kubevirt.io/client-go v1.0.1 ## explicit; go 1.17 kubevirt.io/client-go/generated/containerized-data-importer/clientset/versioned kubevirt.io/client-go/generated/containerized-data-importer/clientset/versioned/scheme @@ -931,7 +931,7 @@ kubevirt.io/containerized-data-importer-api/pkg/apis/upload/v1beta1 # kubevirt.io/controller-lifecycle-operator-sdk/api v0.2.4 ## explicit; go 1.17 kubevirt.io/controller-lifecycle-operator-sdk/api -# kubevirt.io/kubevirt v1.0.1 => kubevirt.io/kubevirt v1.0.0 +# kubevirt.io/kubevirt v1.0.1 => kubevirt.io/kubevirt v1.0.1 ## explicit; go 1.19 kubevirt.io/kubevirt/pkg/apimachinery/patch kubevirt.io/kubevirt/pkg/certificates/bootstrap @@ -1035,8 +1035,8 @@ sigs.k8s.io/structured-merge-diff/v4/value # sigs.k8s.io/yaml v1.3.0 ## explicit; go 1.12 sigs.k8s.io/yaml -# kubevirt.io/kubevirt => kubevirt.io/kubevirt v1.0.0 -# kubevirt.io/client-go => kubevirt.io/client-go v1.0.0 +# kubevirt.io/kubevirt => kubevirt.io/kubevirt v1.0.1 +# kubevirt.io/client-go => kubevirt.io/client-go v1.0.1 # sigs.k8s.io/controller-runtime => sigs.k8s.io/controller-runtime v0.13.1 # cloud.google.com/go => cloud.google.com/go v0.100.2 # github.com/googleapis/gnostic => github.com/google/gnostic v0.6.8