Skip to content

Commit d4fa360

Browse files
bernardodemarcodhslove
authored andcommitted
CKS: Fix transition exception when scaling Stopped k8s clusters (apache#11598)
* add new k8s cluster transition * apply suggestion * apply suggestion
1 parent 904ea6f commit d4fa360

File tree

2 files changed

+6
-1
lines changed

2 files changed

+6
-1
lines changed

api/src/main/java/com/cloud/kubernetes/cluster/KubernetesCluster.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ enum State {
6060
Stopping("Resources for the Kubernetes cluster are being destroyed"),
6161
Stopped("All resources for the Kubernetes cluster are destroyed, Kubernetes cluster may still have ephemeral resource like persistent volumes provisioned"),
6262
Scaling("Transient state in which resources are either getting scaled up/down"),
63+
ScalingStoppedCluster("Transient state in which the service offerings of stopped clusters are getting scaled"),
6364
Upgrading("Transient state in which cluster is getting upgraded"),
6465
Importing("Transient state in which additional nodes are added as worker nodes to a cluster"),
6566
RemovingNodes("Transient state in which additional nodes are removed from a cluster"),
@@ -93,8 +94,11 @@ enum State {
9394
s_fsm.addTransition(State.Running, Event.AutoscaleRequested, State.Scaling);
9495
s_fsm.addTransition(State.Running, Event.ScaleUpRequested, State.Scaling);
9596
s_fsm.addTransition(State.Running, Event.ScaleDownRequested, State.Scaling);
97+
s_fsm.addTransition(State.Stopped, Event.ScaleUpRequested, State.ScalingStoppedCluster);
9698
s_fsm.addTransition(State.Scaling, Event.OperationSucceeded, State.Running);
9799
s_fsm.addTransition(State.Scaling, Event.OperationFailed, State.Alert);
100+
s_fsm.addTransition(State.ScalingStoppedCluster, Event.OperationSucceeded, State.Stopped);
101+
s_fsm.addTransition(State.ScalingStoppedCluster, Event.OperationFailed, State.Alert);
98102

99103
s_fsm.addTransition(State.Running, Event.UpgradeRequested, State.Upgrading);
100104
s_fsm.addTransition(State.Upgrading, Event.OperationSucceeded, State.Running);

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -358,7 +358,8 @@ private void validateKubernetesClusterScaleSizeParameters() throws CloudRuntimeE
358358
private void scaleKubernetesClusterOffering(KubernetesClusterNodeType nodeType, ServiceOffering serviceOffering,
359359
boolean updateNodeOffering, boolean updateClusterOffering) throws CloudRuntimeException {
360360
validateKubernetesClusterScaleOfferingParameters();
361-
if (!kubernetesCluster.getState().equals(KubernetesCluster.State.Scaling)) {
361+
List<KubernetesCluster.State> scalingStates = List.of(KubernetesCluster.State.Scaling, KubernetesCluster.State.ScalingStoppedCluster);
362+
if (!scalingStates.contains(kubernetesCluster.getState())) {
362363
stateTransitTo(kubernetesCluster.getId(), KubernetesCluster.Event.ScaleUpRequested);
363364
}
364365
if (KubernetesCluster.State.Created.equals(originalState)) {

0 commit comments

Comments
 (0)