Esempio n. 1
0
        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);
        }
Esempio n. 2
0
 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();
        }