From 8fae3ea62eb885b23e8f46fd5c727bb9f229f4b8 Mon Sep 17 00:00:00 2001 From: Miguel Duarte Barroso Date: Mon, 9 Sep 2024 16:27:53 +0200 Subject: [PATCH] persistentips, util: add AllowsPersistentIPs helper Signed-off-by: Miguel Duarte Barroso --- .../network_cluster_controller.go | 3 +-- .../ovn/base_network_controller_secondary.go | 3 +-- go-controller/pkg/util/multi_network.go | 18 +++++++++++++++--- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/go-controller/pkg/clustermanager/network_cluster_controller.go b/go-controller/pkg/clustermanager/network_cluster_controller.go index 0d244a8b721..67023e3678c 100644 --- a/go-controller/pkg/clustermanager/network_cluster_controller.go +++ b/go-controller/pkg/clustermanager/network_cluster_controller.go @@ -140,9 +140,8 @@ func (ncc *networkClusterController) hasNodeAllocation() bool { func (ncc *networkClusterController) allowPersistentIPs() bool { return config.OVNKubernetesFeature.EnablePersistentIPs && - ncc.NetInfo.AllowsPersistentIPs() && util.DoesNetworkRequireIPAM(ncc.NetInfo) && - (ncc.NetInfo.TopologyType() == types.Layer2Topology || ncc.NetInfo.TopologyType() == types.LocalnetTopology) + util.AllowsPersistentIPs(ncc.NetInfo) } func (ncc *networkClusterController) init() error { diff --git a/go-controller/pkg/ovn/base_network_controller_secondary.go b/go-controller/pkg/ovn/base_network_controller_secondary.go index 19df223ecd9..7a4520cc47b 100644 --- a/go-controller/pkg/ovn/base_network_controller_secondary.go +++ b/go-controller/pkg/ovn/base_network_controller_secondary.go @@ -773,9 +773,8 @@ func (bsnc *BaseSecondaryNetworkController) WatchIPAMClaims() error { func (oc *BaseSecondaryNetworkController) allowPersistentIPs() bool { return config.OVNKubernetesFeature.EnablePersistentIPs && - oc.NetInfo.AllowsPersistentIPs() && util.DoesNetworkRequireIPAM(oc.NetInfo) && - (oc.NetInfo.TopologyType() == types.Layer2Topology || oc.NetInfo.TopologyType() == types.LocalnetTopology) + util.AllowsPersistentIPs(oc.NetInfo) } func (oc *BaseSecondaryNetworkController) getNetworkID() (int, error) { diff --git a/go-controller/pkg/util/multi_network.go b/go-controller/pkg/util/multi_network.go index 624ce5ee75d..a33097bda68 100644 --- a/go-controller/pkg/util/multi_network.go +++ b/go-controller/pkg/util/multi_network.go @@ -954,9 +954,7 @@ func GetPodNADToNetworkMappingWithActiveNetwork(pod *kapi.Pod, nInfo NetInfo, ac Name: activeNetworkNADKey[1], } - if nInfo.IsPrimaryNetwork() && - nInfo.TopologyType() == types.Layer2Topology && - nInfo.AllowsPersistentIPs() { + if nInfo.IsPrimaryNetwork() && AllowsPersistentIPs(nInfo) { ipamClaimName, wasPersistentIPRequested := pod.Annotations[OvnUDNIPAMClaimName] if wasPersistentIPRequested { networkSelections[activeNetworkNADs[0]].IPAMClaimReference = ipamClaimName @@ -982,3 +980,17 @@ func DoesNetworkRequireTunnelIDs(netInfo NetInfo) bool { // Layer2Topology with IC require that we allocate tunnel IDs for each pod return netInfo.TopologyType() == types.Layer2Topology && config.OVNKubernetesFeature.EnableInterconnect } + +func AllowsPersistentIPs(netInfo NetInfo) bool { + switch { + case netInfo.IsPrimaryNetwork(): + return netInfo.TopologyType() == types.Layer2Topology && netInfo.AllowsPersistentIPs() + + case netInfo.IsSecondary(): + return (netInfo.TopologyType() == types.Layer2Topology || netInfo.TopologyType() == types.LocalnetTopology) && + netInfo.AllowsPersistentIPs() + + default: + return false + } +}