Skip to content

Commit 5b76000

Browse files
author
Auri Munoz
committed
Refactor for avoiding using runtime config in processor.
Use default host
1 parent 0b55bbe commit 5b76000

File tree

7 files changed

+71
-150
lines changed

7 files changed

+71
-150
lines changed

extensions/smallrye-stork/deployment/src/main/java/io/quarkus/stork/deployment/SmallRyeStorkProcessor.java

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,12 @@
1919
import io.quarkus.deployment.annotations.ExecutionTime;
2020
import io.quarkus.deployment.annotations.Produce;
2121
import io.quarkus.deployment.annotations.Record;
22-
import io.quarkus.deployment.builditem.CombinedIndexBuildItem;
23-
import io.quarkus.deployment.builditem.RunTimeConfigurationDefaultBuildItem;
2422
import io.quarkus.deployment.builditem.RuntimeConfigSetupCompleteBuildItem;
2523
import io.quarkus.deployment.builditem.ShutdownContextBuildItem;
2624
import io.quarkus.deployment.builditem.nativeimage.ServiceProviderBuildItem;
2725
import io.quarkus.stork.SmallRyeStorkRecorder;
2826
import io.quarkus.stork.SmallRyeStorkRegistrationRecorder;
2927
import io.quarkus.stork.StorkConfigProvider;
30-
import io.quarkus.stork.StorkConfiguration;
3128
import io.quarkus.stork.StorkRegistrarConfigRecorder;
3229
import io.quarkus.vertx.deployment.VertxBuildItem;
3330
import io.smallrye.stork.spi.LoadBalancerProvider;
@@ -107,15 +104,13 @@ void initializeStork(SmallRyeStorkRecorder storkRecorder, ShutdownContextBuildIt
107104
@BuildStep
108105
@Record(ExecutionTime.RUNTIME_INIT)
109106
void checkStorkConsulRegistrar(BuildProducer<StorkRegistrationBuildItem> registration,
110-
BuildProducer<RunTimeConfigurationDefaultBuildItem> config,
111-
StorkRegistrarConfigRecorder registrarConfigRecorder, StorkConfiguration configuration, Capabilities capabilities,
112-
CombinedIndexBuildItem index) {
107+
StorkRegistrarConfigRecorder registrarConfigRecorder, Capabilities capabilities) {
113108
String smallryeHealthCheckDefaultPath = getDefaultHealthCheckPath(capabilities, ConfigProvider.getConfig());
114109
if (QuarkusClassLoader.isClassPresentAtRuntime(CONSUL_SERVICE_REGISTRAR_PROVIDER)) {
115-
registrarConfigRecorder.setupServiceRegistrarConfig(configuration, CONSUL_SERVICE_REGISTRAR_TYPE,
110+
registrarConfigRecorder.setupServiceRegistrarConfig(CONSUL_SERVICE_REGISTRAR_TYPE,
116111
smallryeHealthCheckDefaultPath);
117112
} else if (QuarkusClassLoader.isClassPresentAtRuntime(EUREKA_SERVICE_REGISTRAR_PROVIDER)) {
118-
registrarConfigRecorder.setupServiceRegistrarConfig(configuration, EUREKA_SERVICE_REGISTRAR_TYPE,
113+
registrarConfigRecorder.setupServiceRegistrarConfig(EUREKA_SERVICE_REGISTRAR_TYPE,
119114
smallryeHealthCheckDefaultPath);
120115
}
121116
registration.produce(new StorkRegistrationBuildItem());
@@ -136,10 +131,10 @@ private static String getDefaultHealthCheckPath(Capabilities capabilities, Confi
136131
@BuildStep
137132
@Record(ExecutionTime.RUNTIME_INIT)
138133
void registerServiceInstance(StorkInitializedBuildItem storkInitializedBuildItem, ShutdownContextBuildItem shutdown,
139-
SmallRyeStorkRegistrationRecorder registrationRecorder, StorkConfiguration configuration) {
134+
SmallRyeStorkRegistrationRecorder registrationRecorder) {
140135
if (QuarkusClassLoader.isClassPresentAtRuntime(SERVICE_REGISTRAR_PROVIDER)) {
141-
registrationRecorder.registerServiceInstance(configuration);
142-
registrationRecorder.deregisterServiceInstance(shutdown, configuration);
136+
registrationRecorder.registerServiceInstance();
137+
registrationRecorder.deregisterServiceInstance(shutdown);
143138
}
144139
}
145140

extensions/smallrye-stork/runtime/pom.xml

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,10 +53,6 @@
5353
<groupId>org.assertj</groupId>
5454
<artifactId>assertj-core</artifactId>
5555
</dependency>
56-
<dependency>
57-
<groupId>org.assertj</groupId>
58-
<artifactId>assertj-core</artifactId>
59-
</dependency>
6056
</dependencies>
6157

6258
<build>

extensions/smallrye-stork/runtime/src/main/java/io/quarkus/stork/SmallRyeStorkRegistrationRecorder.java

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import org.eclipse.microprofile.config.Config;
88
import org.eclipse.microprofile.config.ConfigProvider;
99

10+
import io.quarkus.runtime.RuntimeValue;
1011
import io.quarkus.runtime.ShutdownContext;
1112
import io.quarkus.runtime.annotations.Recorder;
1213
import io.smallrye.stork.Stork;
@@ -15,15 +16,22 @@
1516
@Recorder
1617
public class SmallRyeStorkRegistrationRecorder {
1718

18-
private static final Logger LOGGER = Logger.getLogger(StorkRegistrarConfigRecorder.class.getName());
19+
private static final Logger LOGGER = Logger.getLogger(SmallRyeStorkRegistrationRecorder.class.getName());
1920

20-
public void registerServiceInstance(StorkConfiguration configuration) {
21-
List<ServiceConfig> serviceConfigs = StorkConfigUtil.toStorkServiceConfig(configuration);
21+
private final RuntimeValue<StorkConfiguration> runtimeConfig;
22+
23+
public SmallRyeStorkRegistrationRecorder(final RuntimeValue<StorkConfiguration> runtimeConfig) {
24+
this.runtimeConfig = runtimeConfig;
25+
}
26+
27+
public void registerServiceInstance() {
28+
List<ServiceConfig> serviceConfigs = StorkConfigUtil.toStorkServiceConfig(runtimeConfig.getValue());
2229
Config quarkusConfig = ConfigProvider.getConfig();
2330
for (ServiceConfig serviceConfig : serviceConfigs) {
2431
String serviceName = serviceConfig.serviceName();
25-
if (configuration.serviceConfiguration().get(serviceName).serviceRegistrar().isPresent()) {
26-
StorkServiceRegistrarConfiguration storkServiceRegistrarConfiguration = configuration.serviceConfiguration()
32+
if (runtimeConfig.getValue().serviceConfiguration().get(serviceName).serviceRegistrar().isPresent()) {
33+
StorkServiceRegistrarConfiguration storkServiceRegistrarConfiguration = runtimeConfig.getValue()
34+
.serviceConfiguration()
2735
.get(serviceName).serviceRegistrar().get();
2836
if (!storkServiceRegistrarConfiguration.enabled()) {
2937
LOGGER.info("Service registering disabled for '" + serviceName + "'.");
@@ -39,11 +47,11 @@ public void registerServiceInstance(StorkConfiguration configuration) {
3947
}
4048
}
4149

42-
public void deregisterServiceInstance(ShutdownContext shutdown, StorkConfiguration configuration) {
50+
public void deregisterServiceInstance(ShutdownContext shutdown) {
4351
shutdown.addLastShutdownTask(new Runnable() {
4452
@Override
4553
public void run() {
46-
deregisterServiceInstance(configuration);
54+
deregisterServiceInstance(runtimeConfig.getValue());
4755
}
4856
});
4957
}

extensions/smallrye-stork/runtime/src/main/java/io/quarkus/stork/StorkConfigUtil.java

Lines changed: 15 additions & 100 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,17 @@
1818
import org.eclipse.microprofile.config.ConfigProvider;
1919
import org.jboss.logging.Logger;
2020

21+
import io.quarkus.runtime.LaunchMode;
2122
import io.smallrye.stork.api.config.ServiceConfig;
2223
import io.smallrye.stork.spi.config.SimpleServiceConfig;
2324

2425
public class StorkConfigUtil {
2526

2627
private static final Logger LOGGER = Logger.getLogger(StorkConfigUtil.class.getName());
27-
public static final String HTTPS = "https://";
28-
public static final String QUARKUS_HTTP_HOST = "quarkus.http.host";
28+
private static final String HTTPS = "https://";
29+
private static final String QUARKUS_HTTP_HOST = "quarkus.http.host";
30+
private static final String LOCALHOST = "localhost";
31+
private static final String ALL_INTERFACES = "0.0.0.0";
2932

3033
public static List<ServiceConfig> toStorkServiceConfig(StorkConfiguration storkConfiguration) {
3134
List<ServiceConfig> storkServicesConfigs = new ArrayList<>();
@@ -122,114 +125,26 @@ public Map<String, String> parameters() {
122125
public static String getOrDefaultHost(Map<String, String> parameters, Config quarkusConfig) {
123126
String customHost = parameters.containsKey("ip-address") ? parameters.get("ip-address")
124127
: null;
125-
String defaultHost = quarkusConfig.getValue(QUARKUS_HTTP_HOST, String.class);
128+
String defaultHost;
129+
if (LaunchMode.current().isDevOrTest()) {
130+
defaultHost = LOCALHOST;
131+
} else {
132+
defaultHost = ALL_INTERFACES;
133+
}
134+
String host = quarkusConfig.getOptionalValue(QUARKUS_HTTP_HOST, String.class).orElse(defaultHost);
126135
if (customHost == null || customHost.isEmpty()) {
127136
InetAddress inetAddress = StorkConfigUtil.detectAddress();
128-
customHost = inetAddress != null ? inetAddress.getHostAddress() : defaultHost;
137+
customHost = inetAddress != null ? inetAddress.getHostAddress() : host;
129138
}
130139
return customHost;
131140
}
132141

133142
public static int getOrDefaultPort(Map<String, String> parameters, Config quarkusConfig) {
134-
String customPort = parameters.getOrDefault("port", quarkusConfig.getValue("quarkus.http.port", String.class));
143+
String customPort = parameters.getOrDefault("port",
144+
quarkusConfig.getOptionalValue("quarkus.http.port", String.class).orElse("8080"));
135145
return Integer.parseInt(customPort);
136146
}
137147

138-
// public static InetAddress detectAddress() {
139-
// InetAddress result = null;
140-
// try {
141-
// int lowest = Integer.MAX_VALUE;
142-
// Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces();
143-
// while (networkInterfaces.hasMoreElements()) {
144-
// NetworkInterface networkInterface = networkInterfaces.nextElement();
145-
// if (networkInterface.isUp()) {
146-
// LOGGER.debug("Testing interface: {}" + networkInterface.getDisplayName());
147-
// if (networkInterface.getIndex() < lowest || result == null) {
148-
// lowest = networkInterface.getIndex();
149-
// } else if (result != null) {
150-
// continue;
151-
// }
152-
// }
153-
// }
154-
// } catch (IOException ex) {
155-
// LOGGER.error("Unable to get first non-loopback address", ex);
156-
// }
157-
// try {
158-
// return InetAddress.getLocalHost();
159-
// } catch (UnknownHostException e) {
160-
// LOGGER.error("Unable to detect address", e);
161-
// }
162-
//
163-
// return null;
164-
// }
165-
166-
// public static InetAddress detectAddress() {
167-
// try {
168-
// Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
169-
// while (interfaces.hasMoreElements()) {
170-
// NetworkInterface iface = interfaces.nextElement();
171-
// if (!iface.isUp() || iface.isLoopback())
172-
// continue;
173-
//
174-
// Enumeration<InetAddress> addresses = iface.getInetAddresses();
175-
// while (addresses.hasMoreElements()) {
176-
// InetAddress addr = addresses.nextElement();
177-
// if (!addr.isLoopbackAddress() && addr instanceof Inet4Address) {
178-
// return addr;
179-
// }
180-
// }
181-
// }
182-
// } catch (IOException e) {
183-
// LOGGER.error("Failed to detect IP address", e);
184-
// }
185-
//
186-
// try {
187-
// return InetAddress.getLocalHost();
188-
// } catch (UnknownHostException e) {
189-
// LOGGER.error("Fallback to localhost failed", e);
190-
// return null;
191-
// }
192-
// }
193-
//
194-
// public static InetAddress detectAddress() {
195-
// try {
196-
// Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
197-
// return findFirstValidAddress(interfaces);
198-
// } catch (IOException e) {
199-
// LOGGER.error("Failed to detect IP address", e);
200-
// }
201-
//
202-
// try {
203-
// return InetAddress.getLocalHost();
204-
// } catch (UnknownHostException e) {
205-
// LOGGER.error("Fallback to localhost failed", e);
206-
// return null;
207-
// }
208-
// }
209-
210-
// static InetAddress findFirstValidAddress(Enumeration<NetworkInterface> interfaces) {
211-
// try {
212-
// while (interfaces.hasMoreElements()) {
213-
// NetworkInterface iface = interfaces.nextElement();
214-
// if (!iface.isUp() || iface.isLoopback()) {
215-
// continue;
216-
// }
217-
//
218-
// Enumeration<InetAddress> addresses = iface.getInetAddresses();
219-
// while (addresses.hasMoreElements()) {
220-
// InetAddress addr = addresses.nextElement();
221-
// if (!addr.isLoopbackAddress() && addr instanceof Inet4Address) {
222-
// return addr;
223-
// }
224-
// }
225-
// }
226-
// } catch (IOException e) {
227-
// LOGGER.error("Error processing network interfaces", e);
228-
// }
229-
//
230-
// return null;
231-
// }
232-
233148
public static InetAddress detectAddress() {
234149
try {
235150
Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();

extensions/smallrye-stork/runtime/src/main/java/io/quarkus/stork/StorkRegistrarConfigRecorder.java

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import org.eclipse.microprofile.config.Config;
77
import org.eclipse.microprofile.config.ConfigProvider;
88

9+
import io.quarkus.runtime.RuntimeValue;
910
import io.quarkus.runtime.annotations.Recorder;
1011
import io.smallrye.stork.api.config.ServiceConfig;
1112

@@ -14,19 +15,25 @@ public class StorkRegistrarConfigRecorder {
1415

1516
private static final Logger LOGGER = Logger.getLogger(StorkRegistrarConfigRecorder.class.getName());
1617

17-
public void setupServiceRegistrarConfig(StorkConfiguration config, String serviceRegistrarType, String healthCheckUrl) {
18+
private final RuntimeValue<StorkConfiguration> runtimeConfig;
19+
20+
public StorkRegistrarConfigRecorder(final RuntimeValue<StorkConfiguration> runtimeConfig) {
21+
this.runtimeConfig = runtimeConfig;
22+
}
23+
24+
public void setupServiceRegistrarConfig(String serviceRegistrarType, String healthCheckUrl) {
1825
Config quarkusConfig = ConfigProvider.getConfig();
19-
List<ServiceConfig> serviceConfigs = StorkConfigUtil.toStorkServiceConfig(config);
26+
List<ServiceConfig> serviceConfigs = StorkConfigUtil.toStorkServiceConfig(runtimeConfig.getValue());
2027
List<ServiceConfig> registrationConfigs = serviceConfigs.stream()
2128
.filter(serviceConfig -> serviceConfig.serviceRegistrar() != null).toList();
2229
String serviceName = quarkusConfig.getOptionalValue("quarkus.application.name", String.class)
2330
.orElse("auri-application");
2431
if (registrationConfigs.isEmpty()) {
25-
config.serviceConfiguration().put(serviceName,
32+
runtimeConfig.getValue().serviceConfiguration().put(serviceName,
2633
StorkConfigUtil.buildDefaultRegistrarConfiguration(serviceRegistrarType, healthCheckUrl));
2734
} else if (registrationConfigs.size() == 1) {
2835
serviceName = registrationConfigs.get(0).serviceName();
29-
config.serviceConfiguration().computeIfPresent(serviceName,
36+
runtimeConfig.getValue().serviceConfiguration().computeIfPresent(serviceName,
3037
(k, serviceConfiguration) -> StorkConfigUtil.addRegistrarTypeIfAbsent(serviceRegistrarType,
3138
serviceConfiguration, healthCheckUrl));
3239
} else {

0 commit comments

Comments
 (0)