Repository: incubator-slider Updated Branches: refs/heads/feature/SLIDER-149_Support_a_YARN_service_registry c51f2f0ea -> bfbc67aff
SLIDER-365 slider "resolve" command to retrieve service record Project: http://git-wip-us.apache.org/repos/asf/incubator-slider/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-slider/commit/d084e9e8 Tree: http://git-wip-us.apache.org/repos/asf/incubator-slider/tree/d084e9e8 Diff: http://git-wip-us.apache.org/repos/asf/incubator-slider/diff/d084e9e8 Branch: refs/heads/feature/SLIDER-149_Support_a_YARN_service_registry Commit: d084e9e86f145655af3eafe2da76db08269db54a Parents: c51f2f0 Author: Steve Loughran <[email protected]> Authored: Mon Oct 6 13:53:49 2014 -0700 Committer: Steve Loughran <[email protected]> Committed: Mon Oct 6 13:53:49 2014 -0700 ---------------------------------------------------------------------- .../org/apache/slider/client/SliderClient.java | 56 ++++++++++-- .../common/params/ActionRegistryArgs.java | 9 +- .../slider/common/params/ActionResolveArgs.java | 92 ++++++++++++++++++++ .../apache/slider/common/params/Arguments.java | 1 + .../apache/slider/common/params/ClientArgs.java | 65 ++++++++------ .../slider/common/params/SliderActions.java | 1 + 6 files changed, 183 insertions(+), 41 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/d084e9e8/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 26e5707..a5bbccc 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 @@ -72,6 +72,7 @@ import org.apache.slider.common.params.ActionFreezeArgs; import org.apache.slider.common.params.ActionGetConfArgs; import org.apache.slider.common.params.ActionKillContainerArgs; import org.apache.slider.common.params.ActionRegistryArgs; +import org.apache.slider.common.params.ActionResolveArgs; import org.apache.slider.common.params.ActionStatusArgs; import org.apache.slider.common.params.ActionThawArgs; import org.apache.slider.common.params.Arguments; @@ -332,9 +333,11 @@ public class SliderClient extends AbstractSliderLaunchedService implements RunSe exitCode = actionThaw(clusterName, serviceArgs.getActionThawArgs()); } else if (ACTION_DESTROY.equals(action)) { exitCode = actionDestroy(clusterName); + } else if (ACTION_DIAGNOSTIC.equals(action)) { + exitCode = actionDiagnostic(serviceArgs.getActionDiagnosticArgs()); } else if (ACTION_EXISTS.equals(action)) { exitCode = actionExists(clusterName, - serviceArgs.getActionExistsArgs().live); + serviceArgs.getActionExistsArgs().live); } else if (ACTION_FLEX.equals(action)) { exitCode = actionFlex(clusterName, serviceArgs.getActionFlexArgs()); } else if (ACTION_GETCONF.equals(action)) { @@ -351,8 +354,9 @@ public class SliderClient extends AbstractSliderLaunchedService implements RunSe } else if (ACTION_LIST.equals(action)) { exitCode = actionList(clusterName); } else if (ACTION_REGISTRY.equals(action)) { - exitCode = actionRegistry( - serviceArgs.getActionRegistryArgs()); + exitCode = actionRegistry(serviceArgs.getActionRegistryArgs()); + } else if (ACTION_RESOLVE.equals(action)) { + exitCode = actionResolve(serviceArgs.getActionResolveArgs()); } else if (ACTION_STATUS.equals(action)) { exitCode = actionStatus(clusterName, serviceArgs.getActionStatusArgs()); @@ -362,8 +366,6 @@ public class SliderClient extends AbstractSliderLaunchedService implements RunSe } else if (ACTION_VERSION.equals(action)) { exitCode = actionVersion(); - } else if (ACTION_DIAGNOSTIC.equals(action)) { - exitCode = actionDiagnostic(serviceArgs.getActionDiagnosticArgs()); } else { throw new SliderException(EXIT_UNIMPLEMENTED, "Unimplemented: " + action); @@ -2387,13 +2389,51 @@ public class SliderClient extends AbstractSliderLaunchedService implements RunSe /** * Registry operation * + * @param args registry Arguments + * @return 0 for success, -1 for some issues that aren't errors, just failures + * to retrieve information (e.g. no configurations for that entry) + * @throws YarnException YARN problems + * @throws IOException Network or other problems + */ + public int actionResolve(ActionResolveArgs args) throws + YarnException, + IOException { + // as this is also a test entry point, validate + // the arguments + args.validate(); + RegistryOperations operations = getRegistryOperations(); + String serviceclassPath = args.path; + Collection<ServiceRecord> serviceRecords; + try { + if (args.list) { + actionRegistryListYarn(args); + } else { + ServiceRecord instance = lookupServiceRecord(registryArgs); + serviceRecords = new ArrayList<ServiceRecord>(1); + serviceRecords.add(instance); + } +// JDK7 + } catch (FileNotFoundException e) { + log.info("{}", e); + log.debug("{}", e, e); + return EXIT_NOT_FOUND; + } catch (PathNotFoundException e) { + log.info("{}", e); + log.debug("{}", e, e); + return EXIT_NOT_FOUND; + } + return EXIT_SUCCESS; + } + + /** + * Registry operation + * * @param registryArgs registry Arguments * @return 0 for success, -1 for some issues that aren't errors, just failures * to retrieve information (e.g. no configurations for that entry) * @throws YarnException YARN problems * @throws IOException Network or other problems */ - @VisibleForTesting public int actionRegistry(ActionRegistryArgs registryArgs) throws YarnException, IOException { @@ -2418,11 +2458,11 @@ public class SliderClient extends AbstractSliderLaunchedService implements RunSe } // JDK7 } catch (FileNotFoundException e) { - log.info("{}", e.toString()); + log.info("{}", e); log.debug("{}", e, e); return EXIT_NOT_FOUND; } catch (PathNotFoundException e) { - log.info("{}", e.toString()); + log.info("{}", e); log.debug("{}", e, e); return EXIT_NOT_FOUND; } http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/d084e9e8/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 b3d2f9c..6de9a45 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 @@ -42,16 +42,17 @@ import java.io.File; public class ActionRegistryArgs extends AbstractActionArgs { - public static final String USAGE = "Usage: " + SliderActions.ACTION_REGISTRY - + " <" + + " (" + Arguments.ARG_LIST + "|" + Arguments.ARG_LISTCONF + "|" + Arguments.ARG_LISTFILES + "|" + Arguments.ARG_GETCONF + "> " + Arguments.ARG_NAME + " <name> " + + " )" + "[" + Arguments.ARG_VERBOSE + "] " + + "[" + Arguments.ARG_OUTPUT + " <filename> ] " + "[" + Arguments.ARG_SERVICETYPE + " <servicetype> ] " + "[" + Arguments.ARG_FORMAT + " <xml|json|properties>] " ; @@ -67,7 +68,6 @@ public class ActionRegistryArgs extends AbstractActionArgs { return ACTION_REGISTRY; } - /** * Get the min #of params expected * @return the min number of params in the {@link #parameters} field @@ -89,7 +89,6 @@ public class ActionRegistryArgs extends AbstractActionArgs { description = "get configuration") public String getConf; - @Parameter(names = {ARG_LISTFILES}, description = "list files") public String listFiles; @@ -103,7 +102,7 @@ public class ActionRegistryArgs extends AbstractActionArgs { description = "Format for a response: <xml|json|properties>") public String format = ConfigFormat.XML.toString() ; - @Parameter(names = {ARG_DEST}, + @Parameter(names = {ARG_OUTPUT, ARG_OUTPUT_SHORT, ARG_DEST}, description = "Output destination") public File dest; http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/d084e9e8/slider-core/src/main/java/org/apache/slider/common/params/ActionResolveArgs.java ---------------------------------------------------------------------- diff --git a/slider-core/src/main/java/org/apache/slider/common/params/ActionResolveArgs.java b/slider-core/src/main/java/org/apache/slider/common/params/ActionResolveArgs.java new file mode 100644 index 0000000..9b6a5f1 --- /dev/null +++ b/slider-core/src/main/java/org/apache/slider/common/params/ActionResolveArgs.java @@ -0,0 +1,92 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.slider.common.params; + +import com.beust.jcommander.Parameter; +import com.beust.jcommander.Parameters; +import org.apache.slider.common.SliderKeys; +import org.apache.slider.core.exceptions.BadCommandArgumentsException; +import org.apache.slider.core.exceptions.UsageException; + +import java.io.File; + +import static org.apache.slider.common.params.SliderActions.ACTION_REGISTRY; +import static org.apache.slider.common.params.SliderActions.ACTION_RESOLVE; +import static org.apache.slider.common.params.SliderActions.DESCRIBE_ACTION_REGISTRY; + +/** + * Resolve registry entries + * + * --path {path} + * --out {destfile} + * --verbose + * --list + */ +@Parameters(commandNames = {ACTION_REGISTRY}, + commandDescription = DESCRIBE_ACTION_REGISTRY) +public class ActionResolveArgs extends AbstractActionArgs { + + public static final String USAGE = + "Usage: " + SliderActions.ACTION_RESOLVE + + " " + + Arguments.ARG_PATH + " <path> " + + "[" + Arguments.ARG_LIST + "] " + + "[" + Arguments.ARG_VERBOSE + "] " + + "[" + Arguments.ARG_OUTPUT + " <filename> ] " + ; + public ActionResolveArgs() { + } + + @Override + public String getActionName() { + return ACTION_RESOLVE; + } + + /** + * Get the min #of params expected + * @return the min number of params in the {@link #parameters} field + */ + @Override + public int getMinParams() { + return 0; + } + + @Parameter(names = {ARG_LIST}, + description = "list services") + public boolean list; + + + @Parameter(names = {ARG_PATH}, + description = "resolve a path") + public String path; + + @Parameter(names = {ARG_OUTPUT, ARG_OUTPUT_SHORT}, + description = "Output destination") + public File out; + + @Parameter(names = {ARG_VERBOSE}, + description = "verbose output") + public boolean verbose; + + @Parameter(names = {ARG_INTERNAL}, + description = "fetch internal registry entries") + public boolean internal; + + +} http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/d084e9e8/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 2b45ce8..bbd7da6 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 @@ -62,6 +62,7 @@ public interface Arguments { String ARG_OUTPUT = "--out"; String ARG_OUTPUT_SHORT = "-o"; String ARG_PACKAGE = "--package"; + String ARG_PATH = "--path"; String ARG_PROVIDER = "--provider"; String ARG_RESOURCES = "--resources"; String ARG_RES_COMP_OPT = "--rescompopt"; http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/d084e9e8/slider-core/src/main/java/org/apache/slider/common/params/ClientArgs.java ---------------------------------------------------------------------- diff --git a/slider-core/src/main/java/org/apache/slider/common/params/ClientArgs.java b/slider-core/src/main/java/org/apache/slider/common/params/ClientArgs.java index cd981b1..0fffffb 100644 --- a/slider-core/src/main/java/org/apache/slider/common/params/ClientArgs.java +++ b/slider-core/src/main/java/org/apache/slider/common/params/ClientArgs.java @@ -58,6 +58,7 @@ public class ClientArgs extends CommonArgs { new ActionKillContainerArgs(); private final ActionListArgs actionListArgs = new ActionListArgs(); private final ActionRegistryArgs actionRegistryArgs = new ActionRegistryArgs(); + private final ActionResolveArgs actionResolveArgs = new ActionResolveArgs(); private final ActionStatusArgs actionStatusArgs = new ActionStatusArgs(); private final ActionThawArgs actionThawArgs = new ActionThawArgs(); private final ActionVersionArgs actionVersionArgs = new ActionVersionArgs(); @@ -77,25 +78,26 @@ public class ClientArgs extends CommonArgs { protected void addActionArguments() { addActions( - actionAMSuicideArgs, - actionBuildArgs, - actionCreateArgs, - actionUpdateArgs, - actionDestroyArgs, - actionExistsArgs, - actionFlexArgs, - actionFreezeArgs, - actionGetConfArgs, - actionKillContainerArgs, - actionListArgs, - actionRegistryArgs, - actionStatusArgs, - actionThawArgs, - actionHelpArgs, - actionVersionArgs, - actionInstallPackageArgs, - actionDiagnosticArgs - ); + actionAMSuicideArgs, + actionBuildArgs, + actionCreateArgs, + actionUpdateArgs, + actionDestroyArgs, + actionDiagnosticArgs, + actionExistsArgs, + actionFlexArgs, + actionFreezeArgs, + actionGetConfArgs, + actionHelpArgs, + actionInstallPackageArgs, + actionKillContainerArgs, + actionListArgs, + actionRegistryArgs, + actionResolveArgs, + actionStatusArgs, + actionThawArgs, + actionVersionArgs + ); } @Override @@ -173,6 +175,10 @@ public class ClientArgs extends CommonArgs { return actionRegistryArgs; } + public ActionResolveArgs getActionResolveArgs() { + return actionResolveArgs; + } + public ActionStatusArgs getActionStatusArgs() { return actionStatusArgs; } @@ -200,12 +206,6 @@ public class ClientArgs extends CommonArgs { //its a builder, so set those actions too buildingActionArgs = actionCreateArgs; - } else if (SliderActions.ACTION_UPDATE.equals(action)) { - bindCoreAction(actionUpdateArgs); - - } else if (SliderActions.ACTION_INSTALL_PACKAGE.equals(action)) { - bindCoreAction(actionInstallPackageArgs); - }else if (SliderActions.ACTION_FREEZE.equals(action)) { bindCoreAction(actionFreezeArgs); @@ -218,6 +218,9 @@ public class ClientArgs extends CommonArgs { } else if (SliderActions.ACTION_DESTROY.equals(action)) { bindCoreAction(actionDestroyArgs); + } else if (SliderActions.ACTION_DIAGNOSTIC.equals(action)) { + bindCoreAction(actionDiagnosticArgs); + } else if (SliderActions.ACTION_EXISTS.equals(action)) { bindCoreAction(actionExistsArgs); @@ -231,6 +234,9 @@ public class ClientArgs extends CommonArgs { SliderActions.ACTION_USAGE.equals(action)) { bindCoreAction(actionHelpArgs); + } else if (SliderActions.ACTION_INSTALL_PACKAGE.equals(action)) { + bindCoreAction(actionInstallPackageArgs); + } else if (SliderActions.ACTION_KILL_CONTAINER.equals(action)) { bindCoreAction(actionKillContainerArgs); @@ -240,15 +246,18 @@ public class ClientArgs extends CommonArgs { } else if (SliderActions.ACTION_REGISTRY.equals(action)) { bindCoreAction(actionRegistryArgs); + } else if (SliderActions.ACTION_RESOLVE.equals(action)) { + bindCoreAction(actionRegistryArgs); + } else if (SliderActions.ACTION_STATUS.equals(action)) { bindCoreAction(actionStatusArgs); + } else if (SliderActions.ACTION_UPDATE.equals(action)) { + bindCoreAction(actionUpdateArgs); + } else if (SliderActions.ACTION_VERSION.equals(action)) { bindCoreAction(actionVersionArgs); - } else if (SliderActions.ACTION_DIAGNOSTIC.equals(action)) { - bindCoreAction(actionDiagnosticArgs); - } else if (action == null || action.isEmpty()) { throw new BadCommandArgumentsException(ErrorStrings.ERROR_NO_ACTION); http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/d084e9e8/slider-core/src/main/java/org/apache/slider/common/params/SliderActions.java ---------------------------------------------------------------------- diff --git a/slider-core/src/main/java/org/apache/slider/common/params/SliderActions.java b/slider-core/src/main/java/org/apache/slider/common/params/SliderActions.java index 29fd098..7400f46 100644 --- a/slider-core/src/main/java/org/apache/slider/common/params/SliderActions.java +++ b/slider-core/src/main/java/org/apache/slider/common/params/SliderActions.java @@ -40,6 +40,7 @@ public interface SliderActions { String ACTION_PREFLIGHT = "preflight"; String ACTION_RECONFIGURE = "reconfigure"; String ACTION_REGISTRY = "registry"; + String ACTION_RESOLVE = "resolve"; String ACTION_STATUS = "status"; String ACTION_THAW = "start"; String ACTION_USAGE = "usage";
