Skip to content
Merged
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 @@ -6,6 +6,7 @@
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors;
Expand All @@ -32,6 +33,7 @@
import io.quarkus.deployment.builditem.DevServicesComposeProjectBuildItem;
import io.quarkus.deployment.builditem.DevServicesResultBuildItem;
import io.quarkus.deployment.builditem.DevServicesResultBuildItem.RunningDevService;
import io.quarkus.deployment.builditem.DevServicesSharedNetworkBuildItem;
import io.quarkus.deployment.builditem.DockerStatusBuildItem;
import io.quarkus.deployment.builditem.LaunchModeBuildItem;
import io.quarkus.deployment.console.ConsoleInstalledBuildItem;
Expand All @@ -41,6 +43,7 @@
import io.quarkus.deployment.pkg.builditem.CurateOutcomeBuildItem;
import io.quarkus.runtime.LaunchMode;
import io.quarkus.runtime.configuration.ConfigUtils;
import io.quarkus.runtime.configuration.ConfigurationException;

@BuildSteps(onlyIf = { IsDevServicesSupportedByLaunchMode.class, DevServicesConfig.Enabled.class })
public class DevServicesDatasourceProcessor {
Expand All @@ -62,6 +65,7 @@ DevServicesDatasourceResultBuildItem launchDatabases(
DevServicesComposeProjectBuildItem composeProjectBuildItem,
List<DefaultDataSourceDbKindBuildItem> installedDrivers,
List<DevServicesDatasourceProviderBuildItem> devDBProviders,
List<DevServicesSharedNetworkBuildItem> devServicesSharedNetworkBuildItem,
DataSourcesBuildTimeConfig dataSourcesBuildTimeConfig,
LaunchModeBuildItem launchMode,
List<DevServicesDatasourceConfigurationHandlerBuildItem> configurationHandlerBuildItems,
Expand All @@ -70,6 +74,10 @@ DevServicesDatasourceResultBuildItem launchDatabases(
CuratedApplicationShutdownBuildItem closeBuildItem,
LoggingSetupBuildItem loggingSetupBuildItem,
DevServicesConfig devServicesConfig) {

boolean useSharedNetwork = DevServicesSharedNetworkBuildItem.isSharedNetworkRequired(devServicesConfig,
devServicesSharedNetworkBuildItem);

//figure out if we need to shut down and restart existing databases
//if not and the DB's have already started we just return
if (databases != null) {
Expand Down Expand Up @@ -136,7 +144,7 @@ DevServicesDatasourceResultBuildItem launchDatabases(
devDBProviderMap, entry.getValue(), configHandlersByDbType, propertiesMap,
dockerStatusBuildItem, composeProjectBuildItem,
launchMode.getLaunchMode(), consoleInstalledBuildItem, loggingSetupBuildItem,
devServicesConfig);
devServicesConfig, useSharedNetwork);
if (devService != null) {
runningDevServices.add(devService);
results.put(entry.getKey(), toDbResult(devService));
Expand Down Expand Up @@ -218,7 +226,8 @@ private RunningDevService startDevDb(
DockerStatusBuildItem dockerStatusBuildItem,
DevServicesComposeProjectBuildItem composeProjectBuildItem,
LaunchMode launchMode, Optional<ConsoleInstalledBuildItem> consoleInstalledBuildItem,
LoggingSetupBuildItem loggingSetupBuildItem, DevServicesConfig devServicesConfig) {
LoggingSetupBuildItem loggingSetupBuildItem, DevServicesConfig devServicesConfig, boolean useSharedNetwork) {

String dataSourcePrettyName = DataSourceUtil.isDefault(dbName) ? "default datasource" : "datasource " + dbName;

if (!ConfigUtils.getFirstOptionalValue(
Expand All @@ -235,6 +244,13 @@ private RunningDevService startDevDb(
return null;
}

if (useSharedNetwork && dataSourceBuildTimeConfig.devservices().port().isPresent()) {
throw new ConfigurationException(String.format(Locale.ROOT,
"Cannot set a port for the Dev Service of datasource '%s' using '%s', because it is using a shared network, which disables port mapping",
DataSourceUtil.dataSourcePropertyKey(dbName, "devservices.port"),
dataSourcePrettyName));
}

Boolean enabled = dataSourceBuildTimeConfig.devservices().enabled().orElse(!hasNamedDatasources);

Optional<String> defaultDbKind = DefaultDataSourceDbKindBuildItem.resolve(
Expand Down
Loading