diff --git a/images/virt-artifact/patches/050-mount-containerdisk-always-readonly.patch b/images/virt-artifact/patches/050-mount-containerdisk-always-readonly.patch index 1c0cf54cbe..39ac2bfffd 100644 --- a/images/virt-artifact/patches/050-mount-containerdisk-always-readonly.patch +++ b/images/virt-artifact/patches/050-mount-containerdisk-always-readonly.patch @@ -10,3 +10,19 @@ index cc09800afc..346eb883ae 100644 disk.Type = "file" disk.Driver.Type = "qcow2" disk.Driver.ErrorPolicy = v1.DiskErrorPolicyStop +diff --git a/pkg/virt-launcher/virtwrap/live-migration-source.go b/pkg/virt-launcher/virtwrap/live-migration-source.go +index f580d06e52..afbc2538d3 100644 +--- a/pkg/virt-launcher/virtwrap/live-migration-source.go ++++ b/pkg/virt-launcher/virtwrap/live-migration-source.go +@@ -289,9 +289,9 @@ func classifyVolumesForMigration(vmi *v1.VirtualMachineInstance) *migrationDisks + + case volSrc.ConfigMap != nil || volSrc.Secret != nil || volSrc.DownwardAPI != nil || + volSrc.ServiceAccount != nil || volSrc.CloudInitNoCloud != nil || +- volSrc.CloudInitConfigDrive != nil || (volSrc.ContainerDisk != nil && !volSrc.ContainerDisk.Hotpluggable): ++ volSrc.CloudInitConfigDrive != nil: + disks.generated[volume.Name] = true +- case volSrc.ContainerDisk != nil && volSrc.ContainerDisk.Hotpluggable: ++ case volSrc.ContainerDisk != nil: + disks.shared[volume.Name] = true + } + } diff --git a/images/virtualization-artifact/pkg/controller/kvbuilder/kvvm.go b/images/virtualization-artifact/pkg/controller/kvbuilder/kvvm.go index 77905ab7ed..1a54216962 100644 --- a/images/virtualization-artifact/pkg/controller/kvbuilder/kvvm.go +++ b/images/virtualization-artifact/pkg/controller/kvbuilder/kvvm.go @@ -337,6 +337,7 @@ func (b *KVVM) SetDisk(name string, opts SetDiskOptions) error { vs.Ephemeral = &virtv1.EphemeralVolumeSource{ PersistentVolumeClaim: &corev1.PersistentVolumeClaimVolumeSource{ ClaimName: *opts.PersistentVolumeClaim, + ReadOnly: true, }, } diff --git a/tests/e2e/testdata/vm-migration/cvi/cvi-cirros.yaml b/tests/e2e/testdata/vm-migration/cvi/cvi-cirros.yaml new file mode 100644 index 0000000000..b672ece2cf --- /dev/null +++ b/tests/e2e/testdata/vm-migration/cvi/cvi-cirros.yaml @@ -0,0 +1,9 @@ +apiVersion: virtualization.deckhouse.io/v1alpha2 +kind: ClusterVirtualImage +metadata: + name: cvi-cirros +spec: + dataSource: + type: "HTTP" + http: + url: "https://89d64382-20df-4581-8cc7-80df331f67fa.selstorage.ru/cirros/cirros-0.5.1.qcow2" diff --git a/tests/e2e/testdata/vm-migration/cvi/kustomization.yaml b/tests/e2e/testdata/vm-migration/cvi/kustomization.yaml new file mode 100644 index 0000000000..bda7b362a8 --- /dev/null +++ b/tests/e2e/testdata/vm-migration/cvi/kustomization.yaml @@ -0,0 +1,4 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: + - cvi-cirros.yaml diff --git a/tests/e2e/testdata/vm-migration/kustomization.yaml b/tests/e2e/testdata/vm-migration/kustomization.yaml index 0ef3f36322..a05cabd5db 100644 --- a/tests/e2e/testdata/vm-migration/kustomization.yaml +++ b/tests/e2e/testdata/vm-migration/kustomization.yaml @@ -4,6 +4,7 @@ namespace: testcases namePrefix: pr-number-or-commit-hash- resources: - vi + - cvi - vm - ns.yaml configurations: diff --git a/tests/e2e/testdata/vm-migration/vm/kustomization.yaml b/tests/e2e/testdata/vm-migration/vm/kustomization.yaml index 178f21cff4..7c5d10065f 100644 --- a/tests/e2e/testdata/vm-migration/vm/kustomization.yaml +++ b/tests/e2e/testdata/vm-migration/vm/kustomization.yaml @@ -3,3 +3,4 @@ kind: Kustomization resources: - overlays/migration-bios - overlays/migration-uefi + - overlays/with-cvi diff --git a/tests/e2e/testdata/vm-migration/vm/overlays/with-cvi/kustomization.yaml b/tests/e2e/testdata/vm-migration/vm/overlays/with-cvi/kustomization.yaml new file mode 100644 index 0000000000..6bb34356af --- /dev/null +++ b/tests/e2e/testdata/vm-migration/vm/overlays/with-cvi/kustomization.yaml @@ -0,0 +1,18 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +nameSuffix: -migration-with-cvi +resources: + - ../../base +patches: + - path: vd.image.patch.yaml + - path: vm.bootloader.patch.yaml + - patch: |- + - op: add + path: /spec/blockDeviceRefs/- + value: { + "kind": "ClusterVirtualImage", + "name": "cvi-cirros" + } + target: + kind: VirtualMachine + name: vm diff --git a/tests/e2e/testdata/vm-migration/vm/overlays/with-cvi/vd.image.patch.yaml b/tests/e2e/testdata/vm-migration/vm/overlays/with-cvi/vd.image.patch.yaml new file mode 100644 index 0000000000..fb750b7a46 --- /dev/null +++ b/tests/e2e/testdata/vm-migration/vm/overlays/with-cvi/vd.image.patch.yaml @@ -0,0 +1,10 @@ +apiVersion: virtualization.deckhouse.io/v1alpha2 +kind: VirtualDisk +metadata: + name: vd-root +spec: + dataSource: + type: ObjectRef + objectRef: + kind: VirtualImage + name: vi-alpine-http-uefi diff --git a/tests/e2e/testdata/vm-migration/vm/overlays/with-cvi/vm.bootloader.patch.yaml b/tests/e2e/testdata/vm-migration/vm/overlays/with-cvi/vm.bootloader.patch.yaml new file mode 100644 index 0000000000..3ef9892ace --- /dev/null +++ b/tests/e2e/testdata/vm-migration/vm/overlays/with-cvi/vm.bootloader.patch.yaml @@ -0,0 +1,6 @@ +apiVersion: virtualization.deckhouse.io/v1alpha2 +kind: VirtualMachine +metadata: + name: vm +spec: + bootloader: EFI diff --git a/tests/e2e/vm_migration_cancel_test.go b/tests/e2e/vm_migration_cancel_test.go index 5ec8cd5da4..73e1e0a66e 100644 --- a/tests/e2e/vm_migration_cancel_test.go +++ b/tests/e2e/vm_migration_cancel_test.go @@ -33,7 +33,7 @@ import ( kc "github.com/deckhouse/virtualization/tests/e2e/kubectl" ) -var _ = Describe("Virtual machine migration cancel", SIGMigration(), ginkgoutil.CommonE2ETestDecorators(), func() { +var _ = Describe("Virtual machine cancel migration", SIGMigration(), ginkgoutil.CommonE2ETestDecorators(), func() { testCaseLabel := map[string]string{"testcase": "vm-migration-cancel"} BeforeEach(func() {