This is an automated email from the ASF dual-hosted git repository.

weizhou pushed a commit to branch 4.20
in repository https://gitbox.apache.org/repos/asf/cloudstack.git


The following commit(s) were added to refs/heads/4.20 by this push:
     new 4f5f7d46d28 CKS: Validate network offering from network if provided 
rather than global setting (#11528)
4f5f7d46d28 is described below

commit 4f5f7d46d28fd17e5acbf929e1356a517a52335f
Author: Pearl Dsilva <[email protected]>
AuthorDate: Tue Sep 9 06:53:09 2025 -0400

    CKS: Validate network offering from network if provided rather than global 
setting (#11528)
    
    * CKS: Validate network offering from network if provided rather than 
global setting
    
    * update warning message
---
 .../cluster/KubernetesClusterManagerImpl.java      | 35 +++++++++++++++-------
 1 file changed, 25 insertions(+), 10 deletions(-)

diff --git 
a/plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/cluster/KubernetesClusterManagerImpl.java
 
b/plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/cluster/KubernetesClusterManagerImpl.java
index d1babb547f8..9b3e487680d 100644
--- 
a/plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/cluster/KubernetesClusterManagerImpl.java
+++ 
b/plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/cluster/KubernetesClusterManagerImpl.java
@@ -367,18 +367,33 @@ public class KubernetesClusterManagerImpl extends 
ManagerBase implements Kuberne
         logTransitStateAndThrow(logLevel, message, null, null, ex);
     }
 
-    private boolean isKubernetesServiceNetworkOfferingConfigured(DataCenter 
zone) {
+    private boolean isKubernetesServiceNetworkOfferingConfigured(DataCenter 
zone, Long networkId) {
         // Check network offering
         String networkOfferingName = KubernetesClusterNetworkOffering.value();
-        if (networkOfferingName == null || networkOfferingName.isEmpty()) {
-            logger.warn(String.format("Global setting %s is empty. Admin has 
not yet specified the network offering to be used for provisioning isolated 
network for the cluster", KubernetesClusterNetworkOffering.key()));
+        if (StringUtils.isEmpty(networkOfferingName) && networkId == null) {
+            logger.warn("Global setting: {} is empty. Admin has not yet 
specified the network offering to be used for provisioning isolated network for 
the cluster nor has a pre-created network been passed", 
KubernetesClusterNetworkOffering.key());
             return false;
         }
-        NetworkOfferingVO networkOffering = 
networkOfferingDao.findByUniqueName(networkOfferingName);
-        if (networkOffering == null) {
-            logger.warn(String.format("Unable to find the network offering %s 
to be used for provisioning Kubernetes cluster", networkOfferingName));
-            return false;
+        NetworkOfferingVO networkOffering = null;
+        if (networkId != null) {
+            NetworkVO network = networkDao.findById(networkId);
+            if (network == null) {
+                logger.warn("Unable to find the network with ID: {} passed for 
the Kubernetes cluster", networkId);
+                return false;
+            }
+            networkOffering = 
networkOfferingDao.findById(network.getNetworkOfferingId());
+            if (networkOffering == null) {
+                logger.warn("Unable to find the network offering of the 
network: {} ({}) to be used for provisioning Kubernetes cluster", 
network.getName(), network.getUuid());
+                return false;
+            }
+        } else if (StringUtils.isNotEmpty(networkOfferingName)) {
+            networkOffering = 
networkOfferingDao.findByUniqueName(networkOfferingName);
+            if (networkOffering == null) {
+                logger.warn("Unable to find the network offering: {} to be 
used for provisioning Kubernetes cluster", networkOfferingName);
+                return false;
+            }
         }
+
         if (networkOffering.getState() == NetworkOffering.State.Disabled) {
             logger.warn("Network offering: {} is not enabled", 
networkOffering);
             return false;
@@ -413,8 +428,8 @@ public class KubernetesClusterManagerImpl extends 
ManagerBase implements Kuberne
         return true;
     }
 
-    private boolean isKubernetesServiceConfigured(DataCenter zone) {
-        if (!isKubernetesServiceNetworkOfferingConfigured(zone)) {
+    private boolean isKubernetesServiceConfigured(DataCenter zone, Long 
networkId) {
+        if (!isKubernetesServiceNetworkOfferingConfigured(zone, networkId)) {
             return false;
         }
         return true;
@@ -852,7 +867,7 @@ public class KubernetesClusterManagerImpl extends 
ManagerBase implements Kuberne
 
         DataCenter zone = 
validateAndGetZoneForKubernetesCreateParameters(zoneId, networkId);
 
-        if (!isKubernetesServiceConfigured(zone)) {
+        if (!isKubernetesServiceConfigured(zone, networkId)) {
             throw new CloudRuntimeException("Kubernetes service has not been 
configured properly to provision Kubernetes clusters");
         }
 

Reply via email to