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;
|
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;
|
_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());
|
GetConnectionString(appFolderInfo.GetDatabase());
|
||||||
|
|
||||||
LogDbConnectionString = _configFileOptions.CurrentValue.PostgresHost.IsNotNullOrWhiteSpace() ? GetPostgresConnectionString(_configFileOptions.CurrentValue.PostgresLogDb) :
|
LogDbConnectionString = isPostgres ? GetPostgresConnectionString(logDb) :
|
||||||
GetConnectionString(appFolderInfo.GetLogDatabase());
|
GetConnectionString(appFolderInfo.GetLogDatabase());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -64,10 +73,10 @@ namespace NzbDrone.Core.Datastore
|
||||||
var connectionBuilder = new NpgsqlConnectionStringBuilder();
|
var connectionBuilder = new NpgsqlConnectionStringBuilder();
|
||||||
|
|
||||||
connectionBuilder.Database = dbName;
|
connectionBuilder.Database = dbName;
|
||||||
connectionBuilder.Host = _configFileOptions.CurrentValue.PostgresHost;
|
connectionBuilder.Host = _configFileOptions.CurrentValue.PostgresHost ?? _postgresOptions.Host;
|
||||||
connectionBuilder.Username = _configFileOptions.CurrentValue.PostgresUser;
|
connectionBuilder.Username = _configFileOptions.CurrentValue.PostgresUser ?? _postgresOptions.User;
|
||||||
connectionBuilder.Password = _configFileOptions.CurrentValue.PostgresPassword;
|
connectionBuilder.Password = _configFileOptions.CurrentValue.PostgresPassword ?? _postgresOptions.Password;
|
||||||
connectionBuilder.Port = _configFileOptions.CurrentValue.PostgresPort;
|
connectionBuilder.Port = _configFileOptions.CurrentValue.PostgresPort > 0 ? _configFileOptions.CurrentValue.PostgresPort : _postgresOptions.Port;
|
||||||
connectionBuilder.Enlist = false;
|
connectionBuilder.Enlist = false;
|
||||||
|
|
||||||
return connectionBuilder.ConnectionString;
|
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",
|
"PosterOptions": "Poster Options",
|
||||||
"Posters": "Posters",
|
"Posters": "Posters",
|
||||||
"PosterSize": "Poster Size",
|
"PosterSize": "Poster Size",
|
||||||
|
"PostgresLegacyEnvironmentVariables": "You have defined the following legacy PostgreSQL environment variables: {0}. Please update them to: {1}",
|
||||||
"PreferAndUpgrade": "Prefer and Upgrade",
|
"PreferAndUpgrade": "Prefer and Upgrade",
|
||||||
"PreferIndexerFlags": "Prefer Indexer Flags",
|
"PreferIndexerFlags": "Prefer Indexer Flags",
|
||||||
"PreferIndexerFlagsHelpText": "Prioritize releases with special flags",
|
"PreferIndexerFlagsHelpText": "Prioritize releases with special flags",
|
||||||
|
|
Loading…
Reference in New Issue