diff --git a/src/ServiceControlInstaller.Engine/Configuration/ServiceControl/ServiceControlAppConfig.cs b/src/ServiceControlInstaller.Engine/Configuration/ServiceControl/ServiceControlAppConfig.cs index 950058cfa7..82b06479f9 100644 --- a/src/ServiceControlInstaller.Engine/Configuration/ServiceControl/ServiceControlAppConfig.cs +++ b/src/ServiceControlInstaller.Engine/Configuration/ServiceControl/ServiceControlAppConfig.cs @@ -1,5 +1,7 @@ namespace ServiceControlInstaller.Engine.Configuration.ServiceControl { + using System; + using System.Data.Common; using System.IO; using Instances; @@ -12,7 +14,7 @@ public ServiceControlAppConfig(IServiceControlInstance instance) : base(Path.Com protected override void UpdateSettings() { - Config.ConnectionStrings.ConnectionStrings.Set("NServiceBus/Transport", details.ConnectionString); + Config.ConnectionStrings.ConnectionStrings.Set("NServiceBus/Transport", UpdateConnectionString()); var settings = Config.AppSettings.Settings; var version = details.Version; settings.Set(ServiceControlSettings.InstanceName, details.InstanceName, version); @@ -37,6 +39,9 @@ protected override void UpdateSettings() settings.RemoveIfRetired(ServiceControlSettings.AuditLogQueue, version); settings.RemoveIfRetired(ServiceControlSettings.ForwardAuditMessages, version); settings.RemoveIfRetired(ServiceControlSettings.InternalQueueName, version); + settings.RemoveIfRetired(ServiceControlSettings.LicensingComponentRabbitMqManagementApiUrl, version); + settings.RemoveIfRetired(ServiceControlSettings.LicensingComponentRabbitMqManagementApiUsername, version); + settings.RemoveIfRetired(ServiceControlSettings.LicensingComponentRabbitMqManagementApiPassword, version); RemoveRavenDB35Settings(settings, version); } @@ -62,6 +67,43 @@ public override void SetTransportType(string transportTypeName) settings.Set(ServiceControlSettings.TransportType, transportTypeName, version); } - IServiceControlInstance details; + string UpdateConnectionString() + { + var connectionStringBuilder = new DbConnectionStringBuilder { ConnectionString = details.ConnectionString }; + + MigrateLicensingComponentRabbitMqManagementApiSettings(connectionStringBuilder); + + return connectionStringBuilder.ConnectionString; + } + + void MigrateLicensingComponentRabbitMqManagementApiSettings(DbConnectionStringBuilder connectionStringBuilder) + { + if (!details.TransportPackage.Name.Contains("rabbitmq", StringComparison.OrdinalIgnoreCase)) + { + return; + } + + var settings = Config.AppSettings.Settings; + + var legacySetting = settings[ServiceControlSettings.LicensingComponentRabbitMqManagementApiUrl.Name]; + if (legacySetting is not null && !connectionStringBuilder.ContainsKey("ManagementApiUrl")) + { + connectionStringBuilder.Add("ManagementApiUrl", legacySetting.Value); + } + + legacySetting = settings[ServiceControlSettings.LicensingComponentRabbitMqManagementApiUsername.Name]; + if (legacySetting is not null && !connectionStringBuilder.ContainsKey("ManagementApiUserName")) + { + connectionStringBuilder.Add("ManagementApiUserName", legacySetting.Value); + } + + legacySetting = settings[ServiceControlSettings.LicensingComponentRabbitMqManagementApiPassword.Name]; + if (legacySetting is not null && !connectionStringBuilder.ContainsKey("ManagementApiPassword")) + { + connectionStringBuilder.Add("ManagementApiPassword", legacySetting.Value); + } + } + + readonly IServiceControlInstance details; } } \ No newline at end of file diff --git a/src/ServiceControlInstaller.Engine/Configuration/ServiceControl/SettingsList.cs b/src/ServiceControlInstaller.Engine/Configuration/ServiceControl/SettingsList.cs index bd0b5e4c87..d356247afa 100644 --- a/src/ServiceControlInstaller.Engine/Configuration/ServiceControl/SettingsList.cs +++ b/src/ServiceControlInstaller.Engine/Configuration/ServiceControl/SettingsList.cs @@ -89,5 +89,23 @@ public static class ServiceControlSettings Name = "ServiceControl/EnableFullTextSearchOnBodies", SupportedFrom = new SemanticVersion(4, 17, 0) }; + + public static readonly SettingInfo LicensingComponentRabbitMqManagementApiUrl = new() + { + Name = "LicensingComponent/RabbitMQ/ApiUrl", + RemovedFrom = new SemanticVersion(6, 5, 0) + }; + + public static readonly SettingInfo LicensingComponentRabbitMqManagementApiUsername = new() + { + Name = "LicensingComponent/RabbitMQ/UserName", + RemovedFrom = new SemanticVersion(6, 5, 0) + }; + + public static readonly SettingInfo LicensingComponentRabbitMqManagementApiPassword = new() + { + Name = "LicensingComponent/RabbitMQ/Password", + RemovedFrom = new SemanticVersion(6, 5, 0) + }; } } \ No newline at end of file