private static List <string> EmailTargets(ProvisioningReport provisionReport) { return(provisionReport.Targets .Select(x => x.Email) .Where(s => !string.IsNullOrWhiteSpace(s)) .ToList()); }
private static string WriteCsvToString(ProvisioningReport provisionReport) { var reportString = new StringWriter(); var csv = new CsvWriter(reportString); csv.WriteRecords(provisionReport.Rows); return(reportString.ToString()); }
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"); }
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); }
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; } }