mirror of https://github.com/Radarr/Radarr
Support legacy postgres options
This commit is contained in:
parent
a84ef3cd2f
commit
31f082e516
|
@ -0,0 +1,51 @@
|
|||
using System;
|
||||
using Moq;
|
||||
using NUnit.Framework;
|
||||
using NzbDrone.Common.EnvironmentInfo;
|
||||
using NzbDrone.Core.HealthCheck.Checks;
|
||||
using NzbDrone.Core.Localization;
|
||||
using NzbDrone.Core.Test.Framework;
|
||||
|
||||
namespace NzbDrone.Core.Test.HealthCheck.Checks
|
||||
{
|
||||
[TestFixture]
|
||||
public class LegacyPostgresCheckFixture : CoreTest<LegacyPostgresCheck>
|
||||
{
|
||||
[SetUp]
|
||||
public void Setup()
|
||||
{
|
||||
Mocker.GetMock<ILocalizationService>()
|
||||
.Setup(s => s.GetLocalizedString(It.IsAny<string>()))
|
||||
.Returns("Warning {0} -> {1}");
|
||||
}
|
||||
|
||||
[TearDown]
|
||||
public void Teardown()
|
||||
{
|
||||
foreach (var name in new[] { "__Postgres__Host", "__Postgres__Port", ":Postgres:Host", ":Postgres:Port" })
|
||||
{
|
||||
Environment.SetEnvironmentVariable(BuildInfo.AppName + name, null);
|
||||
}
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void should_return_ok_normally()
|
||||
{
|
||||
Subject.Check().ShouldBeOk();
|
||||
}
|
||||
|
||||
[TestCase("__")]
|
||||
[TestCase(":")]
|
||||
public void should_return_error_if_vars_defined(string separator)
|
||||
{
|
||||
Environment.SetEnvironmentVariable(BuildInfo.AppName + separator + "Postgres" + separator + "Host", "localhost");
|
||||
Environment.SetEnvironmentVariable(BuildInfo.AppName + separator + "Postgres" + separator + "Port", "localhost");
|
||||
|
||||
var result = Subject.Check();
|
||||
result.ShouldBeError("Warning " + BuildInfo.AppName + separator + "Postgres" + separator + "Host, " +
|
||||
BuildInfo.AppName + separator + "Postgres" + separator + "Port -> " +
|
||||
BuildInfo.AppName + separator + "PostgresHost, " +
|
||||
BuildInfo.AppName + separator + "PostgresPort");
|
||||
}
|
||||
}
|
||||
}
|
|
@ -19,14 +19,23 @@ namespace NzbDrone.Core.Datastore
|
|||
{
|
||||
private readonly IOptionsMonitor<ConfigFileOptions> _configFileOptions;
|
||||
|
||||
public ConnectionStringFactory(IAppFolderInfo appFolderInfo, IOptionsMonitor<ConfigFileOptions> configFileOptions)
|
||||
// Catch legacy config, to be removed soon
|
||||
private readonly PostgresOptions _postgresOptions;
|
||||
|
||||
public ConnectionStringFactory(IAppFolderInfo appFolderInfo,
|
||||
IOptionsMonitor<ConfigFileOptions> configFileOptions)
|
||||
{
|
||||
_configFileOptions = configFileOptions;
|
||||
_postgresOptions = PostgresOptions.GetOptions();
|
||||
|
||||
MainDbConnectionString = _configFileOptions.CurrentValue.PostgresHost.IsNotNullOrWhiteSpace() ? GetPostgresConnectionString(_configFileOptions.CurrentValue.PostgresMainDb) :
|
||||
var isPostgres = _configFileOptions.CurrentValue.PostgresHost.IsNotNullOrWhiteSpace() || _postgresOptions.Host.IsNotNullOrWhiteSpace();
|
||||
var mainDb = _configFileOptions.CurrentValue.PostgresMainDb ?? _postgresOptions.MainDb;
|
||||
var logDb = _configFileOptions.CurrentValue.PostgresLogDb ?? _postgresOptions.LogDb;
|
||||
|
||||
MainDbConnectionString = isPostgres ? GetPostgresConnectionString(mainDb) :
|
||||
GetConnectionString(appFolderInfo.GetDatabase());
|
||||
|
||||
LogDbConnectionString = _configFileOptions.CurrentValue.PostgresHost.IsNotNullOrWhiteSpace() ? GetPostgresConnectionString(_configFileOptions.CurrentValue.PostgresLogDb) :
|
||||
LogDbConnectionString = isPostgres ? GetPostgresConnectionString(logDb) :
|
||||
GetConnectionString(appFolderInfo.GetLogDatabase());
|
||||
}
|
||||
|
||||
|
@ -64,10 +73,10 @@ namespace NzbDrone.Core.Datastore
|
|||
var connectionBuilder = new NpgsqlConnectionStringBuilder();
|
||||
|
||||
connectionBuilder.Database = dbName;
|
||||
connectionBuilder.Host = _configFileOptions.CurrentValue.PostgresHost;
|
||||
connectionBuilder.Username = _configFileOptions.CurrentValue.PostgresUser;
|
||||
connectionBuilder.Password = _configFileOptions.CurrentValue.PostgresPassword;
|
||||
connectionBuilder.Port = _configFileOptions.CurrentValue.PostgresPort;
|
||||
connectionBuilder.Host = _configFileOptions.CurrentValue.PostgresHost ?? _postgresOptions.Host;
|
||||
connectionBuilder.Username = _configFileOptions.CurrentValue.PostgresUser ?? _postgresOptions.User;
|
||||
connectionBuilder.Password = _configFileOptions.CurrentValue.PostgresPassword ?? _postgresOptions.Password;
|
||||
connectionBuilder.Port = _configFileOptions.CurrentValue.PostgresPort > 0 ? _configFileOptions.CurrentValue.PostgresPort : _postgresOptions.Port;
|
||||
connectionBuilder.Enlist = false;
|
||||
|
||||
return connectionBuilder.ConnectionString;
|
||||
|
|
|
@ -0,0 +1,47 @@
|
|||
using System;
|
||||
using System.Collections;
|
||||
using System.Linq;
|
||||
using NLog;
|
||||
using NzbDrone.Common.EnvironmentInfo;
|
||||
using NzbDrone.Common.Extensions;
|
||||
using NzbDrone.Core.Localization;
|
||||
|
||||
namespace NzbDrone.Core.HealthCheck.Checks
|
||||
{
|
||||
public class LegacyPostgresCheck : HealthCheckBase
|
||||
{
|
||||
private readonly Logger _logger;
|
||||
|
||||
public LegacyPostgresCheck(ILocalizationService localizationService, Logger logger)
|
||||
: base(localizationService)
|
||||
{
|
||||
_logger = logger;
|
||||
}
|
||||
|
||||
public override HealthCheck Check()
|
||||
{
|
||||
var legacyVars = Environment
|
||||
.GetEnvironmentVariables()
|
||||
.Cast<DictionaryEntry>()
|
||||
.Select(x => x.Key.ToString())
|
||||
.Where(k => k.StartsWith(BuildInfo.AppName + "__Postgres__") || k.StartsWith(BuildInfo.AppName + ":Postgres:"))
|
||||
.ToList();
|
||||
|
||||
if (legacyVars.Count == 0)
|
||||
{
|
||||
return new HealthCheck(GetType());
|
||||
}
|
||||
|
||||
var legacyString = legacyVars.OrderBy(x => x).ConcatToString();
|
||||
var newString = legacyString
|
||||
.Replace(BuildInfo.AppName + "__Postgres__", BuildInfo.AppName + "__Postgres")
|
||||
.Replace(BuildInfo.AppName + ":Postgres:", BuildInfo.AppName + ":Postgres");
|
||||
|
||||
return new HealthCheck(GetType(),
|
||||
HealthCheckResult.Error,
|
||||
string.Format(_localizationService.GetLocalizedString("PostgresLegacyEnvironmentVariables"), legacyString, newString));
|
||||
}
|
||||
|
||||
public override bool CheckOnSchedule => false;
|
||||
}
|
||||
}
|
|
@ -696,6 +696,7 @@
|
|||
"PosterOptions": "Poster Options",
|
||||
"Posters": "Posters",
|
||||
"PosterSize": "Poster Size",
|
||||
"PostgresLegacyEnvironmentVariables": "You have defined the following legacy PostgreSQL environment variables: {0}. Please update them to: {1}",
|
||||
"PreferAndUpgrade": "Prefer and Upgrade",
|
||||
"PreferIndexerFlags": "Prefer Indexer Flags",
|
||||
"PreferIndexerFlagsHelpText": "Prioritize releases with special flags",
|
||||
|
|
Loading…
Reference in New Issue