2020 */
2121package eu .openanalytics .containerproxy .service ;
2222
23+ import com .spotify .docker .client .messages .ContainerInfo ;
2324import eu .openanalytics .containerproxy .backend .IContainerBackend ;
2425import eu .openanalytics .containerproxy .model .runtime .Container ;
2526import eu .openanalytics .containerproxy .model .runtime .ExistingContainerInfo ;
3233import eu .openanalytics .containerproxy .model .spec .ContainerSpec ;
3334import eu .openanalytics .containerproxy .model .spec .ProxySpec ;
3435import eu .openanalytics .containerproxy .spec .IProxySpecProvider ;
36+ import eu .openanalytics .containerproxy .spec .expression .ExpressionAwareContainerSpec ;
37+ import eu .openanalytics .containerproxy .spec .expression .SpecExpressionResolver ;
3538import org .apache .logging .log4j .LogManager ;
3639import org .apache .logging .log4j .Logger ;
3740import org .springframework .boot .context .event .ApplicationReadyEvent ;
@@ -70,6 +73,9 @@ public class AppRecoveryService {
7073 @ Inject
7174 private HeartbeatService heartbeatService ;
7275
76+ @ Inject
77+ private SpecExpressionResolver expressionResolver ;
78+
7379 private boolean isReady = false ;
7480
7581 @ EventListener (ApplicationReadyEvent .class )
@@ -115,7 +121,7 @@ public void recoverRunningApps() throws Exception {
115121 proxy .addContainer (container );
116122 proxy .setStatus (ProxyStatus .Up );
117123
118- containerBackend . setupPortMappingExistingProxy (proxy , container , containerInfo . getPortBindings () );
124+ setupPortMapping (proxy , container , containerInfo );
119125 }
120126
121127 for (Proxy proxy : proxies .values ()) {
@@ -130,6 +136,14 @@ public void recoverRunningApps() throws Exception {
130136 isReady = true ;
131137 }
132138
139+ private void setupPortMapping (Proxy proxy , Container container , ExistingContainerInfo containerInfo ) throws Exception {
140+ // interpret SpEL
141+ ExpressionAwareContainerSpec eContainerSpec = new ExpressionAwareContainerSpec (container .getSpec (), proxy , expressionResolver );
142+ container .setSpec (eContainerSpec );
143+ containerBackend .setupPortMappingExistingProxy (proxy , container , containerInfo .getPortBindings ());
144+ container .setSpec (eContainerSpec );
145+ }
146+
133147 public boolean isReady () {
134148 return isReady ;
135149 }
0 commit comments