Change config ordinals and simpler keycloak.properties file

Closes #9473
This commit is contained in:
Dominik Guhr 2022-01-11 19:11:59 +01:00 committed by GitHub
parent 4436fb3a18
commit fe506bceaa
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
11 changed files with 35 additions and 43 deletions

View file

@ -97,10 +97,6 @@
<source>target/keycloak-quarkus-server/cache-ispn.xml</source> <source>target/keycloak-quarkus-server/cache-ispn.xml</source>
<outputDirectory>conf</outputDirectory> <outputDirectory>conf</outputDirectory>
</file> </file>
<file>
<source>../../quarkus/runtime/src/main/resources/META-INF/keycloak.properties</source>
<outputDirectory>conf</outputDirectory>
</file>
</files> </files>
</assembly> </assembly>

View file

@ -0,0 +1,14 @@
# Basic settings for running in production. Change accordingly before deploying the server.
# Database
#%prod.db=postgres
#%prod.db.username=keycloak
#%prod.db.password=password
#%prod.db.url=jdbc:postgresql://localhost/keycloak
# Observability
#%prod.metrics.enabled=true
# HTTP
#%prod.spi.hostname.frontend-url=https://localhost:8443
#%prod.https.certificate.file=${kc.home.dir}conf/server.crt.pem
#%prod.https.certificate.key-file=${kc.home.dir}conf/server.key.pem
#%prod.proxy=reencrypt
#%prod.hostname=myhostname

View file

