Repository: ambari
Updated Branches:
  refs/heads/trunk 623d2f2cf -> c11100587


AMBARI-8855. Fix Kerberos-related tasks to show friendly names in UI ops list. 
(robert levas via jaimin)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/c1110058
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/c1110058
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/c1110058

Branch: refs/heads/trunk
Commit: c11100587d8d3334320836acbe53eddb9ee9d317
Parents: 623d2f2
Author: Jaimin Jetly <[email protected]>
Authored: Mon Dec 22 11:11:10 2014 -0800
Committer: Jaimin Jetly <[email protected]>
Committed: Mon Dec 22 11:11:10 2014 -0800

----------------------------------------------------------------------
 .../ambari/server/actionmanager/Stage.java      | 29 +++++--
 .../server/controller/KerberosHelper.java       | 79 ++++++++++----------
 .../internal/UpgradeResourceProvider.java       |  2 +-
 .../actionmanager/TestActionDBAccessorImpl.java |  2 +-
 .../actionmanager/TestActionScheduler.java      |  3 +-
 .../serveraction/ServerActionExecutorTest.java  |  4 +-
 6 files changed, 67 insertions(+), 52 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/c1110058/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/Stage.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/Stage.java 
b/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/Stage.java
index 4922fa5..57fadf7 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/Stage.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/actionmanager/Stage.java
@@ -315,23 +315,25 @@ public class Stage {
    * @param event         a ServiceComponentHostServerActionEvent
    * @param commandParams a Map of String to String data used to pass to the 
action - this may be
    *                      empty or null if no data is relevant
+   * @param commandDetail a String declaring a descriptive name to pass to the 
action - null or an
+   *                      empty string indicates no value is to be set
    * @param timeout       an Integer declaring the timeout for this action - 
if null, a default
-   *                      timeout will be used
    */
   public synchronized void addServerActionCommand(String actionName, Role 
role, RoleCommand command,
-      String clusterName, ServiceComponentHostServerActionEvent event,
-      @Nullable Map<String, String> commandParams,
-      @Nullable Integer timeout) {
+                                                  String clusterName, 
ServiceComponentHostServerActionEvent event,
+                                                  @Nullable Map<String, 
String> commandParams,
+                                                  @Nullable String 
commandDetail,
+                                                  @Nullable Integer timeout) {
 
     addServerActionCommand(actionName, role, command,
-        clusterName, StageUtils.getHostName(), event, commandParams, timeout);
+        clusterName, StageUtils.getHostName(), event, commandParams, 
commandDetail, timeout);
   }
 
   /**
    * THIS METHOD IS TO WORKAROUND A BUG!  The assumption of the framework
    * is that the Ambari Server is installed on a host WITHIN the cluster, which
    * is not always true.  This method adds a host parameter.
-   *
+   * <p/>
    * Creates server-side execution command.
    * <p/>
    * The action name for this command is expected to be the classname of a
@@ -346,12 +348,15 @@ public class Stage {
    * @param event         a ServiceComponentHostServerActionEvent
    * @param commandParams a Map of String to String data used to pass to the 
action - this may be
    *                      empty or null if no data is relevant
+   * @param commandDetail a String declaring a descriptive name to pass to the 
action - null or an
+   *                      empty string indicates no value is to be set
    * @param timeout       an Integer declaring the timeout for this action - 
if null, a default
-   *                      timeout will be used
    */
   public synchronized void addServerActionCommand(String actionName, Role 
role, RoleCommand command,
-                                                  String clusterName, String 
hostName, ServiceComponentHostServerActionEvent event,
+                                                  String clusterName, String 
hostName,
+                                                  
ServiceComponentHostServerActionEvent event,
                                                   @Nullable Map<String, 
String> commandParams,
+                                                  @Nullable String 
commandDetail,
                                                   @Nullable Integer timeout) {
     ExecutionCommandWrapper commandWrapper = 
addGenericExecutionCommand(clusterName, hostName, role, command, event);
     ExecutionCommand cmd = commandWrapper.getExecutionCommand();
@@ -368,6 +373,14 @@ public class Stage {
     Map<String, String> roleParams = new HashMap<String, String>();
     roleParams.put(ServerAction.ACTION_NAME, actionName);
     cmd.setRoleParams(roleParams);
+
+    if(commandDetail != null) {
+      HostRoleCommand hostRoleCommand = getHostRoleCommand(hostName, 
role.toString());
+      if (hostRoleCommand != null) {
+        hostRoleCommand.setCommandDetail(commandDetail);
+        hostRoleCommand.setCustomCommandName(actionName);
+      }
+    }
   }
 
   /**

http://git-wip-us.apache.org/repos/asf/ambari/blob/c1110058/ambari-server/src/main/java/org/apache/ambari/server/controller/KerberosHelper.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/KerberosHelper.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/KerberosHelper.java
index fb19bd5..0ca40ab 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/KerberosHelper.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/KerberosHelper.java
@@ -425,14 +425,14 @@ public class KerberosHelper {
         Stage stage = createServerActionStage(++lastStageId,
             cluster,
             requestStageContainer.getId(),
-            "Finalize Operations",
+            "Process Kerberos Operations",
             clusterHostInfoJson,
             "{}",
             hostParamsJson,
             FinalizeKerberosServerAction.class,
             event,
             commandParameters,
-            300);
+            "Finalize Operations", 300);
 
         RoleGraph roleGraph = new RoleGraph(roleCommandOrder);
         roleGraph.build(stage);
@@ -741,15 +741,17 @@ public class KerberosHelper {
    * @param event             The relevant 
ServiceComponentHostServerActionEvent
    * @param commandParameters a Map of command parameters to attach to the 
task added to the new
    *                          stage
-   * @param timeout           the timeout for the task/action
-   * @return a newly created Stage
+   * @param commandDetail     a String declaring a descriptive name to pass to 
the action - null or an
+   *                          empty string indicates no value is to be set
+   * @param timeout           the timeout for the task/action  @return a newly 
created Stage
    */
   private Stage createServerActionStage(long id, Cluster cluster, long 
requestId,
                                         String requestContext, String 
clusterHostInfo,
                                         String commandParams, String 
hostParams,
                                         Class<? extends ServerAction> 
actionClass,
                                         ServiceComponentHostServerActionEvent 
event,
-                                        Map<String, String> commandParameters, 
Integer timeout) {
+                                        Map<String, String> commandParameters, 
String commandDetail,
+                                        Integer timeout) {
 
     Stage stage = createNewStage(id, cluster, requestId, requestContext, 
clusterHostInfo, commandParams, hostParams);
     stage.addServerActionCommand(actionClass.getName(),
@@ -758,6 +760,7 @@ public class KerberosHelper {
         cluster.getClusterName(),
         event,
         commandParameters,
+        commandDetail,
         timeout);
 
     return stage;
@@ -991,13 +994,14 @@ public class KerberosHelper {
       stage = createServerActionStage(++stageId,
           cluster,
           requestStageContainer.getId(),
-          "Create Principals",
+          "Process Kerberos Operations",
           clusterHostInfoJson,
           "{}",
           hostParamsJson,
           CreatePrincipalsServerAction.class,
           event,
           commandParameters,
+          "Create Principals",
           1200);
 
       roleGraph = new RoleGraph(roleCommandOrder);
@@ -1009,13 +1013,14 @@ public class KerberosHelper {
       stage = createServerActionStage(++stageId,
           cluster,
           requestStageContainer.getId(),
-          "Create Keytabs",
+          "Process Kerberos Operations",
           clusterHostInfoJson,
           "{}",
           hostParamsJson,
           CreateKeytabFilesServerAction.class,
           event,
           commandParameters,
+          "Create Keytabs",
           1200);
 
       roleGraph = new RoleGraph(roleCommandOrder);
@@ -1023,27 +1028,25 @@ public class KerberosHelper {
       requestStageContainer.addStages(roleGraph.getStages());
 
       // Create stage to distribute keytabs
-
-      List<RequestResourceFilter> requestResourceFilters = new 
ArrayList<RequestResourceFilter>();
-      RequestResourceFilter reqResFilter = new 
RequestResourceFilter("KERBEROS", "KERBEROS_CLIENT", updateHosts);
-      requestResourceFilters.add(reqResFilter);
-
       stage = createNewStage(++stageId,
-        cluster,
-        requestStageContainer.getId(),
-        "Distribute Keytabs",
-        clusterHostInfoJson,
-        StageUtils.getGson().toJson(commandParameters),
-        hostParamsJson);
-
-      Map<String, String> requestParams =   new HashMap<String, String>();
-
-      ActionExecutionContext actionExecContext = new ActionExecutionContext(
-        cluster.getClusterName(),
-        "SET_KEYTAB",
-        requestResourceFilters,
-        requestParams);
-      if (!updateHosts.isEmpty())  {
+          cluster,
+          requestStageContainer.getId(),
+          "Process Kerberos Operations",
+          clusterHostInfoJson,
+          StageUtils.getGson().toJson(commandParameters),
+          hostParamsJson);
+
+      if (!updateHosts.isEmpty()) {
+        Map<String, String> requestParams = new HashMap<String, String>();
+        List<RequestResourceFilter> requestResourceFilters = new 
ArrayList<RequestResourceFilter>();
+        RequestResourceFilter reqResFilter = new 
RequestResourceFilter("KERBEROS", "KERBEROS_CLIENT", updateHosts);
+        requestResourceFilters.add(reqResFilter);
+
+        ActionExecutionContext actionExecContext = new ActionExecutionContext(
+            cluster.getClusterName(),
+            "SET_KEYTAB",
+            requestResourceFilters,
+            requestParams);
         
customCommandExecutionHelper.addExecutionCommandsToStage(actionExecContext, 
stage, requestParams);
       }
 
@@ -1052,18 +1055,18 @@ public class KerberosHelper {
       requestStageContainer.addStages(roleGraph.getStages());
 
       // Create stage to update configurations of services
-
       stage = createServerActionStage(++stageId,
-        cluster,
-        requestStageContainer.getId(),
-        "Update Service Configurations",
-        clusterHostInfoJson,
-        "{}",
-        hostParamsJson,
-        UpdateKerberosConfigsServerAction.class,
-        event,
-        commandParameters,
-        1200);
+          cluster,
+          requestStageContainer.getId(),
+          "Process Kerberos Operations",
+          clusterHostInfoJson,
+          "{}",
+          hostParamsJson,
+          UpdateKerberosConfigsServerAction.class,
+          event,
+          commandParameters,
+          "Update Service Configurations",
+          1200);
 
       roleGraph = new RoleGraph(roleCommandOrder);
       roleGraph.build(stage);

http://git-wip-us.apache.org/repos/asf/ambari/blob/c1110058/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeResourceProvider.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeResourceProvider.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeResourceProvider.java
index fa39c97..efc3713 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeResourceProvider.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeResourceProvider.java
@@ -674,7 +674,7 @@ public class UpgradeResourceProvider extends 
AbstractControllerResourceProvider
         RoleCommand.EXECUTE,
         cluster.getClusterName(), host,
         new ServiceComponentHostServerActionEvent(StageUtils.getHostName(), 
System.currentTimeMillis()),
-        commandParams, 1200);
+        commandParams, null, 1200);
 
     request.addStages(Collections.singletonList(stage));
   }

http://git-wip-us.apache.org/repos/asf/ambari/blob/c1110058/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionDBAccessorImpl.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionDBAccessorImpl.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionDBAccessorImpl.java
index a756275..7e4f850 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionDBAccessorImpl.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionDBAccessorImpl.java
@@ -581,7 +581,7 @@ public class TestActionDBAccessorImpl {
     Stage s = new Stage(requestId, "/a/b", "cluster1", 1L, "action db accessor 
test",
         "", "commandParamsStage", "hostParamsStage");
     s.setStageId(stageId);
-    s.addServerActionCommand(serverActionName, Role.AMBARI_SERVER_ACTION, 
RoleCommand.ACTIONEXECUTE, clusterName, null, null, 300);
+    s.addServerActionCommand(serverActionName, Role.AMBARI_SERVER_ACTION, 
RoleCommand.ACTIONEXECUTE, clusterName, null, null, "command details", 300);
     List<Stage> stages = new ArrayList<Stage>();
     stages.add(s);
     final RequestResourceFilter resourceFilter = new 
RequestResourceFilter("AMBARI", "SERVER", Arrays.asList(hostname));

http://git-wip-us.apache.org/repos/asf/ambari/blob/c1110058/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionScheduler.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionScheduler.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionScheduler.java
index 8ce4ff2..edbb71d 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionScheduler.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/actionmanager/TestActionScheduler.java
@@ -65,7 +65,6 @@ import org.apache.ambari.server.utils.StageUtils;
 import org.easymock.Capture;
 import org.easymock.EasyMock;
 import org.junit.BeforeClass;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.mockito.ArgumentCaptor;
 import org.mockito.invocation.InvocationOnMock;
@@ -770,7 +769,7 @@ public class TestActionScheduler {
         RoleCommand.EXECUTE, "cluster1",
         new ServiceComponentHostServerActionEvent(serverHostname, 
System.currentTimeMillis()),
         payload,
-        timeout);
+        null, timeout);
 
     return stage;
   }

http://git-wip-us.apache.org/repos/asf/ambari/blob/c1110058/ambari-server/src/test/java/org/apache/ambari/server/serveraction/ServerActionExecutorTest.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/serveraction/ServerActionExecutorTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/serveraction/ServerActionExecutorTest.java
index 4bd0d18..96c0539 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/serveraction/ServerActionExecutorTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/serveraction/ServerActionExecutorTest.java
@@ -99,7 +99,7 @@ public class ServerActionExecutorTest {
         RoleCommand.EXECUTE,
         "cluster1", SERVER_HOST_NAME,
         new ServiceComponentHostServerActionEvent(StageUtils.getHostName(), 
System.currentTimeMillis()),
-        Collections.<String, String>emptyMap(), 1200);
+        Collections.<String, String>emptyMap(), null, 1200);
 
     final List<Stage> stages = new ArrayList<Stage>() {
       {
@@ -289,7 +289,7 @@ public class ServerActionExecutorTest {
     stage.addServerActionCommand(MockServerAction.class.getName(), 
Role.AMBARI_SERVER_ACTION,
         RoleCommand.EXECUTE, "cluster1",
         new ServiceComponentHostServerActionEvent(SERVER_HOST_NAME, 
System.currentTimeMillis()),
-        payload, timeout);
+        payload, "command detail", timeout);
 
     return stage;
   }

Reply via email to