Repository: incubator-slider Updated Branches: refs/heads/feature/SLIDER-1107_AM_config_generation 511891c15 -> 6b0ca18d4
SLIDER-1107 resolve configurations before publishing and ensure only AM-generated configs are published Project: http://git-wip-us.apache.org/repos/asf/incubator-slider/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-slider/commit/6b0ca18d Tree: http://git-wip-us.apache.org/repos/asf/incubator-slider/tree/6b0ca18d Diff: http://git-wip-us.apache.org/repos/asf/incubator-slider/diff/6b0ca18d Branch: refs/heads/feature/SLIDER-1107_AM_config_generation Commit: 6b0ca18d4f6c4d7cc531f893440be0c740d8bf15 Parents: 511891c Author: Billie Rinaldi <billie.rina...@gmail.com> Authored: Fri May 13 10:02:51 2016 -0700 Committer: Billie Rinaldi <billie.rina...@gmail.com> Committed: Fri May 13 10:02:51 2016 -0700 ---------------------------------------------------------------------- slider-agent/src/main/python/agent/ActionQueue.py | 2 +- .../apache/slider/core/conf/ConfTreeOperations.java | 14 ++++++++++++++ .../slider/providers/agent/AgentClientProvider.java | 6 +----- .../slider/providers/agent/AgentProviderService.java | 15 +++++++++++---- 4 files changed, 27 insertions(+), 10 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/6b0ca18d/slider-agent/src/main/python/agent/ActionQueue.py ---------------------------------------------------------------------- diff --git a/slider-agent/src/main/python/agent/ActionQueue.py b/slider-agent/src/main/python/agent/ActionQueue.py index 107d6c3..6b16767 100644 --- a/slider-agent/src/main/python/agent/ActionQueue.py +++ b/slider-agent/src/main/python/agent/ActionQueue.py @@ -161,7 +161,7 @@ class ActionQueue(threading.Thread): self.commandStatuses.put_command_status(command, in_progress_status, reportResult) store_config = False - if ActionQueue.STORE_APPLIED_CONFIG in command['commandParams']: + if 'commandParams' in command and ActionQueue.STORE_APPLIED_CONFIG in command['commandParams']: store_config = 'true' == command['commandParams'][ActionQueue.STORE_APPLIED_CONFIG] store_command = False if 'roleParams' in command and ActionQueue.AUTO_RESTART in command['roleParams']: http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/6b0ca18d/slider-core/src/main/java/org/apache/slider/core/conf/ConfTreeOperations.java ---------------------------------------------------------------------- diff --git a/slider-core/src/main/java/org/apache/slider/core/conf/ConfTreeOperations.java b/slider-core/src/main/java/org/apache/slider/core/conf/ConfTreeOperations.java index 7e88abd..d376c72 100644 --- a/slider-core/src/main/java/org/apache/slider/core/conf/ConfTreeOperations.java +++ b/slider-core/src/main/java/org/apache/slider/core/conf/ConfTreeOperations.java @@ -445,6 +445,20 @@ public class ConfTreeOperations { } /** + * Get a component opt as a boolean using {@link Boolean#valueOf(String)}. + * + * @param name component name + * @param option option name + * @param defVal default value + * @return parsed value + * @throws NumberFormatException if the role could not be parsed. + */ + public boolean getComponentOptBool(String name, String option, boolean defVal) { + String val = getComponentOpt(name, option, Boolean.toString(defVal)); + return Boolean.valueOf(val); + } + + /** * Set a component option, creating the component if necessary * @param component component name * @param option option name http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/6b0ca18d/slider-core/src/main/java/org/apache/slider/providers/agent/AgentClientProvider.java ---------------------------------------------------------------------- diff --git a/slider-core/src/main/java/org/apache/slider/providers/agent/AgentClientProvider.java b/slider-core/src/main/java/org/apache/slider/providers/agent/AgentClientProvider.java index 18e4702..feac6a9 100644 --- a/slider-core/src/main/java/org/apache/slider/providers/agent/AgentClientProvider.java +++ b/slider-core/src/main/java/org/apache/slider/providers/agent/AgentClientProvider.java @@ -441,11 +441,7 @@ public class AgentClientProvider extends AbstractClientProvider } } String user = RegistryUtils.currentUser(); - for (ConfigFile configFile : metaInfo.getApplication().getConfigFiles()) { - retrieveConfigFile(rops, configuration, configFile, name, user, - confInstallDir); - } - for (ConfigFile configFile : clientComponent.getConfigFiles()) { + for (ConfigFile configFile : metaInfo.getComponentConfigFiles(clientComponent.getName())) { retrieveConfigFile(rops, configuration, configFile, name, user, confInstallDir); } http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/6b0ca18d/slider-core/src/main/java/org/apache/slider/providers/agent/AgentProviderService.java ---------------------------------------------------------------------- diff --git a/slider-core/src/main/java/org/apache/slider/providers/agent/AgentProviderService.java b/slider-core/src/main/java/org/apache/slider/providers/agent/AgentProviderService.java index 155ff09..bc04220 100644 --- a/slider-core/src/main/java/org/apache/slider/providers/agent/AgentProviderService.java +++ b/slider-core/src/main/java/org/apache/slider/providers/agent/AgentProviderService.java @@ -1374,8 +1374,8 @@ public class AgentProviderService extends AbstractProviderService implements // register AM-generated client configs ConfTreeOperations appConf = instanceDefinition.getAppConfOperations(); - MapOperations clientOperations = instanceDefinition.getAppConfOperations() - .getOrAddComponent(client.getName()); + MapOperations clientOperations = appConf.getOrAddComponent(client.getName()); + appConf.resolve(); if (!clientOperations.getOptionBool(AgentKeys.AM_CONFIG_GENERATION, false)) { log.info("AM config generation is false, not publishing client configs"); @@ -1419,6 +1419,7 @@ public class AgentProviderService extends AbstractProviderService implements config.entrySet()); getAmState().getPublishedSliderConfigurations().put( configFile.getDictionaryName(), publishedConfiguration); + log.info("Publishing AM configuration {}", configFile.getDictionaryName()); } } @@ -1763,7 +1764,9 @@ public class AgentProviderService extends AbstractProviderService implements if (status.getConfigs() != null) { Application application = getMetaInfo().getApplication(); - if (canAnyMasterPublishConfig() == false || canPublishConfig(componentGroup)) { + if ((!canAnyMasterPublishConfig() || canPublishConfig(componentGroup)) && + !instanceDefinition.getAppConfOperations().getComponentOptBool( + componentGroup, AgentKeys.AM_CONFIG_GENERATION, false)) { // If no Master can explicitly publish then publish if its a master // Otherwise, wait till the master that can publish is ready @@ -1887,7 +1890,11 @@ public class AgentProviderService extends AbstractProviderService implements simpleEntries.put(entry.getKey(), entry.getValue().get(0).getValue()); } } - publishApplicationInstanceData(groupName, groupName, simpleEntries.entrySet()); + if (!instanceDefinition.getAppConfOperations().getComponentOptBool( + groupName, AgentKeys.AM_CONFIG_GENERATION, false)) { + publishApplicationInstanceData(groupName, groupName, + simpleEntries.entrySet()); + } PublishedExports exports = new PublishedExports(groupName); exports.setUpdated(new Date().getTime());