@ -18,6 +18,7 @@
package org.keycloak.quarkus.runtime; package org.keycloak.quarkus.runtime;
import static org.keycloak.quarkus.runtime.configuration.Configuration.getBuildTimeProperty; import static org.keycloak.quarkus.runtime.configuration.Configuration.getBuildTimeProperty;
import static org.keycloak.quarkus.runtime.configuration.Configuration.getConfig;
import java.io.File; import java.io.File;
import java.io.FilenameFilter; import java.io.FilenameFilter;
@ -108,6 +109,13 @@ public final class Environment {
System.setProperty(ProfileManager.QUARKUS_TEST_PROFILE_PROP, profile); System.setProperty(ProfileManager.QUARKUS_TEST_PROFILE_PROP, profile);
} }
} }
public static String getCurrentOrPersistedProfile() {
String profile = getProfile();
if(profile == null) {
profile = getConfig().getRawValue(PROFILE);
}
return profile;
}
public static String getProfileOrDefault(String defaultProfile) { public static String getProfileOrDefault(String defaultProfile) {
String profile = getProfile(); String profile = getProfile();

View file

@ -17,7 +17,7 @@
package org.keycloak.quarkus.runtime.cli.command; package org.keycloak.quarkus.runtime.cli.command;
import static org.keycloak.quarkus.runtime.configuration.Configuration.getBuildTimeProperty; import static org.keycloak.quarkus.runtime.Environment.getCurrentOrPersistedProfile;
import static org.keycloak.quarkus.runtime.configuration.Configuration.getConfigValue; import static org.keycloak.quarkus.runtime.configuration.Configuration.getConfigValue;
import static org.keycloak.quarkus.runtime.configuration.Configuration.getPropertyNames; import static org.keycloak.quarkus.runtime.configuration.Configuration.getPropertyNames;
import static org.keycloak.quarkus.runtime.configuration.mappers.PropertyMappers.canonicalFormat; import static org.keycloak.quarkus.runtime.configuration.mappers.PropertyMappers.canonicalFormat;
@ -33,7 +33,6 @@ import java.util.stream.StreamSupport;
import org.keycloak.quarkus.runtime.configuration.MicroProfileConfigProvider; import org.keycloak.quarkus.runtime.configuration.MicroProfileConfigProvider;
import org.keycloak.quarkus.runtime.configuration.PersistedConfigSource; import org.keycloak.quarkus.runtime.configuration.PersistedConfigSource;
import org.keycloak.quarkus.runtime.Environment;
import io.quarkus.runtime.Quarkus; import io.quarkus.runtime.Quarkus;
import io.smallrye.config.ConfigValue; import io.smallrye.config.ConfigValue;
@ -59,7 +58,7 @@ public final class ShowConfig extends AbstractCommand implements Runnable {
if (configArgs != null) { if (configArgs != null) {
Map<String, Set<String>> properties = getPropertiesByGroup(); Map<String, Set<String>> properties = getPropertiesByGroup();
String profile = getProfile(); String profile = getCurrentOrPersistedProfile();
printRunTimeConfig(properties, profile); printRunTimeConfig(properties, profile);
@ -83,6 +82,7 @@ public final class ShowConfig extends AbstractCommand implements Runnable {
spec.commandLine().getOut().printf("Current Profile: %s%n", profile == null ? "none" : profile); spec.commandLine().getOut().printf("Current Profile: %s%n", profile == null ? "none" : profile);
spec.commandLine().getOut().println("Runtime Configuration:"); spec.commandLine().getOut().println("Runtime Configuration:");
properties.get(MicroProfileConfigProvider.NS_KEYCLOAK).stream().sorted() properties.get(MicroProfileConfigProvider.NS_KEYCLOAK).stream().sorted()
.filter(name -> { .filter(name -> {
String canonicalFormat = canonicalFormat(name); String canonicalFormat = canonicalFormat(name);
@ -115,16 +115,6 @@ public final class ShowConfig extends AbstractCommand implements Runnable {
} }
} }
private static String getProfile() {
String profile = Environment.getProfile();
if (profile == null) {
return getBuildTimeProperty("quarkus.profile").orElse(null);
}
return profile;
}
private static Map<String, Set<String>> getPropertiesByGroup() { private static Map<String, Set<String>> getPropertiesByGroup() {
Map<String, Set<String>> properties = StreamSupport Map<String, Set<String>> properties = StreamSupport
.stream(getPropertyNames().spliterator(), false) .stream(getPropertyNames().spliterator(), false)

View file

@ -62,8 +62,7 @@ public class ConfigArgsConfigSource extends PropertiesConfigSource {
} }
protected ConfigArgsConfigSource() { protected ConfigArgsConfigSource() {
// higher priority over default Quarkus config sources super(parseArgument(), "CliConfigSource", 600);
super(parseArgument(), "CliConfigSource", 500);
} }
public static void setCliArgs(String[] args) { public static void setCliArgs(String[] args) {

View file

@ -27,6 +27,10 @@ import io.smallrye.config.EnvConfigSource;
public class KcEnvConfigSource extends EnvConfigSource { public class KcEnvConfigSource extends EnvConfigSource {
public KcEnvConfigSource() {
super(buildProperties(), 500);
}
private static Map<String, String> buildProperties() { private static Map<String, String> buildProperties() {
Map<String, String> properties = new HashMap<>(); Map<String, String> properties = new HashMap<>();
@ -40,10 +44,7 @@ public class KcEnvConfigSource extends EnvConfigSource {
return properties; return properties;
} }
public KcEnvConfigSource() { @Override
super(buildProperties(), 350);
}
public String getName() { public String getName() {
return "KcEnvVarConfigSource"; return "KcEnvVarConfigSource";
} }

View file

@ -68,7 +68,7 @@ public class KeycloakPropertiesConfigSource extends AbstractLocationConfigSource
@Override @Override
public List<ConfigSource> getConfigSources(final ClassLoader classLoader) { public List<ConfigSource> getConfigSources(final ClassLoader classLoader) {
return loadConfigSources("META-INF/keycloak.properties", 240, classLoader); return loadConfigSources("META-INF/keycloak.properties", 150, classLoader);
} }
@Override @Override
@ -104,7 +104,7 @@ public class KeycloakPropertiesConfigSource extends AbstractLocationConfigSource
return Collections.emptyList(); return Collections.emptyList();
} }
return loadConfigSources(configFile.toUri().toString(), 250, classLoader); return loadConfigSources(configFile.toUri().toString(), 450, classLoader);
} }
@Override @Override

View file

@ -32,7 +32,6 @@ public class MicroProfileConfigProvider implements Config.ConfigProvider {
public static final String NS_KEYCLOAK = "kc"; public static final String NS_KEYCLOAK = "kc";
public static final String NS_KEYCLOAK_PREFIX = NS_KEYCLOAK + "."; public static final String NS_KEYCLOAK_PREFIX = NS_KEYCLOAK + ".";
public static final String NS_QUARKUS = "quarkus"; public static final String NS_QUARKUS = "quarkus";
public static final String NS_QUARKUS_PREFIX = NS_QUARKUS + ".";
private final org.eclipse.microprofile.config.Config config; private final org.eclipse.microprofile.config.Config config;

View file

@ -44,7 +44,7 @@ public final class PersistedConfigSource extends PropertiesConfigSource {
private static final PersistedConfigSource INSTANCE = new PersistedConfigSource(); private static final PersistedConfigSource INSTANCE = new PersistedConfigSource();
private PersistedConfigSource() { private PersistedConfigSource() {
super(readProperties(), "", 300); super(readProperties(), "", 200);
} }
public static PersistedConfigSource getInstance() { public static PersistedConfigSource getInstance() {

View file

@ -60,6 +60,6 @@ public class SysPropConfigSource implements ConfigSource {
@Override @Override
public int getOrdinal() { public int getOrdinal() {
return 400; return 550;
} }
} }

View file

@ -9,21 +9,6 @@ http.enabled=false
# Metrics and healthcheck are disabled by default # Metrics and healthcheck are disabled by default
metrics.enabled=false metrics.enabled=false
# Basic settings for running in production. Change accordingly before deploying the server.
# Database
#%prod.db=postgres
#%prod.db.username=keycloak
#%prod.db.password=password
#%prod.db.url=jdbc:postgresql://localhost/keycloak
# Observability
#%prod.metrics.enabled=true
# HTTP
#%prod.spi.hostname.frontend-url=https://localhost:8443
#%prod.https.certificate.file=${kc.home.dir}conf/server.crt.pem
#%prod.https.certificate.key-file=${kc.home.dir}conf/server.key.pem
#%prod.proxy=reencrypt
#%prod.hostname=myhostname
# Default, and insecure, and non-production grade configuration for the development profile # Default, and insecure, and non-production grade configuration for the development profile
%dev.http.enabled=true %dev.http.enabled=true
%dev.hostname.strict=false %dev.hostname.strict=false