27
27
import java .util .ArrayList ;
28
28
import java .util .Arrays ;
29
29
import java .util .Collections ;
30
+ import java .util .HashMap ;
30
31
import java .util .List ;
31
- import java .util .Objects ;
32
+ import java .util .Map ;
32
33
import java .util .Set ;
33
34
import java .util .concurrent .atomic .AtomicBoolean ;
34
35
import oracle .kubernetes .operator .KubernetesConstants ;
@@ -68,14 +69,24 @@ public abstract class PodStepContext {
68
69
private final DomainPresenceInfo info ;
69
70
private final Step conflictStep ;
70
71
private V1Pod podModel ;
72
+ private Map <String , String > substitutionVariables = new HashMap <>();
71
73
72
74
PodStepContext (Step conflictStep , Packet packet ) {
73
75
this .conflictStep = conflictStep ;
74
76
info = packet .getSPI (DomainPresenceInfo .class );
75
77
}
76
78
77
- void setPodModel (V1Pod podModel ) {
78
- this .podModel = podModel ;
79
+ void init () {
80
+ createSubstitutionMap ();
81
+ podModel = createPodModel ();
82
+ }
83
+
84
+ private void createSubstitutionMap () {
85
+ substitutionVariables .put ("DOMAIN_NAME" , getDomainName ());
86
+ substitutionVariables .put ("DOMAIN_HOME" , getDomainHome ());
87
+ substitutionVariables .put ("SERVER_NAME" , getServerName ());
88
+ substitutionVariables .put ("ADMIN_NAME" , getAsName ());
89
+ substitutionVariables .put ("ADMIN_PORT" , getAsPort ().toString ());
79
90
}
80
91
81
92
private V1Pod getPodModel () {
@@ -435,7 +446,7 @@ public NextAction onSuccess(Packet packet, CallResponse<V1Pod> callResponse) {
435
446
436
447
// ---------------------- model methods ------------------------------
437
448
438
- V1Pod createPodModel () {
449
+ private V1Pod createPodModel () {
439
450
return new V1Pod ().metadata (createMetadata ()).spec (createSpec (TuningParameters .getInstance ()));
440
451
}
441
452
@@ -524,13 +535,17 @@ protected List<String> getContainerCommand() {
524
535
void overrideContainerWeblogicEnvVars (List <V1EnvVar > vars ) {
525
536
// Override the domain name, domain directory, admin server name and admin server port.
526
537
addEnvVar (vars , "DOMAIN_NAME" , getDomainName ());
527
- addEnvVar (vars , "DOMAIN_HOME" , "/shared/domain/" + getDomainName ());
538
+ addEnvVar (vars , "DOMAIN_HOME" , getDomainHome ());
528
539
addEnvVar (vars , "ADMIN_NAME" , getAsName ());
529
540
addEnvVar (vars , "ADMIN_PORT" , getAsPort ().toString ());
530
541
addEnvVar (vars , "SERVER_NAME" , getServerName ());
531
542
hideAdminUserCredentials (vars );
532
543
}
533
544
545
+ private String getDomainHome () {
546
+ return "/shared/domain/" + getDomainName ();
547
+ }
548
+
534
549
// Hide the admin account's user name and password.
535
550
// Note: need to use null v.s. "" since if you upload a "" to kubectl then download it,
536
551
// it comes back as a null and V1EnvVar.equals returns false even though it's supposed to
@@ -548,24 +563,16 @@ static void addEnvVar(List<V1EnvVar> vars, String name, String value) {
548
563
}
549
564
550
565
void doSubstitution (List <V1EnvVar > vars ) {
551
- boolean runAgain = true ;
552
- while (runAgain ) {
553
- runAgain = false ;
554
- for (V1EnvVar var : vars ) {
555
- String newValue = translate (var .getValue (), vars );
556
- if (!Objects .equals (var .getValue (), newValue )) {
557
- runAgain = true ;
558
- var .setValue (newValue );
559
- }
560
- }
566
+ for (V1EnvVar var : vars ) {
567
+ var .setValue (translate (var .getValue ()));
561
568
}
562
569
}
563
570
564
- private String translate (String rawValue , List < V1EnvVar > vars ) {
571
+ private String translate (String rawValue ) {
565
572
String result = rawValue ;
566
- for (V1EnvVar var : vars ) {
567
- if (result != null && var .getValue () != null ) {
568
- result = result .replace (String .format ("$(%s)" , var . getName ()), var .getValue ());
573
+ for (Map . Entry < String , String > entry : substitutionVariables . entrySet () ) {
574
+ if (result != null && entry .getValue () != null ) {
575
+ result = result .replace (String .format ("$(%s)" , entry . getKey ()), entry .getValue ());
569
576
}
570
577
}
571
578
return result ;
0 commit comments