Skip to content

Commit 4f5f7d4

Browse files
authored
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
1 parent 3ffd444 commit 4f5f7d4

File tree

1 file changed

+25
-10
lines changed

1 file changed

+25
-10
lines changed

plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/cluster/KubernetesClusterManagerImpl.java

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -367,18 +367,33 @@ private void logAndThrow(final Level logLevel, final String message, final Excep
367367
logTransitStateAndThrow(logLevel, message, null, null, ex);
368368
}
369369

370-
private boolean isKubernetesServiceNetworkOfferingConfigured(DataCenter zone) {
370+
private boolean isKubernetesServiceNetworkOfferingConfigured(DataCenter zone, Long networkId) {
371371
// Check network offering
372372
String networkOfferingName = KubernetesClusterNetworkOffering.value();
373-
if (networkOfferingName == null || networkOfferingName.isEmpty()) {
374-
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()));
373+
if (StringUtils.isEmpty(networkOfferingName) && networkId == null) {
374+
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());
375375
return false;
376376
}
377-
NetworkOfferingVO networkOffering = networkOfferingDao.findByUniqueName(networkOfferingName);
378-
if (networkOffering == null) {
379-
logger.warn(String.format("Unable to find the network offering %s to be used for provisioning Kubernetes cluster", networkOfferingName));
380-
return false;
377+
NetworkOfferingVO networkOffering = null;
378+
if (networkId != null) {
379+
NetworkVO network = networkDao.findById(networkId);
380+
if (network == null) {
381+
logger.warn("Unable to find the network with ID: {} passed for the Kubernetes cluster", networkId);
382+
return false;
383+
}
384+
networkOffering = networkOfferingDao.findById(network.getNetworkOfferingId());
385+
if (networkOffering == null) {
386+
logger.warn("Unable to find the network offering of the network: {} ({}) to be used for provisioning Kubernetes cluster", network.getName(), network.getUuid());
387+
return false;
388+
}
389+
} else if (StringUtils.isNotEmpty(networkOfferingName)) {
390+
networkOffering = networkOfferingDao.findByUniqueName(networkOfferingName);
391+
if (networkOffering == null) {
392+
logger.warn("Unable to find the network offering: {} to be used for provisioning Kubernetes cluster", networkOfferingName);
393+
return false;
394+
}
381395
}
396+
382397
if (networkOffering.getState() == NetworkOffering.State.Disabled) {
383398
logger.warn("Network offering: {} is not enabled", networkOffering);
384399
return false;
@@ -413,8 +428,8 @@ private boolean isKubernetesServiceNetworkOfferingConfigured(DataCenter zone) {
413428
return true;
414429
}
415430

416-
private boolean isKubernetesServiceConfigured(DataCenter zone) {
417-
if (!isKubernetesServiceNetworkOfferingConfigured(zone)) {
431+
private boolean isKubernetesServiceConfigured(DataCenter zone, Long networkId) {
432+
if (!isKubernetesServiceNetworkOfferingConfigured(zone, networkId)) {
418433
return false;
419434
}
420435
return true;
@@ -852,7 +867,7 @@ private void validateManagedKubernetesClusterCreateParameters(final CreateKubern
852867

853868
DataCenter zone = validateAndGetZoneForKubernetesCreateParameters(zoneId, networkId);
854869

855-
if (!isKubernetesServiceConfigured(zone)) {
870+
if (!isKubernetesServiceConfigured(zone, networkId)) {
856871
throw new CloudRuntimeException("Kubernetes service has not been configured properly to provision Kubernetes clusters");
857872
}
858873

0 commit comments

Comments
 (0)