AMBARI-15223: Add ability to display messages on Upgrade UI in paragraphs (dili)


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

Branch: refs/heads/AMBARI-13364
Commit: 20de17a827f47ed9bf0d6b9b476032bb16c78eb1
Parents: 087fcff
Author: Di Li <d...@apache.org>
Authored: Wed Mar 9 11:45:29 2016 -0500
Committer: Di Li <d...@apache.org>
Committed: Wed Mar 9 11:45:29 2016 -0500

----------------------------------------------------------------------
 .../internal/UpgradeResourceProvider.java       | 14 ++++++--
 .../ambari/server/state/UpgradeHelper.java      |  9 ++++--
 .../state/stack/upgrade/ColocatedGrouping.java  | 34 ++++++++++++--------
 .../server/state/stack/upgrade/ManualTask.java  |  7 +++-
 .../UpgradeResourceProviderHDP22Test.java       |  2 +-
 .../internal/UpgradeResourceProviderTest.java   | 25 +++++++++++---
 .../ambari/server/state/UpgradeHelperTest.java  | 16 +++++----
 .../main/admin/stack_and_upgrade_controller.js  | 15 +++++++++
 .../stack_upgrade/stack_upgrade_wizard.hbs      |  5 +--
 9 files changed, 93 insertions(+), 34 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/20de17a8/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 3a335ae..07061e1 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
@@ -115,6 +115,8 @@ import org.slf4j.LoggerFactory;
 
 import com.google.common.collect.Lists;
 import com.google.gson.Gson;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonObject;
 import com.google.inject.Inject;
 import com.google.inject.Provider;
 import com.google.inject.assistedinject.Assisted;
@@ -1468,20 +1470,28 @@ public class UpgradeResourceProvider extends 
AbstractControllerResourceProvider
 
     String itemDetail = entity.getText();
     String stageText = StringUtils.abbreviate(entity.getText(), 255);
