Skip to content

Commit c67f78c

Browse files
committed
CKS: Validate network offering from network if provided rather than global setting
1 parent 0f0155c commit c67f78c

File tree

1 file changed

+18
-8
lines changed

1 file changed

+18
-8
lines changed

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

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -367,16 +367,26 @@ 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);
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+
} else if (StringUtils.isNotEmpty(networkOfferingName)) {
386+
networkOffering = networkOfferingDao.findByUniqueName(networkOfferingName);
387+
}
378388
if (networkOffering == null) {
379-
logger.warn(String.format("Unable to find the network offering %s to be used for provisioning Kubernetes cluster", networkOfferingName));
389+
logger.warn("Unable to find the network offering: {} to be used for provisioning Kubernetes cluster", networkOfferingName);
380390
return false;
381391
}
382392
if (networkOffering.getState() == NetworkOffering.State.Disabled) {
@@ -413,8 +423,8 @@ private boolean isKubernetesServiceNetworkOfferingConfigured(DataCenter zone) {
413423
return true;
414424
}
415425

416-
private boolean isKubernetesServiceConfigured(DataCenter zone) {
417-
if (!isKubernetesServiceNetworkOfferingConfigured(zone)) {
426+
private boolean isKubernetesServiceConfigured(DataCenter zone, Long networkId) {
427+
if (!isKubernetesServiceNetworkOfferingConfigured(zone, networkId)) {
418428
return false;
419429
}
420430
return true;
@@ -852,7 +862,7 @@ private void validateManagedKubernetesClusterCreateParameters(final CreateKubern
852862

853863
DataCenter zone = validateAndGetZoneForKubernetesCreateParameters(zoneId, networkId);
854864

855-
if (!isKubernetesServiceConfigured(zone)) {
865+
if (!isKubernetesServiceConfigured(zone, networkId)) {
856866
throw new CloudRuntimeException("Kubernetes service has not been configured properly to provision Kubernetes clusters");
857867
}
858868

0 commit comments

Comments
 (0)