| /* |
| * 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 org.apache.hadoop.conf.Configuration; |
| import org.apache.hadoop.yarn.conf.YarnConfiguration; |
| import org.apache.slider.common.SliderXmlConfKeys; |
| import org.apache.slider.common.tools.SliderUtils; |
| import org.apache.slider.core.exceptions.BadCommandArgumentsException; |
| import org.apache.slider.core.exceptions.ErrorStrings; |
| import org.apache.slider.core.exceptions.SliderException; |
| |
| import java.util.Collection; |
| |
| /** |
| * Slider Client CLI Args |
| */ |
| |
| public class ClientArgs extends CommonArgs { |
| |
| /* |
| |
| All the arguments for specific actions |
| |
| */ |
| /** |
| * This is not bonded to jcommander, it is set up |
| * after the construction to point to the relevant |
| * entry |
| * |
| * KEEP IN ALPHABETICAL ORDER |
| */ |
| private AbstractClusterBuildingActionArgs buildingActionArgs; |
| private final ActionAMSuicideArgs actionAMSuicideArgs = new ActionAMSuicideArgs(); |
| private final ActionBuildArgs actionBuildArgs = new ActionBuildArgs(); |
| private final ActionCreateArgs actionCreateArgs = new ActionCreateArgs(); |
| private final ActionDestroyArgs actionDestroyArgs = new ActionDestroyArgs(); |
| private final ActionDiagnosticArgs actionDiagnosticArgs = new ActionDiagnosticArgs(); |
| private final ActionExistsArgs actionExistsArgs = new ActionExistsArgs(); |
| private final ActionFlexArgs actionFlexArgs = new ActionFlexArgs(); |
| private final ActionFreezeArgs actionFreezeArgs = new ActionFreezeArgs(); |
| private final ActionHelpArgs actionHelpArgs = new ActionHelpArgs(); |
| private final ActionInstallPackageArgs actionInstallPackageArgs = new ActionInstallPackageArgs(); |
| private final ActionInstallKeytabArgs actionInstallKeytabArgs = new ActionInstallKeytabArgs(); |
| private final ActionKillContainerArgs actionKillContainerArgs = |
| new ActionKillContainerArgs(); |
| private final ActionListArgs actionListArgs = new ActionListArgs(); |
| private final ActionLookupArgs actionLookupArgs = new ActionLookupArgs(); |
| 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 ActionUpdateArgs actionUpdateArgs = new ActionUpdateArgs(); |
| private final ActionVersionArgs actionVersionArgs = new ActionVersionArgs(); |
| |
| |
| public ClientArgs(String[] args) { |
| super(args); |
| } |
| |
| public ClientArgs(Collection args) { |
| super(args); |
| } |
| |
| @Override |
| protected void addActionArguments() { |
| |
| addActions( |
| actionAMSuicideArgs, |
| actionBuildArgs, |
| actionCreateArgs, |
| actionUpdateArgs, |
| actionDestroyArgs, |
| actionDiagnosticArgs, |
| actionExistsArgs, |
| actionFlexArgs, |
| actionFreezeArgs, |
| actionHelpArgs, |
| actionInstallPackageArgs, |
| actionInstallKeytabArgs, |
| actionKillContainerArgs, |
| actionListArgs, |
| actionLookupArgs, |
| actionRegistryArgs, |
| actionResolveArgs, |
| actionStatusArgs, |
| actionThawArgs, |
| actionVersionArgs |
| ); |
| } |
| |
| @Override |
| public void applyDefinitions(Configuration conf) throws |
| BadCommandArgumentsException { |
| super.applyDefinitions(conf); |
| //RM |
| if (getManager() != null) { |
| log.debug("Setting RM to {}", getManager()); |
| conf.set(YarnConfiguration.RM_ADDRESS, getManager()); |
| } |
| if (getBasePath() != null) { |
| log.debug("Setting basePath to {}", getBasePath()); |
| conf.set(SliderXmlConfKeys.KEY_SLIDER_BASE_PATH, |
| getBasePath().toString()); |
| } |
| } |
| |
| public ActionDiagnosticArgs getActionDiagnosticArgs() { |
| return actionDiagnosticArgs; |
| } |
| |
| public AbstractClusterBuildingActionArgs getBuildingActionArgs() { |
| return buildingActionArgs; |
| } |
| |
| public ActionAMSuicideArgs getActionAMSuicideArgs() { |
| return actionAMSuicideArgs; |
| } |
| |
| public ActionBuildArgs getActionBuildArgs() { |
| return actionBuildArgs; |
| } |
| |
| public ActionInstallPackageArgs getActionInstallPackageArgs() { |
| return actionInstallPackageArgs; } |
| |
| public ActionInstallKeytabArgs getActionInstallKeytabArgs() { |
| return actionInstallKeytabArgs; } |
| |
| public ActionUpdateArgs getActionUpdateArgs() { |
| return actionUpdateArgs; |
| } |
| |
| public ActionCreateArgs getActionCreateArgs() { |
| return actionCreateArgs; |
| } |
| |
| public ActionDestroyArgs getActionDestroyArgs() { |
| return actionDestroyArgs; |
| } |
| |
| public ActionExistsArgs getActionExistsArgs() { |
| return actionExistsArgs; |
| } |
| |
| public ActionFlexArgs getActionFlexArgs() { |
| return actionFlexArgs; |
| } |
| |
| public ActionFreezeArgs getActionFreezeArgs() { |
| return actionFreezeArgs; |
| } |
| |
| public ActionKillContainerArgs getActionKillContainerArgs() { |
| return actionKillContainerArgs; |
| } |
| |
| public ActionListArgs getActionListArgs() { |
| return actionListArgs; |
| } |
| |
| public ActionLookupArgs getActionLookupArgs() { |
| return actionLookupArgs; |
| } |
| |
| public ActionRegistryArgs getActionRegistryArgs() { |
| return actionRegistryArgs; |
| } |
| |
| public ActionResolveArgs getActionResolveArgs() { |
| return actionResolveArgs; |
| } |
| |
| public ActionStatusArgs getActionStatusArgs() { |
| return actionStatusArgs; |
| } |
| |
| public ActionThawArgs getActionThawArgs() { |
| return actionThawArgs; |
| } |
| |
| /** |
| * Look at the chosen action and bind it as the core action for the operation. |
| * In theory this could be done by introspecting on the list of actions and |
| * choosing it without the switch statement. In practise this switch, while |
| * verbose, is easier to debug. And in JDK7, much simpler. |
| * @throws SliderException bad argument or similar |
| */ |
| @Override |
| public void applyAction() throws SliderException { |
| String action = getAction(); |
| if (SliderActions.ACTION_BUILD.equals(action)) { |
| bindCoreAction(actionBuildArgs); |
| //its a builder, so set those actions too |
| buildingActionArgs = actionBuildArgs; |
| } else if (SliderActions.ACTION_CREATE.equals(action)) { |
| bindCoreAction(actionCreateArgs); |
| //its a builder, so set those actions too |
| buildingActionArgs = actionCreateArgs; |
| |
| } else if (SliderActions.ACTION_FREEZE.equals(action)) { |
| bindCoreAction(actionFreezeArgs); |
| |
| } else if (SliderActions.ACTION_THAW.equals(action)) { |
| bindCoreAction(actionThawArgs); |
| |
| } else if (SliderActions.ACTION_AM_SUICIDE.equals(action)) { |
| bindCoreAction(actionAMSuicideArgs); |
| |
| } else if (SliderActions.ACTION_DESTROY.equals(action)) { |
| bindCoreAction(actionDestroyArgs); |
| |
| } else if (SliderActions.ACTION_DIAGNOSTICS.equals(action)) { |
| bindCoreAction(actionDiagnosticArgs); |
| |
| } else if (SliderActions.ACTION_EXISTS.equals(action)) { |
| bindCoreAction(actionExistsArgs); |
| |
| } else if (SliderActions.ACTION_FLEX.equals(action)) { |
| bindCoreAction(actionFlexArgs); |
| |
| } else if (SliderActions.ACTION_HELP.equals(action)) { |
| bindCoreAction(actionHelpArgs); |
| |
| } else if (SliderActions.ACTION_INSTALL_PACKAGE.equals(action)) { |
| bindCoreAction(actionInstallPackageArgs); |
| |
| } else if (SliderActions.ACTION_INSTALL_KEYTAB.equals(action)) { |
| bindCoreAction(actionInstallKeytabArgs); |
| |
| } else if (SliderActions.ACTION_KILL_CONTAINER.equals(action)) { |
| bindCoreAction(actionKillContainerArgs); |
| |
| } else if (SliderActions.ACTION_LIST.equals(action)) { |
| bindCoreAction(actionListArgs); |
| |
| } else if (SliderActions.ACTION_LOOKUP.equals(action)) { |
| bindCoreAction(actionLookupArgs); |
| |
| } else if (SliderActions.ACTION_REGISTRY.equals(action)) { |
| bindCoreAction(actionRegistryArgs); |
| |
| } else if (SliderActions.ACTION_RESOLVE.equals(action)) { |
| bindCoreAction(actionResolveArgs); |
| |
| } 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 (SliderUtils.isUnset(action)) { |
| bindCoreAction(actionHelpArgs); |
| |
| } else { |
| throw new BadCommandArgumentsException(ErrorStrings.ERROR_UNKNOWN_ACTION |
| + " " + action); |
| } |
| } |
| } |