Search in sources :

Example 6 with HandleConfigDriveIsoCommand

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;
}
Also used : HandleConfigDriveIsoAnswer(com.cloud.agent.api.HandleConfigDriveIsoAnswer) CloudRuntimeException(com.cloud.utils.exception.CloudRuntimeException) ResourceUnavailableException(com.cloud.exception.ResourceUnavailableException) HandleConfigDriveIsoCommand(com.cloud.agent.api.HandleConfigDriveIsoCommand)

Example 7 with HandleConfigDriveIsoCommand

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));
}
Also used : Field(java.lang.reflect.Field) HandleConfigDriveIsoAnswer(com.cloud.agent.api.HandleConfigDriveIsoAnswer) HandleConfigDriveIsoCommand(com.cloud.agent.api.HandleConfigDriveIsoCommand) StateListener(com.cloud.utils.fsm.StateListener) List(java.util.List) VirtualMachine(com.cloud.vm.VirtualMachine) PrepareForTest(org.powermock.core.classloader.annotations.PrepareForTest) Test(org.junit.Test)

Aggregations

HandleConfigDriveIsoCommand (com.cloud.agent.api.HandleConfigDriveIsoCommand)7 HandleConfigDriveIsoAnswer (com.cloud.agent.api.HandleConfigDriveIsoAnswer)6 ResourceUnavailableException (com.cloud.exception.ResourceUnavailableException)3 CloudRuntimeException (com.cloud.utils.exception.CloudRuntimeException)3 DataStore (org.apache.cloudstack.engine.subsystem.api.storage.DataStore)2 Answer (com.cloud.agent.api.Answer)1 AttachIsoCommand (com.cloud.agent.api.AttachIsoCommand)1 BackupSnapshotCommand (com.cloud.agent.api.BackupSnapshotCommand)1 CheckHealthCommand (com.cloud.agent.api.CheckHealthCommand)1 CheckNetworkCommand (com.cloud.agent.api.CheckNetworkCommand)1 CheckRouterCommand (com.cloud.agent.api.CheckRouterCommand)1 CheckS2SVpnConnectionsCommand (com.cloud.agent.api.CheckS2SVpnConnectionsCommand)1 CheckVirtualMachineCommand (com.cloud.agent.api.CheckVirtualMachineCommand)1 CleanupNetworkRulesCmd (com.cloud.agent.api.CleanupNetworkRulesCmd)1 ComputeChecksumCommand (com.cloud.agent.api.ComputeChecksumCommand)1 CreatePrivateTemplateFromSnapshotCommand (com.cloud.agent.api.CreatePrivateTemplateFromSnapshotCommand)1 CreatePrivateTemplateFromVolumeCommand (com.cloud.agent.api.CreatePrivateTemplateFromVolumeCommand)1 CreateStoragePoolCommand (com.cloud.agent.api.CreateStoragePoolCommand)1 CreateVMSnapshotCommand (com.cloud.agent.api.CreateVMSnapshotCommand)1 CreateVolumeFromSnapshotCommand (com.cloud.agent.api.CreateVolumeFromSnapshotCommand)1