I used to think that the hard-coded default value of
ranger-admin-default-site.xml was stored in Ranger-admin-site.xml,
until today, I found that setup.sh could even modify
Ranger-admin-default-site.xml.
In java code, the 2 are always used together except we explicit pass an
alternative of ranger-admin-site.xml by command-line
args of EmbeddedServer::main.
How to decide which of these two files a new option/parameter should be placed
in?
In RangerAdminConfig.java
private boolean addAdminResources() {
String defaultCfg = "ranger-admin-default-site.xml";
String addlCfg = "ranger-admin-site.xml";
String coreCfg = "core-site.xml";
if (!addResourceIfReadable(defaultCfg)) {}
if (!addResourceIfReadable(addlCfg)) {}
if (!addResourceIfReadable(coreCfg)){}
}
In EmbeddedServerUtil.java
private static final String CONFIG_FILE = "ranger-admin-site.xml";
private static final String CORE_SITE_CONFIG_FILENAME = "core-site.xml";
private static final String DEFAULT_CONFIG_FILENAME =
"ranger-admin-default-site.xml";
private EmbeddedServerUtil() {
loadRangerConfigProperties(CONFIG_FILE);
}
public static void loadRangerConfigProperties(String configFile) {
if (CONFIG_FILE.equalsIgnoreCase(configFile)) {
XMLUtils.loadConfig(DEFAULT_CONFIG_FILENAME,
rangerConfigProperties);
}
XMLUtils.loadConfig(CORE_SITE_CONFIG_FILENAME,
rangerConfigProperties);
XMLUtils.loadConfig(configFile, rangerConfigProperties);
}
public static Properties getRangerConfigProperties() {
if (rangerConfigProperties.isEmpty()) {
loadRangerConfigProperties(CONFIG_FILE);
}
return rangerConfigProperties;
}
In setup.sh:
propertyName=ranger.sso.publicKey
newPropertyValue="${sso_publickey}"
updatePropertyToFilePy $propertyName $newPropertyValue
$to_file_ranger
propertyName=ranger.keystore.file
newPropertyValue="${javax_net_ssl_keyStore}"
updatePropertyToFilePy $propertyName $newPropertyValue
$to_file_default