File 0004-Improve-the-handling-of-ordinal-pod-interface-name-for-upgrade.patch of Package kubevirt
From f971fd63e00bb025459ff321e45a8e3d888ce11c Mon Sep 17 00:00:00 2001
From: Vicente Cheng <vicente.cheng@suse.com>
Date: Wed, 10 Apr 2024 00:47:44 +0800
Subject: [PATCH 1/2] network: add more network name scheme test cases
- Add different order to verify the correct interface name
- Add only one secondary network to verify the correct interface name
Signed-off-by: Vicente Cheng <vicente.cheng@suse.com>
---
pkg/network/namescheme/networknamescheme_test.go | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/pkg/network/namescheme/networknamescheme_test.go b/pkg/network/namescheme/networknamescheme_test.go
index 8fe85485006a..7b6fe8f562f4 100644
--- a/pkg/network/namescheme/networknamescheme_test.go
+++ b/pkg/network/namescheme/networknamescheme_test.go
@@ -259,6 +259,22 @@ var _ = Describe("Network Name Scheme", func() {
},
"net2",
),
+ Entry("given secondary network name with different order",
+ "multus01",
+ []virtv1.Network{
+ createMultusSecondaryNetwork("blue", "test-br"),
+ createMultusSecondaryNetwork("multus01", "test-br"),
+ newPodNetwork(),
+ },
+ "net2",
+ ),
+ Entry("given secondary network name, only one secondary network",
+ "multus01",
+ []virtv1.Network{
+ createMultusSecondaryNetwork("multus01", "test-br"),
+ },
+ "net1",
+ ),
)
})
})
From b8d181ec8c81353e0e8462f3f41a8ae916795730 Mon Sep 17 00:00:00 2001
From: Vicente Cheng <vicente.cheng@suse.com>
Date: Wed, 10 Apr 2024 01:10:36 +0800
Subject: [PATCH 2/2] network: improve the OrdinalPodInterfaceName mechanism
- the networks are not ordered, means the pod network is not always
on the first. We should consider more to get the secondary network
because the secondary started from 1 to n.
- Also, we should consider only have one multus and secondary
network situation.
This change mainly finetune the mechanism for get the secondary
multus network.
Signed-off-by: Vicente Cheng <vicente.cheng@suse.com>
---
pkg/network/namescheme/networknamescheme.go | 14 +++++---------
1 file changed, 5 insertions(+), 9 deletions(-)
diff --git a/pkg/network/namescheme/networknamescheme.go b/pkg/network/namescheme/networknamescheme.go
index b2be1d62e54d..470151c91806 100644
--- a/pkg/network/namescheme/networknamescheme.go
+++ b/pkg/network/namescheme/networknamescheme.go
@@ -92,17 +92,13 @@ func CreateOrdinalNetworkNameScheme(vmiNetworks []v1.Network) map[string]string
return networkNameSchemeMap
}
+// OrdinalPodInterfaceName returns the ordinal interface name for the given network name.
+// Rereuse the `CreateOrdinalNetworkNameScheme` for various networks helps find the target interface name.
func OrdinalPodInterfaceName(name string, networks []v1.Network) string {
- for i, network := range networks {
- if network.Name == name {
- if vmispec.IsSecondaryMultusNetwork(network) {
- return generateOrdinalInterfaceName(i)
- }
-
- return PrimaryPodInterfaceName
- }
+ networkNameSchemeMap := CreateOrdinalNetworkNameScheme(networks)
+ if ordinalName, exist := networkNameSchemeMap[name]; exist {
+ return ordinalName
}
-
return ""
}