public void Reserve(UserCredential credential, RequestedVMDictionary requestedVMs, VMQuantityDictionary requiredVMQuantity) { var virtualMachines = VMInventoryManager.RequestVMs(_sessionId, credential, requestedVMs, requiredVMQuantity); try { foreach (VirtualMachine machine in virtualMachines) { TraceFactory.Logger.Debug("{0} : {1}".FormatWith(machine.Name, machine.MachineType)); var machineType = EnumUtil.GetByDescription <ManagedMachineType>(machine.MachineType); var machineInstance = new ManagedMachine(machine.Name, machineType); GetMachineQueueForPlatform(machine.PlatformUsage).Enqueue(machineInstance); } } catch (Exception ex) { TraceFactory.Logger.Error(ex); // Something bad happened. Release everything. foreach (var machine in virtualMachines) { using (var machineInstance = new ManagedMachine(machine.Name, EnumUtil.GetByDescription <ManagedMachineType>(machine.MachineType))) { machineInstance.ReleaseReservation(); } } Dispose(); throw; } }
private void AddHolds(GridViewSelectedRowsCollection selectedRows) { string holdId = InputDialog.Show("Enter Hold Id:", "Add Machine Hold"); if (string.IsNullOrWhiteSpace(holdId)) { // User cancelled return; } var hostNames = selectedRows.Select(n => n.Cells[GridColumns.NAME_GRID_COLUMN].Value.ToString()); try { this.Cursor = Cursors.WaitCursor; VMInventoryManager.AddHold(hostNames, holdId); foreach (var row in selectedRows) { row.Cells[GridColumns.HOLDID_GRID_COLUMN].Value = holdId; } } finally { this.Cursor = Cursors.Default; } }
public override void Replace() { TraceFactory.Logger.Info("Replacing {0}.".FormatWith(_machine.Name)); var replacement = VMInventoryManager.GetReplacement(_machine.Name); VMInventoryManager.SetInUseClearSession(_machine.Name); _machine = new ManagedMachine(replacement.Name, ManagedMachineType.WindowsVirtual); TraceFactory.Logger.Info("New replacement machine {0} selected.".FormatWith(_machine.Name)); }
private void synchronizeToolStripButton_Click(object sender, EventArgs e) { try { this.Cursor = Cursors.WaitCursor; // Execute this operation on a separate thread so that the Lock Service callback doesn't create a deadlock with the UI thread. Task syncTask = Task.Factory.StartNew(() => VMInventoryManager.SyncInventory(UserManager.CurrentUser)); syncTask.Wait(); RefreshGrid(); } finally { this.Cursor = Cursors.Default; } }
private void SetUsage(GridViewSelectedRowsCollection selectedRows, VMUsageState state) { try { this.Cursor = Cursors.WaitCursor; var hostNames = selectedRows.Select(n => n.Cells[GridColumns.NAME_GRID_COLUMN].Value.ToString()); VMInventoryManager.SetUsageState(hostNames, state); RefreshGrid(); } finally { this.Cursor = Cursors.Default; } }
private void RemoveHolds(GridViewSelectedRowsCollection selectedRows) { var hostNames = selectedRows.Select(n => n.Cells[GridColumns.NAME_GRID_COLUMN].Value.ToString()); try { this.Cursor = Cursors.WaitCursor; VMInventoryManager.RemoveHold(hostNames); foreach (var row in selectedRows) { row.Cells[GridColumns.HOLDID_GRID_COLUMN].Value = null; } } finally { this.Cursor = Cursors.Default; } }
private void PowerOn(SimReserved simulator) { Thread.CurrentThread.SetName(simulator.AssetId); UpdateItemStatus(simulator, "Checking power status..."); if (VMController.IsPoweredOn(simulator.VirtualMachine)) { UpdateItemStatus(simulator, "Already powered on."); } else { UpdateItemStatus(simulator, "Powering On VM..."); VMController.PowerOnMachine(simulator.VirtualMachine); VMInventoryManager.SetInUse(simulator.VirtualMachine); CancellationTokenSource task = new CancellationTokenSource(); VMController.WaitOnMachineAvailable(simulator.VirtualMachine, task.Token); UpdateItemStatus(simulator, "Power On complete."); } }