@@ -60,8 +60,7 @@ public class Localstack {
60
60
CommonUtils .disableSslCertChecking ();
61
61
}
62
62
63
- private Localstack () {
64
- }
63
+ private Localstack () {}
65
64
66
65
public void startup (LocalstackDockerConfiguration dockerConfiguration ) {
67
66
if (locked ) {
@@ -70,12 +69,19 @@ public void startup(LocalstackDockerConfiguration dockerConfiguration) {
70
69
locked = true ;
71
70
this .externalHostName = dockerConfiguration .getExternalHostName ();
72
71
72
+ Map <String , String > environmentVariables = dockerConfiguration .getEnvironmentVariables ();
73
+ environmentVariables = environmentVariables == null ? Collections .emptyMap () : environmentVariables ;
74
+ environmentVariables = new HashMap <String , String >(environmentVariables );
75
+ // add default environment variables
76
+ Map <String , String > defaultEnvVars = getDefaultEnvironmentVariables ();
77
+ environmentVariables .putAll (defaultEnvVars );
78
+
73
79
try {
74
80
localStackContainer = Container .createLocalstackContainer (dockerConfiguration .getExternalHostName (),
75
81
dockerConfiguration .isPullNewImage (), dockerConfiguration .isRandomizePorts (),
76
82
dockerConfiguration .getImageName (), dockerConfiguration .getImageTag (),
77
83
dockerConfiguration .getPortEdge (), dockerConfiguration .getPortElasticSearch (),
78
- dockerConfiguration . getEnvironmentVariables () , dockerConfiguration .getPortMappings (),
84
+ environmentVariables , dockerConfiguration .getPortMappings (),
79
85
dockerConfiguration .getBindMounts (), dockerConfiguration .getPlatform ());
80
86
loadServiceToPortMap ();
81
87
@@ -118,25 +124,38 @@ private void loadServiceToPortMap() {
118
124
}
119
125
}
120
126
127
+ private Map <String , String > getDefaultEnvironmentVariables () {
128
+ Map <String , String > result = new HashMap <String , String >();
129
+ addEnvVariableIfDefined (Constants .ENV_LOCALSTACK_API_KEY , result );
130
+ return result ;
131
+ }
132
+
133
+ private void addEnvVariableIfDefined (String envVarName , Map <String , String > envVars ) {
134
+ String value = System .getenv (envVarName );
135
+ if (value != null ) {
136
+ envVars .put (envVarName , value );
137
+ }
138
+ }
139
+
121
140
// TODO: this is now obsolete, as we're using a single edge port - remove!
122
141
private void doLoadServiceToPortMap () {
123
142
String localStackPortConfig = "" ;
124
143
for (int i = 0 ; i < PYTHON_VERSIONS_FOLDERS .length ; i ++) {
125
144
String filePath = String .format (PORT_CONFIG_FILENAME , PYTHON_VERSIONS_FOLDERS [i ]);
126
145
127
146
localStackPortConfig = localStackContainer .executeCommand (Arrays .asList ("cat" , filePath ));
128
- if (localStackPortConfig .contains ("No such container" )){
147
+ if (localStackPortConfig .contains ("No such container" )) {
129
148
localStackPortConfig = "" ;
130
149
continue ;
131
- }else if (localStackPortConfig .contains ("No such file" )){
150
+ } else if (localStackPortConfig .contains ("No such file" )) {
132
151
localStackPortConfig = "" ;
133
152
continue ;
134
- }else {
153
+ } else {
135
154
break ;
136
155
}
137
156
}
138
157
139
- if (localStackPortConfig .isEmpty ()){
158
+ if (localStackPortConfig .isEmpty ()) {
140
159
throw new LocalstackDockerException ("No config file found" ,new Exception ());
141
160
}
142
161
0 commit comments