use of com.cloud.agent.api.HandleConfigDriveIsoCommand in project cloudstack by apache.
the class ConfigDriveNetworkElement method deleteConfigDriveIsoOnHostCache.
private boolean deleteConfigDriveIsoOnHostCache(final VirtualMachine vm, final Long hostId) throws ResourceUnavailableException {
if (hostId == null) {
throw new ResourceUnavailableException("Config drive iso deletion failed, host not available", ConfigDriveNetworkElement.class, 0L);
}
LOG.debug("Deleting config drive ISO for vm: " + vm.getInstanceName() + " on host: " + hostId);
final String isoPath = ConfigDrive.createConfigDrivePath(vm.getInstanceName());
final HandleConfigDriveIsoCommand configDriveIsoCommand = new HandleConfigDriveIsoCommand(isoPath, null, null, false, true, false);
final HandleConfigDriveIsoAnswer answer = (HandleConfigDriveIsoAnswer) agentManager.easySend(hostId, configDriveIsoCommand);
if (answer == null) {
throw new CloudRuntimeException("Unable to get an answer to handle config drive deletion for vm: " + vm.getInstanceName() + " on host: " + hostId);
}
if (!answer.getResult()) {
LOG.error("Failed to remove config drive for instance: " + vm.getInstanceName());
return false;
}
return true;
}
use of com.cloud.agent.api.HandleConfigDriveIsoCommand in project cloudstack by apache.
the class ConfigDriveNetworkElementTest method testExpunge.
@Test
@SuppressWarnings("unchecked")
public void testExpunge() throws NoTransitionException, NoSuchFieldException, IllegalAccessException {
final StateMachine2<VirtualMachine.State, VirtualMachine.Event, VirtualMachine> stateMachine = VirtualMachine.State.getStateMachine();
final Field listenersField = StateMachine2.class.getDeclaredField("_listeners");
listenersField.setAccessible(true);
List<StateListener<VirtualMachine.State, VirtualMachine.Event, VirtualMachine>> listeners = (List<StateListener<VirtualMachine.State, VirtualMachine.Event, VirtualMachine>>) listenersField.get(stateMachine);
listeners.clear();
_configDrivesNetworkElement.start();
when(virtualMachine.getState()).thenReturn(VirtualMachine.State.Stopped);
when(_vmInstanceDao.updateState(VirtualMachine.State.Stopped, VirtualMachine.Event.ExpungeOperation, VirtualMachine.State.Expunging, virtualMachine, null)).thenReturn(true);
final HandleConfigDriveIsoAnswer answer = mock(HandleConfigDriveIsoAnswer.class);
when(agentManager.easySend(anyLong(), any(HandleConfigDriveIsoCommand.class))).thenReturn(answer);
when(answer.getResult()).thenReturn(true);
stateMachine.transitTo(virtualMachine, VirtualMachine.Event.ExpungeOperation, null, _vmInstanceDao);
ArgumentCaptor<HandleConfigDriveIsoCommand> commandCaptor = ArgumentCaptor.forClass(HandleConfigDriveIsoCommand.class);
verify(agentManager, times(1)).easySend(anyLong(), commandCaptor.capture());
HandleConfigDriveIsoCommand deleteCommand = commandCaptor.getValue();
assertThat(deleteCommand.isCreate(), is(false));
}
Aggregations