11namespace ServiceControlInstaller . Engine . Configuration . ServiceControl
22{
33 using System ;
4+ using System . Configuration ;
45 using System . Data . Common ;
56 using System . IO ;
67 using Instances ;
8+ using NuGet . Versioning ;
79
810 public class ServiceControlAppConfig : AppConfig
911 {
@@ -14,9 +16,12 @@ public ServiceControlAppConfig(IServiceControlInstance instance) : base(Path.Com
1416
1517 protected override void UpdateSettings ( )
1618 {
17- Config . ConnectionStrings . ConnectionStrings . Set ( "NServiceBus/Transport" , UpdateConnectionString ( ) ) ;
19+ UpdateConnectionString ( ) ;
20+ Config . ConnectionStrings . ConnectionStrings . Set ( "NServiceBus/Transport" , details . ConnectionString ) ;
21+
1822 var settings = Config . AppSettings . Settings ;
1923 var version = details . Version ;
24+
2025 settings . Set ( ServiceControlSettings . InstanceName , details . InstanceName , version ) ;
2126 settings . Set ( ServiceControlSettings . VirtualDirectory , details . VirtualDirectory ) ;
2227 settings . Set ( ServiceControlSettings . Port , details . Port . ToString ( ) ) ;
@@ -73,40 +78,41 @@ public override void SetTransportType(string transportTypeName)
7378 settings . Set ( ServiceControlSettings . TransportType , transportTypeName , version ) ;
7479 }
7580
76- string UpdateConnectionString ( )
81+ void UpdateConnectionString ( )
7782 {
78- var connectionStringBuilder = new DbConnectionStringBuilder { ConnectionString = details . ConnectionString } ;
79-
80- MigrateLicensingComponentRabbitMqManagementApiSettings ( connectionStringBuilder ) ;
81-
82- return connectionStringBuilder . ConnectionString ;
83+ if ( details . TransportPackage . Name . Contains ( "rabbitmq" , StringComparison . OrdinalIgnoreCase ) )
84+ {
85+ MigrateLicensingComponentRabbitMqManagementApiSettings ( ) ;
86+ }
8387 }
8488
85- void MigrateLicensingComponentRabbitMqManagementApiSettings ( DbConnectionStringBuilder connectionStringBuilder )
89+ void MigrateLicensingComponentRabbitMqManagementApiSettings ( )
8690 {
87- if ( ! details . TransportPackage . Name . Contains ( "rabbitmq ", StringComparison . OrdinalIgnoreCase ) )
91+ if ( details . ConnectionString . StartsWith ( "amqp ", StringComparison . OrdinalIgnoreCase ) )
8892 {
8993 return ;
9094 }
9195
92- var settings = Config . AppSettings . Settings ;
96+ var shouldMigrate = VersionComparer . Version . Compare ( details . Version , new SemanticVersion ( 6 , 5 , 0 ) ) >= 0 ;
9397
94- var legacySetting = settings [ ServiceControlSettings . LicensingComponentRabbitMqManagementApiUrl . Name ] ;
95- if ( legacySetting is not null && ! connectionStringBuilder . ContainsKey ( "ManagementApiUrl" ) )
98+ if ( shouldMigrate )
9699 {
97- connectionStringBuilder . Add ( "ManagementApiUrl" , legacySetting . Value ) ;
98- }
100+ var connectionStringBuilder = new DbConnectionStringBuilder { ConnectionString = details . ConnectionString } ;
101+ var settings = Config . AppSettings . Settings ;
99102
100- legacySetting = settings [ ServiceControlSettings . LicensingComponentRabbitMqManagementApiUsername . Name ] ;
101- if ( legacySetting is not null && ! connectionStringBuilder . ContainsKey ( "ManagementApiUserName" ) )
102- {
103- connectionStringBuilder . Add ( "ManagementApiUserName" , legacySetting . Value ) ;
103+ MigrateSetting ( connectionStringBuilder , settings [ ServiceControlSettings . LicensingComponentRabbitMqManagementApiUrl . Name ] , "ManagementApiUrl" ) ;
104+ MigrateSetting ( connectionStringBuilder , settings [ ServiceControlSettings . LicensingComponentRabbitMqManagementApiUsername . Name ] , "ManagementApiUserName" ) ;
105+ MigrateSetting ( connectionStringBuilder , settings [ ServiceControlSettings . LicensingComponentRabbitMqManagementApiPassword . Name ] , "ManagementApiPassword" ) ;
106+
107+ details . ConnectionString = connectionStringBuilder . ConnectionString ;
104108 }
105109
106- legacySetting = settings [ ServiceControlSettings . LicensingComponentRabbitMqManagementApiPassword . Name ] ;
107- if ( legacySetting is not null && ! connectionStringBuilder . ContainsKey ( "ManagementApiPassword" ) )
110+ static void MigrateSetting ( DbConnectionStringBuilder connectionStringBuilder , KeyValueConfigurationElement setting , string connectionStringSettingName )
108111 {
109- connectionStringBuilder . Add ( "ManagementApiPassword" , legacySetting . Value ) ;
112+ if ( setting is not null && ! connectionStringBuilder . ContainsKey ( connectionStringSettingName ) )
113+ {
114+ connectionStringBuilder . Add ( connectionStringSettingName , setting . Value ) ;
115+ }
110116 }
111117 }
112118
0 commit comments