-
     switch (task.getType()) {
       case MANUAL: {
         ManualTask mt = (ManualTask) task;
-        itemDetail = mt.message;
+        JsonArray messageArray = new JsonArray();
+        for(String message: mt.messages){
+          JsonObject messageObj = new JsonObject();
+          messageObj.addProperty("message", message);
+          messageArray.add(messageObj);
+        }
+        itemDetail = messageArray.toString();
         if (null != mt.summary) {
           stageText = mt.summary;
         }
+
         entity.setText(itemDetail);
 
         if (null != mt.structuredOut) {
           commandParams.put(COMMAND_PARAM_STRUCT_OUT, mt.structuredOut);
         }
 
+        //To be used later on by the Stage...
+        itemDetail = StringUtils.join(mt.messages, " ");
         break;
       }
       case CONFIGURE: {

http://git-wip-us.apache.org/repos/asf/ambari/blob/20de17a8/ambari-server/src/main/java/org/apache/ambari/server/state/UpgradeHelper.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/state/UpgradeHelper.java 
b/ambari-server/src/main/java/org/apache/ambari/server/state/UpgradeHelper.java
index 05d49c4..2ac4d25 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/state/UpgradeHelper.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/state/UpgradeHelper.java
@@ -508,9 +508,12 @@ public class UpgradeHelper {
 
           if (task.getType() == Type.MANUAL) {
             ManualTask mt = (ManualTask) task;
-            if (null != mt.message) {
-              mt.message = tokenReplace(ctx, mt.message,
-                  taskWrapper.getService(), taskWrapper.getComponent());
+            if(null != mt.messages && !mt.messages.isEmpty()){
+              for(int i = 0; i < mt.messages.size(); i++){
+                String message =  mt.messages.get(i);
+                message = tokenReplace(ctx, message, taskWrapper.getService(), 
taskWrapper.getComponent());
+                mt.messages.set(i, message);
+              }
             }
           }
         }

http://git-wip-us.apache.org/repos/asf/ambari/blob/20de17a8/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/ColocatedGrouping.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/ColocatedGrouping.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/ColocatedGrouping.java
index 3705c43..39ccb95 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/ColocatedGrouping.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/ColocatedGrouping.java
@@ -164,7 +164,9 @@ public class ColocatedGrouping extends Grouping {
 
         ManualTask task = new ManualTask();
         task.summary = m_batch.summary;
-        task.message = m_batch.message;
+        List<String> messages =  new ArrayList<String>();
+        messages.add(m_batch.message);
+        task.messages = messages;
         formatFirstBatch(upgradeContext, task, befores);
 
         StageWrapper wrapper = new StageWrapper(
@@ -264,21 +266,27 @@ public class ColocatedGrouping extends Grouping {
         }
       }
 
-      // !!! add the display names to the message, if needed
-      if (task.message.contains("{{components}}")) {
-        StringBuilder sb = new StringBuilder();
+      for(int i = 0; i < task.messages.size(); i++){
+        String message = task.messages.get(i);
+        // !!! add the display names to the message, if needed
+        if (message.contains("{{components}}")) {
+          StringBuilder sb = new StringBuilder();
 
-        List<String> compNames = new ArrayList<String>(names);
+          List<String> compNames = new ArrayList<String>(names);
 
-        if (compNames.size() == 1) {
-          sb.append(compNames.get(0));
-        } else if (names.size() > 1) {
-          String last = compNames.remove(compNames.size() - 1);
-          sb.append(StringUtils.join(compNames, ", "));
-          sb.append(" and ").append(last);
-        }
+          if (compNames.size() == 1) {
+            sb.append(compNames.get(0));
+          } else if (names.size() > 1) {
+            String last = compNames.remove(compNames.size() - 1);
+            sb.append(StringUtils.join(compNames, ", "));
+            sb.append(" and ").append(last);
+          }
 
-        task.message = task.message.replace("{{components}}", sb.toString());
+          message = message.replace("{{components}}", sb.toString());
+
+          //Add the updated message back to the message list.
+          task.messages.set(i, message);
+        }
       }
 
       // !!! build the structured out to attach to the manual task

http://git-wip-us.apache.org/repos/asf/ambari/blob/20de17a8/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/ManualTask.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/ManualTask.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/ManualTask.java
index a0a347a..e56a602 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/ManualTask.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/ManualTask.java
@@ -17,6 +17,8 @@
  */
 package org.apache.ambari.server.state.stack.upgrade;
 
+import java.util.List;
+
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlElement;
@@ -44,8 +46,11 @@ public class ManualTask extends ServerSideActionTask {
   @XmlTransient
   public String structuredOut = null;
 
+  /*@XmlElement(name="message")
+  public String message;*/
+
   @XmlElement(name="message")
-  public String message;
+  public List<String> messages;
 
   @Override
   public Task.Type getType() {

http://git-wip-us.apache.org/repos/asf/ambari/blob/20de17a8/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderHDP22Test.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderHDP22Test.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderHDP22Test.java
index 654fbd9..a9c4b17 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderHDP22Test.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderHDP22Test.java
@@ -307,7 +307,7 @@ public class UpgradeResourceProviderHDP22Test {
     group = upgrade.getUpgradeGroups().get(0);
     assertEquals(2, group.getItems().size());
     UpgradeItemEntity item = group.getItems().get(1);
-    assertEquals("Value is set for the source stack upgrade pack", "Goo", 
item.getText());
+    assertEquals("Value is set for the source stack upgrade pack", 
"[{\"message\":\"Goo\"}]", item.getText());
 
     assertTrue(cluster.getDesiredConfigs().containsKey("hive-site"));
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/20de17a8/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderTest.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderTest.java
index 5866453..17c52d2 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderTest.java
@@ -96,6 +96,9 @@ import org.junit.Ignore;
 import org.junit.Test;
 
 import com.google.gson.Gson;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
 import com.google.inject.Binder;
 import com.google.inject.Guice;
 import com.google.inject.Injector;
@@ -281,8 +284,8 @@ public class UpgradeResourceProviderTest {
 
     List<UpgradeItemEntity> preClusterUpgradeItems = 
preClusterGroup.getItems();
     assertEquals(2, preClusterUpgradeItems.size());
-    assertEquals("Foo", preClusterUpgradeItems.get(0).getText());
-    assertEquals("Foo", preClusterUpgradeItems.get(1).getText());
+    assertEquals("Foo", 
parseSingleMessage(preClusterUpgradeItems.get(0).getText()));
+    assertEquals("Foo", 
parseSingleMessage(preClusterUpgradeItems.get(1).getText()));
 
     UpgradeGroupEntity zookeeperGroup = upgradeGroups.get(1);
     assertEquals("ZOOKEEPER", zookeeperGroup.getName());
@@ -291,7 +294,7 @@ public class UpgradeResourceProviderTest {
     assertEquals(5, zookeeperUpgradeItems.size());
 
     assertEquals("This is a manual task with a placeholder of 
placeholder-rendered-properly",
-        zookeeperUpgradeItems.get(0).getText());
+        parseSingleMessage(zookeeperUpgradeItems.get(0).getText()));
     assertEquals("Restarting ZooKeeper Server on h1", 
zookeeperUpgradeItems.get(1).getText());
     assertEquals("Skipping Configuration Task 2.2.0", 
zookeeperUpgradeItems.get(2).getText());
     assertEquals("Service Check ZooKeeper", 
zookeeperUpgradeItems.get(3).getText());
@@ -306,7 +309,7 @@ public class UpgradeResourceProviderTest {
 
     List<UpgradeItemEntity> postClusterUpgradeItems = 
postClusterGroup.getItems();
     assertEquals(2, postClusterUpgradeItems.size());
-    assertEquals("Please confirm you are ready to finalize", 
postClusterUpgradeItems.get(0).getText());
+    assertEquals("Please confirm you are ready to finalize", 
parseSingleMessage(postClusterUpgradeItems.get(0).getText()));
     assertEquals("Save Cluster State", 
postClusterUpgradeItems.get(1).getText());
   }
 
@@ -492,7 +495,12 @@ public class UpgradeResourceProviderTest {
     res = resources.iterator().next();
 
     assertEquals("Confirm Finalize", 
res.getPropertyValue("UpgradeItem/context"));
-    
assertTrue(res.getPropertyValue("UpgradeItem/text").toString().startsWith("Please
 confirm"));
+    String msgStr = res.getPropertyValue("UpgradeItem/text").toString();
+    JsonParser parser = new JsonParser();
+    JsonArray msgArray = (JsonArray) parser.parse(msgStr);
+    JsonObject msg = (JsonObject) msgArray.get(0);
+
+    assertTrue(msg.get("message").getAsString().startsWith("Please confirm"));
   }
 
   /**
@@ -1319,6 +1327,13 @@ public class UpgradeResourceProviderTest {
     }
   }
 
+  private String parseSingleMessage(String msgStr){
+    JsonParser parser = new JsonParser();
+    JsonArray msgArray = (JsonArray) parser.parse(msgStr);
+    JsonObject msg = (JsonObject) msgArray.get(0);
+
+    return msg.get("message").getAsString();
+  }
 
   /**
    *

http://git-wip-us.apache.org/repos/asf/ambari/blob/20de17a8/ambari-server/src/test/java/org/apache/ambari/server/state/UpgradeHelperTest.java
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/state/UpgradeHelperTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/state/UpgradeHelperTest.java
index e443d9d..bd3453e 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/state/UpgradeHelperTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/state/UpgradeHelperTest.java
@@ -222,7 +222,7 @@ public class UpgradeHelperTest {
     Task t = sw.getTasks().get(0).getTasks().get(0);
     assertEquals(ManualTask.class, t.getClass());
     ManualTask mt = (ManualTask) t;
-    assertTrue(mt.message.contains("DataNode and NodeManager"));
+    assertTrue(mt.messages.get(0).contains("DataNode and NodeManager"));
     assertNotNull(mt.structuredOut);
     assertTrue(mt.structuredOut.contains("DATANODE"));
     assertTrue(mt.structuredOut.contains("NODEMANAGER"));
@@ -611,9 +611,9 @@ public class UpgradeHelperTest {
     ManualTask manualTask = (ManualTask) 
zookeeperGroup.items.get(0).getTasks().get(
         0).getTasks().get(0);
 
-    assertEquals(
-        "This is a manual task with a placeholder of 
placeholder-rendered-properly",
-        manualTask.message);
+    assertEquals(1, manualTask.messages.size());
+    assertEquals("This is a manual task with a placeholder of 
placeholder-rendered-properly",
+        manualTask.messages.get(0));
   }
 
   @Test
@@ -1044,9 +1044,10 @@ public class UpgradeHelperTest {
     ManualTask manualTask = (ManualTask) 
zookeeperGroup.items.get(0).getTasks().get(
         0).getTasks().get(0);
 
+    assertEquals(1, manualTask.messages.size());
     assertEquals(
         "This is a manual task with a placeholder of 
placeholder-rendered-properly",
-        manualTask.message);
+        manualTask.messages.get(0));
   }
 
   @Test
@@ -1072,9 +1073,10 @@ public class UpgradeHelperTest {
     ManualTask manualTask = (ManualTask) 
zookeeperGroup.items.get(0).getTasks().get(
         0).getTasks().get(0);
 
+    assertEquals(1, manualTask.messages.size());
     assertEquals(
         "This is a manual task with a placeholder of 
placeholder-rendered-properly",
-        manualTask.message);
+        manualTask.messages.get(0));
   }
 
   @Test
@@ -1128,7 +1130,7 @@ public class UpgradeHelperTest {
     Task t = sw.getTasks().get(0).getTasks().get(0);
     assertEquals(ManualTask.class, t.getClass());
     ManualTask mt = (ManualTask) t;
-    assertTrue(mt.message.contains("DataNode and NodeManager"));
+    assertTrue(mt.messages.get(0).contains("DataNode and NodeManager"));
     assertNotNull(mt.structuredOut);
     assertTrue(mt.structuredOut.contains("DATANODE"));
     assertTrue(mt.structuredOut.contains("NODEMANAGER"));

http://git-wip-us.apache.org/repos/asf/ambari/blob/20de17a8/ambari-web/app/controllers/main/admin/stack_and_upgrade_controller.js
----------------------------------------------------------------------
diff --git 
a/ambari-web/app/controllers/main/admin/stack_and_upgrade_controller.js 
b/ambari-web/app/controllers/main/admin/stack_and_upgrade_controller.js
index 847544f..2dceccc 100644
--- a/ambari-web/app/controllers/main/admin/stack_and_upgrade_controller.js
+++ b/ambari-web/app/controllers/main/admin/stack_and_upgrade_controller.js
@@ -413,6 +413,21 @@ App.MainAdminStackAndUpgradeController = 
Em.Controller.extend(App.LocalStorage,
         upgradeItems = [];
       newGroup.upgrade_items.forEach(function (item) {
         var oldItem = App.upgradeEntity.create({type: 'ITEM'}, 
item.UpgradeItem);
+        var status = oldItem.get('status');
+        if ('HOLDING' == status){
+          //manualItem
+          var text = oldItem.get('text');
+          try {
+            var messageArray = $.parseJSON(text)
+            var messages = [];
+            for(var i = 0; i < messageArray.length; i ++){
+              var aMessageObj = messageArray[i];
+              messages.push(aMessageObj.message);
+            }
+            oldItem.set('messages', messages)
+            oldItem.set('text', messages.join(' '))
+          } catch (err){}
+        }
         oldItem.set('tasks', []);
         upgradeItems.pushObject(oldItem);
       });

http://git-wip-us.apache.org/repos/asf/ambari/blob/20de17a8/ambari-web/app/templates/main/admin/stack_upgrade/stack_upgrade_wizard.hbs
----------------------------------------------------------------------
diff --git 
a/ambari-web/app/templates/main/admin/stack_upgrade/stack_upgrade_wizard.hbs 
b/ambari-web/app/templates/main/admin/stack_upgrade/stack_upgrade_wizard.hbs
index 02022cf..f1189a3 100644
--- a/ambari-web/app/templates/main/admin/stack_upgrade/stack_upgrade_wizard.hbs
+++ b/ambari-web/app/templates/main/admin/stack_upgrade/stack_upgrade_wizard.hbs
@@ -97,8 +97,9 @@
         {{#if view.plainManualItem}}
           <div class="box details-box">
             <p class="manual-steps-title"><strong>{{t 
admin.stackUpgrade.dialog.manual}}</strong></p>
-            <p class="manual-steps-content">{{view.manualItem.text}}</p>
-
+            {{#each message in view.manualItem.messages}}
+              <p class="manual-steps-content">{{message}}</p>
+            {{/each}}
             <label class="message">
               {{view Em.Checkbox checkedBinding="view.isManualDone"}}
               {{t admin.stackUpgrade.dialog.manualDone}}

Reply via email to