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");
}