/// <summary>Perform the Chaos Operation</summary> /// <param name="actionType">Action type</param> /// <param name="virtualMachine">Virtual Machine</param> /// <param name="scheduledRules">Event activity entity</param> /// <returns></returns> private static void PerformChaosOnVirtualMachine(string action, IVirtualMachine virtualMachine, ScheduledRules scheduledRules, bool enableRollback) { ActionType actionType; if (!Enum.TryParse(action, out actionType)) { return; } switch (actionType) { case ActionType.Start: virtualMachine.StartAsync(); break; case ActionType.PowerOff: case ActionType.Stop: virtualMachine.PowerOffAsync(); break; case ActionType.Restart: virtualMachine.RestartAsync(); break; } if (enableRollback) { scheduledRules.RollbackExecutionStatus = Status.Executing.ToString(); } else { scheduledRules.ExecutionStatus = Status.Executing.ToString(); } }
private async void PowerOffVM(IVirtualMachine virtualMachine) { string vmName = virtualMachine.ComputerName; Task task = virtualMachine.PowerOffAsync(); await task; lstBoxLog.Items.Add(vmName + "stopped at " + DateTime.Now); UpdateVMData(null, null); }
public async Task TurnOff() { if (!PowerState) { return; } _powerStateUpdating = true; await _virtualMachine.PowerOffAsync(); var refreshTask = Task.Run(() => _virtualMachine.RefreshInstanceViewAsync()); await refreshTask.ContinueWith(_ => _powerStateUpdating = false); }