33 using System ;
44 using System . Collections . Generic ;
55 using System . Data ;
6- using System . IO ;
76 using System . Net ;
8- using System . Runtime . CompilerServices ;
97 using System . Threading ;
108 using System . Threading . Tasks ;
119 using Ductus . FluentDocker . Builders ;
@@ -33,9 +31,11 @@ public abstract class DockerHelper
3331 /// <param name="dockerCredentials">The docker credentials.</param>
3432 /// <param name="securityServiceContainerName">Name of the security service container.</param>
3533 /// <param name="eventStoreContainerName">Name of the event store container.</param>
34+ /// <param name="sqlServerDetails">The SQL server details.</param>
3635 /// <param name="clientDetails">The client details.</param>
3736 /// <param name="forceLatestImage">if set to <c>true</c> [force latest image].</param>
3837 /// <param name="securityServicePort">The security service port.</param>
38+ /// <param name="additionalEnvironmentVariables">The additional environment variables.</param>
3939 /// <returns></returns>
4040 public static IContainerService SetupEstateManagementContainer ( String containerName ,
4141 ILogger logger ,
@@ -45,12 +45,12 @@ public static IContainerService SetupEstateManagementContainer(String containerN
4545 ( String URL , String UserName , String Password ) ? dockerCredentials ,
4646 String securityServiceContainerName ,
4747 String eventStoreContainerName ,
48- String sqlServerContainerName ,
49- String sqlServerUserName ,
50- String sqlServerPassword ,
48+ ( String sqlServerContainerName , String sqlServerUserName , String sqlServerPassword )
49+ sqlServerDetails ,
5150 ( String clientId , String clientSecret ) clientDetails ,
5251 Boolean forceLatestImage = false ,
53- Int32 securityServicePort = DockerHelper . SecurityServiceDockerPort )
52+ Int32 securityServicePort = DockerHelper . SecurityServiceDockerPort ,
53+ List < String > additionalEnvironmentVariables = null )
5454 {
5555 logger . LogInformation ( "About to Start Estate Management Container" ) ;
5656
@@ -61,9 +61,12 @@ public static IContainerService SetupEstateManagementContainer(String containerN
6161 environmentVariables . Add ( $ "SecurityConfiguration:Authority=http://{ securityServiceContainerName } :{ securityServicePort } ") ;
6262 environmentVariables . Add ( $ "urls=http://*:{ DockerHelper . EstateManagementDockerPort } ") ;
6363 environmentVariables
64- . Add ( $ "ConnectionStrings:EstateReportingReadModel=\" server={ sqlServerContainerName } ;user id={ sqlServerUserName } ;password={ sqlServerPassword } ;database=EstateReportingReadModel\" ") ;
65-
64+ . Add ( $ "ConnectionStrings:EstateReportingReadModel=\" server={ sqlServerDetails . sqlServerContainerName } ;user id={ sqlServerDetails . sqlServerUserName } ;password={ sqlServerDetails . sqlServerPassword } ;database=EstateReportingReadModel\" ") ;
6665
66+ if ( additionalEnvironmentVariables != null )
67+ {
68+ environmentVariables . AddRange ( additionalEnvironmentVariables ) ;
69+ }
6770
6871 ContainerBuilder estateManagementContainer = new Builder ( ) . UseContainer ( ) . WithName ( containerName ) . WithEnvironment ( environmentVariables . ToArray ( ) )
6972 . UseImage ( imageName , forceLatestImage ) . ExposePort ( DockerHelper . EstateManagementDockerPort )
@@ -92,12 +95,11 @@ public static IContainerService SetupEstateManagementContainer(String containerN
9295 /// <param name="hostFolder">The host folder.</param>
9396 /// <param name="dockerCredentials">The docker credentials.</param>
9497 /// <param name="securityServiceContainerName">Name of the security service container.</param>
95- /// <param name="sqlServerContainerName">Name of the SQL server container.</param>
96- /// <param name="sqlServerUserName">Name of the SQL server user.</param>
97- /// <param name="sqlServerPassword">The SQL server password.</param>
98+ /// <param name="sqlServerDetails">The SQL server details.</param>
9899 /// <param name="clientDetails">The client details.</param>
99100 /// <param name="forceLatestImage">if set to <c>true</c> [force latest image].</param>
100101 /// <param name="securityServicePort">The security service port.</param>
102+ /// <param name="additionalEnvironmentVariables">The additional environment variables.</param>
101103 /// <returns></returns>
102104 public static IContainerService SetupEstateReportingContainer ( String containerName ,
103105 ILogger logger ,
@@ -106,12 +108,12 @@ public static IContainerService SetupEstateReportingContainer(String containerNa
106108 String hostFolder ,
107109 ( String URL , String UserName , String Password ) ? dockerCredentials ,
108110 String securityServiceContainerName ,
109- String sqlServerContainerName ,
110- String sqlServerUserName ,
111- String sqlServerPassword ,
111+ ( String sqlServerContainerName , String sqlServerUserName , String sqlServerPassword )
112+ sqlServerDetails ,
112113 ( String clientId , String clientSecret ) clientDetails ,
113114 Boolean forceLatestImage = false ,
114- Int32 securityServicePort = DockerHelper . SecurityServiceDockerPort )
115+ Int32 securityServicePort = DockerHelper . SecurityServiceDockerPort ,
116+ List < String > additionalEnvironmentVariables = null )
115117 {
116118 logger . LogInformation ( "About to Start Estate Reporting Container" ) ;
117119
@@ -120,7 +122,12 @@ public static IContainerService SetupEstateReportingContainer(String containerNa
120122 environmentVariables . Add ( $ "SecurityConfiguration:Authority=http://{ securityServiceContainerName } :{ securityServicePort } ") ;
121123 environmentVariables . Add ( $ "urls=http://*:{ DockerHelper . EstateReportingDockerPort } ") ;
122124 environmentVariables
123- . Add ( $ "ConnectionStrings:EstateReportingReadModel=\" server={ sqlServerContainerName } ;user id={ sqlServerUserName } ;password={ sqlServerPassword } ;database=EstateReportingReadModel\" ") ;
125+ . Add ( $ "ConnectionStrings:EstateReportingReadModel=\" server={ sqlServerDetails . sqlServerContainerName } ;user id={ sqlServerDetails . sqlServerUserName } ;password={ sqlServerDetails . sqlServerPassword } ;database=EstateReportingReadModel\" ") ;
126+
127+ if ( additionalEnvironmentVariables != null )
128+ {
129+ environmentVariables . AddRange ( additionalEnvironmentVariables ) ;
130+ }
124131
125132 ContainerBuilder estateReportingContainer = new Builder ( ) . UseContainer ( ) . WithName ( containerName ) . WithEnvironment ( environmentVariables . ToArray ( ) )
126133 . UseImage ( imageName , forceLatestImage ) . ExposePort ( DockerHelper . EstateReportingDockerPort )
@@ -179,14 +186,16 @@ public static IContainerService SetupEventStoreContainer(String containerName,
179186 /// <param name="hostFolder">The host folder.</param>
180187 /// <param name="dockerCredentials">The docker credentials.</param>
181188 /// <param name="forceLatestImage">if set to <c>true</c> [force latest image].</param>
189+ /// <param name="additionalEnvironmentVariables">The additional environment variables.</param>
182190 /// <returns></returns>
183191 public static IContainerService SetupSecurityServiceContainer ( String containerName ,
184192 ILogger logger ,
185193 String imageName ,
186194 INetworkService networkService ,
187195 String hostFolder ,
188196 ( String URL , String UserName , String Password ) ? dockerCredentials ,
189- Boolean forceLatestImage = false )
197+ Boolean forceLatestImage = false ,
198+ List < String > additionalEnvironmentVariables = null )
190199 {
191200 logger . LogInformation ( "About to Start Security Container" ) ;
192201
@@ -196,6 +205,11 @@ public static IContainerService SetupSecurityServiceContainer(String containerNa
196205 environmentVariables . Add ( "ASPNETCORE_ENVIRONMENT=IntegrationTest" ) ;
197206 environmentVariables . Add ( "urls=http://*:5001" ) ;
198207
208+ if ( additionalEnvironmentVariables != null )
209+ {
210+ environmentVariables . AddRange ( additionalEnvironmentVariables ) ;
211+ }
212+
199213 ContainerBuilder securityServiceContainer = new Builder ( ) . UseContainer ( ) . WithName ( containerName )
200214 . WithEnvironment ( environmentVariables . ToArray ( ) ) . UseImage ( imageName , forceLatestImage )
201215 . ExposePort ( DockerHelper . SecurityServiceDockerPort ) . UseNetwork ( new List < INetworkService >
@@ -230,13 +244,12 @@ public static IContainerService SetupSecurityServiceContainer(String containerNa
230244 /// <param name="hostFolder">The host folder.</param>
231245 /// <param name="dockerCredentials">The docker credentials.</param>
232246 /// <param name="securityServiceContainerName">Name of the security service container.</param>
233- /// <param name="sqlServerContainerName">Name of the SQL server container.</param>
234- /// <param name="sqlServerUserName">Name of the SQL server user.</param>
235- /// <param name="sqlServerPassword">The SQL server password.</param>
247+ /// <param name="sqlServerDetails">The SQL server details.</param>
236248 /// <param name="eventStoreServerId">The event store server identifier.</param>
237249 /// <param name="clientDetails">The client details.</param>
238250 /// <param name="forceLatestImage">if set to <c>true</c> [force latest image].</param>
239251 /// <param name="securityServicePort">The security service port.</param>
252+ /// <param name="additionalEnvironmentVariables">The additional environment variables.</param>
240253 /// <returns></returns>
241254 public static IContainerService SetupSubscriptionServiceContainer ( String containerName ,
242255 ILogger logger ,
@@ -245,13 +258,13 @@ public static IContainerService SetupSubscriptionServiceContainer(String contain
245258 String hostFolder ,
246259 ( String URL , String UserName , String Password ) ? dockerCredentials ,
247260 String securityServiceContainerName ,
248- String sqlServerContainerName ,
249- String sqlServerUserName ,
250- String sqlServerPassword ,
261+ ( String sqlServerContainerName , String sqlServerUserName , String sqlServerPassword )
262+ sqlServerDetails ,
251263 Guid eventStoreServerId ,
252264 ( String clientId , String clientSecret ) clientDetails ,
253265 Boolean forceLatestImage = false ,
254- Int32 securityServicePort = DockerHelper . SecurityServiceDockerPort )
266+ Int32 securityServicePort = DockerHelper . SecurityServiceDockerPort ,
267+ List < String > additionalEnvironmentVariables = null )
255268 {
256269 logger . LogInformation ( "About to Start Subscription Service Container" ) ;
257270
@@ -260,7 +273,12 @@ public static IContainerService SetupSubscriptionServiceContainer(String contain
260273 environmentVariables . Add ( $ "AppSettings:EventStoreServerId={ eventStoreServerId } ") ;
261274 environmentVariables . Add ( $ "SecurityConfiguration:Authority=http://{ securityServiceContainerName } :{ securityServicePort } ") ;
262275 environmentVariables
263- . Add ( $ "ConnectionStrings:SubscriptionService=\" server={ sqlServerContainerName } ;user id={ sqlServerUserName } ;password={ sqlServerPassword } ;database=SubscriptionServiceConfiguration\" ") ;
276+ . Add ( $ "ConnectionStrings:SubscriptionService=\" server={ sqlServerDetails . sqlServerContainerName } ;user id={ sqlServerDetails . sqlServerUserName } ;password={ sqlServerDetails . sqlServerPassword } ;database=SubscriptionServiceConfiguration\" ") ;
277+
278+ if ( additionalEnvironmentVariables != null )
279+ {
280+ environmentVariables . AddRange ( additionalEnvironmentVariables ) ;
281+ }
264282
265283 ContainerBuilder subscriptionServiceContainer = new Builder ( ) . UseContainer ( ) . WithName ( containerName ) . WithEnvironment ( environmentVariables . ToArray ( ) )
266284 . UseImage ( imageName , forceLatestImage ) . UseNetwork ( networkServices . ToArray ( ) )
@@ -315,6 +333,7 @@ public static INetworkService SetupTestNetwork(String networkName = null,
315333 /// <param name="clientDetails">The client details.</param>
316334 /// <param name="forceLatestImage">if set to <c>true</c> [force latest image].</param>
317335 /// <param name="securityServicePort">The security service port.</param>
336+ /// <param name="additionalEnvironmentVariables">The additional environment variables.</param>
318337 /// <returns></returns>
319338 public static IContainerService SetupTransactionProcessorACLContainer ( String containerName ,
320339 ILogger logger ,
@@ -326,7 +345,8 @@ public static IContainerService SetupTransactionProcessorACLContainer(String con
326345 String transactionProcessorContainerName ,
327346 ( String clientId , String clientSecret ) clientDetails ,
328347 Boolean forceLatestImage = false ,
329- Int32 securityServicePort = DockerHelper . SecurityServiceDockerPort )
348+ Int32 securityServicePort = DockerHelper . SecurityServiceDockerPort ,
349+ List < String > additionalEnvironmentVariables = null )
330350 {
331351 logger . LogInformation ( "About to Start Transaction Processor ACL Container" ) ;
332352
@@ -338,6 +358,11 @@ public static IContainerService SetupTransactionProcessorACLContainer(String con
338358 environmentVariables . Add ( $ "AppSettings:ClientId={ clientDetails . clientId } ") ;
339359 environmentVariables . Add ( $ "AppSettings:ClientSecret={ clientDetails . clientSecret } ") ;
340360
361+ if ( additionalEnvironmentVariables != null )
362+ {
363+ environmentVariables . AddRange ( additionalEnvironmentVariables ) ;
364+ }
365+
341366 ContainerBuilder transactionProcessorACLContainer = new Builder ( )
342367 . UseContainer ( ) . WithName ( containerName ) . WithEnvironment ( environmentVariables . ToArray ( ) )
343368 . UseImage ( imageName , forceLatestImage ) . ExposePort ( DockerHelper . TransactionProcessorACLDockerPort )
@@ -376,6 +401,7 @@ public static IContainerService SetupTransactionProcessorACLContainer(String con
376401 /// <param name="testhostContainerName">Name of the testhost container.</param>
377402 /// <param name="forceLatestImage">if set to <c>true</c> [force latest image].</param>
378403 /// <param name="securityServicePort">The security service port.</param>
404+ /// <param name="additionalEnvironmentVariables">The additional environment variables.</param>
379405 /// <returns></returns>
380406 public static IContainerService SetupTransactionProcessorContainer ( String containerName ,
381407 ILogger logger ,
@@ -389,7 +415,8 @@ public static IContainerService SetupTransactionProcessorContainer(String contai
389415 ( String clientId , String clientSecret ) clientDetails ,
390416 String testhostContainerName ,
391417 Boolean forceLatestImage = false ,
392- Int32 securityServicePort = DockerHelper . SecurityServiceDockerPort )
418+ Int32 securityServicePort = DockerHelper . SecurityServiceDockerPort ,
419+ List < String > additionalEnvironmentVariables = null )
393420 {
394421 logger . LogInformation ( "About to Start Transaction Processor Container" ) ;
395422
@@ -405,6 +432,11 @@ public static IContainerService SetupTransactionProcessorContainer(String contai
405432
406433 environmentVariables . Add ( $ "OperatorConfiguration:Safaricom:Url=http://{ testhostContainerName } :9000/api/safaricom") ;
407434
435+ if ( additionalEnvironmentVariables != null )
436+ {
437+ environmentVariables . AddRange ( additionalEnvironmentVariables ) ;
438+ }
439+
408440 ContainerBuilder transactionProcessorContainer = new Builder ( ) . UseContainer ( ) . WithName ( containerName ) . WithEnvironment ( environmentVariables . ToArray ( ) )
409441 . UseImage ( imageName , forceLatestImage ) . ExposePort ( DockerHelper . TransactionProcessorDockerPort )
410442 . UseNetwork ( networkServices . ToArray ( ) ) . Mount ( hostFolder , "/home" , MountType . ReadWrite ) ;
0 commit comments