static IDictionary <string, int> ReadContainerCount(MyAWS aws, List <string> ids) { if (!ids.Any()) { throw new ArgumentException("Don't call me with empty list"); } Console.WriteLine($"Read running container count from {ids.Count} instances"); var result = new Dictionary <string, int>(); try { foreach (var pair in aws.RunShellScriptAsync(ids, CONTAINER_COUNT_SCRIPT, true).GetAwaiter().GetResult()) { try { result[pair.Key] = Convert.ToInt32(pair.Value.Trim()); } catch (Exception x) { PrintError(x); } } } catch (Exception x) { PrintError(x); } return(result); }
static void TrySendShutdownScript(MyAWS aws, List <string> ids) { Console.WriteLine($"Send shutdown script to {ids.Count} instances"); try { aws.RunShellScriptAsync(ids, SHUTDOWN_SCRIPT, false).GetAwaiter().GetResult(); } catch (Exception x) { PrintError(x); } }
public static void Measure(MyAWS aws, IEnumerable <Instance> instances) { if (!ENABLED) { return; } var ids = instances .Where(i => i.State.Name == InstanceStateName.Running) .Where(i => (DateTime.Now - i.LaunchTime).TotalMinutes > 1) .Select(i => i.InstanceId) .ToList(); if (!ids.Any()) { return; } try { var outputs = aws.RunShellScriptAsync( ids, "df -BM --output=used /dev/nvme0n1p1", true ).GetAwaiter().GetResult(); foreach (var output in outputs.Values) { var used = 0.001 * Convert.ToInt32(output.Split('\n')[1].TrimEnd('M')); MaxUsed = Math.Max(MaxUsed, used); } } catch { return; } File.WriteAllText(STATE_FILE, MaxUsed.ToString()); Console.BackgroundColor = ConsoleColor.Yellow; Console.ForegroundColor = ConsoleColor.Black; Console.WriteLine($"Max agent disk usage: {MaxUsed} G"); Console.ResetColor(); }