/// <summary> /// Reserves the hosts by communicating with the reservation manager. /// </summary> public void ReserveMachines() { if (GlobalSettings.IsDistributedSystem) { try { if (_reservationManager == null) { var machineQuantity = new VMQuantityDictionary(_manifestAgent.Quantities.MachineQuantity); var ticket = _manifestAgent.Ticket; _reservationManager = new MachineReservationManager(_manifestAgent.Ticket.SessionId); _reservationManager.Reserve(ticket.SessionOwner, ticket.RequestedVMs, machineQuantity); } } catch (Exception ex) { TraceFactory.Logger.Error(ex.Message); throw; } } else { _localMachineCount = 1; } }
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; } }
/// <summary> /// Initializes a new instance of the <see cref="SessionResourceQuantity" /> class. /// </summary> public SessionResourceQuantity() { _vmQuantity = new VMQuantityDictionary(); _domainAccountQuantity = new DomainAccountQuantityDictionary(); }