Selaa lähdekoodia

AMBARI-9049 Upgrade Progress popup tweaks. (atkach)

Andrii Tkach 10 vuotta sitten
vanhempi
commit
edb27ea87e

+ 581 - 567
ambari-web/app/assets/data/stack_versions/upgrade.json

@@ -1,24 +1,24 @@
 {
-  "href" : "http://192.168.56.101:8080/api/v1/clusters/c1/upgrades/42?fields=Upgrade,upgrade_groups/UpgradeGroup,upgrade_groups/upgrade_items/*,upgrade_groups/upgrade_items/tasks/*",
+  "href" : "http://162.216.151.112:8080/api/v1/clusters/c1/upgrades/26?fields=Upgrade,upgrade_groups/UpgradeGroup,upgrade_groups/upgrade_items/*,upgrade_groups/upgrade_items/tasks/Tasks/id,upgrade_groups/upgrade_items/tasks/Tasks/command_detail,upgrade_groups/upgrade_items/tasks/Tasks/request_id,upgrade_groups/upgrade_items/tasks/Tasks/status&_=1420802629776",
   "Upgrade" : {
     "abort_reason" : null,
     "aborted_task_count" : 0,
     "cluster_name" : "c1",
-    "completed_task_count" : 1,
-    "create_time" : 1418134043541,
+    "completed_task_count" : 5,
+    "create_time" : 1420802576635,
     "end_time" : -1,
     "exclusive" : false,
-    "failed_task_count" : 0,
+    "failed_task_count" : 1,
     "inputs" : null,
     "operation_level" : null,
-    "progress_percent" : 27.0,
+    "progress_percent" : 25.476190476190474,
     "queued_task_count" : 0,
-    "request_context" : "Upgrading to 2.2.0.1-885",
-    "request_id" : 42,
-    "request_status" : "IN_PROGRESS",
+    "request_context" : "Upgrading to 2.2.1.0-2191",
+    "request_id" : 26,
+    "request_status" : "FAILED",
     "resource_filters" : [ ],
-    "start_time" : 1418134043581,
-    "task_count" : 5,
+    "start_time" : 1420802576700,
+    "task_count" : 21,
     "timed_out_task_count" : 0,
     "type" : "INTERNAL_REQUEST",
     "request_schedule" : {
@@ -28,435 +28,377 @@
   },
   "upgrade_groups" : [
     {
-      "href" : "http://192.168.56.101:8080/api/v1/clusters/c1/upgrades/42/upgrade_groups/109",
+      "href" : "http://162.216.151.112:8080/api/v1/clusters/c1/upgrades/26/upgrade_groups/26",
       "UpgradeGroup" : {
-        "group_id" : 109,
+        "group_id" : 26,
         "name" : "ZOOKEEPER",
-        "progress_percent" : 27.0,
-        "request_id" : 42,
-        "status" : "IN_PROGRESS",
+        "progress_percent" : 75.0,
+        "request_id" : 26,
+        "status" : "PENDING",
         "title" : "Zookeeper"
       },
-      "upgrade_items" : [ ]
-    },
-    {
-      "href" : "http://192.168.56.101:8080/api/v1/clusters/c1/upgrades/42/upgrade_groups/110",
-      "UpgradeGroup" : {
-        "group_id" : 110,
-        "name" : "CORE_MASTER",
-        "progress_percent" : 45.0,
-        "request_id" : 42,
-        "status" : "IN_PROGRESS",
-        "title" : "Core Masters"
-      },
       "upgrade_items" : [
         {
-          "href" : "http://192.168.56.101:8080/api/v1/clusters/c1/upgrades/42/upgrade_groups/110/upgrade_items/1",
+          "href" : "http://162.216.151.112:8080/api/v1/clusters/c1/upgrades/26/upgrade_groups/26/upgrade_items/1",
           "UpgradeItem" : {
-            "cluster_host_info" : "{}",
+            "cluster_host_info" : "{\"all_hosts\":[\"tkach-2.c.pramod-thangali.internal\",\"tkach-1.c.pramod-thangali.internal\",\"tkach-3.c.pramod-thangali.internal\"],\"namenode_host\":[\"0,1\"],\"zkfc_hosts\":[\"0,1\"],\"slave_hosts\":[\"2\"],\"ambari_server_host\":[\"tkach-1.c.pramod-thangali.internal\"],\"zookeeper_hosts\":[\"0-2\"],\"all_ping_ports\":[\"8670:0-2\"],\"journalnode_hosts\":[\"0-2\"]}",
             "cluster_name" : "c1",
-            "command_params" : "{}",
-            "context" : "Preparing NAMENODE on dev01.hortonworks.com",
-            "end_time" : 1418134044126,
-            "group_id" : 110,
-            "host_params" : "{\"jdk_location\":\"http://dev01.hortonworks.com:8080/resources/\"}",
+            "command_params" : "{\"restart_type\":\"rolling_upgrade\",\"version\":\"2.2.1.0-2191\"}",
+            "context" : "Restarting ZOOKEEPER_SERVER on tkach-2.c.pramod-thangali.internal",
+            "end_time" : 0,
+            "group_id" : 26,
+            "host_params" : "{\"ambari_db_rca_driver\":\"org.postgresql.Driver\",\"ambari_db_rca_password\":\"mapred\",\"ambari_db_rca_url\":\"jdbc:postgresql://tkach-1.c.pramod-thangali.internal/ambarirca\",\"ambari_db_rca_username\":\"mapred\",\"db_driver_filename\":\"mysql-connector-java.jar\",\"db_name\":\"ambari\",\"java_home\":\"/usr/jdk64/jdk1.7.0_67\",\"jce_name\":\"UnlimitedJCEPolicyJDK7.zip\",\"jdk_location\":\"http://tkach-1.c.pramod-thangali.internal:8080/resources/\",\"jdk_name\":\"jdk-7u67-linux-x64.tar.gz\",\"mysql_jdbc_url\":\"http://tkach-1.c.pramod-thangali.internal:8080/resources//mysql-connector-java.jar\",\"oracle_jdbc_url\":\"http://tkach-1.c.pramod-thangali.internal:8080/resources//ojdbc6.jar\",\"stack_name\":\"HDP\",\"stack_version\":\"2.2\"}",
             "log_info" : null,
-            "progress_percent" : 100.0,
-            "request_id" : 42,
+            "progress_percent" : 0.0,
+            "request_id" : 26,
+            "skippable" : false,
             "stage_id" : 1,
-            "start_time" : 1418134043584,
-            "status" : "COMPLETED"
+            "start_time" : -1,
+            "status" : "PENDING"
           },
           "tasks" : [
             {
-              "href" : "http://192.168.56.101:8080/api/v1/clusters/c1/upgrades/42/upgrade_groups/110/upgrade_items/1/tasks/192",
+              "href" : "http://162.216.151.112:8080/api/v1/clusters/c1/upgrades/26/upgrade_groups/26/upgrade_items/1/tasks/171",
               "Tasks" : {
-                "attempt_cnt" : 1,
                 "cluster_name" : "c1",
-                "command" : "ACTIONEXECUTE",
-                "command_detail" : "Preparing NAMENODE on dev01.hortonworks.com",
-                "end_time" : 1418134044126,
-                "error_log" : "/var/lib/ambari-agent/data/errors-192.txt",
-                "exit_code" : 0,
-                "host_name" : "dev01.hortonworks.com",
-                "id" : 192,
-                "output_log" : "/var/lib/ambari-agent/data/output-192.txt",
-                "request_id" : 42,
-                "role" : "ru_execute_tasks",
+                "command_detail" : "RESTART ZOOKEEPER/ZOOKEEPER_SERVER",
+                "id" : 171,
+                "request_id" : 26,
                 "stage_id" : 1,
-                "start_time" : 1418134043584,
-                "status" : "COMPLETED",
-                "stderr" : "None",
-                "stdout" : "2014-12-09 06:07:23,948 - Task: dev01.hortonworks.com",
-                "structured_out" : { }
+                "status" : "PENDING"
               }
-            },
+            }
+          ]
+        },
+        {
+          "href" : "http://162.216.151.112:8080/api/v1/clusters/c1/upgrades/26/upgrade_groups/26/upgrade_items/2",
+          "UpgradeItem" : {
+            "cluster_host_info" : "{\"all_hosts\":[\"tkach-2.c.pramod-thangali.internal\",\"tkach-1.c.pramod-thangali.internal\",\"tkach-3.c.pramod-thangali.internal\"],\"namenode_host\":[\"0,1\"],\"zkfc_hosts\":[\"0,1\"],\"slave_hosts\":[\"2\"],\"ambari_server_host\":[\"tkach-1.c.pramod-thangali.internal\"],\"zookeeper_hosts\":[\"0-2\"],\"all_ping_ports\":[\"8670:0-2\"],\"journalnode_hosts\":[\"0-2\"]}",
+            "cluster_name" : "c1",
+            "command_params" : "{\"restart_type\":\"rolling_upgrade\",\"version\":\"2.2.1.0-2191\"}",
+            "context" : "Restarting ZOOKEEPER_SERVER on tkach-1.c.pramod-thangali.internal",
+            "end_time" : 1420802585200,
+            "group_id" : 26,
+            "host_params" : "{\"ambari_db_rca_driver\":\"org.postgresql.Driver\",\"ambari_db_rca_password\":\"mapred\",\"ambari_db_rca_url\":\"jdbc:postgresql://tkach-1.c.pramod-thangali.internal/ambarirca\",\"ambari_db_rca_username\":\"mapred\",\"db_driver_filename\":\"mysql-connector-java.jar\",\"db_name\":\"ambari\",\"java_home\":\"/usr/jdk64/jdk1.7.0_67\",\"jce_name\":\"UnlimitedJCEPolicyJDK7.zip\",\"jdk_location\":\"http://tkach-1.c.pramod-thangali.internal:8080/resources/\",\"jdk_name\":\"jdk-7u67-linux-x64.tar.gz\",\"mysql_jdbc_url\":\"http://tkach-1.c.pramod-thangali.internal:8080/resources//mysql-connector-java.jar\",\"oracle_jdbc_url\":\"http://tkach-1.c.pramod-thangali.internal:8080/resources//ojdbc6.jar\",\"stack_name\":\"HDP\",\"stack_version\":\"2.2\"}",
+            "log_info" : null,
+            "progress_percent" : 100.0,
+            "request_id" : 26,
+            "skippable" : false,
+            "stage_id" : 2,
+            "start_time" : 1420802576722,
+            "status" : "COMPLETED"
+          },
+          "tasks" : [
             {
-              "href" : "http://192.168.56.101:8080/api/v1/clusters/c1/upgrades/42/upgrade_groups/110/upgrade_items/1/tasks/193",
+              "href" : "http://162.216.151.112:8080/api/v1/clusters/c1/upgrades/26/upgrade_groups/26/upgrade_items/2/tasks/172",
               "Tasks" : {
-                "attempt_cnt" : 1,
                 "cluster_name" : "c1",
-                "command" : "CUSTOM_COMMAND",
-                "command_detail" : "RESTART HDFS/NAMENODE",
-                "custom_command_name" : "RESTART",
-                "end_time" : -1,
-                "error_log" : "/var/lib/ambari-agent/data/errors-193.txt",
-                "exit_code" : 777,
-                "host_name" : "dev01.hortonworks.com",
-                "id" : 193,
-                "output_log" : "/var/lib/ambari-agent/data/output-193.txt",
-                "request_id" : 42,
-                "role" : "NAMENODE",
+                "command_detail" : "RESTART ZOOKEEPER/ZOOKEEPER_SERVER",
+                "id" : 172,
+                "request_id" : 26,
                 "stage_id" : 2,
-                "start_time" : 1418134053610,
-                "status" : "IN_PROGRESS",
-                "stderr" : "",
-                "stdout" : "",
-                "structured_out" : { }
+                "status" : "COMPLETED"
               }
-            },
+            }
+          ]
+        },
+        {
+          "href" : "http://162.216.151.112:8080/api/v1/clusters/c1/upgrades/26/upgrade_groups/26/upgrade_items/3",
+          "UpgradeItem" : {
+            "cluster_host_info" : "{\"all_hosts\":[\"tkach-2.c.pramod-thangali.internal\",\"tkach-1.c.pramod-thangali.internal\",\"tkach-3.c.pramod-thangali.internal\"],\"namenode_host\":[\"0,1\"],\"zkfc_hosts\":[\"0,1\"],\"slave_hosts\":[\"2\"],\"ambari_server_host\":[\"tkach-1.c.pramod-thangali.internal\"],\"zookeeper_hosts\":[\"0-2\"],\"all_ping_ports\":[\"8670:0-2\"],\"journalnode_hosts\":[\"0-2\"]}",
+            "cluster_name" : "c1",
+            "command_params" : "{\"restart_type\":\"rolling_upgrade\",\"version\":\"2.2.1.0-2191\"}",
+            "context" : "Restarting ZOOKEEPER_SERVER on tkach-3.c.pramod-thangali.internal",
+            "end_time" : 1420802599633,
+            "group_id" : 26,
+            "host_params" : "{\"ambari_db_rca_driver\":\"org.postgresql.Driver\",\"ambari_db_rca_password\":\"mapred\",\"ambari_db_rca_url\":\"jdbc:postgresql://tkach-1.c.pramod-thangali.internal/ambarirca\",\"ambari_db_rca_username\":\"mapred\",\"db_driver_filename\":\"mysql-connector-java.jar\",\"db_name\":\"ambari\",\"java_home\":\"/usr/jdk64/jdk1.7.0_67\",\"jce_name\":\"UnlimitedJCEPolicyJDK7.zip\",\"jdk_location\":\"http://tkach-1.c.pramod-thangali.internal:8080/resources/\",\"jdk_name\":\"jdk-7u67-linux-x64.tar.gz\",\"mysql_jdbc_url\":\"http://tkach-1.c.pramod-thangali.internal:8080/resources//mysql-connector-java.jar\",\"oracle_jdbc_url\":\"http://tkach-1.c.pramod-thangali.internal:8080/resources//ojdbc6.jar\",\"stack_name\":\"HDP\",\"stack_version\":\"2.2\"}",
+            "log_info" : null,
+            "progress_percent" : 100.0,
+            "request_id" : 26,
+            "skippable" : false,
+            "stage_id" : 3,
+            "start_time" : 1420802586808,
+            "status" : "COMPLETED"
+          },
+          "tasks" : [
             {
-              "href" : "http://192.168.56.101:8080/api/v1/clusters/c1/upgrades/42/upgrade_groups/110/upgrade_items/1/tasks/194",
+              "href" : "http://162.216.151.112:8080/api/v1/clusters/c1/upgrades/26/upgrade_groups/26/upgrade_items/3/tasks/173",
               "Tasks" : {
-                "attempt_cnt" : 0,
                 "cluster_name" : "c1",
-                "command" : "ACTIONEXECUTE",
-                "command_detail" : "Completing NAMENODE on dev01.hortonworks.com",
-                "end_time" : -1,
-                "error_log" : "/var/lib/ambari-agent/data/errors-194.txt",
-                "exit_code" : 999,
-                "host_name" : "dev01.hortonworks.com",
-                "id" : 194,
-                "output_log" : "/var/lib/ambari-agent/data/output-194.txt",
-                "request_id" : 42,
-                "role" : "ru_execute_tasks",
+                "command_detail" : "RESTART ZOOKEEPER/ZOOKEEPER_SERVER",
+                "id" : 173,
+                "request_id" : 26,
                 "stage_id" : 3,
-                "start_time" : -1,
-                "status" : "PENDING",
-                "stderr" : "",
-                "stdout" : "",
-                "structured_out" : null
+                "status" : "COMPLETED"
               }
-            },
+            }
+          ]
+        },
+        {
+          "href" : "http://162.216.151.112:8080/api/v1/clusters/c1/upgrades/26/upgrade_groups/26/upgrade_items/4",
+          "UpgradeItem" : {
+            "cluster_host_info" : "{\"all_hosts\":[\"tkach-2.c.pramod-thangali.internal\",\"tkach-1.c.pramod-thangali.internal\",\"tkach-3.c.pramod-thangali.internal\"],\"namenode_host\":[\"0,1\"],\"zkfc_hosts\":[\"0,1\"],\"slave_hosts\":[\"2\"],\"ambari_server_host\":[\"tkach-1.c.pramod-thangali.internal\"],\"zookeeper_hosts\":[\"0-2\"],\"all_ping_ports\":[\"8670:0-2\"],\"journalnode_hosts\":[\"0-2\"]}",
+            "cluster_name" : "c1",
+            "command_params" : "{\"version\":\"2.2.1.0-2191\"}",
+            "context" : "Service Check ZOOKEEPER",
+            "end_time" : 0,
+            "group_id" : 26,
+            "host_params" : "{\"ambari_db_rca_driver\":\"org.postgresql.Driver\",\"ambari_db_rca_password\":\"mapred\",\"ambari_db_rca_url\":\"jdbc:postgresql://tkach-1.c.pramod-thangali.internal/ambarirca\",\"ambari_db_rca_username\":\"mapred\",\"db_driver_filename\":\"mysql-connector-java.jar\",\"db_name\":\"ambari\",\"java_home\":\"/usr/jdk64/jdk1.7.0_67\",\"jce_name\":\"UnlimitedJCEPolicyJDK7.zip\",\"jdk_location\":\"http://tkach-1.c.pramod-thangali.internal:8080/resources/\",\"jdk_name\":\"jdk-7u67-linux-x64.tar.gz\",\"mysql_jdbc_url\":\"http://tkach-1.c.pramod-thangali.internal:8080/resources//mysql-connector-java.jar\",\"oracle_jdbc_url\":\"http://tkach-1.c.pramod-thangali.internal:8080/resources//ojdbc6.jar\",\"stack_name\":\"HDP\",\"stack_version\":\"2.2\"}",
+            "log_info" : null,
+            "progress_percent" : 100.0,
+            "request_id" : 26,
+            "skippable" : false,
+            "stage_id" : 4,
+            "start_time" : 1420802938991,
+            "status" : "FAILED"
+          },
+          "tasks" : [
             {
-              "href" : "http://192.168.56.101:8080/api/v1/clusters/c1/upgrades/42/upgrade_groups/110/upgrade_items/1/tasks/195",
+              "href" : "http://162.216.151.112:8080/api/v1/clusters/c1/upgrades/26/upgrade_groups/26/upgrade_items/4/tasks/174",
               "Tasks" : {
-                "attempt_cnt" : 0,
                 "cluster_name" : "c1",
-                "command" : "ACTIONEXECUTE",
-                "command_detail" : "Preparing DATANODE on dev01.hortonworks.com",
-                "end_time" : -1,
-                "error_log" : "/var/lib/ambari-agent/data/errors-195.txt",
-                "exit_code" : 999,
-                "host_name" : "dev01.hortonworks.com",
-                "id" : 195,
-                "output_log" : "/var/lib/ambari-agent/data/output-195.txt",
-                "request_id" : 42,
-                "role" : "ru_execute_tasks",
+                "command_detail" : "SERVICE_CHECK ZOOKEEPER",
+                "id" : 174,
+                "request_id" : 26,
                 "stage_id" : 4,
-                "start_time" : -1,
-                "status" : "PENDING",
-                "stderr" : "",
-                "stdout" : "",
-                "structured_out" : null
+                "status" : "FAILED"
               }
-            },
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "href" : "http://162.216.151.112:8080/api/v1/clusters/c1/upgrades/26/upgrade_groups/27",
+      "UpgradeGroup" : {
+        "group_id" : 27,
+        "name" : "CORE_MASTER",
+        "progress_percent" : 33.57142857142858,
+        "request_id" : 26,
+        "status" : "IN_PROGRESS",
+        "title" : "Core Masters"
+      },
+      "upgrade_items" : [
+        {
+          "href" : "http://162.216.151.112:8080/api/v1/clusters/c1/upgrades/26/upgrade_groups/27/upgrade_items/5",
+          "UpgradeItem" : {
+            "cluster_host_info" : "{\"all_hosts\":[\"tkach-2.c.pramod-thangali.internal\",\"tkach-1.c.pramod-thangali.internal\",\"tkach-3.c.pramod-thangali.internal\"],\"namenode_host\":[\"0,1\"],\"zkfc_hosts\":[\"0,1\"],\"slave_hosts\":[\"2\"],\"ambari_server_host\":[\"tkach-1.c.pramod-thangali.internal\"],\"zookeeper_hosts\":[\"0-2\"],\"all_ping_ports\":[\"8670:0-2\"],\"journalnode_hosts\":[\"0-2\"]}",
+            "cluster_name" : "c1",
+            "command_params" : "{\"restart_type\":\"rolling_upgrade\",\"version\":\"2.2.1.0-2191\"}",
+            "context" : "Restarting JOURNALNODE on tkach-2.c.pramod-thangali.internal",
+            "end_time" : 0,
+            "group_id" : 27,
+            "host_params" : "{\"ambari_db_rca_driver\":\"org.postgresql.Driver\",\"ambari_db_rca_password\":\"mapred\",\"ambari_db_rca_url\":\"jdbc:postgresql://tkach-1.c.pramod-thangali.internal/ambarirca\",\"ambari_db_rca_username\":\"mapred\",\"db_driver_filename\":\"mysql-connector-java.jar\",\"db_name\":\"ambari\",\"java_home\":\"/usr/jdk64/jdk1.7.0_67\",\"jce_name\":\"UnlimitedJCEPolicyJDK7.zip\",\"jdk_location\":\"http://tkach-1.c.pramod-thangali.internal:8080/resources/\",\"jdk_name\":\"jdk-7u67-linux-x64.tar.gz\",\"mysql_jdbc_url\":\"http://tkach-1.c.pramod-thangali.internal:8080/resources//mysql-connector-java.jar\",\"oracle_jdbc_url\":\"http://tkach-1.c.pramod-thangali.internal:8080/resources//ojdbc6.jar\",\"stack_name\":\"HDP\",\"stack_version\":\"2.2\"}",
+            "log_info" : null,
+            "progress_percent" : 0.0,
+            "request_id" : 26,
+            "skippable" : false,
+            "stage_id" : 5,
+            "start_time" : -1,
+            "status" : "PENDING"
+          },
+          "tasks" : [
             {
-              "href" : "http://192.168.56.101:8080/api/v1/clusters/c1/upgrades/42/upgrade_groups/110/upgrade_items/1/tasks/196",
+              "href" : "http://162.216.151.112:8080/api/v1/clusters/c1/upgrades/26/upgrade_groups/27/upgrade_items/5/tasks/175",
               "Tasks" : {
-                "attempt_cnt" : 0,
                 "cluster_name" : "c1",
-                "command" : "CUSTOM_COMMAND",
-                "command_detail" : "RESTART HDFS/DATANODE",
-                "custom_command_name" : "RESTART",
-                "end_time" : -1,
-                "error_log" : "/var/lib/ambari-agent/data/errors-196.txt",
-                "exit_code" : 999,
-                "host_name" : "dev01.hortonworks.com",
-                "id" : 196,
-                "output_log" : "/var/lib/ambari-agent/data/output-196.txt",
-                "request_id" : 42,
-                "role" : "DATANODE",
+                "command_detail" : "RESTART HDFS/JOURNALNODE",
+                "id" : 175,
+                "request_id" : 26,
                 "stage_id" : 5,
-                "start_time" : -1,
-                "status" : "PENDING",
-                "stderr" : "",
-                "stdout" : "",
-                "structured_out" : null
+                "status" : "PENDING"
               }
             }
           ]
         },
         {
-          "href" : "http://192.168.56.101:8080/api/v1/clusters/c1/upgrades/42/upgrade_groups/110/upgrade_items/2",
+          "href" : "http://162.216.151.112:8080/api/v1/clusters/c1/upgrades/26/upgrade_groups/27/upgrade_items/6",
           "UpgradeItem" : {
-            "cluster_host_info" : "{\"all_hosts\":[\"dev01.hortonworks.com\"],\"namenode_host\":[\"0\"],\"snamenode_host\":[\"0\"],\"slave_hosts\":[\"0\"],\"ambari_server_host\":[\"dev01.hortonworks.com\"],\"all_ping_ports\":[\"8670:0\"]}",
+            "cluster_host_info" : "{\"all_hosts\":[\"tkach-2.c.pramod-thangali.internal\",\"tkach-1.c.pramod-thangali.internal\",\"tkach-3.c.pramod-thangali.internal\"],\"namenode_host\":[\"0,1\"],\"zkfc_hosts\":[\"0,1\"],\"slave_hosts\":[\"2\"],\"ambari_server_host\":[\"tkach-1.c.pramod-thangali.internal\"],\"zookeeper_hosts\":[\"0-2\"],\"all_ping_ports\":[\"8670:0-2\"],\"journalnode_hosts\":[\"0-2\"]}",
             "cluster_name" : "c1",
-            "command_params" : "{}",
-            "context" : "Restarting NAMENODE on dev01.hortonworks.com",
-            "end_time" : 0,
-            "group_id" : 110,
-            "host_params" : "{\"ambari_db_rca_driver\":\"org.postgresql.Driver\",\"ambari_db_rca_password\":\"mapred\",\"ambari_db_rca_url\":\"jdbc:postgresql://dev01.hortonworks.com/ambarirca\",\"ambari_db_rca_username\":\"mapred\",\"db_driver_filename\":\"mysql-connector-java.jar\",\"db_name\":\"ambari\",\"java_home\":\"/usr/jdk64/jdk1.7.0_67\",\"jce_name\":\"UnlimitedJCEPolicyJDK7.zip\",\"jdk_location\":\"http://dev01.hortonworks.com:8080/resources/\",\"jdk_name\":\"jdk-7u67-linux-x64.tar.gz\",\"mysql_jdbc_url\":\"http://dev01.hortonworks.com:8080/resources//mysql-connector-java.jar\",\"oracle_jdbc_url\":\"http://dev01.hortonworks.com:8080/resources//ojdbc6.jar\",\"stack_name\":\"HDP\",\"stack_version\":\"2.2\"}",
+            "command_params" : "{\"restart_type\":\"rolling_upgrade\",\"version\":\"2.2.1.0-2191\"}",
+            "context" : "Restarting JOURNALNODE on tkach-1.c.pramod-thangali.internal",
+            "end_time" : 1420803018815,
+            "group_id" : 27,
+            "host_params" : "{\"ambari_db_rca_driver\":\"org.postgresql.Driver\",\"ambari_db_rca_password\":\"mapred\",\"ambari_db_rca_url\":\"jdbc:postgresql://tkach-1.c.pramod-thangali.internal/ambarirca\",\"ambari_db_rca_username\":\"mapred\",\"db_driver_filename\":\"mysql-connector-java.jar\",\"db_name\":\"ambari\",\"java_home\":\"/usr/jdk64/jdk1.7.0_67\",\"jce_name\":\"UnlimitedJCEPolicyJDK7.zip\",\"jdk_location\":\"http://tkach-1.c.pramod-thangali.internal:8080/resources/\",\"jdk_name\":\"jdk-7u67-linux-x64.tar.gz\",\"mysql_jdbc_url\":\"http://tkach-1.c.pramod-thangali.internal:8080/resources//mysql-connector-java.jar\",\"oracle_jdbc_url\":\"http://tkach-1.c.pramod-thangali.internal:8080/resources//ojdbc6.jar\",\"stack_name\":\"HDP\",\"stack_version\":\"2.2\"}",
             "log_info" : null,
-            "progress_percent" : 35.0,
-            "request_id" : 42,
-            "stage_id" : 2,
-            "start_time" : 1418134053610,
-            "status" : "IN_PROGRESS"
+            "progress_percent" : 100.0,
+            "request_id" : 26,
+            "skippable" : false,
+            "stage_id" : 6,
+            "start_time" : 1420802999362,
+            "status" : "COMPLETED"
           },
           "tasks" : [
             {
-              "href" : "http://192.168.56.101:8080/api/v1/clusters/c1/upgrades/42/upgrade_groups/110/upgrade_items/2/tasks/192",
-              "Tasks" : {
-                "attempt_cnt" : 1,
-                "cluster_name" : "c1",
-                "command" : "ACTIONEXECUTE",
-                "command_detail" : "Preparing NAMENODE on dev01.hortonworks.com",
-                "end_time" : 1418134044126,
-                "error_log" : "/var/lib/ambari-agent/data/errors-192.txt",
-                "exit_code" : 0,
-                "host_name" : "dev01.hortonworks.com",
-                "id" : 182,
-                "output_log" : "/var/lib/ambari-agent/data/output-192.txt",
-                "request_id" : 42,
-                "role" : "ru_execute_tasks",
-                "stage_id" : 1,
-                "start_time" : 1418134043584,
-                "status" : "COMPLETED",
-                "stderr" : "None",
-                "stdout" : "2014-12-09 06:07:23,948 - Task: dev01.hortonworks.com",
-                "structured_out" : { }
-              }
-            },
-            {
-              "href" : "http://192.168.56.101:8080/api/v1/clusters/c1/upgrades/42/upgrade_groups/110/upgrade_items/2/tasks/193",
-              "Tasks" : {
-                "attempt_cnt" : 1,
-                "cluster_name" : "c1",
-                "command" : "CUSTOM_COMMAND",
-                "command_detail" : "RESTART HDFS/NAMENODE",
-                "custom_command_name" : "RESTART",
-                "end_time" : -1,
-                "error_log" : "/var/lib/ambari-agent/data/errors-193.txt",
-                "exit_code" : 777,
-                "host_name" : "dev01.hortonworks.com",
-                "id" : 183,
-                "output_log" : "/var/lib/ambari-agent/data/output-193.txt",
-                "request_id" : 42,
-                "role" : "NAMENODE",
-                "stage_id" : 2,
-                "start_time" : 1418134053610,
-                "status" : "IN_PROGRESS",
-                "stderr" : "",
-                "stdout" : "",
-                "structured_out" : { }
-              }
-            },
-            {
-              "href" : "http://192.168.56.101:8080/api/v1/clusters/c1/upgrades/42/upgrade_groups/110/upgrade_items/2/tasks/194",
-              "Tasks" : {
-                "attempt_cnt" : 0,
-                "cluster_name" : "c1",
-                "command" : "ACTIONEXECUTE",
-                "command_detail" : "Completing NAMENODE on dev01.hortonworks.com",
-                "end_time" : -1,
-                "error_log" : "/var/lib/ambari-agent/data/errors-194.txt",
-                "exit_code" : 999,
-                "host_name" : "dev01.hortonworks.com",
-                "id" : 184,
-                "output_log" : "/var/lib/ambari-agent/data/output-194.txt",
-                "request_id" : 42,
-                "role" : "ru_execute_tasks",
-                "stage_id" : 3,
-                "start_time" : -1,
-                "status" : "PENDING",
-                "stderr" : "",
-                "stdout" : "",
-                "structured_out" : null
-              }
-            },
-            {
-              "href" : "http://192.168.56.101:8080/api/v1/clusters/c1/upgrades/42/upgrade_groups/110/upgrade_items/2/tasks/195",
+              "href" : "http://162.216.151.112:8080/api/v1/clusters/c1/upgrades/26/upgrade_groups/27/upgrade_items/6/tasks/176",
               "Tasks" : {
-                "attempt_cnt" : 0,
                 "cluster_name" : "c1",
-                "command" : "ACTIONEXECUTE",
-                "command_detail" : "Preparing DATANODE on dev01.hortonworks.com",
-                "end_time" : -1,
-                "error_log" : "/var/lib/ambari-agent/data/errors-195.txt",
-                "exit_code" : 999,
-                "host_name" : "dev01.hortonworks.com",
-                "id" : 185,
-                "output_log" : "/var/lib/ambari-agent/data/output-195.txt",
-                "request_id" : 42,
-                "role" : "ru_execute_tasks",
-                "stage_id" : 4,
-                "start_time" : -1,
-                "status" : "PENDING",
-                "stderr" : "",
-                "stdout" : "",
-                "structured_out" : null
+                "command_detail" : "RESTART HDFS/JOURNALNODE",
+                "id" : 176,
+                "request_id" : 26,
+                "stage_id" : 6,
+                "status" : "COMPLETED"
               }
-            },
+            }
+          ]
+        },
+        {
+          "href" : "http://162.216.151.112:8080/api/v1/clusters/c1/upgrades/26/upgrade_groups/27/upgrade_items/7",
+          "UpgradeItem" : {
+            "cluster_host_info" : "{\"all_hosts\":[\"tkach-2.c.pramod-thangali.internal\",\"tkach-1.c.pramod-thangali.internal\",\"tkach-3.c.pramod-thangali.internal\"],\"namenode_host\":[\"0,1\"],\"zkfc_hosts\":[\"0,1\"],\"slave_hosts\":[\"2\"],\"ambari_server_host\":[\"tkach-1.c.pramod-thangali.internal\"],\"zookeeper_hosts\":[\"0-2\"],\"all_ping_ports\":[\"8670:0-2\"],\"journalnode_hosts\":[\"0-2\"]}",
+            "cluster_name" : "c1",
+            "command_params" : "{\"restart_type\":\"rolling_upgrade\",\"version\":\"2.2.1.0-2191\"}",
+            "context" : "Restarting JOURNALNODE on tkach-3.c.pramod-thangali.internal",
+            "end_time" : 1420803033456,
+            "group_id" : 27,
+            "host_params" : "{\"ambari_db_rca_driver\":\"org.postgresql.Driver\",\"ambari_db_rca_password\":\"mapred\",\"ambari_db_rca_url\":\"jdbc:postgresql://tkach-1.c.pramod-thangali.internal/ambarirca\",\"ambari_db_rca_username\":\"mapred\",\"db_driver_filename\":\"mysql-connector-java.jar\",\"db_name\":\"ambari\",\"java_home\":\"/usr/jdk64/jdk1.7.0_67\",\"jce_name\":\"UnlimitedJCEPolicyJDK7.zip\",\"jdk_location\":\"http://tkach-1.c.pramod-thangali.internal:8080/resources/\",\"jdk_name\":\"jdk-7u67-linux-x64.tar.gz\",\"mysql_jdbc_url\":\"http://tkach-1.c.pramod-thangali.internal:8080/resources//mysql-connector-java.jar\",\"oracle_jdbc_url\":\"http://tkach-1.c.pramod-thangali.internal:8080/resources//ojdbc6.jar\",\"stack_name\":\"HDP\",\"stack_version\":\"2.2\"}",
+            "log_info" : null,
+            "progress_percent" : 100.0,
+            "request_id" : 26,
+            "skippable" : false,
+            "stage_id" : 7,
+            "start_time" : 1420803019500,
+            "status" : "COMPLETED"
+          },
+          "tasks" : [
             {
-              "href" : "http://192.168.56.101:8080/api/v1/clusters/c1/upgrades/42/upgrade_groups/110/upgrade_items/2/tasks/196",
+              "href" : "http://162.216.151.112:8080/api/v1/clusters/c1/upgrades/26/upgrade_groups/27/upgrade_items/7/tasks/177",
               "Tasks" : {
-                "attempt_cnt" : 0,
                 "cluster_name" : "c1",
-                "command" : "CUSTOM_COMMAND",
-                "command_detail" : "RESTART HDFS/DATANODE",
-                "custom_command_name" : "RESTART",
-                "end_time" : -1,
-                "error_log" : "/var/lib/ambari-agent/data/errors-196.txt",
-                "exit_code" : 999,
-                "host_name" : "dev01.hortonworks.com",
-                "id" : 186,
-                "output_log" : "/var/lib/ambari-agent/data/output-196.txt",
-                "request_id" : 42,
-                "role" : "DATANODE",
-                "stage_id" : 5,
-                "start_time" : -1,
-                "status" : "PENDING",
-                "stderr" : "",
-                "stdout" : "",
-                "structured_out" : null
+                "command_detail" : "RESTART HDFS/JOURNALNODE",
+                "id" : 177,
+                "request_id" : 26,
+                "stage_id" : 7,
+                "status" : "COMPLETED"
               }
             }
           ]
         },
         {
-          "href" : "http://192.168.56.101:8080/api/v1/clusters/c1/upgrades/42/upgrade_groups/110/upgrade_items/3",
+          "href" : "http://162.216.151.112:8080/api/v1/clusters/c1/upgrades/26/upgrade_groups/27/upgrade_items/8",
           "UpgradeItem" : {
-            "cluster_host_info" : "{}",
+            "cluster_host_info" : "{\"all_hosts\":[\"tkach-2.c.pramod-thangali.internal\",\"tkach-1.c.pramod-thangali.internal\",\"tkach-3.c.pramod-thangali.internal\"],\"namenode_host\":[\"0,1\"],\"zkfc_hosts\":[\"0,1\"],\"slave_hosts\":[\"2\"],\"ambari_server_host\":[\"tkach-1.c.pramod-thangali.internal\"],\"zookeeper_hosts\":[\"0-2\"],\"all_ping_ports\":[\"8670:0-2\"],\"journalnode_hosts\":[\"0-2\"]}",
             "cluster_name" : "c1",
-            "command_params" : "{}",
-            "context" : "Completing NAMENODE on dev01.hortonworks.com",
+            "command_params" : "{\"hooks_folder\":\"HDP/2.0.6/hooks\",\"service_package_folder\":\"common-services/HDFS/2.1.0.2.0/package\",\"tasks\":\"[{\\\"type\\\":\\\"EXECUTE\\\",\\\"hosts\\\":\\\"master\\\",\\\"script\\\":\\\"scripts/namenode.py\\\",\\\"function\\\":\\\"prepare_rolling_upgrade\\\"}]\",\"version\":\"2.2.1.0-2191\"}",
+            "context" : "Preparing NAMENODE on tkach-2.c.pramod-thangali.internal",
             "end_time" : 0,
-            "group_id" : 110,
-            "host_params" : "{\"jdk_location\":\"http://dev01.hortonworks.com:8080/resources/\"}",
+            "group_id" : 27,
+            "host_params" : "{\"ambari_db_rca_driver\":\"org.postgresql.Driver\",\"ambari_db_rca_password\":\"mapred\",\"ambari_db_rca_url\":\"jdbc:postgresql://tkach-1.c.pramod-thangali.internal/ambarirca\",\"ambari_db_rca_username\":\"mapred\",\"db_driver_filename\":\"mysql-connector-java.jar\",\"db_name\":\"ambari\",\"java_home\":\"/usr/jdk64/jdk1.7.0_67\",\"jce_name\":\"UnlimitedJCEPolicyJDK7.zip\",\"jdk_location\":\"http://tkach-1.c.pramod-thangali.internal:8080/resources/\",\"jdk_name\":\"jdk-7u67-linux-x64.tar.gz\",\"mysql_jdbc_url\":\"http://tkach-1.c.pramod-thangali.internal:8080/resources//mysql-connector-java.jar\",\"oracle_jdbc_url\":\"http://tkach-1.c.pramod-thangali.internal:8080/resources//ojdbc6.jar\",\"stack_name\":\"HDP\",\"stack_version\":\"2.2\"}",
             "log_info" : null,
             "progress_percent" : 0.0,
-            "request_id" : 42,
-            "stage_id" : 3,
+            "request_id" : 26,
+            "skippable" : false,
+            "stage_id" : 8,
             "start_time" : -1,
             "status" : "PENDING"
           },
           "tasks" : [
             {
-              "href" : "http://192.168.56.101:8080/api/v1/clusters/c1/upgrades/42/upgrade_groups/110/upgrade_items/3/tasks/192",
+              "href" : "http://162.216.151.112:8080/api/v1/clusters/c1/upgrades/26/upgrade_groups/27/upgrade_items/8/tasks/178",
               "Tasks" : {
-                "attempt_cnt" : 1,
                 "cluster_name" : "c1",
-                "command" : "ACTIONEXECUTE",
-                "command_detail" : "Preparing NAMENODE on dev01.hortonworks.com",
-                "end_time" : 1418134044126,
-                "error_log" : "/var/lib/ambari-agent/data/errors-192.txt",
-                "exit_code" : 0,
-                "host_name" : "dev01.hortonworks.com",
-                "id" : 172,
-                "output_log" : "/var/lib/ambari-agent/data/output-192.txt",
-                "request_id" : 42,
-                "role" : "ru_execute_tasks",
-                "stage_id" : 1,
-                "start_time" : 1418134043584,
-                "status" : "COMPLETED",
-                "stderr" : "None",
-                "stdout" : "2014-12-09 06:07:23,948 - Task: dev01.hortonworks.com",
-                "structured_out" : { }
+                "command_detail" : "Preparing NAMENODE on tkach-2.c.pramod-thangali.internal",
+                "id" : 178,
+                "request_id" : 26,
+                "stage_id" : 8,
+                "status" : "PENDING"
               }
-            },
+            }
+          ]
+        },
+        {
+          "href" : "http://162.216.151.112:8080/api/v1/clusters/c1/upgrades/26/upgrade_groups/27/upgrade_items/9",
+          "UpgradeItem" : {
+            "cluster_host_info" : "{\"all_hosts\":[\"tkach-2.c.pramod-thangali.internal\",\"tkach-1.c.pramod-thangali.internal\",\"tkach-3.c.pramod-thangali.internal\"],\"namenode_host\":[\"0,1\"],\"zkfc_hosts\":[\"0,1\"],\"slave_hosts\":[\"2\"],\"ambari_server_host\":[\"tkach-1.c.pramod-thangali.internal\"],\"zookeeper_hosts\":[\"0-2\"],\"all_ping_ports\":[\"8670:0-2\"],\"journalnode_hosts\":[\"0-2\"]}",
+            "cluster_name" : "c1",
+            "command_params" : "{\"restart_type\":\"rolling_upgrade\",\"version\":\"2.2.1.0-2191\"}",
+            "context" : "Restarting NAMENODE on tkach-2.c.pramod-thangali.internal",
+            "end_time" : 0,
+            "group_id" : 27,
+            "host_params" : "{\"ambari_db_rca_driver\":\"org.postgresql.Driver\",\"ambari_db_rca_password\":\"mapred\",\"ambari_db_rca_url\":\"jdbc:postgresql://tkach-1.c.pramod-thangali.internal/ambarirca\",\"ambari_db_rca_username\":\"mapred\",\"db_driver_filename\":\"mysql-connector-java.jar\",\"db_name\":\"ambari\",\"java_home\":\"/usr/jdk64/jdk1.7.0_67\",\"jce_name\":\"UnlimitedJCEPolicyJDK7.zip\",\"jdk_location\":\"http://tkach-1.c.pramod-thangali.internal:8080/resources/\",\"jdk_name\":\"jdk-7u67-linux-x64.tar.gz\",\"mysql_jdbc_url\":\"http://tkach-1.c.pramod-thangali.internal:8080/resources//mysql-connector-java.jar\",\"oracle_jdbc_url\":\"http://tkach-1.c.pramod-thangali.internal:8080/resources//ojdbc6.jar\",\"stack_name\":\"HDP\",\"stack_version\":\"2.2\"}",
+            "log_info" : null,
+            "progress_percent" : 0.0,
+            "request_id" : 26,
+            "skippable" : false,
+            "stage_id" : 9,
+            "start_time" : -1,
+            "status" : "PENDING"
+          },
+          "tasks" : [
             {
-              "href" : "http://192.168.56.101:8080/api/v1/clusters/c1/upgrades/42/upgrade_groups/110/upgrade_items/3/tasks/193",
+              "href" : "http://162.216.151.112:8080/api/v1/clusters/c1/upgrades/26/upgrade_groups/27/upgrade_items/9/tasks/179",
               "Tasks" : {
-                "attempt_cnt" : 1,
                 "cluster_name" : "c1",
-                "command" : "CUSTOM_COMMAND",
                 "command_detail" : "RESTART HDFS/NAMENODE",
-                "custom_command_name" : "RESTART",
-                "end_time" : -1,
-                "error_log" : "/var/lib/ambari-agent/data/errors-193.txt",
-                "exit_code" : 777,
-                "host_name" : "dev01.hortonworks.com",
-                "id" : 173,
-                "output_log" : "/var/lib/ambari-agent/data/output-193.txt",
-                "request_id" : 42,
-                "role" : "NAMENODE",
-                "stage_id" : 2,
-                "start_time" : 1418134053610,
-                "status" : "IN_PROGRESS",
-                "stderr" : "",
-                "stdout" : "",
-                "structured_out" : { }
+                "id" : 179,
+                "request_id" : 26,
+                "stage_id" : 9,
+                "status" : "PENDING"
               }
-            },
-            {
-              "href" : "http://192.168.56.101:8080/api/v1/clusters/c1/upgrades/42/upgrade_groups/110/upgrade_items/3/tasks/194",
-              "Tasks" : {
-                "attempt_cnt" : 0,
-                "cluster_name" : "c1",
-                "command" : "ACTIONEXECUTE",
-                "command_detail" : "Completing NAMENODE on dev01.hortonworks.com",
-                "end_time" : -1,
-                "error_log" : "/var/lib/ambari-agent/data/errors-194.txt",
-                "exit_code" : 999,
-                "host_name" : "dev01.hortonworks.com",
-                "id" : 174,
-                "output_log" : "/var/lib/ambari-agent/data/output-194.txt",
-                "request_id" : 42,
-                "role" : "ru_execute_tasks",
-                "stage_id" : 3,
-                "start_time" : -1,
-                "status" : "PENDING",
-                "stderr" : "",
-                "stdout" : "",
-                "structured_out" : null
-              }
-            },
+            }
+          ]
+        },
+        {
+          "href" : "http://162.216.151.112:8080/api/v1/clusters/c1/upgrades/26/upgrade_groups/27/upgrade_items/10",
+          "UpgradeItem" : {
+            "cluster_host_info" : "{\"all_hosts\":[\"tkach-2.c.pramod-thangali.internal\",\"tkach-1.c.pramod-thangali.internal\",\"tkach-3.c.pramod-thangali.internal\"],\"namenode_host\":[\"0,1\"],\"zkfc_hosts\":[\"0,1\"],\"slave_hosts\":[\"2\"],\"ambari_server_host\":[\"tkach-1.c.pramod-thangali.internal\"],\"zookeeper_hosts\":[\"0-2\"],\"all_ping_ports\":[\"8670:0-2\"],\"journalnode_hosts\":[\"0-2\"]}",
+            "cluster_name" : "c1",
+            "command_params" : "{\"restart_type\":\"rolling_upgrade\",\"version\":\"2.2.1.0-2191\"}",
+            "context" : "Restarting NAMENODE on tkach-1.c.pramod-thangali.internal",
+            "end_time" : 0,
+            "group_id" : 27,
+            "host_params" : "{\"ambari_db_rca_driver\":\"org.postgresql.Driver\",\"ambari_db_rca_password\":\"mapred\",\"ambari_db_rca_url\":\"jdbc:postgresql://tkach-1.c.pramod-thangali.internal/ambarirca\",\"ambari_db_rca_username\":\"mapred\",\"db_driver_filename\":\"mysql-connector-java.jar\",\"db_name\":\"ambari\",\"java_home\":\"/usr/jdk64/jdk1.7.0_67\",\"jce_name\":\"UnlimitedJCEPolicyJDK7.zip\",\"jdk_location\":\"http://tkach-1.c.pramod-thangali.internal:8080/resources/\",\"jdk_name\":\"jdk-7u67-linux-x64.tar.gz\",\"mysql_jdbc_url\":\"http://tkach-1.c.pramod-thangali.internal:8080/resources//mysql-connector-java.jar\",\"oracle_jdbc_url\":\"http://tkach-1.c.pramod-thangali.internal:8080/resources//ojdbc6.jar\",\"stack_name\":\"HDP\",\"stack_version\":\"2.2\"}",
+            "log_info" : null,
+            "progress_percent" : 35.0,
+            "request_id" : 26,
+            "skippable" : false,
+            "stage_id" : 10,
+            "start_time" : 1420803704259,
+            "status" : "IN_PROGRESS"
+          },
+          "tasks" : [
             {
-              "href" : "http://192.168.56.101:8080/api/v1/clusters/c1/upgrades/42/upgrade_groups/110/upgrade_items/3/tasks/195",
+              "href" : "http://162.216.151.112:8080/api/v1/clusters/c1/upgrades/26/upgrade_groups/27/upgrade_items/10/tasks/180",
               "Tasks" : {
-                "attempt_cnt" : 0,
                 "cluster_name" : "c1",
-                "command" : "ACTIONEXECUTE",
-                "command_detail" : "Preparing DATANODE on dev01.hortonworks.com",
-                "end_time" : -1,
-                "error_log" : "/var/lib/ambari-agent/data/errors-195.txt",
-                "exit_code" : 999,
-                "host_name" : "dev01.hortonworks.com",
-                "id" : 175,
-                "output_log" : "/var/lib/ambari-agent/data/output-195.txt",
-                "request_id" : 42,
-                "role" : "ru_execute_tasks",
-                "stage_id" : 4,
-                "start_time" : -1,
-                "status" : "PENDING",
-                "stderr" : "",
-                "stdout" : "",
-                "structured_out" : null
+                "command_detail" : "RESTART HDFS/NAMENODE",
+                "id" : 180,
+                "request_id" : 26,
+                "stage_id" : 10,
+                "status" : "IN_PROGRESS"
               }
-            },
+            }
+          ]
+        },
+        {
+          "href" : "http://162.216.151.112:8080/api/v1/clusters/c1/upgrades/26/upgrade_groups/27/upgrade_items/11",
+          "UpgradeItem" : {
+            "cluster_host_info" : "{\"all_hosts\":[\"tkach-2.c.pramod-thangali.internal\",\"tkach-1.c.pramod-thangali.internal\",\"tkach-3.c.pramod-thangali.internal\"],\"namenode_host\":[\"0,1\"],\"zkfc_hosts\":[\"0,1\"],\"slave_hosts\":[\"2\"],\"ambari_server_host\":[\"tkach-1.c.pramod-thangali.internal\"],\"zookeeper_hosts\":[\"0-2\"],\"all_ping_ports\":[\"8670:0-2\"],\"journalnode_hosts\":[\"0-2\"]}",
+            "cluster_name" : "c1",
+            "command_params" : "{\"version\":\"2.2.1.0-2191\"}",
+            "context" : "Service Check HDFS",
+            "end_time" : 0,
+            "group_id" : 27,
+            "host_params" : "{\"ambari_db_rca_driver\":\"org.postgresql.Driver\",\"ambari_db_rca_password\":\"mapred\",\"ambari_db_rca_url\":\"jdbc:postgresql://tkach-1.c.pramod-thangali.internal/ambarirca\",\"ambari_db_rca_username\":\"mapred\",\"db_driver_filename\":\"mysql-connector-java.jar\",\"db_name\":\"ambari\",\"java_home\":\"/usr/jdk64/jdk1.7.0_67\",\"jce_name\":\"UnlimitedJCEPolicyJDK7.zip\",\"jdk_location\":\"http://tkach-1.c.pramod-thangali.internal:8080/resources/\",\"jdk_name\":\"jdk-7u67-linux-x64.tar.gz\",\"mysql_jdbc_url\":\"http://tkach-1.c.pramod-thangali.internal:8080/resources//mysql-connector-java.jar\",\"oracle_jdbc_url\":\"http://tkach-1.c.pramod-thangali.internal:8080/resources//ojdbc6.jar\",\"stack_name\":\"HDP\",\"stack_version\":\"2.2\"}",
+            "log_info" : null,
+            "progress_percent" : 0.0,
+            "request_id" : 26,
+            "skippable" : false,
+            "stage_id" : 11,
+            "start_time" : -1,
+            "status" : "PENDING"
+          },
+          "tasks" : [
             {
-              "href" : "http://192.168.56.101:8080/api/v1/clusters/c1/upgrades/42/upgrade_groups/110/upgrade_items/3/tasks/196",
+              "href" : "http://162.216.151.112:8080/api/v1/clusters/c1/upgrades/26/upgrade_groups/27/upgrade_items/11/tasks/181",
               "Tasks" : {
-                "attempt_cnt" : 0,
                 "cluster_name" : "c1",
-                "command" : "CUSTOM_COMMAND",
-                "command_detail" : "RESTART HDFS/DATANODE",
-                "custom_command_name" : "RESTART",
-                "end_time" : -1,
-                "error_log" : "/var/lib/ambari-agent/data/errors-196.txt",
-                "exit_code" : 999,
-                "host_name" : "dev01.hortonworks.com",
-                "id" : 176,
-                "output_log" : "/var/lib/ambari-agent/data/output-196.txt",
-                "request_id" : 42,
-                "role" : "DATANODE",
-                "stage_id" : 5,
-                "start_time" : -1,
-                "status" : "PENDING",
-                "stderr" : "",
-                "stdout" : "",
-                "structured_out" : null
+                "command_detail" : "SERVICE_CHECK HDFS",
+                "id" : 181,
+                "request_id" : 26,
+                "stage_id" : 11,
+                "status" : "PENDING"
               }
             }
           ]
@@ -464,286 +406,358 @@
       ]
     },
     {
-      "href" : "http://192.168.56.101:8080/api/v1/clusters/c1/upgrades/42/upgrade_groups/111",
+      "href" : "http://162.216.151.112:8080/api/v1/clusters/c1/upgrades/26/upgrade_groups/28",
       "UpgradeGroup" : {
-        "group_id" : 111,
+        "group_id" : 28,
         "name" : "CORE_SLAVES",
         "progress_percent" : 0.0,
-        "request_id" : 42,
+        "request_id" : 26,
         "status" : "PENDING",
         "title" : "Core Slaves"
       },
       "upgrade_items" : [
         {
-          "href" : "http://192.168.56.101:8080/api/v1/clusters/c1/upgrades/42/upgrade_groups/111/upgrade_items/4",
+          "href" : "http://162.216.151.112:8080/api/v1/clusters/c1/upgrades/26/upgrade_groups/28/upgrade_items/12",
           "UpgradeItem" : {
-            "cluster_host_info" : "{}",
+            "cluster_host_info" : "{\"all_hosts\":[\"tkach-2.c.pramod-thangali.internal\",\"tkach-1.c.pramod-thangali.internal\",\"tkach-3.c.pramod-thangali.internal\"],\"namenode_host\":[\"0,1\"],\"zkfc_hosts\":[\"0,1\"],\"slave_hosts\":[\"2\"],\"ambari_server_host\":[\"tkach-1.c.pramod-thangali.internal\"],\"zookeeper_hosts\":[\"0-2\"],\"all_ping_ports\":[\"8670:0-2\"],\"journalnode_hosts\":[\"0-2\"]}",
             "cluster_name" : "c1",
-            "command_params" : "{}",
-            "context" : "Preparing DATANODE on dev01.hortonworks.com",
+            "command_params" : "{\"restart_type\":\"rolling_upgrade\",\"version\":\"2.2.1.0-2191\"}",
+            "context" : "Restarting  DATANODE on tkach-3.c.pramod-thangali.internal",
             "end_time" : 0,
-            "group_id" : 111,
-            "host_params" : "{\"jdk_location\":\"http://dev01.hortonworks.com:8080/resources/\"}",
+            "group_id" : 28,
+            "host_params" : "{\"ambari_db_rca_driver\":\"org.postgresql.Driver\",\"ambari_db_rca_password\":\"mapred\",\"ambari_db_rca_url\":\"jdbc:postgresql://tkach-1.c.pramod-thangali.internal/ambarirca\",\"ambari_db_rca_username\":\"mapred\",\"db_driver_filename\":\"mysql-connector-java.jar\",\"db_name\":\"ambari\",\"java_home\":\"/usr/jdk64/jdk1.7.0_67\",\"jce_name\":\"UnlimitedJCEPolicyJDK7.zip\",\"jdk_location\":\"http://tkach-1.c.pramod-thangali.internal:8080/resources/\",\"jdk_name\":\"jdk-7u67-linux-x64.tar.gz\",\"mysql_jdbc_url\":\"http://tkach-1.c.pramod-thangali.internal:8080/resources//mysql-connector-java.jar\",\"oracle_jdbc_url\":\"http://tkach-1.c.pramod-thangali.internal:8080/resources//ojdbc6.jar\",\"stack_name\":\"HDP\",\"stack_version\":\"2.2\"}",
             "log_info" : null,
             "progress_percent" : 0.0,
-            "request_id" : 42,
-            "stage_id" : 4,
+            "request_id" : 26,
+            "skippable" : false,
+            "stage_id" : 12,
             "start_time" : -1,
             "status" : "PENDING"
           },
           "tasks" : [
             {
-              "href" : "http://192.168.56.101:8080/api/v1/clusters/c1/upgrades/42/upgrade_groups/111/upgrade_items/4/tasks/192",
+              "href" : "http://162.216.151.112:8080/api/v1/clusters/c1/upgrades/26/upgrade_groups/28/upgrade_items/12/tasks/182",
               "Tasks" : {
-                "attempt_cnt" : 1,
                 "cluster_name" : "c1",
-                "command" : "ACTIONEXECUTE",
-                "command_detail" : "Preparing NAMENODE on dev01.hortonworks.com",
-                "end_time" : 1418134044126,
-                "error_log" : "/var/lib/ambari-agent/data/errors-192.txt",
-                "exit_code" : 0,
-                "host_name" : "dev01.hortonworks.com",
-                "id" : 162,
-                "output_log" : "/var/lib/ambari-agent/data/output-192.txt",
-                "request_id" : 42,
-                "role" : "ru_execute_tasks",
-                "stage_id" : 1,
-                "start_time" : 1418134043584,
-                "status" : "COMPLETED",
-                "stderr" : "None",
-                "stdout" : "2014-12-09 06:07:23,948 - Task: dev01.hortonworks.com",
-                "structured_out" : { }
+                "command_detail" : "RESTART HDFS/DATANODE",
+                "id" : 182,
+                "request_id" : 26,
+                "stage_id" : 12,
+                "status" : "PENDING"
               }
-            },
+            }
+          ]
+        },
+        {
+          "href" : "http://162.216.151.112:8080/api/v1/clusters/c1/upgrades/26/upgrade_groups/28/upgrade_items/13",
+          "UpgradeItem" : {
+            "cluster_host_info" : "{\"all_hosts\":[\"tkach-2.c.pramod-thangali.internal\",\"tkach-1.c.pramod-thangali.internal\",\"tkach-3.c.pramod-thangali.internal\"],\"namenode_host\":[\"0,1\"],\"zkfc_hosts\":[\"0,1\"],\"slave_hosts\":[\"2\"],\"ambari_server_host\":[\"tkach-1.c.pramod-thangali.internal\"],\"zookeeper_hosts\":[\"0-2\"],\"all_ping_ports\":[\"8670:0-2\"],\"journalnode_hosts\":[\"0-2\"]}",
+            "cluster_name" : "c1",
+            "command_params" : "{\"version\":\"2.2.1.0-2191\"}",
+            "context" : "Service Check HDFS",
+            "end_time" : 0,
+            "group_id" : 28,
+            "host_params" : "{\"ambari_db_rca_driver\":\"org.postgresql.Driver\",\"ambari_db_rca_password\":\"mapred\",\"ambari_db_rca_url\":\"jdbc:postgresql://tkach-1.c.pramod-thangali.internal/ambarirca\",\"ambari_db_rca_username\":\"mapred\",\"db_driver_filename\":\"mysql-connector-java.jar\",\"db_name\":\"ambari\",\"java_home\":\"/usr/jdk64/jdk1.7.0_67\",\"jce_name\":\"UnlimitedJCEPolicyJDK7.zip\",\"jdk_location\":\"http://tkach-1.c.pramod-thangali.internal:8080/resources/\",\"jdk_name\":\"jdk-7u67-linux-x64.tar.gz\",\"mysql_jdbc_url\":\"http://tkach-1.c.pramod-thangali.internal:8080/resources//mysql-connector-java.jar\",\"oracle_jdbc_url\":\"http://tkach-1.c.pramod-thangali.internal:8080/resources//ojdbc6.jar\",\"stack_name\":\"HDP\",\"stack_version\":\"2.2\"}",
+            "log_info" : null,
+            "progress_percent" : 0.0,
+            "request_id" : 26,
+            "skippable" : false,
+            "stage_id" : 13,
+            "start_time" : -1,
+            "status" : "PENDING"
+          },
+          "tasks" : [
             {
-              "href" : "http://192.168.56.101:8080/api/v1/clusters/c1/upgrades/42/upgrade_groups/111/upgrade_items/4/tasks/193",
+              "href" : "http://162.216.151.112:8080/api/v1/clusters/c1/upgrades/26/upgrade_groups/28/upgrade_items/13/tasks/183",
               "Tasks" : {
-                "attempt_cnt" : 1,
                 "cluster_name" : "c1",
-                "command" : "CUSTOM_COMMAND",
-                "command_detail" : "RESTART HDFS/NAMENODE",
-                "custom_command_name" : "RESTART",
-                "end_time" : -1,
-                "error_log" : "/var/lib/ambari-agent/data/errors-193.txt",
-                "exit_code" : 777,
-                "host_name" : "dev01.hortonworks.com",
-                "id" : 163,
-                "output_log" : "/var/lib/ambari-agent/data/output-193.txt",
-                "request_id" : 42,
-                "role" : "NAMENODE",
-                "stage_id" : 2,
-                "start_time" : 1418134053610,
-                "status" : "IN_PROGRESS",
-                "stderr" : "",
-                "stdout" : "",
-                "structured_out" : { }
+                "command_detail" : "SERVICE_CHECK HDFS",
+                "id" : 183,
+                "request_id" : 26,
+                "stage_id" : 13,
+                "status" : "PENDING"
               }
-            },
+            }
+          ]
+        },
+        {
+          "href" : "http://162.216.151.112:8080/api/v1/clusters/c1/upgrades/26/upgrade_groups/28/upgrade_items/14",
+          "UpgradeItem" : {
+            "cluster_host_info" : "{\"all_hosts\":[\"tkach-2.c.pramod-thangali.internal\",\"tkach-1.c.pramod-thangali.internal\",\"tkach-3.c.pramod-thangali.internal\"],\"namenode_host\":[\"0,1\"],\"zkfc_hosts\":[\"0,1\"],\"slave_hosts\":[\"2\"],\"ambari_server_host\":[\"tkach-1.c.pramod-thangali.internal\"],\"zookeeper_hosts\":[\"0-2\"],\"all_ping_ports\":[\"8670:0-2\"],\"journalnode_hosts\":[\"0-2\"]}",
+            "cluster_name" : "c1",
+            "command_params" : "{\"clusterName\":\"c1\",\"version\":\"2.2.1.0-2191\"}",
+            "context" : "Please run additional tests",
+            "end_time" : 0,
+            "group_id" : 28,
+            "host_params" : "{\"ambari_db_rca_driver\":\"org.postgresql.Driver\",\"ambari_db_rca_password\":\"mapred\",\"ambari_db_rca_url\":\"jdbc:postgresql://tkach-1.c.pramod-thangali.internal/ambarirca\",\"ambari_db_rca_username\":\"mapred\",\"db_driver_filename\":\"mysql-connector-java.jar\",\"db_name\":\"ambari\",\"java_home\":\"/usr/jdk64/jdk1.7.0_67\",\"jce_name\":\"UnlimitedJCEPolicyJDK7.zip\",\"jdk_location\":\"http://tkach-1.c.pramod-thangali.internal:8080/resources/\",\"jdk_name\":\"jdk-7u67-linux-x64.tar.gz\",\"mysql_jdbc_url\":\"http://tkach-1.c.pramod-thangali.internal:8080/resources//mysql-connector-java.jar\",\"oracle_jdbc_url\":\"http://tkach-1.c.pramod-thangali.internal:8080/resources//ojdbc6.jar\",\"stack_name\":\"HDP\",\"stack_version\":\"2.2\"}",
+            "log_info" : null,
+            "progress_percent" : 0.0,
+            "request_id" : 26,
+            "skippable" : false,
+            "stage_id" : 14,
+            "start_time" : -1,
+            "status" : "PENDING"
+          },
+          "tasks" : [
             {
-              "href" : "http://192.168.56.101:8080/api/v1/clusters/c1/upgrades/42/upgrade_groups/111/upgrade_items/4/tasks/194",
+              "href" : "http://162.216.151.112:8080/api/v1/clusters/c1/upgrades/26/upgrade_groups/28/upgrade_items/14/tasks/184",
               "Tasks" : {
-                "attempt_cnt" : 0,
                 "cluster_name" : "c1",
-                "command" : "ACTIONEXECUTE",
-                "command_detail" : "Completing NAMENODE on dev01.hortonworks.com",
-                "end_time" : -1,
-                "error_log" : "/var/lib/ambari-agent/data/errors-194.txt",
-                "exit_code" : 999,
-                "host_name" : "dev01.hortonworks.com",
-                "id" : 164,
-                "output_log" : "/var/lib/ambari-agent/data/output-194.txt",
-                "request_id" : 42,
-                "role" : "ru_execute_tasks",
-                "stage_id" : 3,
-                "start_time" : -1,
-                "status" : "PENDING",
-                "stderr" : "",
-                "stdout" : "",
-                "structured_out" : null
+                "command_detail" : "AMBARI_SERVER_ACTION EXECUTE",
+                "id" : 184,
+                "request_id" : 26,
+                "stage_id" : 14,
+                "status" : "PENDING"
               }
-            },
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "href" : "http://162.216.151.112:8080/api/v1/clusters/c1/upgrades/26/upgrade_groups/29",
+      "UpgradeGroup" : {
+        "group_id" : 29,
+        "name" : "CLIENTS",
+        "progress_percent" : 0.0,
+        "request_id" : 26,
+        "status" : "PENDING",
+        "title" : "Client Components"
+      },
+      "upgrade_items" : [
+        {
+          "href" : "http://162.216.151.112:8080/api/v1/clusters/c1/upgrades/26/upgrade_groups/29/upgrade_items/15",
+          "UpgradeItem" : {
+            "cluster_host_info" : "{\"all_hosts\":[\"tkach-2.c.pramod-thangali.internal\",\"tkach-1.c.pramod-thangali.internal\",\"tkach-3.c.pramod-thangali.internal\"],\"namenode_host\":[\"0,1\"],\"zkfc_hosts\":[\"0,1\"],\"slave_hosts\":[\"2\"],\"ambari_server_host\":[\"tkach-1.c.pramod-thangali.internal\"],\"zookeeper_hosts\":[\"0-2\"],\"all_ping_ports\":[\"8670:0-2\"],\"journalnode_hosts\":[\"0-2\"]}",
+            "cluster_name" : "c1",
+            "command_params" : "{\"restart_type\":\"rolling_upgrade\",\"version\":\"2.2.1.0-2191\"}",
+            "context" : "Restarting HDFS_CLIENT on tkach-2.c.pramod-thangali.internal",
+            "end_time" : 0,
+            "group_id" : 29,
+            "host_params" : "{\"ambari_db_rca_driver\":\"org.postgresql.Driver\",\"ambari_db_rca_password\":\"mapred\",\"ambari_db_rca_url\":\"jdbc:postgresql://tkach-1.c.pramod-thangali.internal/ambarirca\",\"ambari_db_rca_username\":\"mapred\",\"db_driver_filename\":\"mysql-connector-java.jar\",\"db_name\":\"ambari\",\"java_home\":\"/usr/jdk64/jdk1.7.0_67\",\"jce_name\":\"UnlimitedJCEPolicyJDK7.zip\",\"jdk_location\":\"http://tkach-1.c.pramod-thangali.internal:8080/resources/\",\"jdk_name\":\"jdk-7u67-linux-x64.tar.gz\",\"mysql_jdbc_url\":\"http://tkach-1.c.pramod-thangali.internal:8080/resources//mysql-connector-java.jar\",\"oracle_jdbc_url\":\"http://tkach-1.c.pramod-thangali.internal:8080/resources//ojdbc6.jar\",\"stack_name\":\"HDP\",\"stack_version\":\"2.2\"}",
+            "log_info" : null,
+            "progress_percent" : 0.0,
+            "request_id" : 26,
+            "skippable" : false,
+            "stage_id" : 15,
+            "start_time" : -1,
+            "status" : "PENDING"
+          },
+          "tasks" : [
             {
-              "href" : "http://192.168.56.101:8080/api/v1/clusters/c1/upgrades/42/upgrade_groups/111/upgrade_items/4/tasks/195",
+              "href" : "http://162.216.151.112:8080/api/v1/clusters/c1/upgrades/26/upgrade_groups/29/upgrade_items/15/tasks/185",
               "Tasks" : {
-                "attempt_cnt" : 0,
                 "cluster_name" : "c1",
-                "command" : "ACTIONEXECUTE",
-                "command_detail" : "Preparing DATANODE on dev01.hortonworks.com",
-                "end_time" : -1,
-                "error_log" : "/var/lib/ambari-agent/data/errors-195.txt",
-                "exit_code" : 999,
-                "host_name" : "dev01.hortonworks.com",
-                "id" : 165,
-                "output_log" : "/var/lib/ambari-agent/data/output-195.txt",
-                "request_id" : 42,
-                "role" : "ru_execute_tasks",
-                "stage_id" : 4,
-                "start_time" : -1,
-                "status" : "PENDING",
-                "stderr" : "",
-                "stdout" : "",
-                "structured_out" : null
+                "command_detail" : "RESTART HDFS/HDFS_CLIENT",
+                "id" : 185,
+                "request_id" : 26,
+                "stage_id" : 15,
+                "status" : "PENDING"
               }
-            },
+            }
+          ]
+        },
+        {
+          "href" : "http://162.216.151.112:8080/api/v1/clusters/c1/upgrades/26/upgrade_groups/29/upgrade_items/16",
+          "UpgradeItem" : {
+            "cluster_host_info" : "{\"all_hosts\":[\"tkach-2.c.pramod-thangali.internal\",\"tkach-1.c.pramod-thangali.internal\",\"tkach-3.c.pramod-thangali.internal\"],\"namenode_host\":[\"0,1\"],\"zkfc_hosts\":[\"0,1\"],\"slave_hosts\":[\"2\"],\"ambari_server_host\":[\"tkach-1.c.pramod-thangali.internal\"],\"zookeeper_hosts\":[\"0-2\"],\"all_ping_ports\":[\"8670:0-2\"],\"journalnode_hosts\":[\"0-2\"]}",
+            "cluster_name" : "c1",
+            "command_params" : "{\"restart_type\":\"rolling_upgrade\",\"version\":\"2.2.1.0-2191\"}",
+            "context" : "Restarting HDFS_CLIENT on tkach-1.c.pramod-thangali.internal",
+            "end_time" : 0,
+            "group_id" : 29,
+            "host_params" : "{\"ambari_db_rca_driver\":\"org.postgresql.Driver\",\"ambari_db_rca_password\":\"mapred\",\"ambari_db_rca_url\":\"jdbc:postgresql://tkach-1.c.pramod-thangali.internal/ambarirca\",\"ambari_db_rca_username\":\"mapred\",\"db_driver_filename\":\"mysql-connector-java.jar\",\"db_name\":\"ambari\",\"java_home\":\"/usr/jdk64/jdk1.7.0_67\",\"jce_name\":\"UnlimitedJCEPolicyJDK7.zip\",\"jdk_location\":\"http://tkach-1.c.pramod-thangali.internal:8080/resources/\",\"jdk_name\":\"jdk-7u67-linux-x64.tar.gz\",\"mysql_jdbc_url\":\"http://tkach-1.c.pramod-thangali.internal:8080/resources//mysql-connector-java.jar\",\"oracle_jdbc_url\":\"http://tkach-1.c.pramod-thangali.internal:8080/resources//ojdbc6.jar\",\"stack_name\":\"HDP\",\"stack_version\":\"2.2\"}",
+            "log_info" : null,
+            "progress_percent" : 0.0,
+            "request_id" : 26,
+            "skippable" : false,
+            "stage_id" : 16,
+            "start_time" : -1,
+            "status" : "PENDING"
+          },
+          "tasks" : [
             {
-              "href" : "http://192.168.56.101:8080/api/v1/clusters/c1/upgrades/42/upgrade_groups/111/upgrade_items/4/tasks/196",
+              "href" : "http://162.216.151.112:8080/api/v1/clusters/c1/upgrades/26/upgrade_groups/29/upgrade_items/16/tasks/186",
               "Tasks" : {
-                "attempt_cnt" : 0,
                 "cluster_name" : "c1",
-                "command" : "CUSTOM_COMMAND",
-                "command_detail" : "RESTART HDFS/DATANODE",
-                "custom_command_name" : "RESTART",
-                "end_time" : -1,
-                "error_log" : "/var/lib/ambari-agent/data/errors-196.txt",
-                "exit_code" : 999,
-                "host_name" : "dev01.hortonworks.com",
-                "id" : 166,
-                "output_log" : "/var/lib/ambari-agent/data/output-196.txt",
-                "request_id" : 42,
-                "role" : "DATANODE",
-                "stage_id" : 5,
-                "start_time" : -1,
-                "status" : "PENDING",
-                "stderr" : "",
-                "stdout" : "",
-                "structured_out" : null
+                "command_detail" : "RESTART HDFS/HDFS_CLIENT",
+                "id" : 186,
+                "request_id" : 26,
+                "stage_id" : 16,
+                "status" : "PENDING"
               }
             }
           ]
         },
         {
-          "href" : "http://192.168.56.101:8080/api/v1/clusters/c1/upgrades/42/upgrade_groups/111/upgrade_items/5",
+          "href" : "http://162.216.151.112:8080/api/v1/clusters/c1/upgrades/26/upgrade_groups/29/upgrade_items/17",
           "UpgradeItem" : {
-            "cluster_host_info" : "{\"all_hosts\":[\"dev01.hortonworks.com\"],\"namenode_host\":[\"0\"],\"snamenode_host\":[\"0\"],\"slave_hosts\":[\"0\"],\"ambari_server_host\":[\"dev01.hortonworks.com\"],\"all_ping_ports\":[\"8670:0\"]}",
+            "cluster_host_info" : "{\"all_hosts\":[\"tkach-2.c.pramod-thangali.internal\",\"tkach-1.c.pramod-thangali.internal\",\"tkach-3.c.pramod-thangali.internal\"],\"namenode_host\":[\"0,1\"],\"zkfc_hosts\":[\"0,1\"],\"slave_hosts\":[\"2\"],\"ambari_server_host\":[\"tkach-1.c.pramod-thangali.internal\"],\"zookeeper_hosts\":[\"0-2\"],\"all_ping_ports\":[\"8670:0-2\"],\"journalnode_hosts\":[\"0-2\"]}",
             "cluster_name" : "c1",
-            "command_params" : "{}",
-            "context" : "Restarting  DATANODE on dev01.hortonworks.com",
+            "command_params" : "{\"restart_type\":\"rolling_upgrade\",\"version\":\"2.2.1.0-2191\"}",
+            "context" : "Restarting HDFS_CLIENT on tkach-3.c.pramod-thangali.internal",
             "end_time" : 0,
-            "group_id" : 111,
-            "host_params" : "{\"ambari_db_rca_driver\":\"org.postgresql.Driver\",\"ambari_db_rca_password\":\"mapred\",\"ambari_db_rca_url\":\"jdbc:postgresql://dev01.hortonworks.com/ambarirca\",\"ambari_db_rca_username\":\"mapred\",\"db_driver_filename\":\"mysql-connector-java.jar\",\"db_name\":\"ambari\",\"java_home\":\"/usr/jdk64/jdk1.7.0_67\",\"jce_name\":\"UnlimitedJCEPolicyJDK7.zip\",\"jdk_location\":\"http://dev01.hortonworks.com:8080/resources/\",\"jdk_name\":\"jdk-7u67-linux-x64.tar.gz\",\"mysql_jdbc_url\":\"http://dev01.hortonworks.com:8080/resources//mysql-connector-java.jar\",\"oracle_jdbc_url\":\"http://dev01.hortonworks.com:8080/resources//ojdbc6.jar\",\"stack_name\":\"HDP\",\"stack_version\":\"2.2\"}",
+            "group_id" : 29,
+            "host_params" : "{\"ambari_db_rca_driver\":\"org.postgresql.Driver\",\"ambari_db_rca_password\":\"mapred\",\"ambari_db_rca_url\":\"jdbc:postgresql://tkach-1.c.pramod-thangali.internal/ambarirca\",\"ambari_db_rca_username\":\"mapred\",\"db_driver_filename\":\"mysql-connector-java.jar\",\"db_name\":\"ambari\",\"java_home\":\"/usr/jdk64/jdk1.7.0_67\",\"jce_name\":\"UnlimitedJCEPolicyJDK7.zip\",\"jdk_location\":\"http://tkach-1.c.pramod-thangali.internal:8080/resources/\",\"jdk_name\":\"jdk-7u67-linux-x64.tar.gz\",\"mysql_jdbc_url\":\"http://tkach-1.c.pramod-thangali.internal:8080/resources//mysql-connector-java.jar\",\"oracle_jdbc_url\":\"http://tkach-1.c.pramod-thangali.internal:8080/resources//ojdbc6.jar\",\"stack_name\":\"HDP\",\"stack_version\":\"2.2\"}",
             "log_info" : null,
             "progress_percent" : 0.0,
-            "request_id" : 42,
-            "stage_id" : 5,
+            "request_id" : 26,
+            "skippable" : false,
+            "stage_id" : 17,
             "start_time" : -1,
             "status" : "PENDING"
           },
           "tasks" : [
             {
-              "href" : "http://192.168.56.101:8080/api/v1/clusters/c1/upgrades/42/upgrade_groups/111/upgrade_items/5/tasks/192",
+              "href" : "http://162.216.151.112:8080/api/v1/clusters/c1/upgrades/26/upgrade_groups/29/upgrade_items/17/tasks/187",
               "Tasks" : {
-                "attempt_cnt" : 1,
                 "cluster_name" : "c1",
-                "command" : "ACTIONEXECUTE",
-                "command_detail" : "Preparing NAMENODE on dev01.hortonworks.com",
-                "end_time" : 1418134044126,
-                "error_log" : "/var/lib/ambari-agent/data/errors-192.txt",
-                "exit_code" : 0,
-                "host_name" : "dev01.hortonworks.com",
-                "id" : 152,
-                "output_log" : "/var/lib/ambari-agent/data/output-192.txt",
-                "request_id" : 42,
-                "role" : "ru_execute_tasks",
-                "stage_id" : 1,
-                "start_time" : 1418134043584,
-                "status" : "COMPLETED",
-                "stderr" : "None",
-                "stdout" : "2014-12-09 06:07:23,948 - Task: dev01.hortonworks.com",
-                "structured_out" : { }
+                "command_detail" : "RESTART HDFS/HDFS_CLIENT",
+                "id" : 187,
+                "request_id" : 26,
+                "stage_id" : 17,
+                "status" : "PENDING"
               }
-            },
+            }
+          ]
+        },
+        {
+          "href" : "http://162.216.151.112:8080/api/v1/clusters/c1/upgrades/26/upgrade_groups/29/upgrade_items/18",
+          "UpgradeItem" : {
+            "cluster_host_info" : "{\"all_hosts\":[\"tkach-2.c.pramod-thangali.internal\",\"tkach-1.c.pramod-thangali.internal\",\"tkach-3.c.pramod-thangali.internal\"],\"namenode_host\":[\"0,1\"],\"zkfc_hosts\":[\"0,1\"],\"slave_hosts\":[\"2\"],\"ambari_server_host\":[\"tkach-1.c.pramod-thangali.internal\"],\"zookeeper_hosts\":[\"0-2\"],\"all_ping_ports\":[\"8670:0-2\"],\"journalnode_hosts\":[\"0-2\"]}",
+            "cluster_name" : "c1",
+            "command_params" : "{\"version\":\"2.2.1.0-2191\"}",
+            "context" : "Service Check HDFS",
+            "end_time" : 0,
+            "group_id" : 29,
+            "host_params" : "{\"ambari_db_rca_driver\":\"org.postgresql.Driver\",\"ambari_db_rca_password\":\"mapred\",\"ambari_db_rca_url\":\"jdbc:postgresql://tkach-1.c.pramod-thangali.internal/ambarirca\",\"ambari_db_rca_username\":\"mapred\",\"db_driver_filename\":\"mysql-connector-java.jar\",\"db_name\":\"ambari\",\"java_home\":\"/usr/jdk64/jdk1.7.0_67\",\"jce_name\":\"UnlimitedJCEPolicyJDK7.zip\",\"jdk_location\":\"http://tkach-1.c.pramod-thangali.internal:8080/resources/\",\"jdk_name\":\"jdk-7u67-linux-x64.tar.gz\",\"mysql_jdbc_url\":\"http://tkach-1.c.pramod-thangali.internal:8080/resources//mysql-connector-java.jar\",\"oracle_jdbc_url\":\"http://tkach-1.c.pramod-thangali.internal:8080/resources//ojdbc6.jar\",\"stack_name\":\"HDP\",\"stack_version\":\"2.2\"}",
+            "log_info" : null,
+            "progress_percent" : 0.0,
+            "request_id" : 26,
+            "skippable" : false,
+            "stage_id" : 18,
+            "start_time" : -1,
+            "status" : "PENDING"
+          },
+          "tasks" : [
             {
-              "href" : "http://192.168.56.101:8080/api/v1/clusters/c1/upgrades/42/upgrade_groups/111/upgrade_items/5/tasks/193",
+              "href" : "http://162.216.151.112:8080/api/v1/clusters/c1/upgrades/26/upgrade_groups/29/upgrade_items/18/tasks/188",
               "Tasks" : {
-                "attempt_cnt" : 1,
                 "cluster_name" : "c1",
-                "command" : "CUSTOM_COMMAND",
-                "command_detail" : "RESTART HDFS/NAMENODE",
-                "custom_command_name" : "RESTART",
-                "end_time" : -1,
-                "error_log" : "/var/lib/ambari-agent/data/errors-193.txt",
-                "exit_code" : 777,
-                "host_name" : "dev01.hortonworks.com",
-                "id" : 153,
-                "output_log" : "/var/lib/ambari-agent/data/output-193.txt",
-                "request_id" : 42,
-                "role" : "NAMENODE",
-                "stage_id" : 2,
-                "start_time" : 1418134053610,
-                "status" : "IN_PROGRESS",
-                "stderr" : "",
-                "stdout" : "",
-                "structured_out" : { }
+                "command_detail" : "SERVICE_CHECK HDFS",
+                "id" : 188,
+                "request_id" : 26,
+                "stage_id" : 18,
+                "status" : "PENDING"
               }
-            },
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "href" : "http://162.216.151.112:8080/api/v1/clusters/c1/upgrades/26/upgrade_groups/30",
+      "UpgradeGroup" : {
+        "group_id" : 30,
+        "name" : "POST_CLUSTER",
+        "progress_percent" : 0.0,
+        "request_id" : 26,
+        "status" : "PENDING",
+        "title" : "Finalize Upgrade"
+      },
+      "upgrade_items" : [
+        {
+          "href" : "http://162.216.151.112:8080/api/v1/clusters/c1/upgrades/26/upgrade_groups/30/upgrade_items/19",
+          "UpgradeItem" : {
+            "cluster_host_info" : "{\"all_hosts\":[\"tkach-2.c.pramod-thangali.internal\",\"tkach-1.c.pramod-thangali.internal\",\"tkach-3.c.pramod-thangali.internal\"],\"namenode_host\":[\"0,1\"],\"zkfc_hosts\":[\"0,1\"],\"slave_hosts\":[\"2\"],\"ambari_server_host\":[\"tkach-1.c.pramod-thangali.internal\"],\"zookeeper_hosts\":[\"0-2\"],\"all_ping_ports\":[\"8670:0-2\"],\"journalnode_hosts\":[\"0-2\"]}",
+            "cluster_name" : "c1",
+            "command_params" : "{\"clusterName\":\"c1\",\"version\":\"2.2.1.0-2191\"}",
+            "context" : "Please confirm you are ready to finalize",
+            "end_time" : 0,
+            "group_id" : 30,
+            "host_params" : "{\"ambari_db_rca_driver\":\"org.postgresql.Driver\",\"ambari_db_rca_password\":\"mapred\",\"ambari_db_rca_url\":\"jdbc:postgresql://tkach-1.c.pramod-thangali.internal/ambarirca\",\"ambari_db_rca_username\":\"mapred\",\"db_driver_filename\":\"mysql-connector-java.jar\",\"db_name\":\"ambari\",\"java_home\":\"/usr/jdk64/jdk1.7.0_67\",\"jce_name\":\"UnlimitedJCEPolicyJDK7.zip\",\"jdk_location\":\"http://tkach-1.c.pramod-thangali.internal:8080/resources/\",\"jdk_name\":\"jdk-7u67-linux-x64.tar.gz\",\"mysql_jdbc_url\":\"http://tkach-1.c.pramod-thangali.internal:8080/resources//mysql-connector-java.jar\",\"oracle_jdbc_url\":\"http://tkach-1.c.pramod-thangali.internal:8080/resources//ojdbc6.jar\",\"stack_name\":\"HDP\",\"stack_version\":\"2.2\"}",
+            "log_info" : null,
+            "progress_percent" : 0.0,
+            "request_id" : 26,
+            "skippable" : false,
+            "stage_id" : 19,
+            "start_time" : -1,
+            "status" : "PENDING"
+          },
+          "tasks" : [
             {
-              "href" : "http://192.168.56.101:8080/api/v1/clusters/c1/upgrades/42/upgrade_groups/111/upgrade_items/5/tasks/194",
+              "href" : "http://162.216.151.112:8080/api/v1/clusters/c1/upgrades/26/upgrade_groups/30/upgrade_items/19/tasks/189",
               "Tasks" : {
-                "attempt_cnt" : 0,
                 "cluster_name" : "c1",
-                "command" : "ACTIONEXECUTE",
-                "command_detail" : "Completing NAMENODE on dev01.hortonworks.com",
-                "end_time" : -1,
-                "error_log" : "/var/lib/ambari-agent/data/errors-194.txt",
-                "exit_code" : 999,
-                "host_name" : "dev01.hortonworks.com",
-                "id" : 154,
-                "output_log" : "/var/lib/ambari-agent/data/output-194.txt",
-                "request_id" : 42,
-                "role" : "ru_execute_tasks",
-                "stage_id" : 3,
-                "start_time" : -1,
-                "status" : "PENDING",
-                "stderr" : "",
-                "stdout" : "",
-                "structured_out" : null
+                "command_detail" : "AMBARI_SERVER_ACTION EXECUTE",
+                "id" : 189,
+                "request_id" : 26,
+                "stage_id" : 19,
+                "status" : "PENDING"
               }
-            },
+            }
+          ]
+        },
+        {
+          "href" : "http://162.216.151.112:8080/api/v1/clusters/c1/upgrades/26/upgrade_groups/30/upgrade_items/20",
+          "UpgradeItem" : {
+            "cluster_host_info" : "{\"all_hosts\":[\"tkach-2.c.pramod-thangali.internal\",\"tkach-1.c.pramod-thangali.internal\",\"tkach-3.c.pramod-thangali.internal\"],\"namenode_host\":[\"0,1\"],\"zkfc_hosts\":[\"0,1\"],\"slave_hosts\":[\"2\"],\"ambari_server_host\":[\"tkach-1.c.pramod-thangali.internal\"],\"zookeeper_hosts\":[\"0-2\"],\"all_ping_ports\":[\"8670:0-2\"],\"journalnode_hosts\":[\"0-2\"]}",
+            "cluster_name" : "c1",
+            "command_params" : "{\"hooks_folder\":\"HDP/2.0.6/hooks\",\"service_package_folder\":\"common-services/HDFS/2.1.0.2.0/package\",\"tasks\":\"[{\\\"type\\\":\\\"EXECUTE\\\",\\\"hosts\\\":\\\"master\\\",\\\"script\\\":\\\"scripts/namenode.py\\\",\\\"function\\\":\\\"finalize_rolling_upgrade\\\"}]\",\"version\":\"2.2.1.0-2191\"}",
+            "context" : "Execute HDFS Finalize",
+            "end_time" : 0,
+            "group_id" : 30,
+            "host_params" : "{\"ambari_db_rca_driver\":\"org.postgresql.Driver\",\"ambari_db_rca_password\":\"mapred\",\"ambari_db_rca_url\":\"jdbc:postgresql://tkach-1.c.pramod-thangali.internal/ambarirca\",\"ambari_db_rca_username\":\"mapred\",\"db_driver_filename\":\"mysql-connector-java.jar\",\"db_name\":\"ambari\",\"java_home\":\"/usr/jdk64/jdk1.7.0_67\",\"jce_name\":\"UnlimitedJCEPolicyJDK7.zip\",\"jdk_location\":\"http://tkach-1.c.pramod-thangali.internal:8080/resources/\",\"jdk_name\":\"jdk-7u67-linux-x64.tar.gz\",\"mysql_jdbc_url\":\"http://tkach-1.c.pramod-thangali.internal:8080/resources//mysql-connector-java.jar\",\"oracle_jdbc_url\":\"http://tkach-1.c.pramod-thangali.internal:8080/resources//ojdbc6.jar\",\"stack_name\":\"HDP\",\"stack_version\":\"2.2\"}",
+            "log_info" : null,
+            "progress_percent" : 0.0,
+            "request_id" : 26,
+            "skippable" : false,
+            "stage_id" : 20,
+            "start_time" : -1,
+            "status" : "PENDING"
+          },
+          "tasks" : [
             {
-              "href" : "http://192.168.56.101:8080/api/v1/clusters/c1/upgrades/42/upgrade_groups/111/upgrade_items/5/tasks/195",
+              "href" : "http://162.216.151.112:8080/api/v1/clusters/c1/upgrades/26/upgrade_groups/30/upgrade_items/20/tasks/190",
               "Tasks" : {
-                "attempt_cnt" : 0,
                 "cluster_name" : "c1",
-                "command" : "ACTIONEXECUTE",
-                "command_detail" : "Preparing DATANODE on dev01.hortonworks.com",
-                "end_time" : -1,
-                "error_log" : "/var/lib/ambari-agent/data/errors-195.txt",
-                "exit_code" : 999,
-                "host_name" : "dev01.hortonworks.com",
-                "id" : 155,
-                "output_log" : "/var/lib/ambari-agent/data/output-195.txt",
-                "request_id" : 42,
-                "role" : "ru_execute_tasks",
-                "stage_id" : 4,
-                "start_time" : -1,
-                "status" : "PENDING",
-                "stderr" : "",
-                "stdout" : "",
-                "structured_out" : null
+                "command_detail" : "Execute HDFS Finalize",
+                "id" : 190,
+                "request_id" : 26,
+                "stage_id" : 20,
+                "status" : "PENDING"
               }
-            },
+            }
+          ]
+        },
+        {
+          "href" : "http://162.216.151.112:8080/api/v1/clusters/c1/upgrades/26/upgrade_groups/30/upgrade_items/21",
+          "UpgradeItem" : {
+            "cluster_host_info" : "{\"all_hosts\":[\"tkach-2.c.pramod-thangali.internal\",\"tkach-1.c.pramod-thangali.internal\",\"tkach-3.c.pramod-thangali.internal\"],\"namenode_host\":[\"0,1\"],\"zkfc_hosts\":[\"0,1\"],\"slave_hosts\":[\"2\"],\"ambari_server_host\":[\"tkach-1.c.pramod-thangali.internal\"],\"zookeeper_hosts\":[\"0-2\"],\"all_ping_ports\":[\"8670:0-2\"],\"journalnode_hosts\":[\"0-2\"]}",
+            "cluster_name" : "c1",
+            "command_params" : "{\"clusterName\":\"c1\",\"version\":\"2.2.1.0-2191\"}",
+            "context" : "Save Cluster State",
+            "end_time" : 0,
+            "group_id" : 30,
+            "host_params" : "{\"ambari_db_rca_driver\":\"org.postgresql.Driver\",\"ambari_db_rca_password\":\"mapred\",\"ambari_db_rca_url\":\"jdbc:postgresql://tkach-1.c.pramod-thangali.internal/ambarirca\",\"ambari_db_rca_username\":\"mapred\",\"db_driver_filename\":\"mysql-connector-java.jar\",\"db_name\":\"ambari\",\"java_home\":\"/usr/jdk64/jdk1.7.0_67\",\"jce_name\":\"UnlimitedJCEPolicyJDK7.zip\",\"jdk_location\":\"http://tkach-1.c.pramod-thangali.internal:8080/resources/\",\"jdk_name\":\"jdk-7u67-linux-x64.tar.gz\",\"mysql_jdbc_url\":\"http://tkach-1.c.pramod-thangali.internal:8080/resources//mysql-connector-java.jar\",\"oracle_jdbc_url\":\"http://tkach-1.c.pramod-thangali.internal:8080/resources//ojdbc6.jar\",\"stack_name\":\"HDP\",\"stack_version\":\"2.2\"}",
+            "log_info" : null,
+            "progress_percent" : 0.0,
+            "request_id" : 26,
+            "skippable" : false,
+            "stage_id" : 21,
+            "start_time" : -1,
+            "status" : "PENDING"
+          },
+          "tasks" : [
             {
-              "href" : "http://192.168.56.101:8080/api/v1/clusters/c1/upgrades/42/upgrade_groups/111/upgrade_items/5/tasks/196",
+              "href" : "http://162.216.151.112:8080/api/v1/clusters/c1/upgrades/26/upgrade_groups/30/upgrade_items/21/tasks/191",
               "Tasks" : {
-                "attempt_cnt" : 0,
                 "cluster_name" : "c1",
-                "command" : "CUSTOM_COMMAND",
-                "command_detail" : "RESTART HDFS/DATANODE",
-                "custom_command_name" : "RESTART",
-                "end_time" : -1,
-                "error_log" : "/var/lib/ambari-agent/data/errors-196.txt",
-                "exit_code" : 999,
-                "host_name" : "dev01.hortonworks.com",
-                "id" : 156,
-                "output_log" : "/var/lib/ambari-agent/data/output-196.txt",
-                "request_id" : 42,
-                "role" : "DATANODE",
-                "stage_id" : 5,
-                "start_time" : -1,
-                "status" : "PENDING",
-                "stderr" : "",
-                "stdout" : "",
-                "structured_out" : null
+                "command_detail" : "AMBARI_SERVER_ACTION EXECUTE",
+                "id" : 191,
+                "request_id" : 26,
+                "stage_id" : 21,
+                "status" : "PENDING"
               }
             }
           ]

+ 3 - 1
ambari-web/app/messages.js

@@ -1335,13 +1335,15 @@ Em.I18n.translations = {
   'admin.stackUpgrade.dialog.operationFailed': "This operation failed.",
   'admin.stackUpgrade.dialog.stop': "Stop Upgrade",
   'admin.stackUpgrade.dialog.continue': "Ignore and Proceed",
-  'admin.stackUpgrade.dialog.inProgress': "Currently running:",
+  'admin.stackUpgrade.dialog.inProgress': "Now Running:",
   'admin.stackUpgrade.dialog.keepRunning': "Keep running Upgrade in background",
   'admin.stackUpgrade.dialog.failed': "Failed on:",
   'admin.stackUpgrade.dialog.manual': "Manual steps required",
   'admin.stackUpgrade.dialog.manualDone': "I have performed the manual steps above.",
   'admin.stackUpgrade.dialog.closeProgress': "Upgrade is in progress. \n If you dismiss this window, Upgrade will keep running in background.",
   'admin.stackUpgrade.dialog.closePause': "Upgrade is paused. \n If you dismiss this window, you can resume Upgrade later.",
+  'admin.stackUpgrade.dialog.details.open': "show details",
+  'admin.stackUpgrade.dialog.details.hide': "hide details",
   'admin.stackUpgrade.preupgradeCheck.header': "Upgrade to {0}",
   'admin.stackUpgrade.preupgradeCheck.title': "Upgrade Requirements Not Met",
   'admin.stackUpgrade.preupgradeCheck.alert': "You must meet the following requirements before you can proceed with rolling upgrade.",

+ 7 - 0
ambari-web/app/models/upgrade_entity.js

@@ -34,6 +34,13 @@ App.upgradeEntity = Em.Object.extend({
    */
   isExpanded: false,
 
+  /**
+   * @type {boolean}
+   */
+  isVisible: function () {
+    return this.get('status') !== 'PENDING';
+  }.property('status'),
+
   /**
    * status of tasks/items/groups which should be grayed out and disabled
    * @type {Array}

+ 25 - 24
ambari-web/app/styles/application.less

@@ -6260,22 +6260,33 @@ i.icon-asterisks {
 }
 
 #stack-upgrade-dialog {
+  .details-box {
+    padding: 5px;
+    margin-left: 15px;
+    margin-right: 95px;
+    .button-row {
+      text-align: right;
+      padding: 5px;
+    }
+    input[type="checkbox"] {
+      margin: 0;
+    }
+    .message {
+      line-height: 30px;
+    }
+  }
+  .task-details {
+    .manage-controls a {
+      cursor: pointer;
+      margin-right: 12px;
+    }
+    textarea {
+      width: 100%;
+      min-height: 100px;
+    }
+  }
   .task-list {
     overflow-x: hidden;
-    .details-box {
-      padding: 2px 4px;
-      margin-left: 15px;
-      .button-row {
-        text-align: right;
-        padding: 5px;
-      }
-      input[type="checkbox"] {
-        margin: 0;
-      }
-      .message {
-        line-height: 30px;
-      }
-    }
     .progress {
       margin-bottom: 0;
     }
@@ -6283,16 +6294,6 @@ i.icon-asterisks {
     i {
       margin-right: 5px;
     }
-    .task-details {
-      .manage-controls a {
-        cursor: pointer;
-        margin-right: 12px;
-      }
-      textarea {
-        width: 100%;
-        min-height: 100px;
-      }
-    }
   }
   .task-list-main-warp i {
     font-size: 16px;

+ 58 - 2
ambari-web/app/templates/main/admin/stack_upgrade/stack_upgrade_wizard.hbs

@@ -33,8 +33,64 @@
 
   <div class="task-list scrollable-block task-list-main-warp">
     {{#if view.isLoaded}}
-      {{#each group in controller.upgradeData.upgradeGroups}}
-        {{view App.upgradeGroupView contentBinding="group"}}
+      <div>
+        {{#if view.runningItem}}
+          <div class="box details-box">
+            <div class="row-fluid">
+              <div class="pull-left">{{t admin.stackUpgrade.dialog.inProgress}}&nbsp;{{view.runningItem.context}}</div>
+              {{#if view.isDetailsOpened}}
+                <a href="#" class="pull-right" {{action toggleDetails target="view"}}>{{t admin.stackUpgrade.dialog.details.hide}}</a>
+                <div class="clear">
+                  {{view App.upgradeTaskView contentBinding="view.taskDetails" outsideViewBinding="view.outsideView"}}
+                </div>
+              {{else}}
+                <a href="#" class="pull-right" {{action toggleDetails target="view"}}>{{t admin.stackUpgrade.dialog.details.open}}</a>
+              {{/if}}
+            </div>
+          </div>
+        {{/if}}
+        {{#if view.failedItem}}
+          <div class="box details-box">
+            <div class="row-fluid">
+              <div class="pull-left">{{t admin.stackUpgrade.dialog.failed}}&nbsp;{{view.failedItem.context}}</div>
+              {{#if view.isDetailsOpened}}
+                <a href="#" class="pull-right" {{action toggleDetails target="view"}}>{{t admin.stackUpgrade.dialog.details.hide}}</a>
+                <div class="clear">
+                  {{view App.upgradeTaskView contentBinding="view.taskDetails" outsideViewBinding="view.outsideView"}}
+                </div>
+              {{else}}
+                <a href="#" class="pull-right" {{action toggleDetails target="view"}}>{{t admin.stackUpgrade.dialog.details.open}}</a>
+              {{/if}}
+            </div>
+            {{#if view.isHoldingState}}
+              <div class="button-row">
+                <button class="btn btn-warning" {{action continue view.failedItem target="view"}}>{{t admin.stackUpgrade.dialog.continue}}</button>
+                <button class="btn" {{action retry view.failedItem target="view"}}>{{t common.retry}}</button>
+              </div>
+            {{/if}}
+          </div>
+        {{/if}}
+        {{#if view.manualItem}}
+          <div class="box details-box">
+            <p><strong>{{t admin.stackUpgrade.dialog.manual}}</strong></p>
+            <p>{{view.manualItem.context}}</p>
+
+            <div class="message">
+              {{view Em.Checkbox checkedBinding="view.isManualDone"}}
+              {{t admin.stackUpgrade.dialog.manualDone}}
+            </div>
+            <div class="button-row">
+              <button class="btn btn-success" {{bindAttr disabled="view.isManualProceedDisabled"}} {{action complete view.manualItem target="view"}}>
+                {{t common.proceed}}
+              </button>
+            </div>
+          </div>
+        {{/if}}
+      </div>
+      {{#each group in view.upgradeGroups}}
+        {{#if group.isVisible}}
+          {{view App.upgradeGroupView contentBinding="group"}}
+        {{/if}}
       {{/each}}
     {{/if}}
   </div>

+ 19 - 58
ambari-web/app/templates/main/admin/stack_upgrade/upgrade_group.hbs

@@ -39,23 +39,25 @@
 
   {{! List of UpgradeItem}}
   {{#each item in view.content.upgradeItems}}
-    <div class="row-fluid">
-      <div {{bindAttr class="item.isActive::not-active-link :span8"}}>
-        {{statusIcon item.status}}
-        <a href="#" {{action toggleExpanded item view.content.upgradeItems target="view"}}>{{item.context}}</a>
-      </div>
-      {{#if item.isRunning}}
-        <div class="span3">
-          {{view App.ProgressBarView
-            progressBinding="item.progress"
-            statusBinding="item.status"
-          }}
-        </div>
-        <div class="span1">
-          <div>{{item.progress}}%</div>
+    {{#if item.isVisible}}
+      <div class="row-fluid">
+        <div {{bindAttr class="item.isActive::not-active-link :span8"}}>
+          {{statusIcon item.status}}
+          <a href="#" {{action toggleExpanded item view.content.upgradeItems target="view"}}>{{item.context}}</a>
         </div>
-      {{/if}}
-    </div>
+        {{#if item.isRunning}}
+          <div class="span3">
+            {{view App.ProgressBarView
+              progressBinding="item.progress"
+              statusBinding="item.status"
+            }}
+          </div>
+          <div class="span1">
+            <div>{{item.progress}}%</div>
+          </div>
+        {{/if}}
+      </div>
+    {{/if}}
     {{#if item.isExpanded}}
 
       {{! List of Tasks}}
@@ -66,45 +68,4 @@
       </div>
     {{/if}}
   {{/each}}
-</div>
-
-{{#unless view.content.isExpanded}}
-  {{#if view.showProgressInfo}}
-    <div class="box details-box">
-      <div>
-        {{t admin.stackUpgrade.dialog.inProgress}}&nbsp;
-        <a href="#" {{action toggleExpanded view.content controller.upgradeData.upgradeGroups target="view"}}>{{view.runningItem.context}}</a>
-      </div>
-    </div>
-  {{/if}}
-  {{#if view.showFailedInfo}}
-    <div class="box details-box">
-      <div>
-        {{t admin.stackUpgrade.dialog.failed}}&nbsp;
-        <a href="#" {{action toggleExpanded view.content controller.upgradeData.upgradeGroups target="view"}}>{{view.failedItem.context}}</a>
-      </div>
-      {{#if view.isHoldingState}}
-        <div class="button-row">
-          <button class="btn btn-warning" {{action continue view.failedItem target="view"}}>{{t admin.stackUpgrade.dialog.continue}}</button>
-          <button class="btn" {{action retry view.failedItem target="view"}}>{{t common.retry}}</button>
-        </div>
-      {{/if}}
-    </div>
-  {{/if}}
-  {{#if view.isManualOpened}}
-    <div class="box details-box">
-      <p><strong>{{t admin.stackUpgrade.dialog.manual}}</strong></p>
-      <p>{{view.manualItem.context}}</p>
-
-      <div class="message">
-        {{view Em.Checkbox checkedBinding="view.isManualDone"}}
-        {{t admin.stackUpgrade.dialog.manualDone}}
-      </div>
-      <div class="button-row">
-        <button class="btn btn-success" {{bindAttr disabled="view.isManualProceedDisabled"}} {{action complete view.manualItem target="view"}}>
-          {{t common.proceed}}
-        </button>
-      </div>
-    </div>
-  {{/if}}
-{{/unless}}
+</div>

+ 6 - 3
ambari-web/app/templates/main/admin/stack_upgrade/upgrade_task.hbs

@@ -16,9 +16,12 @@
 * limitations under the License.
 }}
 
-
-<div {{bindAttr class="view.content.isActive::not-active-link"}}>{{statusIcon view.content.status}}<a href="#" {{action toggleExpanded view.content view.tasks target="view.parentView"}}>{{view.content.command_detail}}</a></div>
-{{#if view.content.isExpanded}}
+{{#unless view.outsideView}}
+  <div {{bindAttr class="view.content.isActive::not-active-link"}}>{{statusIcon view.content.status}}<a
+    href="#" {{action toggleExpanded view.content view.tasks target="view.parentView"}}>{{view.content.command_detail}}</a>
+  </div>
+{{/unless}}
+{{#if view.showContent}}
   <div class="task-details task-detail-info">
     <ul class="nav nav-tabs">
       <li class="active"><a href="#tab1" data-toggle="tab">{{t common.stdout}}</a></li>

+ 0 - 118
ambari-web/app/views/main/admin/stack_upgrade/upgrade_group_view.js

@@ -22,124 +22,6 @@ var App = require('app');
 App.upgradeGroupView = Em.View.extend({
   templateName: require('templates/main/admin/stack_upgrade/upgrade_group'),
 
-  /**
-   * @type {boolean}
-   */
-  isManualDone: false,
-
-  /**
-   * @type {Array}
-   */
-  failedStatuses: ['HOLDING_FAILED', 'HOLDING_TIMED_OUT', 'FAILED', 'TIMED_OUT'],
-
-  /**
-   * progress info is a box that show running UpgradeItem
-   * @type {boolean}
-   */
-  showProgressInfo: function () {
-    return Boolean(this.get('content.isRunning') && this.get('runningItem'));
-  }.property('content.isRunning', 'runningItem'),
-
-  /**
-   * @type {boolean}
-   */
-  isManualProceedDisabled: function () {
-    return !this.get('isManualDone');
-  }.property('isManualDone'),
-
-  /**
-   * @type {boolean}
-   */
-  showFailedInfo: function () {
-    return Boolean(this.get('failedStatuses').contains(this.get('content.status')) && this.get('failedItem'));
-  }.property('content.status', 'failedItem'),
-
-  /**
-   * if upgrade group is in progress it should have currently running item
-   * @type {object|undefined}
-   */
-  runningItem: function () {
-    return this.get('content.upgradeItems').findProperty('status', 'IN_PROGRESS');
-  }.property('content.upgradeItems.@each.status'),
-
-  /**
-   * if upgrade group is failed it should have failed item
-   * @type {object|undefined}
-   */
-  failedItem: function () {
-    return this.get('content.upgradeItems').find(function (item) {
-      return this.get('failedStatuses').contains(item.get('status'));
-    }, this);
-  }.property('content.upgradeItems.@each.status'),
-
-  /**
-   * if upgrade group is manual it should have manual item
-   * @type {object|undefined}
-   */
-  manualItem: function () {
-    return this.get('content.upgradeItems').findProperty('status', 'HOLDING');
-  }.property('content.upgradeItems.@each.status'),
-
-  /**
-   * @type {boolean}
-   */
-  isManualOpened: function () {
-    return Boolean(this.get('manualItem'));
-  }.property('manualItem'),
-
-  /**
-   * indicate whether failed item can be skipped or retried in order to continue Upgrade
-   * @type {boolean}
-   */
-  isHoldingState: function () {
-    return Boolean(this.get('failedItem.status') && this.get('failedItem.status').contains('HOLDING'));
-  }.property('failedItem.status'),
-
-  /**
-   * set status to Upgrade item
-   * @param item
-   * @param status
-   */
-  setUpgradeItemStatus: function(item, status) {
-    return App.ajax.send({
-      name: 'admin.upgrade.upgradeItem.setState',
-      sender: this,
-      data: {
-        upgradeId: item.get('request_id'),
-        itemId: item.get('stage_id'),
-        groupId: item.get('group_id'),
-        status: status
-      }
-    }).done(function () {
-        item.set('status', status);
-      });
-  },
-
-  /**
-   * set current upgrade item state to FAILED (for HOLDING_FAILED) or TIMED_OUT (for HOLDING_TIMED_OUT)
-   * in order to ignore fail and continue Upgrade
-   * @param {object} event
-   */
-  continue: function (event) {
-    this.setUpgradeItemStatus(event.context, event.context.get('status').slice(8));
-  },
-
-  /**
-   * set current upgrade item state to PENDING in order to retry Upgrade
-   * @param {object} event
-   */
-  retry: function (event) {
-    this.setUpgradeItemStatus(event.context, 'PENDING');
-  },
-
-  /**
-   * set current upgrade item state to COMPLETED in order to proceed
-   * @param {object} event
-   */
-  complete: function (event) {
-    this.setUpgradeItemStatus(event.context, 'COMPLETED');
-  },
-
   /**
    * Only one UpgradeGroup or UpgradeItem could be expanded at a time
    * @param {object} event

+ 19 - 2
ambari-web/app/views/main/admin/stack_upgrade/upgrade_task_view.js

@@ -22,6 +22,19 @@ var App = require('app');
 App.upgradeTaskView = Em.View.extend({
   templateName: require('templates/main/admin/stack_upgrade/upgrade_task'),
 
+  /**
+   * view observed directly
+   * @type {boolean}
+   */
+  outsideView: false,
+
+  /**
+   * @type {boolean}
+   */
+  showContent: function () {
+    return this.get('outsideView') || this.get('content.isExpanded');
+  }.property('content.isExpanded'),
+
   /**
    * @type {boolean}
    */
@@ -54,13 +67,17 @@ App.upgradeTaskView = Em.View.extend({
    */
   taskDetailsProperties: ['status', 'stdout', 'stderr', 'error_log', 'host_name', 'output_log'],
 
+  didInsertElement: function () {
+    if (this.get('outsideView')) this.doPolling();
+  },
+
   /**
    * poll for task details when task is expanded
    */
   doPolling: function () {
     var self = this;
 
-    if (this.get('content.isExpanded')) {
+    if (this.get('content.isExpanded') || this.get('outsideView')) {
       this.getTaskDetails();
       this.set('timer', setTimeout(function () {
         self.doPolling();
@@ -68,7 +85,7 @@ App.upgradeTaskView = Em.View.extend({
     } else {
       clearTimeout(this.get('timer'));
     }
-  }.observes('content.isExpanded'),
+  }.observes('content.isExpanded', 'outsideView'),
 
   /**
    * request task details from server

+ 153 - 0
ambari-web/app/views/main/admin/stack_upgrade/upgrade_wizard_view.js

@@ -23,6 +23,16 @@ App.upgradeWizardView = Em.View.extend({
   controllerBinding: 'App.router.mainAdminStackAndUpgradeController',
   templateName: require('templates/main/admin/stack_upgrade/stack_upgrade_wizard'),
 
+  /**
+   * @type {Array}
+   */
+  failedStatuses: ['HOLDING_FAILED', 'HOLDING_TIMED_OUT', 'FAILED', 'TIMED_OUT'],
+
+  /**
+   * @type {Array}
+   */
+  activeStatuses: ['HOLDING_FAILED', 'HOLDING_TIMED_OUT', 'FAILED', 'TIMED_OUT', 'HOLDING', 'IN_PROGRESS'],
+
   /**
    * update timer
    * @type {number|null}
@@ -35,6 +45,16 @@ App.upgradeWizardView = Em.View.extend({
    */
   isLoaded: false,
 
+  /**
+   * @type {boolean}
+   */
+  isDetailsOpened: false,
+
+  /**
+   * @type {boolean}
+   */
+  outsideView: true,
+
   /**
    * progress value is rounded to floor
    * @type {number}
@@ -43,6 +63,87 @@ App.upgradeWizardView = Em.View.extend({
     return Math.floor(this.get('controller.upgradeData.Upgrade.progress_percent'));
   }.property('controller.upgradeData.Upgrade.progress_percent'),
 
+  /**
+   * upgrade groups, reversed and PENDING ones are hidden
+   * @type {Array}
+   */
+  upgradeGroups: function () {
+    if (Em.isNone(this.get('controller.upgradeData.upgradeGroups'))) return [];
+    var upgradeGroups = this.get('controller.upgradeData.upgradeGroups');
+    upgradeGroups.reverse();
+    return upgradeGroups;
+  }.property('controller.upgradeData.upgradeGroups'),
+
+  /**
+   * currently active group
+   * @type {object|undefined}
+   */
+  activeGroup: function () {
+    return this.get('upgradeGroups').find(function (item) {
+      return this.get('activeStatuses').contains(item.get('status'));
+    }, this);
+  }.property('upgradeGroups.@each.status'),
+
+  /**
+   * if upgrade group is in progress it should have currently running item
+   * @type {object|undefined}
+   */
+  runningItem: function () {
+    return this.get('activeGroup.upgradeItems') && this.get('activeGroup.upgradeItems').findProperty('status', 'IN_PROGRESS');
+  }.property('activeGroup.upgradeItems.@each.status'),
+
+  /**
+   * if upgrade group is failed it should have failed item
+   * @type {object|undefined}
+   */
+  failedItem: function () {
+    return this.get('activeGroup.upgradeItems') && this.get('activeGroup.upgradeItems').find(function (item) {
+      return this.get('failedStatuses').contains(item.get('status'));
+    }, this);
+  }.property('activeGroup.upgradeItems.@each.status'),
+
+  /**
+   * details of currently active task
+   * @type {object|undefined}
+   */
+  taskDetails: function () {
+    if (this.get('runningItem')) {
+      return this.get('runningItem').get('tasks').findProperty('status', 'IN_PROGRESS');
+    } else if (this.get('failedItem')) {
+      return this.get('failedItem').get('tasks').find(function (task) {
+        return this.get('failedStatuses').contains(task.get('status'));
+      }, this);
+    }
+  }.property('failedItem.tasks.@each.status', 'runningItem.tasks.@each.status'),
+
+  /**
+   * indicate whether failed item can be skipped or retried in order to continue Upgrade
+   * @type {boolean}
+   */
+  isHoldingState: function () {
+    return Boolean(this.get('failedItem.status') && this.get('failedItem.status').contains('HOLDING'));
+  }.property('failedItem.status'),
+
+  /**
+   * @type {boolean}
+   */
+  isManualDone: false,
+
+  /**
+   * @type {boolean}
+   */
+  isManualProceedDisabled: function () {
+    return !this.get('isManualDone');
+  }.property('isManualDone'),
+
+  /**
+   * if upgrade group is manual it should have manual item
+   * @type {object|undefined}
+   */
+  manualItem: function () {
+    return this.get('activeGroup.upgradeItems') && this.get('activeGroup.upgradeItems').findProperty('status', 'HOLDING');
+  }.property('activeGroup.upgradeItems.@each.status'),
+
   /**
    * label of Upgrade status
    * @type {string}
@@ -67,6 +168,13 @@ App.upgradeWizardView = Em.View.extend({
     }
   }.property('controller.upgradeData.Upgrade.request_status'),
 
+  /**
+   * toggle details box
+   */
+  toggleDetails: function () {
+    this.toggleProperty('isDetailsOpened');
+  },
+
   /**
    * start polling upgrade data
    */
@@ -104,5 +212,50 @@ App.upgradeWizardView = Em.View.extend({
       self.get('controller').loadUpgradeData();
       self.doPolling();
     }, App.bgOperationsUpdateInterval));
+  },
+
+  /**
+   * set status to Upgrade item
+   * @param item
+   * @param status
+   */
+  setUpgradeItemStatus: function(item, status) {
+    return App.ajax.send({
+      name: 'admin.upgrade.upgradeItem.setState',
+      sender: this,
+      data: {
+        upgradeId: item.get('request_id'),
+        itemId: item.get('stage_id'),
+        groupId: item.get('group_id'),
+        status: status
+      }
+    }).done(function () {
+        item.set('status', status);
+      });
+  },
+
+  /**
+   * set current upgrade item state to FAILED (for HOLDING_FAILED) or TIMED_OUT (for HOLDING_TIMED_OUT)
+   * in order to ignore fail and continue Upgrade
+   * @param {object} event
+   */
+  continue: function (event) {
+    this.setUpgradeItemStatus(event.context, event.context.get('status').slice(8));
+  },
+
+  /**
+   * set current upgrade item state to PENDING in order to retry Upgrade
+   * @param {object} event
+   */
+  retry: function (event) {
+    this.setUpgradeItemStatus(event.context, 'PENDING');
+  },
+
+  /**
+   * set current upgrade item state to COMPLETED in order to proceed
+   * @param {object} event
+   */
+  complete: function (event) {
+    this.setUpgradeItemStatus(event.context, 'COMPLETED');
   }
 });

+ 0 - 259
ambari-web/test/views/main/admin/stack_upgrade/upgrade_group_view_test.js

@@ -26,265 +26,6 @@ describe('App.upgradeGroupView', function () {
     failedStatuses: ['FAILED']
   });
 
-  describe("#runningItem", function () {
-    it("no running item", function () {
-      view.set('content.upgradeItems', []);
-      view.propertyDidChange('runningItem');
-      expect(view.get('runningItem')).to.be.undefined;
-    });
-    it("running item present", function () {
-      view.set('content.upgradeItems', [
-        {status: 'IN_PROGRESS'}
-      ]);
-      view.propertyDidChange('runningItem');
-      expect(view.get('runningItem')).to.be.eql({status: 'IN_PROGRESS'});
-    });
-  });
-
-  describe("#failedItem", function () {
-    it("no running item", function () {
-      view.set('content.upgradeItems', []);
-      view.propertyDidChange('failedItem');
-      expect(view.get('failedItem')).to.be.undefined;
-    });
-    it("running item present", function () {
-      view.set('content.upgradeItems', [Em.Object.create({status: 'FAILED'})]);
-      view.propertyDidChange('failedItem');
-      expect(view.get('failedItem')).to.be.eql(Em.Object.create({status: 'FAILED'}));
-    });
-  });
-
-  describe("#manualItem", function () {
-    it("no running item", function () {
-      view.set('content.upgradeItems', []);
-      view.propertyDidChange('manualItem');
-      expect(view.get('manualItem')).to.be.undefined;
-    });
-    it("running item present", function () {
-      view.set('content.upgradeItems', [Em.Object.create({status: 'HOLDING'})]);
-      view.propertyDidChange('manualItem');
-      expect(view.get('manualItem')).to.be.eql(Em.Object.create({status: 'HOLDING'}));
-    });
-  });
-
-  describe("#isManualOpened", function () {
-    it("manual item null", function () {
-      view.reopen({manualItem: null});
-      view.propertyDidChange('isManualOpened');
-      expect(view.get('isManualOpened')).to.be.false;
-    });
-    it("manual item correct", function () {
-      view.reopen({manualItem: {}});
-      view.propertyDidChange('isManualOpened');
-      expect(view.get('isManualOpened')).to.be.true;
-    });
-  });
-
-  describe("#showProgressInfo", function () {
-    var testCases = [
-      {
-        data: {
-          runningItem: undefined,
-          isRunning: false
-        },
-        result: false
-      },
-      {
-        data: {
-          runningItem: undefined,
-          isRunning: true
-        },
-        result: false
-      },
-      {
-        data: {
-          runningItem: {},
-          isRunning: false
-        },
-        result: false
-      },
-      {
-        data: {
-          runningItem: {},
-          isRunning: true
-        },
-        result: true
-      }
-    ];
-    testCases.forEach(function (test) {
-      it('runningItem - ' + test.data.runningItem + ', isRunning - ' + test.data.isRunning, function () {
-        view.reopen({
-          runningItem: test.data.runningItem
-        });
-        view.set('content.isRunning', test.data.isRunning);
-        view.propertyDidChange('showProgressInfo');
-        expect(view.get('showProgressInfo')).to.equal(test.result);
-      });
-    });
-  });
-
-  describe("#isManualProceedDisabled", function () {
-    it("", function () {
-      view.set('isManualDone', true);
-      view.propertyDidChange('isManualProceedDisabled');
-      expect(view.get('isManualProceedDisabled')).to.be.false;
-    });
-  });
-
-  describe("#showFailedInfo", function () {
-    var testCases = [
-      {
-        data: {
-          failedItem: undefined,
-          status: 'PENDING'
-        },
-        result: false
-      },
-      {
-        data: {
-          failedItem: undefined,
-          status: 'FAILED'
-        },
-        result: false
-      },
-      {
-        data: {
-          failedItem: {},
-          status: 'PENDING'
-        },
-        result: false
-      },
-      {
-        data: {
-          failedItem: {},
-          status: 'FAILED'
-        },
-        result: true
-      }
-    ];
-    testCases.forEach(function (test) {
-      it('failedItem - ' + test.data.failedItem + ', status - ' + test.data.status, function () {
-        view.reopen({
-          failedItem: test.data.failedItem
-        });
-        view.set('content.status', test.data.status);
-        view.propertyDidChange('showFailedInfo');
-        expect(view.get('showFailedInfo')).to.equal(test.result);
-      });
-    });
-  });
-
-  describe("#isHoldingState", function () {
-    var testCases = [
-      {
-        data: {
-          failedItem: undefined
-        },
-        result: false
-      },
-      {
-        data: {
-          failedItem: {status: 'PENDING'}
-        },
-        result: false
-      },
-      {
-        data: {
-          failedItem: {status: 'HOLDING_FAILED'}
-        },
-        result: true
-      },
-      {
-        data: {
-          failedItem: {status: 'HOLDING_TIMED_OUT'}
-        },
-        result: true
-      }
-    ];
-    testCases.forEach(function (test) {
-      it('failedItem - ' + test.data.failedItem, function () {
-        view.reopen({
-          failedItem: test.data.failedItem
-        });
-        view.propertyDidChange('isHoldingState');
-        expect(view.get('isHoldingState')).to.equal(test.result);
-      });
-    });
-  });
-
-  describe("#setUpgradeItemStatus()", function () {
-    before(function () {
-      sinon.stub(App.ajax, 'send', function () {
-        return {
-          done: function (callback) {
-            callback();
-          }
-        }
-      });
-    });
-    after(function () {
-      App.ajax.send.restore();
-    });
-    it("", function () {
-      var item = Em.Object.create({
-        request_id: 1,
-        stage_id: 1,
-        group_id: 1
-      })
-      view.setUpgradeItemStatus(item, 'PENDING');
-      expect(App.ajax.send.getCall(0).args[0]).to.eql({
-        name: 'admin.upgrade.upgradeItem.setState',
-        sender: view,
-        data: {
-          upgradeId: 1,
-          itemId: 1,
-          groupId: 1,
-          status: 'PENDING'
-        }
-      });
-      expect(item.get('status')).to.equal('PENDING');
-    });
-  });
-
-  describe("#continue()", function () {
-    before(function () {
-      sinon.stub(view, 'setUpgradeItemStatus', Em.K);
-    });
-    after(function () {
-      view.setUpgradeItemStatus.restore();
-    });
-    it("", function () {
-      view.continue({context: Em.Object.create({'status': 'HOLDING_FAILED'})});
-      expect(view.setUpgradeItemStatus.calledWith(Em.Object.create({'status': 'HOLDING_FAILED'}), 'FAILED')).to.be.true;
-    });
-  });
-
-  describe("#complete()", function () {
-    before(function () {
-      sinon.stub(view, 'setUpgradeItemStatus', Em.K);
-    });
-    after(function () {
-      view.setUpgradeItemStatus.restore();
-    });
-    it("", function () {
-      view.complete({context: Em.Object.create({'status': 'FAILED'})});
-      expect(view.setUpgradeItemStatus.calledWith(Em.Object.create({'status': 'FAILED'}), 'COMPLETED')).to.be.true;
-    });
-  });
-
-  describe("#retry()", function () {
-    before(function () {
-      sinon.stub(view, 'setUpgradeItemStatus', Em.K);
-    });
-    after(function () {
-      view.setUpgradeItemStatus.restore();
-    });
-    it("", function () {
-      view.retry({context: Em.Object.create({'status': 'FAILED'})});
-      expect(view.setUpgradeItemStatus.calledWith(Em.Object.create({'status': 'FAILED'}), 'PENDING')).to.be.true;
-    });
-  });
-
   describe("#toggleExpanded()", function () {
     before(function () {
       sinon.stub(view, 'collapseLowerLevels', Em.K);

+ 159 - 2
ambari-web/test/views/main/admin/stack_upgrade/upgrade_wizard_view_test.js

@@ -21,11 +21,14 @@ var App = require('app');
 require('views/main/admin/stack_upgrade/upgrade_wizard_view');
 
 describe('App.upgradeWizardView', function () {
-  var view = App.upgradeWizardView.create();
+  var view = App.upgradeWizardView.create({
+    failedStatuses: ['FAILED']
+  });
   view.reopen({
     controller: Em.Object.create({
       loadUpgradeData: Em.K
-    })
+    }),
+    activeGroup: Em.Object.create()
   });
   view.removeObserver('App.clusterName', view, 'startPolling');
 
@@ -118,4 +121,158 @@ describe('App.upgradeWizardView', function () {
       expect(view.doPolling.calledTwice).to.be.true;
     });
   });
+
+  describe("#continue()", function () {
+    before(function () {
+      sinon.stub(view, 'setUpgradeItemStatus', Em.K);
+    });
+    after(function () {
+      view.setUpgradeItemStatus.restore();
+    });
+    it("", function () {
+      view.continue({context: Em.Object.create({'status': 'HOLDING_FAILED'})});
+      expect(view.setUpgradeItemStatus.calledWith(Em.Object.create({'status': 'HOLDING_FAILED'}), 'FAILED')).to.be.true;
+    });
+  });
+
+  describe("#complete()", function () {
+    before(function () {
+      sinon.stub(view, 'setUpgradeItemStatus', Em.K);
+    });
+    after(function () {
+      view.setUpgradeItemStatus.restore();
+    });
+    it("", function () {
+      view.complete({context: Em.Object.create({'status': 'FAILED'})});
+      expect(view.setUpgradeItemStatus.calledWith(Em.Object.create({'status': 'FAILED'}), 'COMPLETED')).to.be.true;
+    });
+  });
+
+  describe("#retry()", function () {
+    before(function () {
+      sinon.stub(view, 'setUpgradeItemStatus', Em.K);
+    });
+    after(function () {
+      view.setUpgradeItemStatus.restore();
+    });
+    it("", function () {
+      view.retry({context: Em.Object.create({'status': 'FAILED'})});
+      expect(view.setUpgradeItemStatus.calledWith(Em.Object.create({'status': 'FAILED'}), 'PENDING')).to.be.true;
+    });
+  });
+
+  describe("#setUpgradeItemStatus()", function () {
+    before(function () {
+      sinon.stub(App.ajax, 'send', function () {
+        return {
+          done: function (callback) {
+            callback();
+          }
+        }
+      });
+    });
+    after(function () {
+      App.ajax.send.restore();
+    });
+    it("", function () {
+      var item = Em.Object.create({
+        request_id: 1,
+        stage_id: 1,
+        group_id: 1
+      })
+      view.setUpgradeItemStatus(item, 'PENDING');
+      expect(App.ajax.send.getCall(0).args[0]).to.eql({
+        name: 'admin.upgrade.upgradeItem.setState',
+        sender: view,
+        data: {
+          upgradeId: 1,
+          itemId: 1,
+          groupId: 1,
+          status: 'PENDING'
+        }
+      });
+      expect(item.get('status')).to.equal('PENDING');
+    });
+  });
+
+  describe("#manualItem", function () {
+    it("no running item", function () {
+      view.set('activeGroup.upgradeItems', []);
+      view.propertyDidChange('manualItem');
+      expect(view.get('manualItem')).to.be.undefined;
+    });
+    it("running item present", function () {
+      view.set('activeGroup.upgradeItems', [Em.Object.create({status: 'HOLDING'})]);
+      view.propertyDidChange('manualItem');
+      expect(view.get('manualItem')).to.be.eql(Em.Object.create({status: 'HOLDING'}));
+    });
+  });
+
+  describe("#isManualProceedDisabled", function () {
+    it("", function () {
+      view.set('isManualDone', true);
+      view.propertyDidChange('isManualProceedDisabled');
+      expect(view.get('isManualProceedDisabled')).to.be.false;
+    });
+  });
+
+  describe("#failedItem", function () {
+    it("no running item", function () {
+      view.set('activeGroup.upgradeItems', []);
+      view.propertyDidChange('failedItem');
+      expect(view.get('failedItem')).to.be.undefined;
+    });
+    it("running item present", function () {
+      view.set('activeGroup.upgradeItems', [Em.Object.create({status: 'FAILED'})]);
+      view.propertyDidChange('failedItem');
+      expect(view.get('failedItem')).to.be.eql(Em.Object.create({status: 'FAILED'}));
+    });
+  });
+
+  describe("#runningItem", function () {
+    it("no running item", function () {
+      view.set('activeGroup.upgradeItems', []);
+      view.propertyDidChange('runningItem');
+      expect(view.get('runningItem')).to.be.undefined;
+    });
+    it("running item present", function () {
+      view.set('activeGroup.upgradeItems', [
+        {status: 'IN_PROGRESS'}
+      ]);
+      view.propertyDidChange('runningItem');
+      expect(view.get('runningItem')).to.be.eql({status: 'IN_PROGRESS'});
+    });
+  });
+
+  describe("#isHoldingState", function () {
+    var testCases = [
+      {
+        data: {
+          failedItem: {status: 'PENDING'}
+        },
+        result: false
+      },
+      {
+        data: {
+          failedItem: {status: 'HOLDING_FAILED'}
+        },
+        result: true
+      },
+      {
+        data: {
+          failedItem: {status: 'HOLDING_TIMED_OUT'}
+        },
+        result: true
+      }
+    ];
+    testCases.forEach(function (test) {
+      it('failedItem - ' + test.data.failedItem, function () {
+        view.reopen({
+          failedItem: test.data.failedItem
+        });
+        view.propertyDidChange('isHoldingState');
+        expect(view.get('isHoldingState')).to.equal(test.result);
+      });
+    });
+  });
 });