Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
package eu.cloudnetservice.modules.docker.config;

import com.google.common.base.Preconditions;
import eu.cloudnetservice.driver.network.HostAndPort;
import java.util.Collection;
import java.util.HashSet;
import java.util.Set;
Expand All @@ -36,7 +37,8 @@ public record DockerConfiguration(
@Nullable String registryEmail,
@Nullable String registryPassword,
@Nullable String registryUrl,
@Nullable String user
@Nullable String user,
@Nullable HostAndPort nodeHostOverride
) {

public static @NonNull Builder builder() {
Expand Down Expand Up @@ -77,7 +79,9 @@ public static final class Builder {
private String registryEmail;
private String registryPassword;
private String registryUrl;

private String user;
private HostAndPort nodeHostOverride;

public @NonNull Builder javaImage(@NonNull DockerImage javaImage) {
this.javaImage = javaImage;
Expand Down Expand Up @@ -159,6 +163,11 @@ public static final class Builder {
return this;
}

public @NonNull Builder nodeHostOverride(@Nullable HostAndPort nodeHostOverride) {
this.nodeHostOverride = nodeHostOverride;
return this;
}

public @NonNull DockerConfiguration build() {
Preconditions.checkNotNull(this.javaImage, "Java docker image must be given");
return new DockerConfiguration(
Expand All @@ -174,7 +183,8 @@ public static final class Builder {
this.registryEmail,
this.registryPassword,
this.registryUrl,
this.user);
this.user,
this.nodeHostOverride);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,15 @@

package eu.cloudnetservice.modules.docker.config;

import eu.cloudnetservice.driver.network.HostAndPort;
import java.util.HashSet;
import java.util.Set;
import lombok.NonNull;
import org.jetbrains.annotations.Nullable;

public record TaskDockerConfig(
@Nullable DockerImage javaImage,
@Nullable HostAndPort nodeHostOverride,
@NonNull Set<String> volumes,
@NonNull Set<String> binds,
@NonNull Set<DockerPortMapping> exposedPorts
Expand All @@ -43,6 +45,7 @@ public record TaskDockerConfig(
public static class Builder {

private DockerImage javaImage;
private HostAndPort nodeHostOverride;
private Set<String> volumes = new HashSet<>();
private Set<String> binds = new HashSet<>();
private Set<DockerPortMapping> exposedPorts = new HashSet<>();
Expand All @@ -52,6 +55,11 @@ public static class Builder {
return this;
}

public @NonNull Builder nodeHostOverride(@Nullable HostAndPort nodeHostOverride) {
this.nodeHostOverride = nodeHostOverride;
return this;
}

public @NonNull Builder addVolume(@NonNull String volume) {
this.volumes.add(volume);
return this;
Expand Down Expand Up @@ -85,6 +93,7 @@ public static class Builder {
public @NonNull TaskDockerConfig build() {
return new TaskDockerConfig(
this.javaImage,
this.nodeHostOverride,
Set.copyOf(this.volumes),
Set.copyOf(this.binds),
Set.copyOf(this.exposedPorts));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
package eu.cloudnetservice.modules.docker.impl;

import eu.cloudnetservice.driver.language.I18n;
import eu.cloudnetservice.driver.network.HostAndPort;
import eu.cloudnetservice.driver.provider.ServiceTaskProvider;
import eu.cloudnetservice.driver.registry.Service;
import eu.cloudnetservice.driver.service.ServiceTask;
Expand Down Expand Up @@ -74,6 +75,31 @@ public void removeImage(
source.sendMessage(i18n.translate("command-tasks-set-property-success", "javaImage", task.name(), "null"));
}

@Command("docker task <task> nodeHostOverride <host>")
public void setNodeHostOverride(
@NonNull @Service I18n i18n,
@NonNull CommandSource source,
@Argument("task") @NonNull ServiceTask task,
@Argument(value = "host", parserName = "anyHostAndPort") @NonNull HostAndPort hostOverride
) {
this.updateTaskDockerConfig(task, (_, builder) -> builder.nodeHostOverride(hostOverride));
source.sendMessage(i18n.translate(
"command-tasks-set-property-success",
"nodeHostOverride",
task.name(),
hostOverride));
}

@Command("docker task <task> remove nodeHostOverride")
public void removeNodeHostOverride(
@NonNull @Service I18n i18n,
@NonNull CommandSource source,
@Argument("task") @NonNull ServiceTask task
) {
this.updateTaskDockerConfig(task, (_, builder) -> builder.nodeHostOverride(null));
source.sendMessage(i18n.translate("command-tasks-set-property-success", "nodeHostOverride", task.name(), "null"));
}

@Command("docker task <task> add bind <bind>")
public void addBind(
@NonNull @Service I18n i18n,
Expand Down Expand Up @@ -249,6 +275,22 @@ public void removeUser(@NonNull @Service I18n i18n, @NonNull CommandSource sourc
source.sendMessage(i18n.translate("module-docker-command-remove-success", "user"));
}

@Command("docker config nodeHostOverride <host>")
public void setNodeHostOverride(
@NonNull @Service I18n i18n,
@NonNull CommandSource source,
@Argument(value = "host", parserName = "anyHostAndPort") @NonNull HostAndPort hostOverride
) {
this.updateDockerConfig((_, builder) -> builder.nodeHostOverride(hostOverride));
source.sendMessage(i18n.translate("module-docker-command-set-success", "nodeHostOverride", hostOverride));
}

@Command("docker config remove nodeHostOverride")
public void removeNodeHostOverride(@NonNull @Service I18n i18n, @NonNull CommandSource source) {
this.updateDockerConfig((_, builder) -> builder.nodeHostOverride(null));
source.sendMessage(i18n.translate("module-docker-command-remove-success", "nodeHostOverride"));
}

@Command("docker config add bind <bind>")
public void addBind(
@NonNull @Service I18n i18n,
Expand Down Expand Up @@ -290,7 +332,11 @@ public void clearVolumes(@NonNull @Service I18n i18n, @NonNull CommandSource sou
}

@Command("docker config remove volume <volume>")
public void removeVolumes(@NonNull @Service I18n i18n, @NonNull CommandSource source, @Argument("volume") String volume) {
public void removeVolumes(
@NonNull @Service I18n i18n,
@NonNull CommandSource source,
@Argument("volume") String volume
) {
this.updateDockerConfig((config, builder) -> builder.volumes(config.volumes().stream()
.filter(entry -> !entry.equals(volume))
.collect(Collectors.toSet())));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
import eu.cloudnetservice.driver.document.property.DocProperty;
import eu.cloudnetservice.driver.event.EventManager;
import eu.cloudnetservice.driver.language.I18n;
import eu.cloudnetservice.driver.network.HostAndPort;
import eu.cloudnetservice.driver.provider.ServiceTaskProvider;
import eu.cloudnetservice.driver.registry.Service;
import eu.cloudnetservice.driver.service.ServiceConfiguration;
Expand Down Expand Up @@ -320,6 +321,16 @@ public void doDelete() {
}
}

@Override
protected @NonNull HostAndPort selectConnectListener(@NonNull List<HostAndPort> listeners) {
var taskConfig = this.resolveTaskDockerConfig();
var overriddenNodeHostFromTask = this.readFromTaskConfig(taskConfig, TaskDockerConfig::nodeHostOverride);
var nodeHostOverride = overriddenNodeHostFromTask != null
? overriddenNodeHostFromTask
: this.configuration.nodeHostOverride();
return Objects.requireNonNullElseGet(nodeHostOverride, () -> super.selectConnectListener(listeners));
}

protected @NonNull Bind[] collectBinds(@NonNull Path wrapperFilePath, @Nullable TaskDockerConfig config) {
Set<Bind> binds = new HashSet<>();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ public void loadConfiguration() {
null,
null,
null,
null,
null),
DocumentFactory.json());
}
Expand Down
Loading