Ejemplo n.º 1
0
 private static List <string> EmailTargets(ProvisioningReport provisionReport)
 {
     return(provisionReport.Targets
            .Select(x => x.Email)
            .Where(s => !string.IsNullOrWhiteSpace(s))
            .ToList());
 }
Ejemplo n.º 2
0
        private static string WriteCsvToString(ProvisioningReport provisionReport)
        {
            var reportString = new StringWriter();

            var csv = new CsvWriter(reportString);

            csv.WriteRecords(provisionReport.Rows);
            return(reportString.ToString());
        }
Ejemplo n.º 3
0
 private static void ConsoleReport(ProvisioningReport provisionReport)
 {
     foreach (var reportRow in provisionReport.Rows)
     {
         Console.WriteLine($"Table: {reportRow.TableName}({reportRow.IndexName})");
         Console.WriteLine(
             $"Provision: {reportRow.ProvisionedReadCapacityUnits}, {reportRow.ProvisionedWriteCapacityUnits}");
         Console.WriteLine(
             $"Consumption: {reportRow.MaxConsumedReadPerMinute}, {reportRow.MaxConsumedWritePerMinute}");
     }
     Console.WriteLine($"Report {provisionReport.Name} done");
 }
Ejemplo n.º 4
0
        private async Task <ProvisioningReport> GenerateAlertingGroupReport(AlertingGroup alertingGroup)
        {
            Console.WriteLine($"Generating report {alertingGroup.Name}");
            var provisioningReport = new ProvisioningReport
            {
                Name    = alertingGroup.Name,
                Targets = alertingGroup.ReportTargets
            };

            foreach (var tableConfig in alertingGroup.DynamoDb.Tables)
            {
                var tableRows = await GenerateTableReport(tableConfig);

                provisioningReport.Rows.AddRange(tableRows);
            }
            return(provisioningReport);
        }
Ejemplo n.º 5
0
        private async Task SendReport(ProvisioningReport provisionReport)
        {
            try
            {
                var targets = EmailTargets(provisionReport);

                if (!targets.Any())
                {
                    Console.Error.WriteLine($"No mail targets for report {provisionReport.Name}. Will not send.");
                    return;
                }

                var reportData = WriteCsvToString(provisionReport);
                var reportFile = WriteReportToFile(provisionReport.Name, reportData);
                await MailReport(provisionReport.Name, reportFile.FullName, targets);
            }
            catch (Exception ex)
            {
                Console.Error.WriteLine($"Failed to save and mail report {provisionReport.Name}");
                Console.Error.WriteLine(ex.ToString());
                throw;
            }
        }