package org.arquillian.cube.docker.impl.client;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.arquillian.cube.docker.impl.client.config.CubeContainer;
import org.arquillian.cube.docker.impl.client.config.DockerCompositions;
import org.arquillian.cube.docker.impl.util.AutoStartOrderUtil;
import org.arquillian.cube.spi.AutoStartParser;
import org.arquillian.cube.spi.Node;
public class AutomaticResolutionLinksAutoStartParser implements AutoStartParser {
private List<String> deployableContainers;
private DockerCompositions containerDefinition;
public AutomaticResolutionLinksAutoStartParser(List<String> deployableContainers,
DockerCompositions containerDefinitions) {
this.deployableContainers = deployableContainers;
this.containerDefinition = containerDefinitions;
}
@Override
public Map<String, Node> parse() {
Map<String, Node> nodes = new HashMap<>();
for (String deployableContainer : this.deployableContainers) {
CubeContainer content = containerDefinition.get(deployableContainer);
if (content == null) {
return nodes;
}
Collection<String> dependencies = content.getDependingContainers();
for (String name : dependencies) {
if (containerDefinition.get(name) != null) {
Node child = Node.from(name);
nodes.put(name, child);
}
}
}
return nodes;
}
@Override
public String toString() {
return AutoStartOrderUtil.toString(parse());
}
}