Skip to content

Commit 2eae0f5

Browse files
authored
SystemVM: Set agent state to disconnected on Stopping the systemVM (#5010)
Fixes: #4972 This PR sets systevms' agent state to disconnected when it is stopped. Currently, when a systemVM (Console Proxy VM / Secondary storage VM) is stopped, the agent state still appears to be 'Up'
1 parent 65672b7 commit 2eae0f5

4 files changed

Lines changed: 16 additions & 1 deletion

File tree

api/src/main/java/com/cloud/host/Status.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,9 @@ public static String[] toStrings(Status... states) {
131131
s_fsm.addTransition(Status.Up, Event.PingTimeout, Status.Alert);
132132
s_fsm.addTransition(Status.Up, Event.AgentDisconnected, Status.Alert);
133133
s_fsm.addTransition(Status.Up, Event.ShutdownRequested, Status.Disconnected);
134+
s_fsm.addTransition(Status.Disconnected, Event.ShutdownRequested, Status.Disconnected);
135+
s_fsm.addTransition(Status.Down, Event.ShutdownRequested, Status.Disconnected);
136+
s_fsm.addTransition(Status.Rebalancing, Event.ShutdownRequested, Status.Disconnected);
134137
s_fsm.addTransition(Status.Up, Event.HostDown, Status.Down);
135138
s_fsm.addTransition(Status.Up, Event.Ping, Status.Up);
136139
s_fsm.addTransition(Status.Up, Event.AgentConnected, Status.Connecting);

api/src/main/java/com/cloud/vm/VirtualMachine.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
import java.util.Date;
2121
import java.util.List;
2222
import java.util.Map;
23+
import java.util.Set;
24+
import java.util.HashSet;
2325

2426
import org.apache.cloudstack.acl.ControlledEntity;
2527
import org.apache.cloudstack.api.Displayable;
@@ -186,6 +188,7 @@ public static boolean isVmDestroyed(State oldState, Event e, State newState) {
186188
}
187189
}
188190

191+
static final Set<Type> systemVMs = new HashSet<>(Arrays.asList(VirtualMachine.Type.ConsoleProxy, VirtualMachine.Type.SecondaryStorageVm));
189192
static final String IsDynamicScalingEnabled = "enable.dynamic.scaling";
190193

191194
public enum Event {

engine/orchestration/src/main/java/com/cloud/vm/VirtualMachineManagerImpl.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
import javax.inject.Inject;
4141
import javax.naming.ConfigurationException;
4242

43+
import com.cloud.api.ApiDBUtils;
4344
import org.apache.cloudstack.affinity.dao.AffinityGroupVMMapDao;
4445
import org.apache.cloudstack.api.ApiConstants;
4546
import org.apache.cloudstack.api.command.admin.vm.MigrateVMCmd;
@@ -1984,6 +1985,14 @@ private void advanceStop(final VMInstanceVO vm, final boolean cleanUpEvenIfUnabl
19841985
s_logger.warn("Unable to actually stop " + vm + " but continue with release because it's a force stop");
19851986
vmGuru.finalizeStop(profile, answer);
19861987
}
1988+
} else {
1989+
if (VirtualMachine.systemVMs.contains(vm.getType())) {
1990+
HostVO systemVmHost = ApiDBUtils.findHostByTypeNameAndZoneId(vm.getDataCenterId(), vm.getHostName(),
1991+
VirtualMachine.Type.SecondaryStorageVm.equals(vm.getType()) ? Host.Type.SecondaryStorageVM : Host.Type.ConsoleProxy);
1992+
if (systemVmHost != null) {
1993+
_agentMgr.agentStatusTransitTo(systemVmHost, Status.Event.ShutdownRequested, _nodeId);
1994+
}
1995+
}
19871996
}
19881997
}
19891998

server/src/main/java/com/cloud/api/ApiResponseHelper.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1450,7 +1450,7 @@ public SystemVmResponse createSystemVmResponse(VirtualMachine vm) {
14501450
}
14511451
}
14521452

1453-
if (vm.getType() == Type.SecondaryStorageVm || vm.getType() == Type.ConsoleProxy) {
1453+
if (VirtualMachine.systemVMs.contains(vm.getType())) {
14541454
Host systemVmHost = ApiDBUtils.findHostByTypeNameAndZoneId(vm.getDataCenterId(), vm.getHostName(),
14551455
Type.SecondaryStorageVm.equals(vm.getType()) ? Host.Type.SecondaryStorageVM : Host.Type.ConsoleProxy);
14561456
if (systemVmHost != null) {

0 commit comments

Comments
 (0)