package com.sequenceiq.cloudbreak.orchestrator.swarm.builder; import java.util.ArrayList; import java.util.Collection; import java.util.List; import com.github.dockerjava.api.model.Bind; import com.github.dockerjava.api.model.Volume; import com.sequenceiq.cloudbreak.orchestrator.model.LogVolumePath; public class BindsBuilder { private List<Bind> binds; public BindsBuilder() { binds = new ArrayList<>(); } public BindsBuilder addDockerSocket() { return add("/var/run/docker.sock"); } public BindsBuilder addDockerSocket(String containerPath) { return add("/var/run/docker.sock", containerPath); } public BindsBuilder addLog(LogVolumePath logVolumePath) { return add(logVolumePath.getHostPath(), logVolumePath.getContainerPath()); } public BindsBuilder addLog(LogVolumePath logVolumePath, String... subdirs) { for (String subdir : subdirs) { add(logVolumePath.getHostPath() + "/" + subdir, logVolumePath.getContainerPath() + "/" + subdir); } return this; } public BindsBuilder add(String... paths) { for (String path : paths) { add(path); } return this; } public BindsBuilder add(Collection<String> paths) { for (String path : paths) { add(path); } return this; } public BindsBuilder add(String path) { return add(path, path); } public BindsBuilder add(String hostPath, String containerPath) { Bind bind = new Bind(hostPath, new Volume(containerPath)); binds.add(bind); return this; } public Bind[] build() { return binds.toArray(new Bind[binds.size()]); } }