Repository: incubator-slider Updated Branches: refs/heads/develop d08a61df7 -> baa79a746
SLIDER-516 registry command to take a user like "--user steve" Project: http://git-wip-us.apache.org/repos/asf/incubator-slider/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-slider/commit/baa79a74 Tree: http://git-wip-us.apache.org/repos/asf/incubator-slider/tree/baa79a74 Diff: http://git-wip-us.apache.org/repos/asf/incubator-slider/diff/baa79a74 Branch: refs/heads/develop Commit: baa79a7464e4513e6428d66a830341c09396b1e2 Parents: d08a61d Author: Steve Loughran <ste...@apache.org> Authored: Tue Oct 14 16:07:22 2014 -0700 Committer: Steve Loughran <ste...@apache.org> Committed: Tue Oct 14 16:07:22 2014 -0700 ---------------------------------------------------------------------- .../org/apache/slider/client/SliderClient.java | 9 ++++++++- .../common/params/ActionRegistryArgs.java | 6 +++++- .../apache/slider/common/params/Arguments.java | 1 + .../TestStandaloneYarnRegistryAM.groovy | 20 +++++++++++++++++++- 4 files changed, 33 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/baa79a74/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 750bfaa..2589814 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 @@ -2728,7 +2728,14 @@ public class SliderClient extends AbstractSliderLaunchedService implements RunSe private ServiceRecord lookupServiceRecord(ActionRegistryArgs registryArgs) throws SliderException, IOException { - String path = servicePath(currentUser(), registryArgs.serviceType, + String user; + if (StringUtils.isNotEmpty(registryArgs.user)) { + user = RegistryPathUtils.encodeForRegistry(registryArgs.user); + } else { + user = currentUser(); + } + + String path = servicePath(user, registryArgs.serviceType, registryArgs.name); return resolve(path); } http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/baa79a74/slider-core/src/main/java/org/apache/slider/common/params/ActionRegistryArgs.java ---------------------------------------------------------------------- diff --git a/slider-core/src/main/java/org/apache/slider/common/params/ActionRegistryArgs.java b/slider-core/src/main/java/org/apache/slider/common/params/ActionRegistryArgs.java index df40ef1..deae4eb 100644 --- a/slider-core/src/main/java/org/apache/slider/common/params/ActionRegistryArgs.java +++ b/slider-core/src/main/java/org/apache/slider/common/params/ActionRegistryArgs.java @@ -52,6 +52,7 @@ public class ActionRegistryArgs extends AbstractActionArgs { + Arguments.ARG_NAME + " <name> " + " )" + "[" + Arguments.ARG_VERBOSE + "] " + + "[" + Arguments.ARG_USER + "] " + "[" + Arguments.ARG_OUTPUT + " <filename> ] " + "[" + Arguments.ARG_SERVICETYPE + " <servicetype> ] " + "[" + Arguments.ARG_FORMAT + " <xml|json|properties>] " @@ -121,7 +122,10 @@ public class ActionRegistryArgs extends AbstractActionArgs { @Parameter(names = {ARG_INTERNAL}, description = "fetch internal registry entries") public boolean internal; - + + @Parameter(names = {ARG_USER}, + description = "the name of the user whose application is being resolved") + public String user; /** * validate health of all the different operations * @throws BadCommandArgumentsException http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/baa79a74/slider-core/src/main/java/org/apache/slider/common/params/Arguments.java ---------------------------------------------------------------------- diff --git a/slider-core/src/main/java/org/apache/slider/common/params/Arguments.java b/slider-core/src/main/java/org/apache/slider/common/params/Arguments.java index 4deebd7..1ea575e 100644 --- a/slider-core/src/main/java/org/apache/slider/common/params/Arguments.java +++ b/slider-core/src/main/java/org/apache/slider/common/params/Arguments.java @@ -75,6 +75,7 @@ public interface Arguments { String ARG_SERVICETYPE = "--servicetype"; String ARG_SYSPROP = "-S"; String ARG_TEMPLATE = "--template"; + String ARG_USER = "--user"; String ARG_VERBOSE = "--verbose"; String ARG_WAIT = "--wait"; String ARG_ZKPATH = "--zkpath"; http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/baa79a74/slider-core/src/test/groovy/org/apache/slider/agent/standalone/TestStandaloneYarnRegistryAM.groovy ---------------------------------------------------------------------- diff --git a/slider-core/src/test/groovy/org/apache/slider/agent/standalone/TestStandaloneYarnRegistryAM.groovy b/slider-core/src/test/groovy/org/apache/slider/agent/standalone/TestStandaloneYarnRegistryAM.groovy index e75cc57..78b4514 100644 --- a/slider-core/src/test/groovy/org/apache/slider/agent/standalone/TestStandaloneYarnRegistryAM.groovy +++ b/slider-core/src/test/groovy/org/apache/slider/agent/standalone/TestStandaloneYarnRegistryAM.groovy @@ -23,6 +23,7 @@ import groovy.util.logging.Slf4j import org.apache.hadoop.fs.FileUtil import org.apache.hadoop.fs.PathNotFoundException import org.apache.hadoop.registry.client.binding.RegistryPathUtils +import org.apache.hadoop.registry.client.binding.RegistryUtils import org.apache.hadoop.yarn.api.records.ApplicationReport import org.apache.hadoop.yarn.api.records.YarnApplicationState import org.apache.hadoop.yarn.conf.YarnConfiguration @@ -61,7 +62,7 @@ import static org.apache.slider.core.registry.info.CustomRegistryConstants.* /** * work with a YARN registry */ -@CompileStatic +//@CompileStatic @Slf4j class TestStandaloneYarnRegistryAM extends AgentMiniClusterTestBase { @@ -448,6 +449,7 @@ class TestStandaloneYarnRegistryAM extends AgentMiniClusterTestBase { def yarn_site_config = PublishedArtifacts.YARN_SITE_CONFIG registryArgs.getConf = yarn_site_config + registryArgs.user = currentUser() //properties format registryArgs.format = "properties" @@ -463,6 +465,7 @@ class TestStandaloneYarnRegistryAM extends AgentMiniClusterTestBase { registryArgs = new ActionRegistryArgs(clustername) registryArgs.getConf = yarn_site_config registryArgs.out = outputDir + registryArgs.user = "" describe registryArgs.toString() client.actionRegistry(registryArgs) assert new File(outputDir, yarn_site_config + ".xml").exists() @@ -477,6 +480,21 @@ class TestStandaloneYarnRegistryAM extends AgentMiniClusterTestBase { registryArgs.getConf = unknownFilename assert SliderExitCodes.EXIT_NOT_FOUND == client.actionRegistry(registryArgs) + //look for a different user + try { + def args = new ActionRegistryArgs( + name: clustername, + user: "unknown", + serviceType: SliderKeys.APP_TYPE, + listConf: true, + verbose: true + ) + client.actionRegistry(args) + fail("registry operation succeeded unexpectedly on $args") + } catch (UnknownApplicationInstanceException expected) { + // expected + } + describe "stop cluster" //now kill that cluster assert 0 == clusterActionFreeze(client, clustername)