/// <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();
            }
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        public async Task TurnOff()
        {
            if (!PowerState)
            {
                return;
            }

            _powerStateUpdating = true;

            await _virtualMachine.PowerOffAsync();

            var refreshTask = Task.Run(() => _virtualMachine.RefreshInstanceViewAsync());
            await refreshTask.ContinueWith(_ => _powerStateUpdating = false);
        }