33import java .io .Closeable ;
44import java .time .Duration ;
55import java .util .HashMap ;
6+ import java .util .List ;
67import java .util .Map ;
78import java .util .Objects ;
89import java .util .Optional ;
2122import io .quarkus .deployment .builditem .CuratedApplicationShutdownBuildItem ;
2223import io .quarkus .deployment .builditem .DevServicesResultBuildItem ;
2324import io .quarkus .deployment .builditem .DevServicesResultBuildItem .RunningDevService ;
25+ import io .quarkus .deployment .builditem .DevServicesSharedNetworkBuildItem ;
2426import io .quarkus .deployment .builditem .DockerStatusBuildItem ;
2527import io .quarkus .deployment .builditem .LaunchModeBuildItem ;
2628import io .quarkus .deployment .console .ConsoleInstalledBuildItem ;
@@ -50,6 +52,7 @@ public class PulsarDevServicesProcessor {
5052 PulsarContainer .BROKER_PORT );
5153 private static final String PULSAR_CLIENT_SERVICE_URL = "pulsar.client.serviceUrl" ;
5254 private static final String PULSAR_ADMIN_SERVICE_URL = "pulsar.admin.serviceUrl" ;
55+ static final String DEV_SERVICE_PULSAR = "pulsar" ;
5356 static volatile RunningDevService devService ;
5457 static volatile PulsarDevServiceCfg cfg ;
5558 static volatile boolean first = true ;
@@ -59,12 +62,15 @@ public DevServicesResultBuildItem startPulsarDevService(
5962 DockerStatusBuildItem dockerStatusBuildItem ,
6063 LaunchModeBuildItem launchMode ,
6164 PulsarBuildTimeConfig pulsarClientBuildTimeConfig ,
65+ List <DevServicesSharedNetworkBuildItem > devServicesSharedNetworkBuildItem ,
6266 Optional <ConsoleInstalledBuildItem > consoleInstalledBuildItem ,
6367 CuratedApplicationShutdownBuildItem closeBuildItem ,
6468 LoggingSetupBuildItem loggingSetupBuildItem ,
6569 GlobalDevServicesConfig devServicesConfig ) {
6670
6771 PulsarDevServiceCfg configuration = getConfiguration (pulsarClientBuildTimeConfig );
72+ boolean useSharedNetwork = DevServicesSharedNetworkBuildItem .isSharedNetworkRequired (devServicesConfig ,
73+ devServicesSharedNetworkBuildItem );
6874
6975 if (devService != null ) {
7076 boolean shouldShutdownTheBroker = !configuration .equals (cfg );
@@ -80,7 +86,7 @@ public DevServicesResultBuildItem startPulsarDevService(
8086 loggingSetupBuildItem );
8187 try {
8288 RunningDevService newDevService = startPulsarContainer (dockerStatusBuildItem , configuration , launchMode ,
83- devServicesConfig .timeout );
89+ useSharedNetwork , devServicesConfig .timeout );
8490 if (newDevService != null ) {
8591 devService = newDevService ;
8692 Map <String , String > config = devService .getConfig ();
@@ -138,7 +144,8 @@ private void shutdownBroker() {
138144 }
139145
140146 private RunningDevService startPulsarContainer (DockerStatusBuildItem dockerStatusBuildItem , PulsarDevServiceCfg config ,
141- LaunchModeBuildItem launchMode , Optional <Duration > timeout ) {
147+ LaunchModeBuildItem launchMode ,
148+ boolean useSharedNetwork , Optional <Duration > timeout ) {
142149 if (!config .devServicesEnabled ) {
143150 // explicitly disabled
144151 log .debug ("Not starting Dev Services for Pulsar, as it has been disabled in the config." );
@@ -175,6 +182,9 @@ private RunningDevService startPulsarContainer(DockerStatusBuildItem dockerStatu
175182 container .withPort (config .fixedExposedPort );
176183 }
177184 timeout .ifPresent (container ::withStartupTimeout );
185+ if (useSharedNetwork ) {
186+ container .withSharedNetwork ();
187+ }
178188 container .start ();
179189
180190 return getRunningService (container .getContainerId (), container ::close , container .getPulsarBrokerUrl (),
0 commit comments