You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@slider.apache.org by sm...@apache.org on 2015/03/16 17:48:49 UTC
[16/19] incubator-slider git commit: SLIDER-763 add app name option
to client command
SLIDER-763 add app name option to client command
Project: http://git-wip-us.apache.org/repos/asf/incubator-slider/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-slider/commit/d9b26524
Tree: http://git-wip-us.apache.org/repos/asf/incubator-slider/tree/d9b26524
Diff: http://git-wip-us.apache.org/repos/asf/incubator-slider/diff/d9b26524
Branch: refs/heads/feature/package_simplification_II
Commit: d9b265249218122b0df6b8064faef422f8e21158
Parents: dd2a70b
Author: Billie Rinaldi <bi...@gmail.com>
Authored: Fri Mar 13 09:55:14 2015 -0700
Committer: Billie Rinaldi <bi...@gmail.com>
Committed: Fri Mar 13 10:36:46 2015 -0700
----------------------------------------------------------------------
slider-assembly/src/main/scripts/slider | 4 ++-
.../org/apache/slider/client/SliderClient.java | 3 ++-
.../providers/AbstractClientProvider.java | 8 +++---
.../providers/agent/AgentClientProvider.java | 25 +++++++++++++-----
.../agent/TestAgentClientProvider2.java | 27 +++++++++++++++++---
5 files changed, 53 insertions(+), 14 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/d9b26524/slider-assembly/src/main/scripts/slider
----------------------------------------------------------------------
diff --git a/slider-assembly/src/main/scripts/slider b/slider-assembly/src/main/scripts/slider
index 97dabaf..28dc205 100755
--- a/slider-assembly/src/main/scripts/slider
+++ b/slider-assembly/src/main/scripts/slider
@@ -41,5 +41,7 @@ cmd = [pyExecPath + " " + currDir + "/slider.py"]
cmd.extend(args)
finalCmd = " ".join(cmd)
-result = subprocess.call(finalCmd, shell=True)
+env = os.environ.copy()
+env['SLIDER_HOME'] = os.path.dirname(currDir)
+result = subprocess.call(finalCmd, env=env, shell=True)
sys.exit(result)
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/d9b26524/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 df3ba95..84ed5a4 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
@@ -1067,7 +1067,8 @@ public class SliderClient extends AbstractSliderLaunchedService implements RunSe
"INSTALL",
clientInfo.installLocation,
pkgFile,
- config);
+ config,
+ clientInfo.name);
return EXIT_SUCCESS;
}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/d9b26524/slider-core/src/main/java/org/apache/slider/providers/AbstractClientProvider.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/providers/AbstractClientProvider.java b/slider-core/src/main/java/org/apache/slider/providers/AbstractClientProvider.java
index b5aafd4..1a1baf7 100644
--- a/slider-core/src/main/java/org/apache/slider/providers/AbstractClientProvider.java
+++ b/slider-core/src/main/java/org/apache/slider/providers/AbstractClientProvider.java
@@ -224,16 +224,18 @@ public abstract class AbstractClientProvider extends Configured {
* Process client operations for applications such as install, configure
* @param fileSystem
* @param operation
- * @param config
- * @param clientPackage
* @param clientInstallPath
+ * @param clientPackage
+ * @param config
+ * @param name
* @throws SliderException
*/
public void processClientOperation(SliderFileSystem fileSystem,
String operation,
File clientInstallPath,
File clientPackage,
- JSONObject config)
+ JSONObject config,
+ String name)
throws SliderException {
throw new SliderException("Provider does not support client operations.");
}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/d9b26524/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 94d4c97..9da269d 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
@@ -26,6 +26,7 @@ import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.exception.ExceptionUtils;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
+import org.apache.hadoop.registry.client.binding.RegistryUtils;
import org.apache.slider.api.InternalKeys;
import org.apache.slider.api.ResourceKeys;
import org.apache.slider.common.SliderKeys;
@@ -291,7 +292,8 @@ public class AgentClientProvider extends AbstractClientProvider
String operation,
File clientInstallPath,
File appPackage,
- JSONObject config) throws SliderException {
+ JSONObject config,
+ String name) throws SliderException {
// create temp folder
// create sub-folders app_pkg, agent_pkg, command
File tmpDir = Files.createTempDir();
@@ -365,7 +367,7 @@ public class AgentClientProvider extends AbstractClientProvider
expandAgentTar(agentPkgDir);
- JSONObject commandJson = getCommandJson(defaultConfig, config, metaInfo, clientInstallPath);
+ JSONObject commandJson = getCommandJson(defaultConfig, config, metaInfo, clientInstallPath, name);
FileWriter file = new FileWriter(new File(cmdDir, "command.json"));
try {
file.write(commandJson.toString());
@@ -502,7 +504,8 @@ public class AgentClientProvider extends AbstractClientProvider
protected JSONObject getCommandJson(JSONObject defaultConfig,
JSONObject inputConfig,
Metainfo metainfo,
- File clientInstallPath) throws SliderException {
+ File clientInstallPath,
+ String name) throws SliderException {
try {
JSONObject pkgList = new JSONObject();
pkgList.put(AgentKeys.PACKAGE_LIST,
@@ -510,15 +513,20 @@ public class AgentClientProvider extends AbstractClientProvider
JSONObject obj = new JSONObject();
obj.put("hostLevelParams", pkgList);
+ String user = RegistryUtils.currentUser();
JSONObject configuration = new JSONObject();
JSONObject global = new JSONObject();
global.put("app_install_dir", clientInstallPath.getAbsolutePath());
+ global.put("app_user", user);
+ if (name != null) {
+ global.put("app_name", name);
+ }
if (defaultConfig != null) {
- readConfigEntries(defaultConfig, clientInstallPath, global);
+ readConfigEntries(defaultConfig, clientInstallPath, global, name, user);
}
if (inputConfig != null) {
- readConfigEntries(inputConfig, clientInstallPath, global);
+ readConfigEntries(inputConfig, clientInstallPath, global, name, user);
}
configuration.put("global", global);
@@ -532,7 +540,8 @@ public class AgentClientProvider extends AbstractClientProvider
private void readConfigEntries(JSONObject inpConfig,
File clientInstallPath,
- JSONObject globalConfig)
+ JSONObject globalConfig,
+ String name, String user)
throws JSONException {
JSONObject globalSection = inpConfig.getJSONObject("global");
Iterator it = globalSection.keys();
@@ -541,6 +550,10 @@ public class AgentClientProvider extends AbstractClientProvider
String value = globalSection.getString(key);
if (SliderUtils.isSet(value)) {
value = value.replace("{app_install_dir}", clientInstallPath.getAbsolutePath());
+ value = value.replace("{app_user}", user);
+ if (name != null) {
+ value = value.replace("{app_name}", name);
+ }
}
if (globalConfig.has(key)) {
// last one wins
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/d9b26524/slider-core/src/test/java/org/apache/slider/providers/agent/TestAgentClientProvider2.java
----------------------------------------------------------------------
diff --git a/slider-core/src/test/java/org/apache/slider/providers/agent/TestAgentClientProvider2.java b/slider-core/src/test/java/org/apache/slider/providers/agent/TestAgentClientProvider2.java
index 6f637d8..3bc7ce2 100644
--- a/slider-core/src/test/java/org/apache/slider/providers/agent/TestAgentClientProvider2.java
+++ b/slider-core/src/test/java/org/apache/slider/providers/agent/TestAgentClientProvider2.java
@@ -20,6 +20,7 @@ import org.apache.commons.io.IOUtils;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
+import org.apache.hadoop.registry.client.binding.RegistryUtils;
import org.apache.log4j.BasicConfigurator;
import org.apache.slider.api.InternalKeys;
import org.apache.slider.client.SliderClient;
@@ -60,7 +61,7 @@ import static org.easymock.EasyMock.expect;
*
*/
@RunWith(PowerMockRunner.class)
-@PrepareForTest({ProviderUtils.class, ProcessBuilder.class, AgentClientProvider.class})
+@PrepareForTest({ProviderUtils.class, ProcessBuilder.class, AgentClientProvider.class, RegistryUtils.class})
public class TestAgentClientProvider2 {
protected static final Logger log =
LoggerFactory.getLogger(TestAgentClientProvider2.class);
@@ -119,6 +120,7 @@ public class TestAgentClientProvider2 {
JSONObject global = new JSONObject();
global.put("a", "b");
global.put("d", "{app_install_dir}/d");
+ global.put("e", "{app_name}");
inputConfig.put("global", global);
Metainfo metainfo = new Metainfo();
@@ -133,29 +135,42 @@ public class TestAgentClientProvider2 {
pkg.setType("tarball");
File clientInstallPath = new File("/tmp/file1");
+ String appName = "name";
+ String user = "username";
+
+ PowerMock.mockStaticPartial(RegistryUtils.class, "currentUser");
+ expect(RegistryUtils.currentUser()).andReturn(user).times(2);
+ PowerMock.replay(RegistryUtils.class);
JSONObject output = provider.getCommandJson(defaultConfig,
inputConfig,
metainfo,
- clientInstallPath);
+ clientInstallPath,
+ appName);
JSONObject outConfigs = output.getJSONObject("configurations");
Assert.assertNotNull(outConfigs);
JSONObject outGlobal = outConfigs.getJSONObject("global");
Assert.assertNotNull(outGlobal);
Assert.assertEquals("b", outGlobal.getString("a"));
Assert.assertEquals("/tmp/file1/d", outGlobal.getString("d"));
+ Assert.assertEquals("/tmp/file1", outGlobal.getString("app_install_dir"));
+ Assert.assertEquals("name", outGlobal.getString("e"));
+ Assert.assertEquals("name", outGlobal.getString("app_name"));
+ Assert.assertEquals(user, outGlobal.getString("app_user"));
defaultConfig = new JSONObject();
global = new JSONObject();
global.put("a1", "b2");
global.put("a", "b-not");
global.put("d1", "{app_install_dir}/d");
+ global.put("e", "{app_name}");
defaultConfig.put("global", global);
output = provider.getCommandJson(defaultConfig,
inputConfig,
metainfo,
- clientInstallPath);
+ clientInstallPath,
+ null);
outConfigs = output.getJSONObject("configurations");
Assert.assertNotNull(outConfigs);
outGlobal = outConfigs.getJSONObject("global");
@@ -164,6 +179,12 @@ public class TestAgentClientProvider2 {
Assert.assertEquals("/tmp/file1/d", outGlobal.getString("d"));
Assert.assertEquals("b2", outGlobal.getString("a1"));
Assert.assertEquals("/tmp/file1/d", outGlobal.getString("d1"));
+ Assert.assertEquals("/tmp/file1", outGlobal.getString("app_install_dir"));
+ Assert.assertEquals("{app_name}", outGlobal.getString("e"));
+ Assert.assertFalse(outGlobal.has("app_name"));
+ Assert.assertEquals(user, outGlobal.getString("app_user"));
+
+ PowerMock.verify(RegistryUtils.class);
}