You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@slider.apache.org by te...@apache.org on 2014/07/11 22:23:31 UTC
git commit: SLIDER-223 Provide action to update Instance Definition
Repository: incubator-slider
Updated Branches:
refs/heads/develop 166d25230 -> 0b760cde0
SLIDER-223 Provide action to update Instance Definition
Project: http://git-wip-us.apache.org/repos/asf/incubator-slider/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-slider/commit/0b760cde
Tree: http://git-wip-us.apache.org/repos/asf/incubator-slider/tree/0b760cde
Diff: http://git-wip-us.apache.org/repos/asf/incubator-slider/diff/0b760cde
Branch: refs/heads/develop
Commit: 0b760cde097d546a6a5e59d4850625adb0f6bf65
Parents: 166d252
Author: tedyu <yu...@gmail.com>
Authored: Fri Jul 11 13:23:24 2014 -0700
Committer: tedyu <yu...@gmail.com>
Committed: Fri Jul 11 13:23:24 2014 -0700
----------------------------------------------------------------------
.../org/apache/slider/client/SliderClient.java | 23 ++++++++++++--
.../slider/common/params/ActionUpdateArgs.java | 32 ++++++++++++++++++++
.../apache/slider/common/params/ClientArgs.java | 9 ++++++
.../slider/common/params/SliderActions.java | 3 ++
.../slider/common/tools/CoreFileSystem.java | 1 +
.../slider/core/build/InstanceBuilder.java | 6 ++--
.../slider/client/TestCommonArgParsing.groovy | 13 ++++++++
7 files changed, 82 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/0b760cde/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 e762c1e..9deb9c3 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
@@ -217,6 +217,9 @@ public class SliderClient extends AbstractSliderLaunchedService implements RunSe
case ACTION_BUILD:
exitCode = actionBuild(clusterName, serviceArgs.getActionBuildArgs());
break;
+ case ACTION_UPDATE:
+ exitCode = actionUpdate(clusterName, serviceArgs.getActionUpdateArgs());
+ break;
case ACTION_CREATE:
exitCode = actionCreate(clusterName, serviceArgs.getActionCreateArgs());
break;
@@ -460,22 +463,36 @@ public class SliderClient extends AbstractSliderLaunchedService implements RunSe
YarnException,
IOException {
- buildInstanceDefinition(clustername, buildInfo);
+ buildInstanceDefinition(clustername, buildInfo, false);
return EXIT_SUCCESS;
}
+ /**
+ * Update the cluster specification
+ *
+ * @param clustername cluster name
+ * @param buildInfo the arguments needed to update the cluster
+ * @throws YarnException Yarn problems
+ * @throws IOException other problems
+ */
+ public int actionUpdate(String clustername, AbstractClusterBuildingActionArgs buildInfo) throws
+ YarnException, IOException {
+ buildInstanceDefinition(clustername, buildInfo, true);
+ return EXIT_SUCCESS;
+ }
/**
* Build up the AggregateConfiguration for an application instance then
* persists it
* @param clustername name of the cluster
* @param buildInfo the arguments needed to build the cluster
+ * @param overwrite true if existing cluster directory can be overwritten
* @throws YarnException
* @throws IOException
*/
public void buildInstanceDefinition(String clustername,
- AbstractClusterBuildingActionArgs buildInfo)
+ AbstractClusterBuildingActionArgs buildInfo, boolean overwrite)
throws YarnException, IOException {
// verify that a live cluster isn't there
SliderUtils.validateClusterName(clustername);
@@ -629,7 +646,7 @@ public class SliderClient extends AbstractSliderLaunchedService implements RunSe
throw e;
}
try {
- builder.persist(appconfdir);
+ builder.persist(appconfdir, overwrite);
} catch (LockAcquireFailedException e) {
log.warn("Failed to get a Lock on {} : {}", builder, e);
throw new BadClusterStateException("Failed to save " + clustername
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/0b760cde/slider-core/src/main/java/org/apache/slider/common/params/ActionUpdateArgs.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/common/params/ActionUpdateArgs.java b/slider-core/src/main/java/org/apache/slider/common/params/ActionUpdateArgs.java
new file mode 100644
index 0000000..9d76bd8
--- /dev/null
+++ b/slider-core/src/main/java/org/apache/slider/common/params/ActionUpdateArgs.java
@@ -0,0 +1,32 @@
+/*
+ * 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.Parameters;
+
+@Parameters(commandNames = {SliderActions.ACTION_UPDATE},
+ commandDescription = SliderActions.DESCRIBE_ACTION_UPDATE)
+
+public class ActionUpdateArgs extends AbstractClusterBuildingActionArgs {
+
+ @Override
+ public String getActionName() {
+ return SliderActions.ACTION_UPDATE;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/0b760cde/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 44a2a7a..6e44402 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
@@ -46,6 +46,7 @@ public class ClientArgs extends CommonArgs {
private AbstractClusterBuildingActionArgs buildingActionArgs;
private final ActionAMSuicideArgs actionAMSuicideArgs = new ActionAMSuicideArgs();
private final ActionBuildArgs actionBuildArgs = new ActionBuildArgs();
+ private final ActionUpdateArgs actionUpdateArgs = new ActionUpdateArgs();
private final ActionCreateArgs actionCreateArgs = new ActionCreateArgs();
private final ActionDestroyArgs actionDestroyArgs = new ActionDestroyArgs();
private final ActionExistsArgs actionExistsArgs = new ActionExistsArgs();
@@ -77,6 +78,7 @@ public class ClientArgs extends CommonArgs {
actionAMSuicideArgs,
actionBuildArgs,
actionCreateArgs,
+ actionUpdateArgs,
actionDestroyArgs,
actionExistsArgs,
actionFlexArgs,
@@ -119,6 +121,10 @@ public class ClientArgs extends CommonArgs {
return actionBuildArgs;
}
+ public ActionUpdateArgs getActionUpdateArgs() {
+ return actionUpdateArgs;
+ }
+
public ActionCreateArgs getActionCreateArgs() {
return actionCreateArgs;
}
@@ -182,6 +188,9 @@ 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_FREEZE.equals(action)) {
bindCoreAction(actionFreezeArgs);
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/0b760cde/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 2219a25..8e50a83 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
@@ -27,6 +27,7 @@ public interface SliderActions {
String ACTION_AM_SUICIDE = "am-suicide";
String ACTION_BUILD = "build";
String ACTION_CREATE = "create";
+ String ACTION_UPDATE = "update";
String ACTION_DESTROY = "destroy";
String ACTION_ECHO = "echo";
String ACTION_EXISTS = "exists";
@@ -49,6 +50,8 @@ public interface SliderActions {
"Build a Slider cluster specification -but do not start it";
String DESCRIBE_ACTION_CREATE =
"Create a live Slider application";
+ String DESCRIBE_ACTION_UPDATE =
+ "Update template for a Slider application";
String DESCRIBE_ACTION_DESTROY =
"Destroy a frozen Slider application)";
String DESCRIBE_ACTION_EXISTS =
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/0b760cde/slider-core/src/main/java/org/apache/slider/common/tools/CoreFileSystem.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/common/tools/CoreFileSystem.java b/slider-core/src/main/java/org/apache/slider/common/tools/CoreFileSystem.java
index 714322c..cada732 100644
--- a/slider-core/src/main/java/org/apache/slider/common/tools/CoreFileSystem.java
+++ b/slider-core/src/main/java/org/apache/slider/common/tools/CoreFileSystem.java
@@ -242,6 +242,7 @@ public class CoreFileSystem {
IOException,
SliderException {
if (fileSystem.exists(clusterDirectory)) {
+
log.error("Dir {} exists: {}",
clusterDirectory,
listFSDir(clusterDirectory));
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/0b760cde/slider-core/src/main/java/org/apache/slider/core/build/InstanceBuilder.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/core/build/InstanceBuilder.java b/slider-core/src/main/java/org/apache/slider/core/build/InstanceBuilder.java
index 0580013..0a33c36 100644
--- a/slider-core/src/main/java/org/apache/slider/core/build/InstanceBuilder.java
+++ b/slider-core/src/main/java/org/apache/slider/core/build/InstanceBuilder.java
@@ -224,16 +224,18 @@ public class InstanceBuilder {
/**
* Persist this
+ * @param appconfdir conf dir
+ * @param overwrite if true, we don't need to create cluster dir
* @throws IOException
* @throws SliderException
* @throws LockAcquireFailedException
* @param appconfdir dir to persist the conf to
*/
- public void persist(Path appconfdir) throws
+ public void persist(Path appconfdir, boolean overwrite) throws
IOException,
SliderException,
LockAcquireFailedException {
- coreFS.createClusterDirectories(instancePaths);
+ if (!overwrite) coreFS.createClusterDirectories(instancePaths);
ConfPersister persister =
new ConfPersister(coreFS, getInstanceDir());
ConfDirSnapshotAction action = null;
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/0b760cde/slider-core/src/test/groovy/org/apache/slider/client/TestCommonArgParsing.groovy
----------------------------------------------------------------------
diff --git a/slider-core/src/test/groovy/org/apache/slider/client/TestCommonArgParsing.groovy b/slider-core/src/test/groovy/org/apache/slider/client/TestCommonArgParsing.groovy
index 12e4a43..d94cd54 100644
--- a/slider-core/src/test/groovy/org/apache/slider/client/TestCommonArgParsing.groovy
+++ b/slider-core/src/test/groovy/org/apache/slider/client/TestCommonArgParsing.groovy
@@ -391,6 +391,19 @@ class TestCommonArgParsing implements SliderActions, Arguments {
}
@Test
+ public void testArgUpdate() throws Throwable {
+ def ca = createClientArgs([
+ ACTION_UPDATE, 'cluster1',
+ ARG_TEMPLATE, "appConfig.json",
+ ])
+ assert ca.action == ACTION_UPDATE
+ assert ca.coreAction instanceof ActionUpdateArgs
+ assert ca.actionUpdateArgs instanceof ActionUpdateArgs
+ AbstractClusterBuildingActionArgs args = ca.actionUpdateArgs
+ assert args.template != null
+ }
+
+ @Test
public void testFlexArgs() throws Throwable {
def ca = createClientArgs([
ACTION_FLEX, 'cluster1',