SLIDER-630 python path specified via slider-client.xml or app config global prop
Project: http://git-wip-us.apache.org/repos/asf/incubator-slider/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-slider/commit/e04c51b0 Tree: http://git-wip-us.apache.org/repos/asf/incubator-slider/tree/e04c51b0 Diff: http://git-wip-us.apache.org/repos/asf/incubator-slider/diff/e04c51b0 Branch: refs/heads/master Commit: e04c51b0e1539c0dd1f66ba79536a7ab68f62ab7 Parents: 71a8559 Author: Jon Maron <[email protected]> Authored: Mon Nov 10 21:38:28 2014 -0500 Committer: Jon Maron <[email protected]> Committed: Tue Nov 11 06:39:32 2014 -0500 ---------------------------------------------------------------------- .../org/apache/slider/client/SliderClient.java | 19 +++++++++++++++++-- .../apache/slider/common/SliderXmlConfKeys.java | 5 +++++ .../providers/agent/AgentProviderService.java | 6 +++++- 3 files changed, 27 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/e04c51b0/slider-core/src/main/java/org/apache/slider/client/SliderClient.java ---------------------------------------------------------------------- diff --git a/slider-core/src/main/java/org/apache/slider/client/SliderClient.java b/slider-core/src/main/java/org/apache/slider/client/SliderClient.java index 99c4746..a676fcc 100644 --- a/slider-core/src/main/java/org/apache/slider/client/SliderClient.java +++ b/slider-core/src/main/java/org/apache/slider/client/SliderClient.java @@ -68,6 +68,7 @@ import org.apache.slider.api.proto.Messages; import org.apache.slider.common.Constants; import org.apache.slider.common.SliderExitCodes; import org.apache.slider.common.SliderKeys; +import org.apache.slider.common.SliderXmlConfKeys; import org.apache.slider.common.params.AbstractActionArgs; import org.apache.slider.common.params.AbstractClusterBuildingActionArgs; import org.apache.slider.common.params.ActionDiagnosticArgs; @@ -905,6 +906,8 @@ public class SliderClient extends AbstractSliderLaunchedService implements RunSe appConf.set(AgentKeys.PACKAGE_PATH, buildInfo.packageURI); } + propagatePythonExecutable(conf, instanceDefinition); + // make any substitutions needed at this stage replaceTokens(appConf.getConfTree(), getUsername(), clustername); @@ -1213,6 +1216,7 @@ public class SliderClient extends AbstractSliderLaunchedService implements RunSe propagatePrincipals(config, instanceDefinition); // validate security data + /* // turned off until tested SecurityConfiguration securityConfiguration = @@ -1401,8 +1405,19 @@ public class SliderClient extends AbstractSliderLaunchedService implements RunSe LaunchedApplication launchedApplication = amLauncher.submitApplication(); return launchedApplication; } - - + + private void propagatePythonExecutable(Configuration config, + AggregateConf instanceDefinition) { + String pythonExec = config.get( + SliderXmlConfKeys.PYTHON_EXECUTABLE_PATH); + if (pythonExec != null) { + instanceDefinition.getAppConfOperations().getGlobalOptions().putIfUnset( + SliderXmlConfKeys.PYTHON_EXECUTABLE_PATH, + pythonExec); + } + } + + /** * Wait for the launched app to be accepted in the time * and, optionally running. http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/e04c51b0/slider-core/src/main/java/org/apache/slider/common/SliderXmlConfKeys.java ---------------------------------------------------------------------- diff --git a/slider-core/src/main/java/org/apache/slider/common/SliderXmlConfKeys.java b/slider-core/src/main/java/org/apache/slider/common/SliderXmlConfKeys.java index e7f8ce5..a967ebf 100644 --- a/slider-core/src/main/java/org/apache/slider/common/SliderXmlConfKeys.java +++ b/slider-core/src/main/java/org/apache/slider/common/SliderXmlConfKeys.java @@ -156,4 +156,9 @@ public interface SliderXmlConfKeys { */ String KEY_SLIDER_AM_DEPENDENCY_CHECKS_DISABLED = "slider.am.dependency.checks.disabled"; + + /** + * The path to the python executable utilized to launch the agent. + */ + String PYTHON_EXECUTABLE_PATH = "agent.python.exec.path"; } http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/e04c51b0/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 c86eabd..4f981c7 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 @@ -402,7 +402,11 @@ public class AgentProviderService extends AbstractProviderService implements String label = getContainerLabel(container, role); CommandLineBuilder operation = new CommandLineBuilder(); - operation.add(AgentKeys.PYTHON_EXE); + String pythonExec = instanceDefinition.getAppConfOperations() + .getGlobalOptions().getOption(SliderXmlConfKeys.PYTHON_EXECUTABLE_PATH, + AgentKeys.PYTHON_EXE); + + operation.add(pythonExec); operation.add(scriptPath); operation.add(ARG_LABEL, label);
