Skip to content

Commit 7fc4a91

Browse files
committed
Fix: allow SpEL when recovering apps
1 parent 6fb6d9a commit 7fc4a91

3 files changed

Lines changed: 25 additions & 2 deletions

File tree

src/main/java/eu/openanalytics/containerproxy/model/runtime/Proxy.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
* Apache License for more details.
1717
*
1818
* You should have received a copy of the Apache License
19-
* along with this program. If not, see <http://www.apache.org/licenses/>
19+
* along with this program. If not, see http://www.apache.org/licenses/>
2020
*/
2121
package eu.openanalytics.containerproxy.model.runtime;
2222

src/main/java/eu/openanalytics/containerproxy/service/AppRecoveryService.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
*/
2121
package eu.openanalytics.containerproxy.service;
2222

23+
import com.spotify.docker.client.messages.ContainerInfo;
2324
import eu.openanalytics.containerproxy.backend.IContainerBackend;
2425
import eu.openanalytics.containerproxy.model.runtime.Container;
2526
import eu.openanalytics.containerproxy.model.runtime.ExistingContainerInfo;
@@ -32,6 +33,8 @@
3233
import eu.openanalytics.containerproxy.model.spec.ContainerSpec;
3334
import eu.openanalytics.containerproxy.model.spec.ProxySpec;
3435
import eu.openanalytics.containerproxy.spec.IProxySpecProvider;
36+
import eu.openanalytics.containerproxy.spec.expression.ExpressionAwareContainerSpec;
37+
import eu.openanalytics.containerproxy.spec.expression.SpecExpressionResolver;
3538
import org.apache.logging.log4j.LogManager;
3639
import org.apache.logging.log4j.Logger;
3740
import 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
}

src/main/java/eu/openanalytics/containerproxy/spec/expression/ExpressionAwareContainerSpec.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,15 @@ public ExpressionAwareContainerSpec(ContainerSpec source, Proxy proxy, SpecExpre
5454
);
5555
}
5656

57+
public ExpressionAwareContainerSpec(ContainerSpec source, Proxy proxy, SpecExpressionResolver resolver) {
58+
this.source = source;
59+
this.resolver = resolver;
60+
this.context = SpecExpressionContext.create(source,
61+
proxy,
62+
proxy.getSpec()
63+
);
64+
}
65+
5766
public String getImage() {
5867
return resolve(source.getImage());
5968
}

0 commit comments

Comments
 (0)