public void PowerOnHost() { lock (_lock) { if (ReadyMachineTable.GetHostsCount() != 0) { Machine machine = ReadyMachineTable.GetAllMachines().First(); ReadyMachineTable.RemoveMachine(machine.MachineId); MachineTable.AddMachine(machine.MachineId, machine); DataHolder.SetUtilization(machine.MachineId, UtilizationStates.UnderUtilization); machine.StartMachine(); } } }
private async Task WakeIdleHost() { if (!StartingMachine) { //Task t = new Task(async () => //{ //var l = Global.DataCenterHostConfiguration; StartingMachine = true; var machine = PoweredOffMachinesTable.GetAllMachines().Last(); await Task.Delay(Global.Second * 60); ReadyMachineTable.AddMachine(machine.MachineId, machine); PoweredOffMachinesTable.RemoveMachine(machine.MachineId); StartingMachine = false; //}); //t.Start(); } }
//public int GetMachinesCount() //{ // lock (_lock) // { // return MachineTable.GetMachinesCount(); // } //} public void PowerOffHost(int machineId) { lock (_lock) { var machine = MachineTable.GetMachineById(machineId); if ((machine as HostMachine).GetContainersCount() != 0) { //return false; throw new NotImplementedException(); } else { machine.StopMachine(); //PoweredOffMachinesTable.AddMachine(machine.MachineId, machine); MachineTable.RemoveMachine(machineId); DataHolder.RemoveUtilization(machineId); ReadyMachineTable.AddMachine(machineId, machine); //Console.WriteLine($"( ) Power off Host #{machineId}"); //return true; } } }