private static void DeallocateVms(IEnumerable <ScaleSetVirtualMachineStripped> vmInstances, IVirtualMachineScaleSet scaleSet, int agentsCountToDeallocate) { var virtualMachinesCounter = 0; foreach (var vmInstance in vmInstances) { if (virtualMachinesCounter >= agentsCountToDeallocate) { break; } Console.WriteLine($"Deallocating VM with instance ID {vmInstance}"); virtualMachinesCounter++; if (Properties.IsDryRun) { continue; } if (Decisions.IsVmExecutingJob(vmInstance.VmName)) { //this VM just got job assigned, so we should not deallocate it continue; } scaleSet.VirtualMachines.Inner.BeginDeallocateWithHttpMessagesAsync(Properties.VmScaleSetResourceGroupName, Properties.VmScaleSetName, vmInstance.VmInstanceId); } }