nvazquez commented on code in PR #9102:
URL: https://github.com/apache/cloudstack/pull/9102#discussion_r2110706602
##########
plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/cluster/KubernetesClusterManagerImpl.java:
##########
@@ -1041,37 +1251,53 @@ private void
validateKubernetesClusterScaleParameters(ScaleKubernetesClusterCmd
}
}
- ServiceOffering serviceOffering = null;
- if (serviceOfferingId != null) {
- serviceOffering = serviceOfferingDao.findById(serviceOfferingId);
- if (serviceOffering == null) {
- throw new InvalidParameterValueException("Failed to find
service offering ID: " + serviceOfferingId);
- } else {
- if (serviceOffering.isDynamic()) {
- throw new
InvalidParameterValueException(String.format("Custom service offerings are not
supported for Kubernetes clusters. Kubernetes cluster : %s, service offering :
%s", kubernetesCluster.getName(), serviceOffering.getName()));
- }
- if (serviceOffering.getCpu() < MIN_KUBERNETES_CLUSTER_NODE_CPU
|| serviceOffering.getRamSize() < MIN_KUBERNETES_CLUSTER_NODE_RAM_SIZE) {
- throw new
InvalidParameterValueException(String.format("Kubernetes cluster : %s cannot be
scaled with service offering : %s, Kubernetes cluster template(CoreOS) needs
minimum %d vCPUs and %d MB RAM",
- kubernetesCluster.getName(),
serviceOffering.getName(), MIN_KUBERNETES_CLUSTER_NODE_CPU,
MIN_KUBERNETES_CLUSTER_NODE_RAM_SIZE));
- }
- if (serviceOffering.getCpu() < clusterVersion.getMinimumCpu())
{
- throw new
InvalidParameterValueException(String.format("Kubernetes cluster : %s cannot be
scaled with service offering : %s, associated Kubernetes version : %s needs
minimum %d vCPUs",
- kubernetesCluster.getName(),
serviceOffering.getName(), clusterVersion.getName(),
clusterVersion.getMinimumCpu()));
+ validateServiceOfferingsForNodeTypesScale(serviceOfferingNodeTypeMap,
defaultServiceOfferingId, kubernetesCluster, clusterVersion);
+
+ validateKubernetesClusterScaleSize(kubernetesCluster, clusterSize,
maxClusterSize, zone);
+ }
+
+ protected void validateServiceOfferingsForNodeTypesScale(Map<String, Long>
map, Long defaultServiceOfferingId, KubernetesClusterVO kubernetesCluster,
KubernetesSupportedVersion clusterVersion) {
+ for (String key : CLUSTER_NODES_TYPES_LIST) {
+ Long serviceOfferingId = map.getOrDefault(key,
defaultServiceOfferingId);
+ if (serviceOfferingId != null) {
+ ServiceOffering serviceOffering =
serviceOfferingDao.findById(serviceOfferingId);
+ if (serviceOffering == null) {
+ throw new InvalidParameterValueException("Failed to find
service offering ID: " + serviceOfferingId);
}
- if (serviceOffering.getRamSize() <
clusterVersion.getMinimumRamSize()) {
- throw new
InvalidParameterValueException(String.format("Kubernetes cluster : %s cannot be
scaled with service offering : %s, associated Kubernetes version : %s needs
minimum %d MB RAM",
- kubernetesCluster.getName(),
serviceOffering.getName(), clusterVersion.getName(),
clusterVersion.getMinimumRamSize()));
+ checkServiceOfferingForNodesScale(serviceOffering,
kubernetesCluster, clusterVersion);
+ final ServiceOffering existingServiceOffering =
serviceOfferingDao.findById(kubernetesCluster.getServiceOfferingId());
+ if
(KubernetesCluster.State.Running.equals(kubernetesCluster.getState()) &&
(serviceOffering.getRamSize() < existingServiceOffering.getRamSize() ||
+ serviceOffering.getCpu() * serviceOffering.getSpeed()
< existingServiceOffering.getCpu() * existingServiceOffering.getSpeed())) {
+ logAndThrow(Level.WARN, String.format("Kubernetes cluster
cannot be scaled down for service offering. Service offering : %s offers lesser
resources as compared to service offering : %s of Kubernetes cluster : %s",
+ serviceOffering.getName(),
existingServiceOffering.getName(), kubernetesCluster.getName()));
Review Comment:
Thanks, fixed
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]