From 2b61791f2a8c5f4d1e2cc592bb728e43de827d55 Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Tue, 19 May 2020 21:16:47 +0000 Subject: [PATCH] --- server/AyaNova/generator/CoreJobBackup.cs | 12 +++---- server/AyaNova/util/RunProgram.cs | 40 +++++++++++++++-------- 2 files changed, 33 insertions(+), 19 deletions(-) diff --git a/server/AyaNova/generator/CoreJobBackup.cs b/server/AyaNova/generator/CoreJobBackup.cs index 37c21d0c..31eca348 100644 --- a/server/AyaNova/generator/CoreJobBackup.cs +++ b/server/AyaNova/generator/CoreJobBackup.cs @@ -56,9 +56,9 @@ namespace AyaNova.Biz //this is valid: //C:\data\code\PostgreSQLPortable_12.0\App\PgSQL\bin\pg_dump --dbname=postgresql://postgres:raven@127.0.0.1:5432/AyaNova -Fc > huge_new.backup //"AYANOVA_DB_CONNECTION": "Server=localhost;Username=postgres;Password=raven;Database=AyaNova;", - - Npgsql.NpgsqlConnectionStringBuilder PostgresConnectionString=new Npgsql.NpgsqlConnectionStringBuilder(ServerBootConfig.AYANOVA_DB_CONNECTION); - var DBNameParameter=$"--dbname=postgresql://{PostgresConnectionString.Username}:{PostgresConnectionString.Password}@{PostgresConnectionString.Host}:{PostgresConnectionString.Port}/{PostgresConnectionString.Database}"; + + Npgsql.NpgsqlConnectionStringBuilder PostgresConnectionString = new Npgsql.NpgsqlConnectionStringBuilder(ServerBootConfig.AYANOVA_DB_CONNECTION); + var DBNameParameter = $"--dbname=postgresql://{PostgresConnectionString.Username}:{PostgresConnectionString.Password}@{PostgresConnectionString.Host}:{PostgresConnectionString.Port}/{PostgresConnectionString.Database}"; var DataBackupFile = $"db-{FileUtil.GetSafeDateFileName()}.backup";//presentation issue so don't use UTC for this one DataBackupFile = FileUtil.GetFullPathForUtilityFile(DataBackupFile); @@ -67,7 +67,7 @@ namespace AyaNova.Biz if (!string.IsNullOrWhiteSpace(ServerBootConfig.AYANOVA_BACKUP_PG_DUMP_PATH)) BackupUtilityCommand = Path.Combine(ServerBootConfig.AYANOVA_BACKUP_PG_DUMP_PATH, BackupUtilityCommand); - var Arguments=$"{BackupUtilityCommand} {DBNameParameter} -Fc > {DataBackupFile}"; + var Arguments = $"{BackupUtilityCommand} {DBNameParameter} -Fc > {DataBackupFile}"; @@ -75,7 +75,7 @@ namespace AyaNova.Biz log.LogInformation($"CALLING BACKUP COMMAND: {BackupUtilityCommand} {Arguments}"); //RUN THE BACKUP - var Result= RunProgram.Run(BackupUtilityCommand,Arguments); + var Result = RunProgram.Run(BackupUtilityCommand, Arguments, log); log.LogInformation($"BACKUP RESULT: {Result}"); @@ -107,7 +107,7 @@ namespace AyaNova.Biz { apiServerState.ResumePriorState(); BackupIsRunning = false; - log.LogInformation("BACKUP STUB: COMPLETELY FINISHED BACKING UP"); + log.LogInformation("BACKUP STUB: COMPLETELY FINISHED BACKING UP"); } } diff --git a/server/AyaNova/util/RunProgram.cs b/server/AyaNova/util/RunProgram.cs index 59228c9a..1b89c5a7 100644 --- a/server/AyaNova/util/RunProgram.cs +++ b/server/AyaNova/util/RunProgram.cs @@ -1,6 +1,7 @@ using System; using System.Diagnostics; using System.Runtime.InteropServices; +using Microsoft.Extensions.Logging; namespace AyaNova.Util { @@ -8,25 +9,38 @@ namespace AyaNova.Util { - public static string Run(string cmd, string arguments) + public static string Run(string cmd, string arguments, ILogger log = null) { - if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) + try { - return RunWindows(cmd, arguments); - } - else if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) - { - return RunOSX(cmd, arguments); + if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) + { + return RunWindows(cmd, arguments); + } + else if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) + { + return RunOSX(cmd, arguments); + } + else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) + { + return RunLinuxBash(cmd, arguments); + } } - else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) + catch (Exception ex) { - return RunLinuxBash(cmd, arguments); - } - else - { - throw new PlatformNotSupportedException(); + if (log != null) + { + log.LogError(ex, $"RunProgram error running command:{cmd} {arguments}"); + } + throw ex; } + + + + + throw new PlatformNotSupportedException(); + }