From 92f42bb2a9d4ede72c5509156e61d9d8429e2cba Mon Sep 17 00:00:00 2001 From: Nikita Korolev Date: Mon, 2 Mar 2026 19:09:02 +0300 Subject: [PATCH 01/16] test: fix additional networks Signed-off-by: Nikita Korolev --- .../blockdevice/virtual_disk_provisioning.go | 2 +- .../e2e/blockdevice/virtual_image_creation.go | 8 +-- test/e2e/internal/object/const.go | 17 +++--- test/e2e/internal/util/sdn.go | 8 +-- test/e2e/vm/additional_network_interfaces.go | 52 +++++++++++-------- test/e2e/vm/live_migration_tcp_session.go | 4 +- test/e2e/vm/migration.go | 2 +- 7 files changed, 51 insertions(+), 42 deletions(-) diff --git a/test/e2e/blockdevice/virtual_disk_provisioning.go b/test/e2e/blockdevice/virtual_disk_provisioning.go index 0ea3cf9930..487190d308 100644 --- a/test/e2e/blockdevice/virtual_disk_provisioning.go +++ b/test/e2e/blockdevice/virtual_disk_provisioning.go @@ -54,7 +54,7 @@ var _ = Describe("VirtualDiskProvisioning", func() { vi = vibuilder.New( vibuilder.WithName("vi"), vibuilder.WithNamespace(f.Namespace().Name), - vibuilder.WithDataSourceHTTP(object.ImageURLAlpineUEFIPerf, nil, nil), + vibuilder.WithDataSourceHTTP(object.ImageURLAlpineUEFI, nil, nil), vibuilder.WithStorage(v1alpha2.StoragePersistentVolumeClaim), ) diff --git a/test/e2e/blockdevice/virtual_image_creation.go b/test/e2e/blockdevice/virtual_image_creation.go index 59359c712d..8ed1a0f9e4 100644 --- a/test/e2e/blockdevice/virtual_image_creation.go +++ b/test/e2e/blockdevice/virtual_image_creation.go @@ -64,7 +64,7 @@ var _ = Describe("VirtualImageCreation", func() { vdbuilder.WithSize(ptr.To(resource.MustParse("350Mi"))), vdbuilder.WithDataSourceHTTP( &v1alpha2.DataSourceHTTP{ - URL: object.ImageURLAlpineUEFIPerf, + URL: object.ImageURLAlpineUEFI, }, ), ) @@ -98,7 +98,7 @@ var _ = Describe("VirtualImageCreation", func() { baseCvis = append(baseCvis, cvibuilder.New( cvibuilder.WithGenerateName(fmt.Sprintf("%s-cvi-http-", cviPrefix)), cvibuilder.WithDataSourceHTTP( - object.ImageURLAlpineUEFIPerf, + object.ImageURLAlpineUEFI, nil, nil, ), @@ -120,7 +120,7 @@ var _ = Describe("VirtualImageCreation", func() { vibuilder.WithNamespace(f.Namespace().Name), vibuilder.WithStorage(v1alpha2.StorageContainerRegistry), vibuilder.WithDataSourceHTTP( - object.ImageURLAlpineUEFIPerf, + object.ImageURLAlpineUEFI, nil, nil, ), @@ -146,7 +146,7 @@ var _ = Describe("VirtualImageCreation", func() { vibuilder.WithNamespace(f.Namespace().Name), vibuilder.WithStorage(v1alpha2.StoragePersistentVolumeClaim), vibuilder.WithDataSourceHTTP( - object.ImageURLAlpineUEFIPerf, + object.ImageURLAlpineUEFI, nil, nil, ), diff --git a/test/e2e/internal/object/const.go b/test/e2e/internal/object/const.go index 5cadeb268f..b3838da65a 100644 --- a/test/e2e/internal/object/const.go +++ b/test/e2e/internal/object/const.go @@ -17,14 +17,15 @@ limitations under the License. package object const ( - ImageURLAlpineUEFIPerf = "https://89d64382-20df-4581-8cc7-80df331f67fa.selstorage.ru/alpine/alpine-3-23-3-uefi-base.qcow2" - ImageURLAlpineBIOS = "https://89d64382-20df-4581-8cc7-80df331f67fa.selstorage.ru/alpine/alpine-3-23-3-bios-base.qcow2" - ImageURLUbuntu = "https://89d64382-20df-4581-8cc7-80df331f67fa.selstorage.ru/ubuntu/ubuntu-24.04-minimal-cloudimg-amd64.qcow2" - ImageURLContainerImage = "cr.yandex/crpvs5j3nh1mi2tpithr/e2e/alpine/alpine-image:latest" - ImageURLMinimalQCOW = "https://89d64382-20df-4581-8cc7-80df331f67fa.selstorage.ru/test/test.qcow2" - ImageURLMinimalISO = "https://89d64382-20df-4581-8cc7-80df331f67fa.selstorage.ru/test/test.iso" - Mi256 = 256 * 1024 * 1024 - DefaultVMClass = "generic" + ImageURLAlpineUEFI = "https://89d64382-20df-4581-8cc7-80df331f67fa.selstorage.ru/alpine/alpine-3-23-3-uefi-base.qcow2" + ImageURLAlpineBIOS = "https://89d64382-20df-4581-8cc7-80df331f67fa.selstorage.ru/alpine/alpine-3-23-3-bios-base.qcow2" + ImagesURLAlpineUEFIPerf = "https://89d64382-20df-4581-8cc7-80df331f67fa.selstorage.ru/alpine/alpine-3-21-uefi-perf.qcow2" + ImageURLUbuntu = "https://89d64382-20df-4581-8cc7-80df331f67fa.selstorage.ru/ubuntu/ubuntu-24.04-minimal-cloudimg-amd64.qcow2" + ImageURLContainerImage = "cr.yandex/crpvs5j3nh1mi2tpithr/e2e/alpine/alpine-image:latest" + ImageURLMinimalQCOW = "https://89d64382-20df-4581-8cc7-80df331f67fa.selstorage.ru/test/test.qcow2" + ImageURLMinimalISO = "https://89d64382-20df-4581-8cc7-80df331f67fa.selstorage.ru/test/test.iso" + Mi256 = 256 * 1024 * 1024 + DefaultVMClass = "generic" cloudInitBase = `#cloud-config package_update: true diff --git a/test/e2e/internal/util/sdn.go b/test/e2e/internal/util/sdn.go index 74dbd39f24..ecd2566326 100644 --- a/test/e2e/internal/util/sdn.go +++ b/test/e2e/internal/util/sdn.go @@ -29,13 +29,13 @@ import ( ) const ( - ClusterNetworkName = "cn-1003-for-e2e-test" - ClusterNetworkVLANID = 1003 + ClusterNetworkName = "cn-4006-for-e2e-test" + ClusterNetworkVLANID = 4006 ClusterNetworkCreateCommand = `kubectl apply -f - < % in output diff --git a/test/e2e/vm/live_migration_tcp_session.go b/test/e2e/vm/live_migration_tcp_session.go index a0cc6b312e..92ad45e721 100644 --- a/test/e2e/vm/live_migration_tcp_session.go +++ b/test/e2e/vm/live_migration_tcp_session.go @@ -76,7 +76,7 @@ var _ = Describe("VirtualMachineLiveMigrationTCPSession", func() { vd.WithSize(ptr.To(resource.MustParse("400Mi"))), vd.WithStorageClass(&storageClass.Name), vd.WithDataSourceHTTP(&v1alpha2.DataSourceHTTP{ - URL: object.ImageURLAlpineUEFIPerf, + URL: object.ImageURLAlpineUEFI, }), ) @@ -86,7 +86,7 @@ var _ = Describe("VirtualMachineLiveMigrationTCPSession", func() { vd.WithSize(ptr.To(resource.MustParse("500Mi"))), vd.WithStorageClass(&storageClass.Name), vd.WithDataSourceHTTP(&v1alpha2.DataSourceHTTP{ - URL: object.ImageURLAlpineUEFIPerf, + URL: object.ImageURLAlpineUEFI, }), ) diff --git a/test/e2e/vm/migration.go b/test/e2e/vm/migration.go index 33ec61bbaf..488f297282 100644 --- a/test/e2e/vm/migration.go +++ b/test/e2e/vm/migration.go @@ -93,7 +93,7 @@ var _ = Describe("VirtualMachineMigration", func() { vd.WithNamespace(f.Namespace().Name), vd.WithSize(ptr.To(resource.MustParse("10Gi"))), vd.WithDataSourceHTTP(&v1alpha2.DataSourceHTTP{ - URL: object.ImageURLAlpineUEFIPerf, + URL: object.ImageURLAlpineUEFI, }), ) vdBlankUEFI = vd.New( From 54b47f1502dbd96255838e3b6ba935397ef4ff9e Mon Sep 17 00:00:00 2001 From: Nikita Korolev Date: Wed, 4 Mar 2026 12:19:06 +0300 Subject: [PATCH 02/16] fix image in NewGeneratedHTTPVDUbuntu Signed-off-by: Nikita Korolev --- test/e2e/internal/object/vd.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/e2e/internal/object/vd.go b/test/e2e/internal/object/vd.go index b3bf427d5d..e7a0b8fe78 100644 --- a/test/e2e/internal/object/vd.go +++ b/test/e2e/internal/object/vd.go @@ -78,7 +78,7 @@ func NewGeneratedHTTPVDUbuntu(prefix, namespace string, opts ...vd.Option) *v1al vd.WithGenerateName(prefix), vd.WithNamespace(namespace), vd.WithDataSourceHTTP(&v1alpha2.DataSourceHTTP{ - URL: ImageURLAlpineBIOS, + URL: ImageURLUbuntu, }), } baseOpts = append(baseOpts, opts...) From 5694a05d31df946912c3e0999185258d11405076 Mon Sep 17 00:00:00 2001 From: Nikita Korolev Date: Wed, 4 Mar 2026 12:31:16 +0300 Subject: [PATCH 03/16] refactor test Signed-off-by: Nikita Korolev --- test/e2e/internal/object/cvi.go | 4 ++-- test/e2e/internal/object/vd.go | 12 ++++++++++++ test/e2e/internal/object/vi.go | 4 ++-- test/e2e/vm/additional_network_interfaces.go | 5 ----- 4 files changed, 16 insertions(+), 9 deletions(-) diff --git a/test/e2e/internal/object/cvi.go b/test/e2e/internal/object/cvi.go index 698664a2eb..d6b136c8a8 100644 --- a/test/e2e/internal/object/cvi.go +++ b/test/e2e/internal/object/cvi.go @@ -25,7 +25,7 @@ func NewHTTPCVIUbuntu(name string, opts ...cvi.Option) *v1alpha2.ClusterVirtualI baseOpts := []cvi.Option{ cvi.WithName(name), cvi.WithDataSourceHTTP( - ImageURLAlpineBIOS, + ImageURLUbuntu, nil, nil, ), @@ -38,7 +38,7 @@ func NewGenerateHTTPCVIUbuntu(prefix string, opts ...cvi.Option) *v1alpha2.Clust baseOpts := []cvi.Option{ cvi.WithGenerateName(prefix), cvi.WithDataSourceHTTP( - ImageURLAlpineBIOS, + ImageURLUbuntu, nil, nil, ), diff --git a/test/e2e/internal/object/vd.go b/test/e2e/internal/object/vd.go index e7a0b8fe78..30ded3439a 100644 --- a/test/e2e/internal/object/vd.go +++ b/test/e2e/internal/object/vd.go @@ -96,3 +96,15 @@ func NewHTTPVDAlpineBIOS(name, namespace string, opts ...vd.Option) *v1alpha2.Vi baseOpts = append(baseOpts, opts...) return vd.New(baseOpts...) } + +func NewHTTPVDAlpineUEFI(name, namespace string, opts ...vd.Option) *v1alpha2.VirtualDisk { + baseOpts := []vd.Option{ + vd.WithName(name), + vd.WithNamespace(namespace), + vd.WithDataSourceHTTP(&v1alpha2.DataSourceHTTP{ + URL: ImageURLAlpineUEFI, + }), + } + baseOpts = append(baseOpts, opts...) + return vd.New(baseOpts...) +} diff --git a/test/e2e/internal/object/vi.go b/test/e2e/internal/object/vi.go index dbfe55f484..3c4eb6b951 100644 --- a/test/e2e/internal/object/vi.go +++ b/test/e2e/internal/object/vi.go @@ -27,7 +27,7 @@ func NewHTTPVIUbuntu(name, namespace string, opts ...vi.Option) *v1alpha2.Virtua vi.WithStorage(v1alpha2.StorageContainerRegistry), vi.WithNamespace(namespace), vi.WithDataSourceHTTP( - ImageURLAlpineBIOS, + ImageURLUbuntu, nil, nil, ), @@ -42,7 +42,7 @@ func NewGeneratedHTTPVIUbuntu(prefix, namespace string, opts ...vi.Option) *v1al vi.WithGenerateName(prefix), vi.WithNamespace(namespace), vi.WithDataSourceHTTP( - ImageURLAlpineBIOS, + ImageURLUbuntu, nil, nil, ), diff --git a/test/e2e/vm/additional_network_interfaces.go b/test/e2e/vm/additional_network_interfaces.go index cf33202e27..431e938dba 100644 --- a/test/e2e/vm/additional_network_interfaces.go +++ b/test/e2e/vm/additional_network_interfaces.go @@ -113,11 +113,6 @@ var _ = Describe("VirtualMachineAdditionalNetworkInterfaces", func() { By(fmt.Sprintf("Wait agent on vm %s", vmBar.GetName()), func() { util.UntilVMAgentReady(crclient.ObjectKeyFromObject(vmFoo), framework.LongTimeout) }) - - // util.UntilVMAgentReady(crclient.ObjectKeyFromObject(vmBar), framework.LongTimeout) - // if tc.vmBarHasMainNetwork { - // util.UntilVMAgentReady(crclient.ObjectKeyFromObject(vmBar), framework.LongTimeout) - // } }) By("Wait for additional network interfaces to be ready", func() { From eb38243cefad4b390471bebebd3d5bc7a1fa4ae7 Mon Sep 17 00:00:00 2001 From: Nikita Korolev Date: Wed, 4 Mar 2026 13:20:46 +0300 Subject: [PATCH 04/16] change ubuntu to alpine Signed-off-by: Nikita Korolev --- .../blockdevice/importer_network_policy.go | 4 +- test/e2e/internal/object/vi.go | 62 +++++++++++++++++++ test/e2e/vm/volume_migration_local_disks.go | 6 +- .../volume_migration_storage_class_changed.go | 6 +- 4 files changed, 70 insertions(+), 8 deletions(-) diff --git a/test/e2e/blockdevice/importer_network_policy.go b/test/e2e/blockdevice/importer_network_policy.go index 8b4feee4d7..d29f074be8 100644 --- a/test/e2e/blockdevice/importer_network_policy.go +++ b/test/e2e/blockdevice/importer_network_policy.go @@ -46,7 +46,7 @@ var _ = Describe("ImporterNetworkPolicy", func() { util.UntilObjectState("Deployed", framework.ShortTimeout, project) By("Create virtual image") - vi := object.NewGeneratedHTTPVIUbuntu("vi-", project.Name) + vi := object.NewGeneratedHTTPVIAlpineBIOS("vi-", project.Name) err = f.CreateWithDeferredDeletion(context.Background(), vi) Expect(err).NotTo(HaveOccurred()) @@ -62,7 +62,7 @@ var _ = Describe("ImporterNetworkPolicy", func() { util.UntilObjectState("Deployed", framework.ShortTimeout, project) By("Create virtual disk") - vd := object.NewGeneratedHTTPVDUbuntu("vd-", project.Name) + vd := object.NewHTTPVDAlpineBIOS("vd-", project.Name) err = f.CreateWithDeferredDeletion(context.Background(), vd) Expect(err).NotTo(HaveOccurred()) diff --git a/test/e2e/internal/object/vi.go b/test/e2e/internal/object/vi.go index 3c4eb6b951..e3ed1f1eb9 100644 --- a/test/e2e/internal/object/vi.go +++ b/test/e2e/internal/object/vi.go @@ -37,6 +37,38 @@ func NewHTTPVIUbuntu(name, namespace string, opts ...vi.Option) *v1alpha2.Virtua return vi.New(baseOpts...) } +func NewHTTPVIAlpineBIOS(name, namespace string, opts ...vi.Option) *v1alpha2.VirtualImage { + baseOpts := []vi.Option{ + vi.WithName(name), + vi.WithStorage(v1alpha2.StorageContainerRegistry), + vi.WithNamespace(namespace), + vi.WithDataSourceHTTP( + ImageURLAlpineBIOS, + nil, + nil, + ), + vi.WithStorage(v1alpha2.StorageContainerRegistry), + } + baseOpts = append(baseOpts, opts...) + return vi.New(baseOpts...) +} + +func NewHTTPVIAlpineUEFI(name, namespace string, opts ...vi.Option) *v1alpha2.VirtualImage { + baseOpts := []vi.Option{ + vi.WithName(name), + vi.WithStorage(v1alpha2.StorageContainerRegistry), + vi.WithNamespace(namespace), + vi.WithDataSourceHTTP( + ImageURLAlpineUEFI, + nil, + nil, + ), + vi.WithStorage(v1alpha2.StorageContainerRegistry), + } + baseOpts = append(baseOpts, opts...) + return vi.New(baseOpts...) +} + func NewGeneratedHTTPVIUbuntu(prefix, namespace string, opts ...vi.Option) *v1alpha2.VirtualImage { baseOpts := []vi.Option{ vi.WithGenerateName(prefix), @@ -52,6 +84,36 @@ func NewGeneratedHTTPVIUbuntu(prefix, namespace string, opts ...vi.Option) *v1al return vi.New(baseOpts...) } +func NewGeneratedHTTPVIAlpineBIOS(prefix, namespace string, opts ...vi.Option) *v1alpha2.VirtualImage { + baseOpts := []vi.Option{ + vi.WithGenerateName(prefix), + vi.WithNamespace(namespace), + vi.WithDataSourceHTTP( + ImageURLAlpineBIOS, + nil, + nil, + ), + vi.WithStorage(v1alpha2.StorageContainerRegistry), + } + baseOpts = append(baseOpts, opts...) + return vi.New(baseOpts...) +} + +func NewGeneratedHTTPVIAlpineUEFI(prefix, namespace string, opts ...vi.Option) *v1alpha2.VirtualImage { + baseOpts := []vi.Option{ + vi.WithGenerateName(prefix), + vi.WithNamespace(namespace), + vi.WithDataSourceHTTP( + ImageURLAlpineUEFI, + nil, + nil, + ), + vi.WithStorage(v1alpha2.StorageContainerRegistry), + } + baseOpts = append(baseOpts, opts...) + return vi.New(baseOpts...) +} + func NewContainerImageVI(name, namespace string, opts ...vi.Option) *v1alpha2.VirtualImage { baseOpts := []vi.Option{ vi.WithName(name), diff --git a/test/e2e/vm/volume_migration_local_disks.go b/test/e2e/vm/volume_migration_local_disks.go index 023bcae917..859db3edff 100644 --- a/test/e2e/vm/volume_migration_local_disks.go +++ b/test/e2e/vm/volume_migration_local_disks.go @@ -70,7 +70,7 @@ var _ = Describe("LocalVirtualDiskMigration", decoratorsForVolumeMigrations(), f DeferCleanup(f.After) - newVI := object.NewGeneratedHTTPVIUbuntu("volume-migration-local-disks-", f.Namespace().Name) + newVI := object.NewGeneratedHTTPVIAlpineBIOS("volume-migration-local-disks-", f.Namespace().Name) newVI, err := f.VirtClient().VirtualImages(f.Namespace().Name).Create(context.Background(), newVI, metav1.CreateOptions{}) Expect(err).NotTo(HaveOccurred()) f.DeferDelete(newVI) @@ -78,8 +78,8 @@ var _ = Describe("LocalVirtualDiskMigration", decoratorsForVolumeMigrations(), f }) const ( - vdRootName = "vd-ubuntu-root-disk" - vdAdditionalName = "vd-ubuntu-additional-disk" + vdRootName = "vd-alpine-root-disk" + vdAdditionalName = "vd-alpine-additional-disk" ) localMigrationRootOnlyBuild := func() (*v1alpha2.VirtualMachine, []*v1alpha2.VirtualDisk) { diff --git a/test/e2e/vm/volume_migration_storage_class_changed.go b/test/e2e/vm/volume_migration_storage_class_changed.go index 6c1f686407..8ccbb88bba 100644 --- a/test/e2e/vm/volume_migration_storage_class_changed.go +++ b/test/e2e/vm/volume_migration_storage_class_changed.go @@ -68,7 +68,7 @@ var _ = Describe("StorageClassMigration", decoratorsForVolumeMigrations(), func( DeferCleanup(f.After) - newVI := object.NewGeneratedHTTPVIUbuntu("volume-migration-storage-class-changed-", f.Namespace().Name) + newVI := object.NewGeneratedHTTPVIAlpineBIOS("volume-migration-storage-class-changed-", f.Namespace().Name) newVI, err = f.VirtClient().VirtualImages(f.Namespace().Name).Create(context.Background(), newVI, metav1.CreateOptions{}) Expect(err).NotTo(HaveOccurred()) f.DeferDelete(newVI) @@ -76,8 +76,8 @@ var _ = Describe("StorageClassMigration", decoratorsForVolumeMigrations(), func( }) const ( - vdRootName = "vd-ubuntu-root-disk" - vdAdditionalName = "vd-ubuntu-additional-disk" + vdRootName = "vd-alpine-root-disk" + vdAdditionalName = "vd-alpine-additional-disk" ) storageClassMigrationRootOnlyBuild := func() (*v1alpha2.VirtualMachine, []*v1alpha2.VirtualDisk) { From fdac2c647bc0db02969e43e1234ee35ff11b54f5 Mon Sep 17 00:00:00 2001 From: Nikita Korolev Date: Wed, 4 Mar 2026 13:45:13 +0300 Subject: [PATCH 05/16] refactor net interf Signed-off-by: Nikita Korolev --- test/e2e/vm/additional_network_interfaces.go | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/test/e2e/vm/additional_network_interfaces.go b/test/e2e/vm/additional_network_interfaces.go index 431e938dba..0858a8b024 100644 --- a/test/e2e/vm/additional_network_interfaces.go +++ b/test/e2e/vm/additional_network_interfaces.go @@ -39,15 +39,6 @@ import ( "github.com/deckhouse/virtualization/test/e2e/internal/util" ) -const ( - // IPs on additional network interface for connectivity check between VMs. - // When VM has Main network, additional interface is eth1; otherwise it's eth0. - vmFooAdditionalIP1 = "192.168.1.10" - vmBarAdditionalIP1 = "192.168.1.11" - vmFooAdditionalIP2 = "192.168.1.12" - vmBarAdditionalIP2 = "192.168.1.13" -) - type additionalNetworkTestCase struct { vmBarHasMainNetwork bool vmFooAdditionalIP string @@ -106,7 +97,9 @@ var _ = Describe("VirtualMachineAdditionalNetworkInterfaces", func() { err := f.CreateWithDeferredDeletion(context.Background(), vdFooRoot, vdBarRoot, vmFoo, vmBar) Expect(err).NotTo(HaveOccurred()) - util.UntilObjectPhase(string(v1alpha2.MachineRunning), framework.LongTimeout, vmFoo, vmBar) + By(fmt.Sprintf("Wait until vms %s and %s in pahe running", vmFoo.GetName(), vmBar.GetName()), func() { + util.UntilObjectPhase(string(v1alpha2.MachineRunning), framework.LongTimeout, vmFoo, vmBar) + }) By(fmt.Sprintf("Wait agent on vm %s", vmFoo.GetName()), func() { util.UntilVMAgentReady(crclient.ObjectKeyFromObject(vmFoo), framework.LongTimeout) }) @@ -159,8 +152,8 @@ var _ = Describe("VirtualMachineAdditionalNetworkInterfaces", func() { checkConnectivityBetweenVMs(f, vmFoo, vmBar, tc.vmBarHasMainNetwork, tc.vmBarAdditionalIP, tc.vmFooAdditionalIP) }) }, - Entry("Main + additional network", additionalNetworkTestCase{vmBarHasMainNetwork: true, vmFooAdditionalIP: vmFooAdditionalIP1, vmBarAdditionalIP: vmBarAdditionalIP1}), - Entry("Only additional network (vm-bar without Main)", additionalNetworkTestCase{vmBarHasMainNetwork: false, vmFooAdditionalIP: vmFooAdditionalIP2, vmBarAdditionalIP: vmBarAdditionalIP2}), + Entry("Main + additional network", additionalNetworkTestCase{vmBarHasMainNetwork: true, vmFooAdditionalIP: "192.168.42.10", vmBarAdditionalIP: "192.168.42.11"}), + Entry("Only additional network (vm-bar without Main)", additionalNetworkTestCase{vmBarHasMainNetwork: false, vmFooAdditionalIP: "192.168.42.12", vmBarAdditionalIP: "192.168.42.13"}), ) }) From 5ffc2075b0d648966cfc4df9af0d088580e2c37f Mon Sep 17 00:00:00 2001 From: Nikita Korolev Date: Wed, 4 Mar 2026 14:04:41 +0300 Subject: [PATCH 06/16] refactor Signed-off-by: Nikita Korolev --- test/e2e/blockdevice/virtual_image_creation.go | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/test/e2e/blockdevice/virtual_image_creation.go b/test/e2e/blockdevice/virtual_image_creation.go index 8ed1a0f9e4..93bc034a0f 100644 --- a/test/e2e/blockdevice/virtual_image_creation.go +++ b/test/e2e/blockdevice/virtual_image_creation.go @@ -98,9 +98,7 @@ var _ = Describe("VirtualImageCreation", func() { baseCvis = append(baseCvis, cvibuilder.New( cvibuilder.WithGenerateName(fmt.Sprintf("%s-cvi-http-", cviPrefix)), cvibuilder.WithDataSourceHTTP( - object.ImageURLAlpineUEFI, - nil, - nil, + object.ImageURLAlpineUEFI, nil, nil, ), )) baseCvis = append(baseCvis, cvibuilder.New( @@ -120,9 +118,7 @@ var _ = Describe("VirtualImageCreation", func() { vibuilder.WithNamespace(f.Namespace().Name), vibuilder.WithStorage(v1alpha2.StorageContainerRegistry), vibuilder.WithDataSourceHTTP( - object.ImageURLAlpineUEFI, - nil, - nil, + object.ImageURLAlpineUEFI, nil, nil, ), )) baseVis = append(baseVis, vibuilder.New( @@ -146,9 +142,7 @@ var _ = Describe("VirtualImageCreation", func() { vibuilder.WithNamespace(f.Namespace().Name), vibuilder.WithStorage(v1alpha2.StoragePersistentVolumeClaim), vibuilder.WithDataSourceHTTP( - object.ImageURLAlpineUEFI, - nil, - nil, + object.ImageURLAlpineUEFI, nil, nil, ), )) baseVis = append(baseVis, vibuilder.New( From 0b68420329b3dd940712f7454d445e57677c3fec Mon Sep 17 00:00:00 2001 From: Nikita Korolev Date: Wed, 4 Mar 2026 14:07:11 +0300 Subject: [PATCH 07/16] refactor funcs Signed-off-by: Nikita Korolev --- test/e2e/internal/object/cvi.go | 8 ++------ test/e2e/internal/object/vi.go | 24 ++++++------------------ 2 files changed, 8 insertions(+), 24 deletions(-) diff --git a/test/e2e/internal/object/cvi.go b/test/e2e/internal/object/cvi.go index d6b136c8a8..a81d0fe341 100644 --- a/test/e2e/internal/object/cvi.go +++ b/test/e2e/internal/object/cvi.go @@ -25,9 +25,7 @@ func NewHTTPCVIUbuntu(name string, opts ...cvi.Option) *v1alpha2.ClusterVirtualI baseOpts := []cvi.Option{ cvi.WithName(name), cvi.WithDataSourceHTTP( - ImageURLUbuntu, - nil, - nil, + ImageURLUbuntu, nil, nil, ), } baseOpts = append(baseOpts, opts...) @@ -38,9 +36,7 @@ func NewGenerateHTTPCVIUbuntu(prefix string, opts ...cvi.Option) *v1alpha2.Clust baseOpts := []cvi.Option{ cvi.WithGenerateName(prefix), cvi.WithDataSourceHTTP( - ImageURLUbuntu, - nil, - nil, + ImageURLUbuntu, nil, nil, ), } baseOpts = append(baseOpts, opts...) diff --git a/test/e2e/internal/object/vi.go b/test/e2e/internal/object/vi.go index e3ed1f1eb9..7b70b3597d 100644 --- a/test/e2e/internal/object/vi.go +++ b/test/e2e/internal/object/vi.go @@ -27,9 +27,7 @@ func NewHTTPVIUbuntu(name, namespace string, opts ...vi.Option) *v1alpha2.Virtua vi.WithStorage(v1alpha2.StorageContainerRegistry), vi.WithNamespace(namespace), vi.WithDataSourceHTTP( - ImageURLUbuntu, - nil, - nil, + ImageURLUbuntu, nil, nil, ), vi.WithStorage(v1alpha2.StorageContainerRegistry), } @@ -43,9 +41,7 @@ func NewHTTPVIAlpineBIOS(name, namespace string, opts ...vi.Option) *v1alpha2.Vi vi.WithStorage(v1alpha2.StorageContainerRegistry), vi.WithNamespace(namespace), vi.WithDataSourceHTTP( - ImageURLAlpineBIOS, - nil, - nil, + ImageURLAlpineBIOS, nil, nil, ), vi.WithStorage(v1alpha2.StorageContainerRegistry), } @@ -59,9 +55,7 @@ func NewHTTPVIAlpineUEFI(name, namespace string, opts ...vi.Option) *v1alpha2.Vi vi.WithStorage(v1alpha2.StorageContainerRegistry), vi.WithNamespace(namespace), vi.WithDataSourceHTTP( - ImageURLAlpineUEFI, - nil, - nil, + ImageURLAlpineUEFI, nil, nil, ), vi.WithStorage(v1alpha2.StorageContainerRegistry), } @@ -74,9 +68,7 @@ func NewGeneratedHTTPVIUbuntu(prefix, namespace string, opts ...vi.Option) *v1al vi.WithGenerateName(prefix), vi.WithNamespace(namespace), vi.WithDataSourceHTTP( - ImageURLUbuntu, - nil, - nil, + ImageURLUbuntu, nil, nil, ), vi.WithStorage(v1alpha2.StorageContainerRegistry), } @@ -89,9 +81,7 @@ func NewGeneratedHTTPVIAlpineBIOS(prefix, namespace string, opts ...vi.Option) * vi.WithGenerateName(prefix), vi.WithNamespace(namespace), vi.WithDataSourceHTTP( - ImageURLAlpineBIOS, - nil, - nil, + ImageURLAlpineBIOS, nil, nil, ), vi.WithStorage(v1alpha2.StorageContainerRegistry), } @@ -104,9 +94,7 @@ func NewGeneratedHTTPVIAlpineUEFI(prefix, namespace string, opts ...vi.Option) * vi.WithGenerateName(prefix), vi.WithNamespace(namespace), vi.WithDataSourceHTTP( - ImageURLAlpineUEFI, - nil, - nil, + ImageURLAlpineUEFI, nil, nil, ), vi.WithStorage(v1alpha2.StorageContainerRegistry), } From 9e56b640d53d7e9b62c06d51f0500c986cc79fcd Mon Sep 17 00:00:00 2001 From: Nikita Korolev Date: Wed, 4 Mar 2026 16:09:06 +0300 Subject: [PATCH 08/16] reafctor test Signed-off-by: Nikita Korolev --- test/e2e/internal/object/vd.go | 12 ++++++++++++ test/e2e/vm/additional_network_interfaces.go | 14 ++------------ 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/test/e2e/internal/object/vd.go b/test/e2e/internal/object/vd.go index 30ded3439a..13b76d2b3a 100644 --- a/test/e2e/internal/object/vd.go +++ b/test/e2e/internal/object/vd.go @@ -108,3 +108,15 @@ func NewHTTPVDAlpineUEFI(name, namespace string, opts ...vd.Option) *v1alpha2.Vi baseOpts = append(baseOpts, opts...) return vd.New(baseOpts...) } + +func NewHTTPVDAlpineUEFIPerf(name, namespace string, opts ...vd.Option) *v1alpha2.VirtualDisk { + baseOpts := []vd.Option{ + vd.WithName(name), + vd.WithNamespace(namespace), + vd.WithDataSourceHTTP(&v1alpha2.DataSourceHTTP{ + URL: ImagesURLAlpineUEFIPerf, + }), + } + baseOpts = append(baseOpts, opts...) + return vd.New(baseOpts...) +} diff --git a/test/e2e/vm/additional_network_interfaces.go b/test/e2e/vm/additional_network_interfaces.go index 0858a8b024..5da054c701 100644 --- a/test/e2e/vm/additional_network_interfaces.go +++ b/test/e2e/vm/additional_network_interfaces.go @@ -73,21 +73,11 @@ var _ = Describe("VirtualMachineAdditionalNetworkInterfaces", func() { By("Environment preparation", func() { ns := f.Namespace().Name - vdFooRoot = vd.New( - vd.WithName("vd-foo-root"), - vd.WithNamespace(ns), + vdFooRoot = object.NewHTTPVDAlpineUEFIPerf("vd-foo-root", ns, vd.WithSize(ptr.To(resource.MustParse("512Mi"))), - vd.WithDataSourceHTTP(&v1alpha2.DataSourceHTTP{ - URL: object.ImagesURLAlpineUEFIPerf, - }), ) - vdBarRoot = vd.New( - vd.WithName("vd-bar-root"), - vd.WithNamespace(ns), + vdBarRoot = object.NewHTTPVDAlpineUEFIPerf("vd-bar-root", ns, vd.WithSize(ptr.To(resource.MustParse("512Mi"))), - vd.WithDataSourceHTTP(&v1alpha2.DataSourceHTTP{ - URL: object.ImagesURLAlpineUEFIPerf, - }), ) // vm-foo always has Main + ClusterNetwork so we can SSH to it. From 7a4756389e63a4b5898508ae5b2d395c11e670e1 Mon Sep 17 00:00:00 2001 From: Nikita Korolev Date: Wed, 4 Mar 2026 17:22:39 +0300 Subject: [PATCH 09/16] change condition, for torrelation Signed-off-by: Nikita Korolev --- test/e2e/legacy/affinity_toleration.go | 48 ++++++++++++++++++++++---- 1 file changed, 42 insertions(+), 6 deletions(-) diff --git a/test/e2e/legacy/affinity_toleration.go b/test/e2e/legacy/affinity_toleration.go index 3ac178784d..d9aadb5d61 100644 --- a/test/e2e/legacy/affinity_toleration.go +++ b/test/e2e/legacy/affinity_toleration.go @@ -178,7 +178,7 @@ var _ = Describe("VirtualMachineAffinityAndToleration", Ordered, func() { } return nil - }).WithTimeout(LongWaitDuration).WithPolling(migratingStatusPollingInterval).Should(Succeed()) + }).WithTimeout(Timeout).WithPolling(migratingStatusPollingInterval).Should(Succeed()) }() res := kubectl.PatchResource(kc.ResourceVM, vmObjC.Name, kc.PatchOptions{ JSONPatch: []*kc.JSONPatch{ @@ -504,17 +504,53 @@ func DefineTargetNode(sourceNode string, targetLabel map[string]string) (string, return "", err } for _, n := range nodes.Items { - if n.Name != sourceNode { - for _, c := range n.Status.Conditions { - if c.Type == corev1.NodeReady && c.Status == corev1.ConditionTrue { - return n.Name, nil - } + if n.Name == sourceNode { + continue + } + if n.Spec.Unschedulable { + continue + } + if n.Labels["kubevirt.internal.virtualization.deckhouse.io/schedulable"] != "true" { + continue + } + + isReady := false + for _, c := range n.Status.Conditions { + if c.Type == corev1.NodeReady && c.Status == corev1.ConditionTrue { + isReady = true + break } } + if !isReady { + continue + } + + if !hasRequiredVirtualizationDevices(n) { + continue + } + + return n.Name, nil } return "", fmt.Errorf("failed to define a target node") } +func hasRequiredVirtualizationDevices(n corev1.Node) bool { + requiredDevices := []corev1.ResourceName{ + corev1.ResourceName("devices.virtualization.deckhouse.io/kvm"), + corev1.ResourceName("devices.virtualization.deckhouse.io/tun"), + corev1.ResourceName("devices.virtualization.deckhouse.io/vhost-net"), + } + + for _, resourceName := range requiredDevices { + qty, exists := n.Status.Allocatable[resourceName] + if !exists || qty.Sign() <= 0 { + return false + } + } + + return true +} + func GetVirtualMachineObjByLabel(namespace string, label map[string]string) (*v1alpha2.VirtualMachine, error) { vmObjects := v1alpha2.VirtualMachineList{} err := GetObjects(kc.ResourceVM, &vmObjects, kc.GetOptions{ From ecb97e227cd65ce180b4f546a8cd9359d758aefa Mon Sep 17 00:00:00 2001 From: Nikita Korolev Date: Wed, 4 Mar 2026 17:59:58 +0300 Subject: [PATCH 10/16] rm runcmd in cloud-init Signed-off-by: Nikita Korolev --- test/e2e/vm/additional_network_interfaces.go | 5 ----- 1 file changed, 5 deletions(-) diff --git a/test/e2e/vm/additional_network_interfaces.go b/test/e2e/vm/additional_network_interfaces.go index 5da054c701..77fdf37429 100644 --- a/test/e2e/vm/additional_network_interfaces.go +++ b/test/e2e/vm/additional_network_interfaces.go @@ -206,11 +206,6 @@ write_files: iface %s inet static address %s netmask 255.255.255.0 -runcmd: - - "rc-update add qemu-guest-agent && rc-service qemu-guest-agent start" - - "rc-update add sshd && rc-service sshd start" - - "rc-update add networking boot && rc-service networking restart" - - "chown -R cloud:cloud /home/cloud" `, ifaceName, ifaceName, additionalIP) } From c77b5fddf409137470c016237cb1b9645eaf2f53 Mon Sep 17 00:00:00 2001 From: Nikita Korolev Date: Wed, 4 Mar 2026 19:04:01 +0300 Subject: [PATCH 11/16] rm cond Signed-off-by: Nikita Korolev --- test/e2e/legacy/affinity_toleration.go | 48 ++++---------------------- 1 file changed, 6 insertions(+), 42 deletions(-) diff --git a/test/e2e/legacy/affinity_toleration.go b/test/e2e/legacy/affinity_toleration.go index d9aadb5d61..3ac178784d 100644 --- a/test/e2e/legacy/affinity_toleration.go +++ b/test/e2e/legacy/affinity_toleration.go @@ -178,7 +178,7 @@ var _ = Describe("VirtualMachineAffinityAndToleration", Ordered, func() { } return nil - }).WithTimeout(Timeout).WithPolling(migratingStatusPollingInterval).Should(Succeed()) + }).WithTimeout(LongWaitDuration).WithPolling(migratingStatusPollingInterval).Should(Succeed()) }() res := kubectl.PatchResource(kc.ResourceVM, vmObjC.Name, kc.PatchOptions{ JSONPatch: []*kc.JSONPatch{ @@ -504,53 +504,17 @@ func DefineTargetNode(sourceNode string, targetLabel map[string]string) (string, return "", err } for _, n := range nodes.Items { - if n.Name == sourceNode { - continue - } - if n.Spec.Unschedulable { - continue - } - if n.Labels["kubevirt.internal.virtualization.deckhouse.io/schedulable"] != "true" { - continue - } - - isReady := false - for _, c := range n.Status.Conditions { - if c.Type == corev1.NodeReady && c.Status == corev1.ConditionTrue { - isReady = true - break + if n.Name != sourceNode { + for _, c := range n.Status.Conditions { + if c.Type == corev1.NodeReady && c.Status == corev1.ConditionTrue { + return n.Name, nil + } } } - if !isReady { - continue - } - - if !hasRequiredVirtualizationDevices(n) { - continue - } - - return n.Name, nil } return "", fmt.Errorf("failed to define a target node") } -func hasRequiredVirtualizationDevices(n corev1.Node) bool { - requiredDevices := []corev1.ResourceName{ - corev1.ResourceName("devices.virtualization.deckhouse.io/kvm"), - corev1.ResourceName("devices.virtualization.deckhouse.io/tun"), - corev1.ResourceName("devices.virtualization.deckhouse.io/vhost-net"), - } - - for _, resourceName := range requiredDevices { - qty, exists := n.Status.Allocatable[resourceName] - if !exists || qty.Sign() <= 0 { - return false - } - } - - return true -} - func GetVirtualMachineObjByLabel(namespace string, label map[string]string) (*v1alpha2.VirtualMachine, error) { vmObjects := v1alpha2.VirtualMachineList{} err := GetObjects(kc.ResourceVM, &vmObjects, kc.GetOptions{ From 9c1bb3ec827d1126e0aefeadc0316e32ca8450a7 Mon Sep 17 00:00:00 2001 From: Nikita Korolev Date: Wed, 4 Mar 2026 19:35:37 +0300 Subject: [PATCH 12/16] add comment Signed-off-by: Nikita Korolev --- test/e2e/internal/object/const.go | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/test/e2e/internal/object/const.go b/test/e2e/internal/object/const.go index b3838da65a..9f5511bf47 100644 --- a/test/e2e/internal/object/const.go +++ b/test/e2e/internal/object/const.go @@ -22,10 +22,11 @@ const ( ImagesURLAlpineUEFIPerf = "https://89d64382-20df-4581-8cc7-80df331f67fa.selstorage.ru/alpine/alpine-3-21-uefi-perf.qcow2" ImageURLUbuntu = "https://89d64382-20df-4581-8cc7-80df331f67fa.selstorage.ru/ubuntu/ubuntu-24.04-minimal-cloudimg-amd64.qcow2" ImageURLContainerImage = "cr.yandex/crpvs5j3nh1mi2tpithr/e2e/alpine/alpine-image:latest" - ImageURLMinimalQCOW = "https://89d64382-20df-4581-8cc7-80df331f67fa.selstorage.ru/test/test.qcow2" - ImageURLMinimalISO = "https://89d64382-20df-4581-8cc7-80df331f67fa.selstorage.ru/test/test.iso" - Mi256 = 256 * 1024 * 1024 - DefaultVMClass = "generic" + // Images with test data, without OS + ImageURLMinimalQCOW = "https://89d64382-20df-4581-8cc7-80df331f67fa.selstorage.ru/test/test.qcow2" + ImageURLMinimalISO = "https://89d64382-20df-4581-8cc7-80df331f67fa.selstorage.ru/test/test.iso" + Mi256 = 256 * 1024 * 1024 + DefaultVMClass = "generic" cloudInitBase = `#cloud-config package_update: true From 72d62a8ae205db13a544fe77b01b7d042844994f Mon Sep 17 00:00:00 2001 From: Nikita Korolev Date: Wed, 4 Mar 2026 19:43:42 +0300 Subject: [PATCH 13/16] change name for tets images and iso add comment Signed-off-by: Nikita Korolev --- test/e2e/internal/object/const.go | 10 +++++----- test/e2e/vm/migration.go | 8 ++++---- test/e2e/vm/power_state.go | 4 ++-- test/e2e/vmop/restore.go | 4 ++-- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/test/e2e/internal/object/const.go b/test/e2e/internal/object/const.go index 9f5511bf47..c276537a29 100644 --- a/test/e2e/internal/object/const.go +++ b/test/e2e/internal/object/const.go @@ -22,11 +22,11 @@ const ( ImagesURLAlpineUEFIPerf = "https://89d64382-20df-4581-8cc7-80df331f67fa.selstorage.ru/alpine/alpine-3-21-uefi-perf.qcow2" ImageURLUbuntu = "https://89d64382-20df-4581-8cc7-80df331f67fa.selstorage.ru/ubuntu/ubuntu-24.04-minimal-cloudimg-amd64.qcow2" ImageURLContainerImage = "cr.yandex/crpvs5j3nh1mi2tpithr/e2e/alpine/alpine-image:latest" - // Images with test data, without OS - ImageURLMinimalQCOW = "https://89d64382-20df-4581-8cc7-80df331f67fa.selstorage.ru/test/test.qcow2" - ImageURLMinimalISO = "https://89d64382-20df-4581-8cc7-80df331f67fa.selstorage.ru/test/test.iso" - Mi256 = 256 * 1024 * 1024 - DefaultVMClass = "generic" + // No bootable + ImageTestDataQCOW = "https://89d64382-20df-4581-8cc7-80df331f67fa.selstorage.ru/test/test.qcow2" + ImageTestDataISO = "https://89d64382-20df-4581-8cc7-80df331f67fa.selstorage.ru/test/test.iso" + Mi256 = 256 * 1024 * 1024 + DefaultVMClass = "generic" cloudInitBase = `#cloud-config package_update: true diff --git a/test/e2e/vm/migration.go b/test/e2e/vm/migration.go index 488f297282..b6baf7f062 100644 --- a/test/e2e/vm/migration.go +++ b/test/e2e/vm/migration.go @@ -149,23 +149,23 @@ var _ = Describe("VirtualMachineMigration", func() { viHotplugBIOS = vi.New( vi.WithName("vi-hotplug-bios"), vi.WithNamespace(f.Namespace().Name), - vi.WithDataSourceHTTP(object.ImageURLMinimalQCOW, nil, nil), + vi.WithDataSourceHTTP(object.ImageTestDataQCOW, nil, nil), vi.WithStorage(v1alpha2.StorageContainerRegistry), ) viHotplugUEFI = vi.New( vi.WithName("vi-hotplug-uefi"), vi.WithNamespace(f.Namespace().Name), - vi.WithDataSourceHTTP(object.ImageURLMinimalQCOW, nil, nil), + vi.WithDataSourceHTTP(object.ImageTestDataQCOW, nil, nil), vi.WithStorage(v1alpha2.StorageContainerRegistry), ) cviHotplugBIOS = cvi.New( cvi.WithName("cvi-hotplug-bios"), - cvi.WithDataSourceHTTP(object.ImageURLMinimalQCOW, nil, nil), + cvi.WithDataSourceHTTP(object.ImageTestDataQCOW, nil, nil), ) cviHotplugUEFI = cvi.New( cvi.WithName("cvi-hotplug-uefi"), - cvi.WithDataSourceHTTP(object.ImageURLMinimalQCOW, nil, nil), + cvi.WithDataSourceHTTP(object.ImageTestDataQCOW, nil, nil), ) vmbdaVdBIOS := vmbda.New( diff --git a/test/e2e/vm/power_state.go b/test/e2e/vm/power_state.go index 6240b27b07..78e5a12ad4 100644 --- a/test/e2e/vm/power_state.go +++ b/test/e2e/vm/power_state.go @@ -212,13 +212,13 @@ func newPowerStateTest(f *framework.Framework) *powerStateTest { func (t *powerStateTest) GenerateResources(runPolicy v1alpha2.RunPolicy) { t.CVI = cvibuilder.New( cvibuilder.WithName(fmt.Sprintf("%s-cvi", t.Framework.Namespace().Name)), - cvibuilder.WithDataSourceHTTP(object.ImageURLMinimalISO, nil, nil), + cvibuilder.WithDataSourceHTTP(object.ImageTestDataISO, nil, nil), ) t.VI = vibuilder.New( vibuilder.WithName("vi"), vibuilder.WithNamespace(t.Framework.Namespace().Name), - vibuilder.WithDataSourceHTTP(object.ImageURLMinimalQCOW, nil, nil), + vibuilder.WithDataSourceHTTP(object.ImageTestDataQCOW, nil, nil), vibuilder.WithStorage(v1alpha2.StorageContainerRegistry), ) diff --git a/test/e2e/vmop/restore.go b/test/e2e/vmop/restore.go index 6b3616a567..36d39fccd3 100644 --- a/test/e2e/vmop/restore.go +++ b/test/e2e/vmop/restore.go @@ -266,13 +266,13 @@ func newRestoreTest(f *framework.Framework) *restoreModeTest { func (t *restoreModeTest) GenerateResources(restoreMode v1alpha2.SnapshotOperationMode, restartApprovalMode v1alpha2.RestartApprovalMode, runPolicy v1alpha2.RunPolicy) { t.CVI = cvibuilder.New( cvibuilder.WithName(fmt.Sprintf("%s-cvi", t.Framework.Namespace().Name)), - cvibuilder.WithDataSourceHTTP(object.ImageURLMinimalISO, nil, nil), + cvibuilder.WithDataSourceHTTP(object.ImageTestDataISO, nil, nil), ) t.VI = vibuilder.New( vibuilder.WithName("vi"), vibuilder.WithNamespace(t.Framework.Namespace().Name), - vibuilder.WithDataSourceHTTP(object.ImageURLMinimalQCOW, nil, nil), + vibuilder.WithDataSourceHTTP(object.ImageTestDataQCOW, nil, nil), vibuilder.WithStorage(v1alpha2.StorageContainerRegistry), ) From 7d051907901c87efce46f5b206d22bf79039ea1c Mon Sep 17 00:00:00 2001 From: Nikita Korolev Date: Wed, 4 Mar 2026 20:44:10 +0300 Subject: [PATCH 14/16] rm agents chech Signed-off-by: Nikita Korolev --- test/e2e/vm/additional_network_interfaces.go | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/test/e2e/vm/additional_network_interfaces.go b/test/e2e/vm/additional_network_interfaces.go index 77fdf37429..ca10c84f97 100644 --- a/test/e2e/vm/additional_network_interfaces.go +++ b/test/e2e/vm/additional_network_interfaces.go @@ -90,14 +90,9 @@ var _ = Describe("VirtualMachineAdditionalNetworkInterfaces", func() { By(fmt.Sprintf("Wait until vms %s and %s in pahe running", vmFoo.GetName(), vmBar.GetName()), func() { util.UntilObjectPhase(string(v1alpha2.MachineRunning), framework.LongTimeout, vmFoo, vmBar) }) - By(fmt.Sprintf("Wait agent on vm %s", vmFoo.GetName()), func() { - util.UntilVMAgentReady(crclient.ObjectKeyFromObject(vmFoo), framework.LongTimeout) - }) - By(fmt.Sprintf("Wait agent on vm %s", vmBar.GetName()), func() { - util.UntilVMAgentReady(crclient.ObjectKeyFromObject(vmFoo), framework.LongTimeout) - }) }) + // If test fail due this timeout, rollback in test waiting for agent to be ready. By("Wait for additional network interfaces to be ready", func() { util.UntilConditionStatus(vmcondition.TypeNetworkReady.String(), "True", framework.LongTimeout, vmFoo, vmBar) }) @@ -225,14 +220,14 @@ func checkConnectivityBetweenVMs(f *framework.Framework, vmFoo, vmBar *v1alpha2. } const ( - Interval = 5 * time.Second - Timeout = 90 * time.Second + Interval = 1 * time.Second + Timeout = 120 * time.Second ) func checkResultSSHCommand(f *framework.Framework, vmName, vmNamespace, cmd, equal string) { GinkgoHelper() Eventually(func() (string, error) { - res, err := f.SSHCommand(vmName, vmNamespace, cmd) + res, err := f.SSHCommand(vmName, vmNamespace, cmd, framework.WithSSHTimeout(5*time.Second)) if err != nil { return "", fmt.Errorf("cmd: %s\nstderr: %w", cmd, err) } From e3445d7e02eaaad5c3a9b2e71c442b296145ce94 Mon Sep 17 00:00:00 2001 From: Nikita Korolev Date: Wed, 4 Mar 2026 21:18:13 +0300 Subject: [PATCH 15/16] use UntilSSHReady Signed-off-by: Nikita Korolev --- test/e2e/vm/additional_network_interfaces.go | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/test/e2e/vm/additional_network_interfaces.go b/test/e2e/vm/additional_network_interfaces.go index ca10c84f97..814bf41470 100644 --- a/test/e2e/vm/additional_network_interfaces.go +++ b/test/e2e/vm/additional_network_interfaces.go @@ -87,7 +87,13 @@ var _ = Describe("VirtualMachineAdditionalNetworkInterfaces", func() { err := f.CreateWithDeferredDeletion(context.Background(), vdFooRoot, vdBarRoot, vmFoo, vmBar) Expect(err).NotTo(HaveOccurred()) - By(fmt.Sprintf("Wait until vms %s and %s in pahe running", vmFoo.GetName(), vmBar.GetName()), func() { + util.UntilObjectPhase(string(v1alpha2.MachineRunning), framework.LongTimeout, vmFoo, vmBar) + util.UntilSSHReady(f, vmFoo, framework.LongTimeout) + if tc.vmBarHasMainNetwork { + util.UntilSSHReady(f, vmBar, framework.LongTimeout) + } + + By(fmt.Sprintf("Wait until vms %s and %s in phase running", vmFoo.GetName(), vmBar.GetName()), func() { util.UntilObjectPhase(string(v1alpha2.MachineRunning), framework.LongTimeout, vmFoo, vmBar) }) }) @@ -221,7 +227,7 @@ func checkConnectivityBetweenVMs(f *framework.Framework, vmFoo, vmBar *v1alpha2. const ( Interval = 1 * time.Second - Timeout = 120 * time.Second + Timeout = 90 * time.Second ) func checkResultSSHCommand(f *framework.Framework, vmName, vmNamespace, cmd, equal string) { From 17b9a7b5ab290d2ee14ec0970c33bc3a298d8ab0 Mon Sep 17 00:00:00 2001 From: Nikita Korolev Date: Wed, 4 Mar 2026 23:14:54 +0300 Subject: [PATCH 16/16] back update networking boot Signed-off-by: Nikita Korolev --- test/e2e/vm/additional_network_interfaces.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/test/e2e/vm/additional_network_interfaces.go b/test/e2e/vm/additional_network_interfaces.go index 814bf41470..b162cefbb0 100644 --- a/test/e2e/vm/additional_network_interfaces.go +++ b/test/e2e/vm/additional_network_interfaces.go @@ -207,6 +207,9 @@ write_files: iface %s inet static address %s netmask 255.255.255.0 +runcmd: + - "rc-update add sshd && rc-service sshd start" + - "rc-update add networking boot && rc-service networking restart" `, ifaceName, ifaceName, additionalIP) }