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
This commit is contained in:
Pearl Dsilva 2025-09-09 06:53:09 -04:00 committed by GitHub
parent 3ffd444294
commit 4f5f7d46d2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 25 additions and 10 deletions

View File

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