You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@slider.apache.org by bi...@apache.org on 2016/05/13 17:03:09 UTC

incubator-slider git commit: SLIDER-1107 resolve configurations before publishing and ensure only AM-generated configs are published

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 <bi...@gmail.com>
Authored: Fri May 13 10:02:51 2016 -0700
Committer: Billie Rinaldi <bi...@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());