Browse Source

AMBARI-1059. Refactor cluster management. (yusaku)

git-svn-id: https://svn.apache.org/repos/asf/incubator/ambari/branches/AMBARI-666@1419002 13f79535-47bb-0310-9956-ffa450edef68
Yusaku Sako 12 years ago
parent
commit
28a9ae32d3
93 changed files with 3264 additions and 526 deletions
  1. 0 0
      ambari-web/app/assets/data/wizard/deploy/2_hosts/poll_1.json
  2. 0 0
      ambari-web/app/assets/data/wizard/deploy/2_hosts/poll_2.json
  3. 0 0
      ambari-web/app/assets/data/wizard/deploy/2_hosts/poll_3.json
  4. 0 0
      ambari-web/app/assets/data/wizard/deploy/2_hosts/poll_4.json
  5. 0 0
      ambari-web/app/assets/data/wizard/deploy/2_hosts/poll_5.json
  6. 0 0
      ambari-web/app/assets/data/wizard/deploy/2_hosts/poll_5_failed.json
  7. 0 0
      ambari-web/app/assets/data/wizard/deploy/2_hosts/poll_6.json
  8. 0 0
      ambari-web/app/assets/data/wizard/deploy/2_hosts/poll_7.json
  9. 0 0
      ambari-web/app/assets/data/wizard/deploy/2_hosts/poll_8.json
  10. 0 0
      ambari-web/app/assets/data/wizard/deploy/2_hosts/poll_9.json
  11. 22 22
      ambari-web/app/assets/data/wizard/deploy/5_hosts/poll_1.json
  12. 0 0
      ambari-web/app/assets/data/wizard/deploy/5_hosts/poll_10.json
  13. 22 22
      ambari-web/app/assets/data/wizard/deploy/5_hosts/poll_2.json
  14. 1 1
      ambari-web/app/assets/data/wizard/deploy/5_hosts/poll_3.json
  15. 0 0
      ambari-web/app/assets/data/wizard/deploy/5_hosts/poll_4.json
  16. 2 2
      ambari-web/app/assets/data/wizard/deploy/5_hosts/poll_5.json
  17. 22 22
      ambari-web/app/assets/data/wizard/deploy/5_hosts/poll_6.json
  18. 0 0
      ambari-web/app/assets/data/wizard/deploy/5_hosts/poll_7.json
  19. 1 1
      ambari-web/app/assets/data/wizard/deploy/5_hosts/poll_8.json
  20. 1 1
      ambari-web/app/assets/data/wizard/deploy/5_hosts/poll_9.json
  21. 405 0
      ambari-web/app/assets/data/wizard/deploy/master_failure/poll_1.json
  22. 405 0
      ambari-web/app/assets/data/wizard/deploy/master_failure/poll_2.json
  23. 29 0
      ambari-web/app/assets/data/wizard/deploy/master_failure/poll_3.json
  24. 11 0
      ambari-web/app/assets/data/wizard/deploy/master_failure/poll_4.json
  25. 405 0
      ambari-web/app/assets/data/wizard/deploy/slave_failure/poll_1.json
  26. 405 0
      ambari-web/app/assets/data/wizard/deploy/slave_failure/poll_2.json
  27. 29 0
      ambari-web/app/assets/data/wizard/deploy/slave_failure/poll_3.json
  28. 11 0
      ambari-web/app/assets/data/wizard/deploy/slave_failure/poll_4.json
  29. 405 0
      ambari-web/app/assets/data/wizard/deploy/slave_warning/poll_1.json
  30. 405 0
      ambari-web/app/assets/data/wizard/deploy/slave_warning/poll_2.json
  31. 29 0
      ambari-web/app/assets/data/wizard/deploy/slave_warning/poll_3.json
  32. 11 0
      ambari-web/app/assets/data/wizard/deploy/slave_warning/poll_4.json
  33. 1 2
      ambari-web/app/controllers/application.js
  34. 3 3
      ambari-web/app/controllers/installer.js
  35. 1 2
      ambari-web/app/controllers/login_controller.js
  36. 2 1
      ambari-web/app/controllers/main.js
  37. 2 3
      ambari-web/app/controllers/main/host/add_controller.js
  38. 2 2
      ambari-web/app/controllers/main/host/details.js
  39. 2 2
      ambari-web/app/controllers/main/service/add_controller.js
  40. 41 38
      ambari-web/app/controllers/wizard/slave_component_groups_controller.js
  41. 11 16
      ambari-web/app/controllers/wizard/step3_controller.js
  42. 2 1
      ambari-web/app/controllers/wizard/step7_controller.js
  43. 98 28
      ambari-web/app/controllers/wizard/step8_controller.js
  44. 15 7
      ambari-web/app/controllers/wizard/step9_controller.js
  45. 5 3
      ambari-web/app/data/config_properties.js
  46. 2 1
      ambari-web/app/data/statusCodes.js
  47. 7 0
      ambari-web/app/models/component.js
  48. 1 2
      ambari-web/app/models/host.js
  49. 23 1
      ambari-web/app/models/service_config.js
  50. 16 14
      ambari-web/app/router.js
  51. 6 4
      ambari-web/app/routes/installer.js
  52. 15 3
      ambari-web/app/styles/application.less
  53. 1 1
      ambari-web/app/templates/application.hbs
  54. 5 2
      ambari-web/app/templates/main.hbs
  55. 57 55
      ambari-web/app/templates/main/dashboard/service/hbase.hbs
  56. 104 102
      ambari-web/app/templates/main/dashboard/service/hdfs.hbs
  57. 1 1
      ambari-web/app/templates/main/dashboard/service/hive.hbs
  58. 86 84
      ambari-web/app/templates/main/dashboard/service/mapreduce.hbs
  59. 1 1
      ambari-web/app/templates/main/dashboard/service/oozie.hbs
  60. 1 1
      ambari-web/app/templates/main/dashboard/service/zookeeper.hbs
  61. 1 21
      ambari-web/app/templates/main/service/info/summary.hbs
  62. 37 0
      ambari-web/app/templates/main/service/info/summary_alert.hbs
  63. 12 12
      ambari-web/app/templates/wizard/slave_component_hosts.hbs
  64. 3 2
      ambari-web/app/templates/wizard/slave_hosts.hbs
  65. 1 1
      ambari-web/app/templates/wizard/step7.hbs
  66. 1 1
      ambari-web/app/templates/wizard/step9.hbs
  67. 11 12
      ambari-web/app/utils/db.js
  68. 9 2
      ambari-web/app/views/common/chart/linear_time.js
  69. 1 1
      ambari-web/app/views/main/dashboard/cluster_metrics/load.js
  70. 1 1
      ambari-web/app/views/main/dashboard/cluster_metrics/memory.js
  71. 2 1
      ambari-web/app/views/main/dashboard/cluster_metrics/network.js
  72. 1 1
      ambari-web/app/views/main/host/metrics/disk.js
  73. 1 1
      ambari-web/app/views/main/host/metrics/load.js
  74. 1 1
      ambari-web/app/views/main/host/metrics/memory.js
  75. 1 1
      ambari-web/app/views/main/host/metrics/network.js
  76. 1 1
      ambari-web/app/views/main/host/metrics/processes.js
  77. 1 1
      ambari-web/app/views/main/service/info/metrics/hbase/regionserver_queuesize.js
  78. 1 1
      ambari-web/app/views/main/service/info/metrics/hbase/regionserver_rw_requests.js
  79. 1 1
      ambari-web/app/views/main/service/info/metrics/hdfs/block_status.js
  80. 1 1
      ambari-web/app/views/main/service/info/metrics/hdfs/file_operations.js
  81. 1 1
      ambari-web/app/views/main/service/info/metrics/hdfs/io.js
  82. 1 1
      ambari-web/app/views/main/service/info/metrics/hdfs/jvm_heap.js
  83. 1 1
      ambari-web/app/views/main/service/info/metrics/hdfs/jvm_threads.js
  84. 1 1
      ambari-web/app/views/main/service/info/metrics/hdfs/space_utilization.js
  85. 1 1
      ambari-web/app/views/main/service/info/metrics/mapreduce/jobs_running_waiting.js
  86. 1 1
      ambari-web/app/views/main/service/info/metrics/mapreduce/jobs_status.js
  87. 1 1
      ambari-web/app/views/main/service/info/metrics/mapreduce/map_slots.js
  88. 1 1
      ambari-web/app/views/main/service/info/metrics/mapreduce/reduce_slots.js
  89. 14 2
      ambari-web/app/views/main/service/info/summary.js
  90. 2 1
      ambari-web/app/views/wizard/controls_view.js
  91. 0 1
      ambari-web/app/views/wizard/step7_view.js
  92. 5 0
      ambari-web/app/views/wizard/step9_view.js
  93. 15 0
      ambari-web/pom.xml

+ 0 - 0
ambari-web/app/assets/data/wizard/deploy/poll_1.json → ambari-web/app/assets/data/wizard/deploy/2_hosts/poll_1.json


+ 0 - 0
ambari-web/app/assets/data/wizard/deploy/poll_2.json → ambari-web/app/assets/data/wizard/deploy/2_hosts/poll_2.json


+ 0 - 0
ambari-web/app/assets/data/wizard/deploy/poll_3.json → ambari-web/app/assets/data/wizard/deploy/2_hosts/poll_3.json


+ 0 - 0
ambari-web/app/assets/data/wizard/deploy/poll_4.json → ambari-web/app/assets/data/wizard/deploy/2_hosts/poll_4.json


+ 0 - 0
ambari-web/app/assets/data/wizard/deploy/poll_5.json → ambari-web/app/assets/data/wizard/deploy/2_hosts/poll_5.json


+ 0 - 0
ambari-web/app/assets/data/wizard/deploy/poll_5_failed.json → ambari-web/app/assets/data/wizard/deploy/2_hosts/poll_5_failed.json


+ 0 - 0
ambari-web/app/assets/data/wizard/deploy/poll_6.json → ambari-web/app/assets/data/wizard/deploy/2_hosts/poll_6.json


+ 0 - 0
ambari-web/app/assets/data/wizard/deploy/poll_7.json → ambari-web/app/assets/data/wizard/deploy/2_hosts/poll_7.json


+ 0 - 0
ambari-web/app/assets/data/wizard/deploy/poll_8.json → ambari-web/app/assets/data/wizard/deploy/2_hosts/poll_8.json


+ 0 - 0
ambari-web/app/assets/data/wizard/deploy/poll_9.json → ambari-web/app/assets/data/wizard/deploy/2_hosts/poll_9.json


+ 22 - 22
ambari-web/app/assets/data/wizard/deploy/multi_1.json → ambari-web/app/assets/data/wizard/deploy/5_hosts/poll_1.json

@@ -12,7 +12,7 @@
         "stdout" : "",
         "status" : "PENDING",
         "stderr" : "",
-        "host_name" : "ip-10-116-243-112.ec2.internal",
+        "host_name" : "host1",
         "id" : 5,
         "cluster_name" : "mycluster",
         "attempt_cnt" : 0,
@@ -30,7 +30,7 @@
         "stdout" : "",
         "status" : "PENDING",
         "stderr" : "",
-        "host_name" : "ip-10-40-129-119.ec2.internal",
+        "host_name" : "host2",
         "id" : 20,
         "cluster_name" : "mycluster",
         "attempt_cnt" : 0,
@@ -48,7 +48,7 @@
         "stdout" : "",
         "status" : "PENDING",
         "stderr" : "",
-        "host_name" : "ip-10-40-129-119.ec2.internal",
+        "host_name" : "host2",
         "id" : 15,
         "cluster_name" : "mycluster",
         "attempt_cnt" : 0,
@@ -66,7 +66,7 @@
         "stdout" : "",
         "status" : "PENDING",
         "stderr" : "",
-        "host_name" : "ip-10-116-173-180.ec2.internal",
+        "host_name" : "host3",
         "id" : 3,
         "cluster_name" : "mycluster",
         "attempt_cnt" : 0,
@@ -84,7 +84,7 @@
         "stdout" : "",
         "status" : "PENDING",
         "stderr" : "",
-        "host_name" : "ip-10-116-243-112.ec2.internal",
+        "host_name" : "host1",
         "id" : 7,
         "cluster_name" : "mycluster",
         "attempt_cnt" : 0,
@@ -102,7 +102,7 @@
         "stdout" : "",
         "status" : "PENDING",
         "stderr" : "",
-        "host_name" : "ip-10-196-202-79.ec2.internal",
+        "host_name" : "host4",
         "id" : 14,
         "cluster_name" : "mycluster",
         "attempt_cnt" : 0,
@@ -120,7 +120,7 @@
         "stdout" : "",
         "status" : "PENDING",
         "stderr" : "",
-        "host_name" : "ip-10-196-202-79.ec2.internal",
+        "host_name" : "host4",
         "id" : 13,
         "cluster_name" : "mycluster",
         "attempt_cnt" : 0,
@@ -138,7 +138,7 @@
         "stdout" : "",
         "status" : "PENDING",
         "stderr" : "",
-        "host_name" : "ip-10-116-173-180.ec2.internal",
+        "host_name" : "host3",
         "id" : 1,
         "cluster_name" : "mycluster",
         "attempt_cnt" : 0,
@@ -156,7 +156,7 @@
         "stdout" : "",
         "status" : "PENDING",
         "stderr" : "",
-        "host_name" : "ip-10-40-129-119.ec2.internal",
+        "host_name" : "host2",
         "id" : 18,
         "cluster_name" : "mycluster",
         "attempt_cnt" : 0,
@@ -174,7 +174,7 @@
         "stdout" : "",
         "status" : "PENDING",
         "stderr" : "",
-        "host_name" : "ip-10-118-58-228.ec2.internal",
+        "host_name" : "host5",
         "id" : 8,
         "cluster_name" : "mycluster",
         "attempt_cnt" : 0,
@@ -192,7 +192,7 @@
         "stdout" : "",
         "status" : "PENDING",
         "stderr" : "",
-        "host_name" : "ip-10-116-243-112.ec2.internal",
+        "host_name" : "host1",
         "id" : 6,
         "cluster_name" : "mycluster",
         "attempt_cnt" : 0,
@@ -210,7 +210,7 @@
         "stdout" : "",
         "status" : "PENDING",
         "stderr" : "",
-        "host_name" : "ip-10-116-173-180.ec2.internal",
+        "host_name" : "host3",
         "id" : 2,
         "cluster_name" : "mycluster",
         "attempt_cnt" : 0,
@@ -228,7 +228,7 @@
         "stdout" : "",
         "status" : "PENDING",
         "stderr" : "",
-        "host_name" : "ip-10-116-173-180.ec2.internal",
+        "host_name" : "host3",
         "id" : 4,
         "cluster_name" : "mycluster",
         "attempt_cnt" : 0,
@@ -246,7 +246,7 @@
         "stdout" : "",
         "status" : "PENDING",
         "stderr" : "",
-        "host_name" : "ip-10-40-129-119.ec2.internal",
+        "host_name" : "host2",
         "id" : 19,
         "cluster_name" : "mycluster",
         "attempt_cnt" : 0,
@@ -264,7 +264,7 @@
         "stdout" : "",
         "status" : "PENDING",
         "stderr" : "",
-        "host_name" : "ip-10-118-58-228.ec2.internal",
+        "host_name" : "host5",
         "id" : 10,
         "cluster_name" : "mycluster",
         "attempt_cnt" : 0,
@@ -282,7 +282,7 @@
         "stdout" : "",
         "status" : "PENDING",
         "stderr" : "",
-        "host_name" : "ip-10-196-202-79.ec2.internal",
+        "host_name" : "host4",
         "id" : 12,
         "cluster_name" : "mycluster",
         "attempt_cnt" : 0,
@@ -300,7 +300,7 @@
         "stdout" : "",
         "status" : "PENDING",
         "stderr" : "",
-        "host_name" : "ip-10-40-129-119.ec2.internal",
+        "host_name" : "host2",
         "id" : 21,
         "cluster_name" : "mycluster",
         "attempt_cnt" : 0,
@@ -318,7 +318,7 @@
         "stdout" : "",
         "status" : "PENDING",
         "stderr" : "",
-        "host_name" : "ip-10-118-58-228.ec2.internal",
+        "host_name" : "host5",
         "id" : 9,
         "cluster_name" : "mycluster",
         "attempt_cnt" : 0,
@@ -336,7 +336,7 @@
         "stdout" : "",
         "status" : "PENDING",
         "stderr" : "",
-        "host_name" : "ip-10-40-129-119.ec2.internal",
+        "host_name" : "host2",
         "id" : 22,
         "cluster_name" : "mycluster",
         "attempt_cnt" : 0,
@@ -354,7 +354,7 @@
         "stdout" : "",
         "status" : "PENDING",
         "stderr" : "",
-        "host_name" : "ip-10-40-129-119.ec2.internal",
+        "host_name" : "host2",
         "id" : 16,
         "cluster_name" : "mycluster",
         "attempt_cnt" : 0,
@@ -372,7 +372,7 @@
         "stdout" : "",
         "status" : "PENDING",
         "stderr" : "",
-        "host_name" : "ip-10-118-58-228.ec2.internal",
+        "host_name" : "host5",
         "id" : 11,
         "cluster_name" : "mycluster",
         "attempt_cnt" : 0,
@@ -390,7 +390,7 @@
         "stdout" : "",
         "status" : "PENDING",
         "stderr" : "",
-        "host_name" : "ip-10-40-129-119.ec2.internal",
+        "host_name" : "host2",
         "id" : 17,
         "cluster_name" : "mycluster",
         "attempt_cnt" : 0,

File diff suppressed because it is too large
+ 0 - 0
ambari-web/app/assets/data/wizard/deploy/5_hosts/poll_10.json


+ 22 - 22
ambari-web/app/assets/data/wizard/deploy/multi_2.json → ambari-web/app/assets/data/wizard/deploy/5_hosts/poll_2.json

@@ -12,7 +12,7 @@
         "stdout" : "",
         "status" : "QUEUED",
         "stderr" : "",
-        "host_name" : "ip-10-116-173-180.ec2.internal",
+        "host_name" : "host3",
         "id" : 4,
         "cluster_name" : "mycluster",
         "attempt_cnt" : 1,
@@ -30,7 +30,7 @@
         "stdout" : "",
         "status" : "QUEUED",
         "stderr" : "",
-        "host_name" : "ip-10-40-129-119.ec2.internal",
+        "host_name" : "host2",
         "id" : 15,
         "cluster_name" : "mycluster",
         "attempt_cnt" : 1,
@@ -48,7 +48,7 @@
         "stdout" : "",
         "status" : "QUEUED",
         "stderr" : "",
-        "host_name" : "ip-10-116-243-112.ec2.internal",
+        "host_name" : "host1",
         "id" : 7,
         "cluster_name" : "mycluster",
         "attempt_cnt" : 1,
@@ -66,7 +66,7 @@
         "stdout" : "",
         "status" : "QUEUED",
         "stderr" : "",
-        "host_name" : "ip-10-196-202-79.ec2.internal",
+        "host_name" : "host4",
         "id" : 14,
         "cluster_name" : "mycluster",
         "attempt_cnt" : 1,
@@ -84,7 +84,7 @@
         "stdout" : "",
         "status" : "QUEUED",
         "stderr" : "",
-        "host_name" : "ip-10-118-58-228.ec2.internal",
+        "host_name" : "host5",
         "id" : 10,
         "cluster_name" : "mycluster",
         "attempt_cnt" : 1,
@@ -102,7 +102,7 @@
         "stdout" : "",
         "status" : "QUEUED",
         "stderr" : "",
-        "host_name" : "ip-10-40-129-119.ec2.internal",
+        "host_name" : "host2",
         "id" : 21,
         "cluster_name" : "mycluster",
         "attempt_cnt" : 1,
@@ -120,7 +120,7 @@
         "stdout" : "",
         "status" : "QUEUED",
         "stderr" : "",
-        "host_name" : "ip-10-118-58-228.ec2.internal",
+        "host_name" : "host5",
         "id" : 8,
         "cluster_name" : "mycluster",
         "attempt_cnt" : 1,
@@ -138,7 +138,7 @@
         "stdout" : "",
         "status" : "QUEUED",
         "stderr" : "",
-        "host_name" : "ip-10-40-129-119.ec2.internal",
+        "host_name" : "host2",
         "id" : 16,
         "cluster_name" : "mycluster",
         "attempt_cnt" : 1,
@@ -156,7 +156,7 @@
         "stdout" : "",
         "status" : "QUEUED",
         "stderr" : "",
-        "host_name" : "ip-10-116-173-180.ec2.internal",
+        "host_name" : "host3",
         "id" : 2,
         "cluster_name" : "mycluster",
         "attempt_cnt" : 1,
@@ -174,7 +174,7 @@
         "stdout" : "",
         "status" : "QUEUED",
         "stderr" : "",
-        "host_name" : "ip-10-40-129-119.ec2.internal",
+        "host_name" : "host2",
         "id" : 20,
         "cluster_name" : "mycluster",
         "attempt_cnt" : 1,
@@ -192,7 +192,7 @@
         "stdout" : "",
         "status" : "QUEUED",
         "stderr" : "",
-        "host_name" : "ip-10-118-58-228.ec2.internal",
+        "host_name" : "host5",
         "id" : 11,
         "cluster_name" : "mycluster",
         "attempt_cnt" : 1,
@@ -210,7 +210,7 @@
         "stdout" : "",
         "status" : "QUEUED",
         "stderr" : "",
-        "host_name" : "ip-10-116-173-180.ec2.internal",
+        "host_name" : "host3",
         "id" : 3,
         "cluster_name" : "mycluster",
         "attempt_cnt" : 1,
@@ -228,7 +228,7 @@
         "stdout" : "",
         "status" : "QUEUED",
         "stderr" : "",
-        "host_name" : "ip-10-196-202-79.ec2.internal",
+        "host_name" : "host4",
         "id" : 12,
         "cluster_name" : "mycluster",
         "attempt_cnt" : 1,
@@ -246,7 +246,7 @@
         "stdout" : "",
         "status" : "QUEUED",
         "stderr" : "",
-        "host_name" : "ip-10-118-58-228.ec2.internal",
+        "host_name" : "host5",
         "id" : 9,
         "cluster_name" : "mycluster",
         "attempt_cnt" : 1,
@@ -264,7 +264,7 @@
         "stdout" : "",
         "status" : "QUEUED",
         "stderr" : "",
-        "host_name" : "ip-10-116-243-112.ec2.internal",
+        "host_name" : "host1",
         "id" : 6,
         "cluster_name" : "mycluster",
         "attempt_cnt" : 1,
@@ -282,7 +282,7 @@
         "stdout" : "",
         "status" : "QUEUED",
         "stderr" : "",
-        "host_name" : "ip-10-40-129-119.ec2.internal",
+        "host_name" : "host2",
         "id" : 17,
         "cluster_name" : "mycluster",
         "attempt_cnt" : 1,
@@ -300,7 +300,7 @@
         "stdout" : "",
         "status" : "QUEUED",
         "stderr" : "",
-        "host_name" : "ip-10-40-129-119.ec2.internal",
+        "host_name" : "host2",
         "id" : 18,
         "cluster_name" : "mycluster",
         "attempt_cnt" : 1,
@@ -318,7 +318,7 @@
         "stdout" : "",
         "status" : "QUEUED",
         "stderr" : "",
-        "host_name" : "ip-10-40-129-119.ec2.internal",
+        "host_name" : "host2",
         "id" : 19,
         "cluster_name" : "mycluster",
         "attempt_cnt" : 1,
@@ -336,7 +336,7 @@
         "stdout" : "",
         "status" : "QUEUED",
         "stderr" : "",
-        "host_name" : "ip-10-40-129-119.ec2.internal",
+        "host_name" : "host2",
         "id" : 22,
         "cluster_name" : "mycluster",
         "attempt_cnt" : 1,
@@ -354,7 +354,7 @@
         "stdout" : "",
         "status" : "QUEUED",
         "stderr" : "",
-        "host_name" : "ip-10-116-243-112.ec2.internal",
+        "host_name" : "host1",
         "id" : 5,
         "cluster_name" : "mycluster",
         "attempt_cnt" : 1,
@@ -372,7 +372,7 @@
         "stdout" : "",
         "status" : "QUEUED",
         "stderr" : "",
-        "host_name" : "ip-10-116-173-180.ec2.internal",
+        "host_name" : "host3",
         "id" : 1,
         "cluster_name" : "mycluster",
         "attempt_cnt" : 1,
@@ -390,7 +390,7 @@
         "stdout" : "",
         "status" : "QUEUED",
         "stderr" : "",
-        "host_name" : "ip-10-196-202-79.ec2.internal",
+        "host_name" : "host4",
         "id" : 13,
         "cluster_name" : "mycluster",
         "attempt_cnt" : 1,

File diff suppressed because it is too large
+ 1 - 1
ambari-web/app/assets/data/wizard/deploy/5_hosts/poll_3.json


File diff suppressed because it is too large
+ 0 - 0
ambari-web/app/assets/data/wizard/deploy/5_hosts/poll_4.json


File diff suppressed because it is too large
+ 2 - 2
ambari-web/app/assets/data/wizard/deploy/5_hosts/poll_5.json


+ 22 - 22
ambari-web/app/assets/data/wizard/deploy/multi_6.json → ambari-web/app/assets/data/wizard/deploy/5_hosts/poll_6.json

@@ -12,7 +12,7 @@
         "stdout" : "",
         "status" : "PENDING",
         "stderr" : "",
-        "host_name" : "ip-10-196-202-79.ec2.internal",
+        "host_name" : "host4",
         "id" : 37,
         "cluster_name" : "mycluster",
         "attempt_cnt" : 0,
@@ -30,7 +30,7 @@
         "stdout" : "",
         "status" : "PENDING",
         "stderr" : "",
-        "host_name" : "ip-10-116-243-112.ec2.internal",
+        "host_name" : "host1",
         "id" : 25,
         "cluster_name" : "mycluster",
         "attempt_cnt" : 0,
@@ -48,7 +48,7 @@
         "stdout" : "",
         "status" : "PENDING",
         "stderr" : "",
-        "host_name" : "ip-10-40-129-119.ec2.internal",
+        "host_name" : "host2",
         "id" : 42,
         "cluster_name" : "mycluster",
         "attempt_cnt" : 0,
@@ -66,7 +66,7 @@
         "stdout" : "",
         "status" : "PENDING",
         "stderr" : "",
-        "host_name" : "ip-10-40-129-119.ec2.internal",
+        "host_name" : "host2",
         "id" : 32,
         "cluster_name" : "mycluster",
         "attempt_cnt" : 0,
@@ -84,7 +84,7 @@
         "stdout" : "",
         "status" : "PENDING",
         "stderr" : "",
-        "host_name" : "ip-10-196-202-79.ec2.internal",
+        "host_name" : "host4",
         "id" : 31,
         "cluster_name" : "mycluster",
         "attempt_cnt" : 0,
@@ -102,7 +102,7 @@
         "stdout" : "",
         "status" : "PENDING",
         "stderr" : "",
-        "host_name" : "ip-10-40-129-119.ec2.internal",
+        "host_name" : "host2",
         "id" : 33,
         "cluster_name" : "mycluster",
         "attempt_cnt" : 0,
@@ -120,7 +120,7 @@
         "stdout" : "",
         "status" : "PENDING",
         "stderr" : "",
-        "host_name" : "ip-10-118-58-228.ec2.internal",
+        "host_name" : "host5",
         "id" : 26,
         "cluster_name" : "mycluster",
         "attempt_cnt" : 0,
@@ -138,7 +138,7 @@
         "stdout" : "",
         "status" : "PENDING",
         "stderr" : "",
-        "host_name" : "ip-10-40-129-119.ec2.internal",
+        "host_name" : "host2",
         "id" : 44,
         "cluster_name" : "mycluster",
         "attempt_cnt" : 0,
@@ -156,7 +156,7 @@
         "stdout" : "",
         "status" : "PENDING",
         "stderr" : "",
-        "host_name" : "ip-10-116-243-112.ec2.internal",
+        "host_name" : "host1",
         "id" : 36,
         "cluster_name" : "mycluster",
         "attempt_cnt" : 0,
@@ -174,7 +174,7 @@
         "stdout" : "",
         "status" : "PENDING",
         "stderr" : "",
-        "host_name" : "ip-10-116-173-180.ec2.internal",
+        "host_name" : "host3",
         "id" : 34,
         "cluster_name" : "mycluster",
         "attempt_cnt" : 0,
@@ -192,7 +192,7 @@
         "stdout" : "",
         "status" : "PENDING",
         "stderr" : "",
-        "host_name" : "ip-10-116-173-180.ec2.internal",
+        "host_name" : "host3",
         "id" : 35,
         "cluster_name" : "mycluster",
         "attempt_cnt" : 0,
@@ -210,7 +210,7 @@
         "stdout" : "",
         "status" : "PENDING",
         "stderr" : "",
-        "host_name" : "ip-10-40-129-119.ec2.internal",
+        "host_name" : "host2",
         "id" : 38,
         "cluster_name" : "mycluster",
         "attempt_cnt" : 0,
@@ -228,7 +228,7 @@
         "stdout" : "",
         "status" : "PENDING",
         "stderr" : "",
-        "host_name" : "ip-10-118-58-228.ec2.internal",
+        "host_name" : "host5",
         "id" : 29,
         "cluster_name" : "mycluster",
         "attempt_cnt" : 0,
@@ -246,7 +246,7 @@
         "stdout" : "",
         "status" : "PENDING",
         "stderr" : "",
-        "host_name" : "ip-10-118-58-228.ec2.internal",
+        "host_name" : "host5",
         "id" : 28,
         "cluster_name" : "mycluster",
         "attempt_cnt" : 0,
@@ -264,7 +264,7 @@
         "stdout" : "",
         "status" : "PENDING",
         "stderr" : "",
-        "host_name" : "ip-10-116-243-112.ec2.internal",
+        "host_name" : "host1",
         "id" : 24,
         "cluster_name" : "mycluster",
         "attempt_cnt" : 0,
@@ -282,7 +282,7 @@
         "stdout" : "",
         "status" : "PENDING",
         "stderr" : "",
-        "host_name" : "ip-10-116-173-180.ec2.internal",
+        "host_name" : "host3",
         "id" : 40,
         "cluster_name" : "mycluster",
         "attempt_cnt" : 0,
@@ -300,7 +300,7 @@
         "stdout" : "",
         "status" : "PENDING",
         "stderr" : "",
-        "host_name" : "ip-10-40-129-119.ec2.internal",
+        "host_name" : "host2",
         "id" : 39,
         "cluster_name" : "mycluster",
         "attempt_cnt" : 0,
@@ -318,7 +318,7 @@
         "stdout" : "",
         "status" : "PENDING",
         "stderr" : "",
-        "host_name" : "ip-10-116-173-180.ec2.internal",
+        "host_name" : "host3",
         "id" : 23,
         "cluster_name" : "mycluster",
         "attempt_cnt" : 0,
@@ -336,7 +336,7 @@
         "stdout" : "",
         "status" : "PENDING",
         "stderr" : "",
-        "host_name" : "ip-10-118-58-228.ec2.internal",
+        "host_name" : "host5",
         "id" : 27,
         "cluster_name" : "mycluster",
         "attempt_cnt" : 0,
@@ -354,7 +354,7 @@
         "stdout" : "",
         "status" : "PENDING",
         "stderr" : "",
-        "host_name" : "ip-10-196-202-79.ec2.internal",
+        "host_name" : "host4",
         "id" : 30,
         "cluster_name" : "mycluster",
         "attempt_cnt" : 0,
@@ -372,7 +372,7 @@
         "stdout" : "",
         "status" : "PENDING",
         "stderr" : "",
-        "host_name" : "ip-10-40-129-119.ec2.internal",
+        "host_name" : "host2",
         "id" : 43,
         "cluster_name" : "mycluster",
         "attempt_cnt" : 0,
@@ -390,7 +390,7 @@
         "stdout" : "",
         "status" : "PENDING",
         "stderr" : "",
-        "host_name" : "ip-10-40-129-119.ec2.internal",
+        "host_name" : "host2",
         "id" : 41,
         "cluster_name" : "mycluster",
         "attempt_cnt" : 0,

File diff suppressed because it is too large
+ 0 - 0
ambari-web/app/assets/data/wizard/deploy/5_hosts/poll_7.json


File diff suppressed because it is too large
+ 1 - 1
ambari-web/app/assets/data/wizard/deploy/5_hosts/poll_8.json


File diff suppressed because it is too large
+ 1 - 1
ambari-web/app/assets/data/wizard/deploy/5_hosts/poll_9.json


+ 405 - 0
ambari-web/app/assets/data/wizard/deploy/master_failure/poll_1.json

@@ -0,0 +1,405 @@
+{
+  "href" : "http://ambari:8080/api/clusters/mycluster/requests/1?fields=tasks/*",
+  "Requests" : {
+    "id" : 1,
+    "cluster_name" : "mycluster"
+  },
+  "tasks" : [
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/5",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "PENDING",
+        "stderr" : "",
+        "host_name" : "host1",
+        "id" : 5,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 0,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "DATANODE",
+        "start_time" : -1,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/20",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "PENDING",
+        "stderr" : "",
+        "host_name" : "host2",
+        "id" : 20,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 0,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "PIG",
+        "start_time" : -1,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/15",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "PENDING",
+        "stderr" : "",
+        "host_name" : "host2",
+        "id" : 15,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 0,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "DATANODE",
+        "start_time" : -1,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/3",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "PENDING",
+        "stderr" : "",
+        "host_name" : "host3",
+        "id" : 3,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 0,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "OOZIE_SERVER",
+        "start_time" : -1,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/7",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "PENDING",
+        "stderr" : "",
+        "host_name" : "host1",
+        "id" : 7,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 0,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "TASKTRACKER",
+        "start_time" : -1,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/14",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "PENDING",
+        "stderr" : "",
+        "host_name" : "host4",
+        "id" : 14,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 0,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "TASKTRACKER",
+        "start_time" : -1,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/13",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "PENDING",
+        "stderr" : "",
+        "host_name" : "host4",
+        "id" : 13,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 0,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "GANGLIA_MONITOR",
+        "start_time" : -1,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/1",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "PENDING",
+        "stderr" : "",
+        "host_name" : "host3",
+        "id" : 1,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 0,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "GANGLIA_MONITOR",
+        "start_time" : -1,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/18",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "PENDING",
+        "stderr" : "",
+        "host_name" : "host2",
+        "id" : 18,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 0,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "MAPREDUCE_CLIENT",
+        "start_time" : -1,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/8",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "PENDING",
+        "stderr" : "",
+        "host_name" : "host5",
+        "id" : 8,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 0,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "GANGLIA_MONITOR",
+        "start_time" : -1,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/6",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "PENDING",
+        "stderr" : "",
+        "host_name" : "host1",
+        "id" : 6,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 0,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "GANGLIA_MONITOR",
+        "start_time" : -1,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/2",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "PENDING",
+        "stderr" : "",
+        "host_name" : "host3",
+        "id" : 2,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 0,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "JOBTRACKER",
+        "start_time" : -1,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/4",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "PENDING",
+        "stderr" : "",
+        "host_name" : "host3",
+        "id" : 4,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 0,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "SECONDARY_NAMENODE",
+        "start_time" : -1,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/19",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "PENDING",
+        "stderr" : "",
+        "host_name" : "host2",
+        "id" : 19,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 0,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "OOZIE_CLIENT",
+        "start_time" : -1,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/10",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "PENDING",
+        "stderr" : "",
+        "host_name" : "host5",
+        "id" : 10,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 0,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "NAGIOS_SERVER",
+        "start_time" : -1,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/12",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "PENDING",
+        "stderr" : "",
+        "host_name" : "host4",
+        "id" : 12,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 0,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "DATANODE",
+        "start_time" : -1,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/21",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "PENDING",
+        "stderr" : "",
+        "host_name" : "host2",
+        "id" : 21,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 0,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "SQOOP",
+        "start_time" : -1,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/9",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "PENDING",
+        "stderr" : "",
+        "host_name" : "host5",
+        "id" : 9,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 0,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "GANGLIA_SERVER",
+        "start_time" : -1,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/22",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "PENDING",
+        "stderr" : "",
+        "host_name" : "host2",
+        "id" : 22,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 0,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "TASKTRACKER",
+        "start_time" : -1,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/16",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "PENDING",
+        "stderr" : "",
+        "host_name" : "host2",
+        "id" : 16,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 0,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "GANGLIA_MONITOR",
+        "start_time" : -1,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/11",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "PENDING",
+        "stderr" : "",
+        "host_name" : "host5",
+        "id" : 11,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 0,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "NAMENODE",
+        "start_time" : -1,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/17",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "PENDING",
+        "stderr" : "",
+        "host_name" : "host2",
+        "id" : 17,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 0,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "HDFS_CLIENT",
+        "start_time" : -1,
+        "stage_id" : 1
+      }
+    }
+  ]
+}

+ 405 - 0
ambari-web/app/assets/data/wizard/deploy/master_failure/poll_2.json

@@ -0,0 +1,405 @@
+{
+  "href" : "http://ambari:8080/api/clusters/mycluster/requests/1?fields=tasks/*",
+  "Requests" : {
+    "id" : 1,
+    "cluster_name" : "mycluster"
+  },
+  "tasks" : [
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/4",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "QUEUED",
+        "stderr" : "",
+        "host_name" : "host3",
+        "id" : 4,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 1,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "SECONDARY_NAMENODE",
+        "start_time" : 1352863664537,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/15",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "QUEUED",
+        "stderr" : "",
+        "host_name" : "host2",
+        "id" : 15,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 1,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "DATANODE",
+        "start_time" : 1352863666842,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/7",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "QUEUED",
+        "stderr" : "",
+        "host_name" : "host1",
+        "id" : 7,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 1,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "TASKTRACKER",
+        "start_time" : 1352863665177,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/14",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "QUEUED",
+        "stderr" : "",
+        "host_name" : "host4",
+        "id" : 14,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 1,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "TASKTRACKER",
+        "start_time" : 1352863666672,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/10",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "QUEUED",
+        "stderr" : "",
+        "host_name" : "host5",
+        "id" : 10,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 1,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "NAGIOS_SERVER",
+        "start_time" : 1352863665856,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/21",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "QUEUED",
+        "stderr" : "",
+        "host_name" : "host2",
+        "id" : 21,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 1,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "SQOOP",
+        "start_time" : 1352863667466,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/8",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "QUEUED",
+        "stderr" : "",
+        "host_name" : "host5",
+        "id" : 8,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 1,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "GANGLIA_MONITOR",
+        "start_time" : 1352863665481,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/16",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "QUEUED",
+        "stderr" : "",
+        "host_name" : "host2",
+        "id" : 16,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 1,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "GANGLIA_MONITOR",
+        "start_time" : 1352863666913,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/2",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "QUEUED",
+        "stderr" : "",
+        "host_name" : "host3",
+        "id" : 2,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 1,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "JOBTRACKER",
+        "start_time" : 1352863664213,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/20",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "QUEUED",
+        "stderr" : "",
+        "host_name" : "host2",
+        "id" : 20,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 1,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "PIG",
+        "start_time" : 1352863667299,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/11",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "QUEUED",
+        "stderr" : "",
+        "host_name" : "host5",
+        "id" : 11,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 1,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "NAMENODE",
+        "start_time" : 1352863665939,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/3",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "QUEUED",
+        "stderr" : "",
+        "host_name" : "host3",
+        "id" : 3,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 1,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "OOZIE_SERVER",
+        "start_time" : 1352863664455,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/12",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "QUEUED",
+        "stderr" : "",
+        "host_name" : "host4",
+        "id" : 12,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 1,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "DATANODE",
+        "start_time" : 1352863666165,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/9",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "QUEUED",
+        "stderr" : "",
+        "host_name" : "host5",
+        "id" : 9,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 1,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "GANGLIA_SERVER",
+        "start_time" : 1352863665690,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/6",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "QUEUED",
+        "stderr" : "",
+        "host_name" : "host1",
+        "id" : 6,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 1,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "GANGLIA_MONITOR",
+        "start_time" : 1352863664901,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/17",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "QUEUED",
+        "stderr" : "",
+        "host_name" : "host2",
+        "id" : 17,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 1,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "HDFS_CLIENT",
+        "start_time" : 1352863666987,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/18",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "QUEUED",
+        "stderr" : "",
+        "host_name" : "host2",
+        "id" : 18,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 1,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "MAPREDUCE_CLIENT",
+        "start_time" : 1352863667058,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/19",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "QUEUED",
+        "stderr" : "",
+        "host_name" : "host2",
+        "id" : 19,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 1,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "OOZIE_CLIENT",
+        "start_time" : 1352863667216,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/22",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "QUEUED",
+        "stderr" : "",
+        "host_name" : "host2",
+        "id" : 22,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 1,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "TASKTRACKER",
+        "start_time" : 1352863667578,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/5",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "QUEUED",
+        "stderr" : "",
+        "host_name" : "host1",
+        "id" : 5,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 1,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "DATANODE",
+        "start_time" : 1352863664723,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/1",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "QUEUED",
+        "stderr" : "",
+        "host_name" : "host3",
+        "id" : 1,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 1,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "GANGLIA_MONITOR",
+        "start_time" : 1352863663984,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/13",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "QUEUED",
+        "stderr" : "",
+        "host_name" : "host4",
+        "id" : 13,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 1,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "GANGLIA_MONITOR",
+        "start_time" : 1352863666401,
+        "stage_id" : 1
+      }
+    }
+  ]
+}

File diff suppressed because it is too large
+ 29 - 0
ambari-web/app/assets/data/wizard/deploy/master_failure/poll_3.json


File diff suppressed because it is too large
+ 11 - 0
ambari-web/app/assets/data/wizard/deploy/master_failure/poll_4.json


+ 405 - 0
ambari-web/app/assets/data/wizard/deploy/slave_failure/poll_1.json

@@ -0,0 +1,405 @@
+{
+  "href" : "http://ambari:8080/api/clusters/mycluster/requests/1?fields=tasks/*",
+  "Requests" : {
+    "id" : 1,
+    "cluster_name" : "mycluster"
+  },
+  "tasks" : [
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/5",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "PENDING",
+        "stderr" : "",
+        "host_name" : "host1",
+        "id" : 5,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 0,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "DATANODE",
+        "start_time" : -1,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/20",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "PENDING",
+        "stderr" : "",
+        "host_name" : "host2",
+        "id" : 20,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 0,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "PIG",
+        "start_time" : -1,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/15",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "PENDING",
+        "stderr" : "",
+        "host_name" : "host2",
+        "id" : 15,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 0,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "DATANODE",
+        "start_time" : -1,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/3",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "PENDING",
+        "stderr" : "",
+        "host_name" : "host3",
+        "id" : 3,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 0,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "OOZIE_SERVER",
+        "start_time" : -1,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/7",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "PENDING",
+        "stderr" : "",
+        "host_name" : "host1",
+        "id" : 7,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 0,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "TASKTRACKER",
+        "start_time" : -1,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/14",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "PENDING",
+        "stderr" : "",
+        "host_name" : "host4",
+        "id" : 14,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 0,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "TASKTRACKER",
+        "start_time" : -1,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/13",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "PENDING",
+        "stderr" : "",
+        "host_name" : "host4",
+        "id" : 13,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 0,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "GANGLIA_MONITOR",
+        "start_time" : -1,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/1",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "PENDING",
+        "stderr" : "",
+        "host_name" : "host3",
+        "id" : 1,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 0,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "GANGLIA_MONITOR",
+        "start_time" : -1,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/18",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "PENDING",
+        "stderr" : "",
+        "host_name" : "host2",
+        "id" : 18,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 0,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "MAPREDUCE_CLIENT",
+        "start_time" : -1,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/8",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "PENDING",
+        "stderr" : "",
+        "host_name" : "host5",
+        "id" : 8,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 0,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "GANGLIA_MONITOR",
+        "start_time" : -1,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/6",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "PENDING",
+        "stderr" : "",
+        "host_name" : "host1",
+        "id" : 6,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 0,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "GANGLIA_MONITOR",
+        "start_time" : -1,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/2",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "PENDING",
+        "stderr" : "",
+        "host_name" : "host3",
+        "id" : 2,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 0,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "JOBTRACKER",
+        "start_time" : -1,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/4",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "PENDING",
+        "stderr" : "",
+        "host_name" : "host3",
+        "id" : 4,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 0,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "SECONDARY_NAMENODE",
+        "start_time" : -1,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/19",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "PENDING",
+        "stderr" : "",
+        "host_name" : "host2",
+        "id" : 19,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 0,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "OOZIE_CLIENT",
+        "start_time" : -1,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/10",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "PENDING",
+        "stderr" : "",
+        "host_name" : "host5",
+        "id" : 10,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 0,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "NAGIOS_SERVER",
+        "start_time" : -1,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/12",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "PENDING",
+        "stderr" : "",
+        "host_name" : "host4",
+        "id" : 12,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 0,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "DATANODE",
+        "start_time" : -1,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/21",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "PENDING",
+        "stderr" : "",
+        "host_name" : "host2",
+        "id" : 21,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 0,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "SQOOP",
+        "start_time" : -1,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/9",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "PENDING",
+        "stderr" : "",
+        "host_name" : "host5",
+        "id" : 9,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 0,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "GANGLIA_SERVER",
+        "start_time" : -1,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/22",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "PENDING",
+        "stderr" : "",
+        "host_name" : "host2",
+        "id" : 22,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 0,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "TASKTRACKER",
+        "start_time" : -1,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/16",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "PENDING",
+        "stderr" : "",
+        "host_name" : "host2",
+        "id" : 16,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 0,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "GANGLIA_MONITOR",
+        "start_time" : -1,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/11",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "PENDING",
+        "stderr" : "",
+        "host_name" : "host5",
+        "id" : 11,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 0,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "NAMENODE",
+        "start_time" : -1,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/17",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "PENDING",
+        "stderr" : "",
+        "host_name" : "host2",
+        "id" : 17,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 0,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "HDFS_CLIENT",
+        "start_time" : -1,
+        "stage_id" : 1
+      }
+    }
+  ]
+}

+ 405 - 0
ambari-web/app/assets/data/wizard/deploy/slave_failure/poll_2.json

@@ -0,0 +1,405 @@
+{
+  "href" : "http://ambari:8080/api/clusters/mycluster/requests/1?fields=tasks/*",
+  "Requests" : {
+    "id" : 1,
+    "cluster_name" : "mycluster"
+  },
+  "tasks" : [
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/4",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "QUEUED",
+        "stderr" : "",
+        "host_name" : "host3",
+        "id" : 4,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 1,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "SECONDARY_NAMENODE",
+        "start_time" : 1352863664537,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/15",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "QUEUED",
+        "stderr" : "",
+        "host_name" : "host2",
+        "id" : 15,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 1,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "DATANODE",
+        "start_time" : 1352863666842,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/7",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "QUEUED",
+        "stderr" : "",
+        "host_name" : "host1",
+        "id" : 7,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 1,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "TASKTRACKER",
+        "start_time" : 1352863665177,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/14",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "QUEUED",
+        "stderr" : "",
+        "host_name" : "host4",
+        "id" : 14,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 1,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "TASKTRACKER",
+        "start_time" : 1352863666672,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/10",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "QUEUED",
+        "stderr" : "",
+        "host_name" : "host5",
+        "id" : 10,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 1,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "NAGIOS_SERVER",
+        "start_time" : 1352863665856,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/21",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "QUEUED",
+        "stderr" : "",
+        "host_name" : "host2",
+        "id" : 21,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 1,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "SQOOP",
+        "start_time" : 1352863667466,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/8",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "QUEUED",
+        "stderr" : "",
+        "host_name" : "host5",
+        "id" : 8,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 1,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "GANGLIA_MONITOR",
+        "start_time" : 1352863665481,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/16",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "QUEUED",
+        "stderr" : "",
+        "host_name" : "host2",
+        "id" : 16,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 1,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "GANGLIA_MONITOR",
+        "start_time" : 1352863666913,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/2",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "QUEUED",
+        "stderr" : "",
+        "host_name" : "host3",
+        "id" : 2,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 1,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "JOBTRACKER",
+        "start_time" : 1352863664213,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/20",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "QUEUED",
+        "stderr" : "",
+        "host_name" : "host2",
+        "id" : 20,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 1,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "PIG",
+        "start_time" : 1352863667299,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/11",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "QUEUED",
+        "stderr" : "",
+        "host_name" : "host5",
+        "id" : 11,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 1,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "NAMENODE",
+        "start_time" : 1352863665939,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/3",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "QUEUED",
+        "stderr" : "",
+        "host_name" : "host3",
+        "id" : 3,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 1,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "OOZIE_SERVER",
+        "start_time" : 1352863664455,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/12",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "QUEUED",
+        "stderr" : "",
+        "host_name" : "host4",
+        "id" : 12,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 1,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "DATANODE",
+        "start_time" : 1352863666165,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/9",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "QUEUED",
+        "stderr" : "",
+        "host_name" : "host5",
+        "id" : 9,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 1,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "GANGLIA_SERVER",
+        "start_time" : 1352863665690,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/6",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "QUEUED",
+        "stderr" : "",
+        "host_name" : "host1",
+        "id" : 6,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 1,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "GANGLIA_MONITOR",
+        "start_time" : 1352863664901,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/17",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "QUEUED",
+        "stderr" : "",
+        "host_name" : "host2",
+        "id" : 17,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 1,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "HDFS_CLIENT",
+        "start_time" : 1352863666987,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/18",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "QUEUED",
+        "stderr" : "",
+        "host_name" : "host2",
+        "id" : 18,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 1,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "MAPREDUCE_CLIENT",
+        "start_time" : 1352863667058,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/19",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "QUEUED",
+        "stderr" : "",
+        "host_name" : "host2",
+        "id" : 19,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 1,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "OOZIE_CLIENT",
+        "start_time" : 1352863667216,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/22",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "QUEUED",
+        "stderr" : "",
+        "host_name" : "host2",
+        "id" : 22,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 1,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "TASKTRACKER",
+        "start_time" : 1352863667578,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/5",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "QUEUED",
+        "stderr" : "",
+        "host_name" : "host1",
+        "id" : 5,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 1,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "DATANODE",
+        "start_time" : 1352863664723,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/1",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "QUEUED",
+        "stderr" : "",
+        "host_name" : "host3",
+        "id" : 1,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 1,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "GANGLIA_MONITOR",
+        "start_time" : 1352863663984,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/13",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "QUEUED",
+        "stderr" : "",
+        "host_name" : "host4",
+        "id" : 13,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 1,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "GANGLIA_MONITOR",
+        "start_time" : 1352863666401,
+        "stage_id" : 1
+      }
+    }
+  ]
+}

File diff suppressed because it is too large
+ 29 - 0
ambari-web/app/assets/data/wizard/deploy/slave_failure/poll_3.json


File diff suppressed because it is too large
+ 11 - 0
ambari-web/app/assets/data/wizard/deploy/slave_failure/poll_4.json


+ 405 - 0
ambari-web/app/assets/data/wizard/deploy/slave_warning/poll_1.json

@@ -0,0 +1,405 @@
+{
+  "href" : "http://ambari:8080/api/clusters/mycluster/requests/1?fields=tasks/*",
+  "Requests" : {
+    "id" : 1,
+    "cluster_name" : "mycluster"
+  },
+  "tasks" : [
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/5",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "PENDING",
+        "stderr" : "",
+        "host_name" : "host1",
+        "id" : 5,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 0,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "DATANODE",
+        "start_time" : -1,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/20",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "PENDING",
+        "stderr" : "",
+        "host_name" : "host2",
+        "id" : 20,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 0,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "PIG",
+        "start_time" : -1,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/15",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "PENDING",
+        "stderr" : "",
+        "host_name" : "host2",
+        "id" : 15,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 0,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "DATANODE",
+        "start_time" : -1,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/3",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "PENDING",
+        "stderr" : "",
+        "host_name" : "host3",
+        "id" : 3,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 0,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "OOZIE_SERVER",
+        "start_time" : -1,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/7",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "PENDING",
+        "stderr" : "",
+        "host_name" : "host1",
+        "id" : 7,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 0,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "TASKTRACKER",
+        "start_time" : -1,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/14",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "PENDING",
+        "stderr" : "",
+        "host_name" : "host4",
+        "id" : 14,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 0,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "TASKTRACKER",
+        "start_time" : -1,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/13",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "PENDING",
+        "stderr" : "",
+        "host_name" : "host4",
+        "id" : 13,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 0,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "GANGLIA_MONITOR",
+        "start_time" : -1,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/1",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "PENDING",
+        "stderr" : "",
+        "host_name" : "host3",
+        "id" : 1,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 0,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "GANGLIA_MONITOR",
+        "start_time" : -1,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/18",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "PENDING",
+        "stderr" : "",
+        "host_name" : "host2",
+        "id" : 18,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 0,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "MAPREDUCE_CLIENT",
+        "start_time" : -1,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/8",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "PENDING",
+        "stderr" : "",
+        "host_name" : "host5",
+        "id" : 8,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 0,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "GANGLIA_MONITOR",
+        "start_time" : -1,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/6",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "PENDING",
+        "stderr" : "",
+        "host_name" : "host1",
+        "id" : 6,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 0,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "GANGLIA_MONITOR",
+        "start_time" : -1,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/2",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "PENDING",
+        "stderr" : "",
+        "host_name" : "host3",
+        "id" : 2,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 0,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "JOBTRACKER",
+        "start_time" : -1,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/4",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "PENDING",
+        "stderr" : "",
+        "host_name" : "host3",
+        "id" : 4,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 0,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "SECONDARY_NAMENODE",
+        "start_time" : -1,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/19",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "PENDING",
+        "stderr" : "",
+        "host_name" : "host2",
+        "id" : 19,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 0,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "OOZIE_CLIENT",
+        "start_time" : -1,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/10",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "PENDING",
+        "stderr" : "",
+        "host_name" : "host5",
+        "id" : 10,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 0,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "NAGIOS_SERVER",
+        "start_time" : -1,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/12",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "PENDING",
+        "stderr" : "",
+        "host_name" : "host4",
+        "id" : 12,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 0,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "DATANODE",
+        "start_time" : -1,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/21",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "PENDING",
+        "stderr" : "",
+        "host_name" : "host2",
+        "id" : 21,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 0,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "SQOOP",
+        "start_time" : -1,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/9",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "PENDING",
+        "stderr" : "",
+        "host_name" : "host5",
+        "id" : 9,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 0,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "GANGLIA_SERVER",
+        "start_time" : -1,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/22",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "PENDING",
+        "stderr" : "",
+        "host_name" : "host2",
+        "id" : 22,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 0,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "TASKTRACKER",
+        "start_time" : -1,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/16",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "PENDING",
+        "stderr" : "",
+        "host_name" : "host2",
+        "id" : 16,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 0,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "GANGLIA_MONITOR",
+        "start_time" : -1,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/11",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "PENDING",
+        "stderr" : "",
+        "host_name" : "host5",
+        "id" : 11,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 0,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "NAMENODE",
+        "start_time" : -1,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/17",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "PENDING",
+        "stderr" : "",
+        "host_name" : "host2",
+        "id" : 17,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 0,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "HDFS_CLIENT",
+        "start_time" : -1,
+        "stage_id" : 1
+      }
+    }
+  ]
+}

+ 405 - 0
ambari-web/app/assets/data/wizard/deploy/slave_warning/poll_2.json

@@ -0,0 +1,405 @@
+{
+  "href" : "http://ambari:8080/api/clusters/mycluster/requests/1?fields=tasks/*",
+  "Requests" : {
+    "id" : 1,
+    "cluster_name" : "mycluster"
+  },
+  "tasks" : [
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/4",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "QUEUED",
+        "stderr" : "",
+        "host_name" : "host3",
+        "id" : 4,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 1,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "SECONDARY_NAMENODE",
+        "start_time" : 1352863664537,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/15",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "QUEUED",
+        "stderr" : "",
+        "host_name" : "host2",
+        "id" : 15,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 1,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "DATANODE",
+        "start_time" : 1352863666842,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/7",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "QUEUED",
+        "stderr" : "",
+        "host_name" : "host1",
+        "id" : 7,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 1,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "TASKTRACKER",
+        "start_time" : 1352863665177,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/14",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "QUEUED",
+        "stderr" : "",
+        "host_name" : "host4",
+        "id" : 14,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 1,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "TASKTRACKER",
+        "start_time" : 1352863666672,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/10",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "QUEUED",
+        "stderr" : "",
+        "host_name" : "host5",
+        "id" : 10,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 1,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "NAGIOS_SERVER",
+        "start_time" : 1352863665856,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/21",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "QUEUED",
+        "stderr" : "",
+        "host_name" : "host2",
+        "id" : 21,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 1,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "SQOOP",
+        "start_time" : 1352863667466,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/8",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "QUEUED",
+        "stderr" : "",
+        "host_name" : "host5",
+        "id" : 8,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 1,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "GANGLIA_MONITOR",
+        "start_time" : 1352863665481,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/16",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "QUEUED",
+        "stderr" : "",
+        "host_name" : "host2",
+        "id" : 16,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 1,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "GANGLIA_MONITOR",
+        "start_time" : 1352863666913,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/2",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "QUEUED",
+        "stderr" : "",
+        "host_name" : "host3",
+        "id" : 2,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 1,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "JOBTRACKER",
+        "start_time" : 1352863664213,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/20",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "QUEUED",
+        "stderr" : "",
+        "host_name" : "host2",
+        "id" : 20,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 1,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "PIG",
+        "start_time" : 1352863667299,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/11",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "QUEUED",
+        "stderr" : "",
+        "host_name" : "host5",
+        "id" : 11,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 1,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "NAMENODE",
+        "start_time" : 1352863665939,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/3",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "QUEUED",
+        "stderr" : "",
+        "host_name" : "host3",
+        "id" : 3,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 1,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "OOZIE_SERVER",
+        "start_time" : 1352863664455,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/12",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "QUEUED",
+        "stderr" : "",
+        "host_name" : "host4",
+        "id" : 12,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 1,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "DATANODE",
+        "start_time" : 1352863666165,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/9",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "QUEUED",
+        "stderr" : "",
+        "host_name" : "host5",
+        "id" : 9,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 1,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "GANGLIA_SERVER",
+        "start_time" : 1352863665690,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/6",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "QUEUED",
+        "stderr" : "",
+        "host_name" : "host1",
+        "id" : 6,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 1,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "GANGLIA_MONITOR",
+        "start_time" : 1352863664901,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/17",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "QUEUED",
+        "stderr" : "",
+        "host_name" : "host2",
+        "id" : 17,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 1,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "HDFS_CLIENT",
+        "start_time" : 1352863666987,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/18",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "QUEUED",
+        "stderr" : "",
+        "host_name" : "host2",
+        "id" : 18,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 1,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "MAPREDUCE_CLIENT",
+        "start_time" : 1352863667058,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/19",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "QUEUED",
+        "stderr" : "",
+        "host_name" : "host2",
+        "id" : 19,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 1,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "OOZIE_CLIENT",
+        "start_time" : 1352863667216,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/22",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "QUEUED",
+        "stderr" : "",
+        "host_name" : "host2",
+        "id" : 22,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 1,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "TASKTRACKER",
+        "start_time" : 1352863667578,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/5",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "QUEUED",
+        "stderr" : "",
+        "host_name" : "host1",
+        "id" : 5,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 1,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "DATANODE",
+        "start_time" : 1352863664723,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/1",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "QUEUED",
+        "stderr" : "",
+        "host_name" : "host3",
+        "id" : 1,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 1,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "GANGLIA_MONITOR",
+        "start_time" : 1352863663984,
+        "stage_id" : 1
+      }
+    },
+    {
+      "href" : "http://ambari:8080/api/clusters/mycluster/requests/1/tasks/13",
+      "Tasks" : {
+        "exit_code" : 999,
+        "stdout" : "",
+        "status" : "QUEUED",
+        "stderr" : "",
+        "host_name" : "host4",
+        "id" : 13,
+        "cluster_name" : "mycluster",
+        "attempt_cnt" : 1,
+        "request_id" : 1,
+        "command" : "INSTALL",
+        "role" : "GANGLIA_MONITOR",
+        "start_time" : 1352863666401,
+        "stage_id" : 1
+      }
+    }
+  ]
+}

File diff suppressed because it is too large
+ 29 - 0
ambari-web/app/assets/data/wizard/deploy/slave_warning/poll_3.json


File diff suppressed because it is too large
+ 11 - 0
ambari-web/app/assets/data/wizard/deploy/slave_warning/poll_4.json


+ 1 - 2
ambari-web/app/controllers/application.js

@@ -27,7 +27,7 @@ App.ApplicationController = Em.Controller.extend({
     if (name) {
       return name.capitalize();
     }
-    return 'My Cluster';
+    return '';
   }.property(),
   isClusterDataLoaded: function() {
     return App.router.get('clusterController.isLoaded');
@@ -35,6 +35,5 @@ App.ApplicationController = Em.Controller.extend({
 
   init: function(){
     this._super();
-    $('title').text('Ambari - ' + this.get('clusterName'));
   }
 });

+ 3 - 3
ambari-web/app/controllers/installer.js

@@ -218,7 +218,6 @@ App.InstallerController = App.WizardController.extend({
       var host = hosts.findProperty('name', hostInfo[index].name);
       if (host) {
         hostInfo[index].status = host.status;
-        hostInfo[index].logTasks = host.logTasks;
         hostInfo[index].tasks = host.tasks;
         hostInfo[index].message = host.message;
         hostInfo[index].progress = host.progress;
@@ -652,8 +651,8 @@ App.InstallerController = App.WizardController.extend({
   },
 
   /**
-   * Generate clients list for selected services and save it to model
-   * called form stepController step8WizardController or step9WizardController
+   * Invoke installation of selected services to the server and saves the request id returned by the server.
+   * @param isRetry
    */
   installServices: function (isRetry) {
     if (!isRetry && this.get('content.cluster.requestId')) {
@@ -726,3 +725,4 @@ App.InstallerController = App.WizardController.extend({
   }
 
 });
+

+ 1 - 2
ambari-web/app/controllers/login_controller.js

@@ -32,9 +32,8 @@ App.LoginController = Em.Object.extend({
     this.set('errorMessage', '');
 
     var self = this;
-    var loginFunc =  App.get('router').login;
 
-    var user = loginFunc.call(App.get('router'), function (isAuthenticated) {
+    App.get('router').login(function (isAuthenticated) {
       if (!isAuthenticated) {
         console.log('Failed to login as: ' + self.get('loginName'));
         self.set('errorMessage', Em.I18n.t('login.error'));

+ 2 - 1
ambari-web/app/controllers/main.js

@@ -27,7 +27,7 @@ App.MainController = Em.Controller.extend({
       var displayName = name.length > 13 ? name.substr(0, 10) + "..." : name;
       return displayName.capitalize();
     }
-    return 'My Cluster';
+    return '';
   }.property(),
   isClusterDataLoaded: function(){
       return App.router.get('clusterController.isLoaded');
@@ -40,6 +40,7 @@ App.MainController = Em.Controller.extend({
     App.router.get('clusterController').loadClusterData();
     App.router.get('updateController').updateServiceMetric();
     setInterval( this.updateAll , App.contentUpdateInterval);
+    $('title').text('Ambari - ' + this.get('clusterName'));
   },
   updateAll: function(){
     App.router.get('updateController').updateAll();

+ 2 - 3
ambari-web/app/controllers/main/host/add_controller.js

@@ -218,7 +218,6 @@ App.AddHostController = App.WizardController.extend({
       var host = hosts.findProperty('name', hostInfo[index].name);
       if (host) {
         hostInfo[index].status = host.status;
-        hostInfo[index].logTasks = host.logTasks;
         hostInfo[index].tasks = host.tasks;
         hostInfo[index].message = host.message;
         hostInfo[index].progress = host.progress;
@@ -600,8 +599,8 @@ App.AddHostController = App.WizardController.extend({
   },
 
   /**
-   * Generate clients list for selected services and save it to model
-   * @param stepController step8WizardController or step9WizardController
+   * Invoke installation of selected services to the server and saves the request id returned by the server.
+   * @param isRetry
    */
   installServices: function (isRetry) {
     if(!isRetry && this.get('content.cluster.requestId')){

+ 2 - 2
ambari-web/app/controllers/main/host/details.js

@@ -97,8 +97,8 @@ App.MainHostDetailsController = Em.Controller.extend({
             setTimeout(function(){
               component.set('workStatus', App.Component.Status.started);
             },10000);
-          } else{
-            App.router.get('clusterController').loadUpdatedStatus();
+          } else {
+            App.router.get('clusterController').loadUpdatedStatusDelayed(500);
             App.router.get('backgroundOperationsController.eventsArray').push({
               "when" : function(controller){
                 var result = (controller.getOperationsForRequestId(requestId).length == 0);

+ 2 - 2
ambari-web/app/controllers/main/service/add_controller.js

@@ -569,8 +569,8 @@ App.AddServiceController = App.WizardController.extend({
   },
 
   /**
-   * Generate clients list for selected services and save it to model
-   * @param stepController step8WizardController or step9WizardController
+   * Invoke installation of selected services to the server and saves the request id returned by the server.
+   * @param isRetry
    */
   installServices: function (isRetry) {
     if(!isRetry && this.get('content.cluster.requestId')){

+ 41 - 38
ambari-web/app/controllers/wizard/slave_component_groups_controller.js

@@ -20,7 +20,7 @@ var App = require('app');
  * Used to manage slave component config. User could create different settings for separate group
  * @type {*}
  */
-App.SlaveComponentGroupsController = Em.Controller.extend({
+App.SlaveComponentGroupsController = Em.ArrayController.extend({
 
   name: 'slaveComponentGroupsController',
 
@@ -48,10 +48,10 @@ App.SlaveComponentGroupsController = Em.Controller.extend({
       if (categoryConfig.someProperty('isForSlaveComponent', true)) {
         var slaveCategory = categoryConfig.findProperty('isForSlaveComponent', true);
         if (this.get('content')) {
-          if (this.get('content').someProperty('componentName', slaveCategory.get('name').toUpperCase())) {
-            var component = this.get('content').findProperty('componentName', slaveCategory.get('name').toUpperCase());
+          if (this.get('content').someProperty('componentName', slaveCategory.get('primaryName'))) {
+            var component = this.get('content').findProperty('componentName', slaveCategory.get('primaryName'));
             var slaveConfigs = slaveCategory.get('slaveConfigs');
-            slaveCategory.set('slaveConfigs', component);
+            slaveCategory.set('slaveConfigs', App.SlaveConfigs.create(component));
             var slaveGroups = [];
             if (component.groups) {
               component.groups.forEach(function (_group) {
@@ -75,7 +75,6 @@ App.SlaveComponentGroupsController = Em.Controller.extend({
         }
       }
     }, this);
-    debugger;
   },
 
   componentProperties: function (serviceName) {
@@ -121,43 +120,45 @@ App.SlaveComponentGroupsController = Em.Controller.extend({
 
   }.property('App.router.wizardStep7Controller.selectedService'),
 
-  selectedComponentDisplayName: function () {
-    return App.format.role(this.get('selectedComponentName').name);
+  selectedComponentDisplayName: function() {
+    return App.format.role(this.get('selectedComponentName'));
   }.property('selectedComponentName'),
 
   selectedSlaveComponent: function () {
-    var selectedComponentName = this.get('selectedComponentName').displayName;
+    var selectedComponentName = this.get('selectedComponentName') ? this.get('selectedComponentName').displayName : null;
     var configs = null;
-    this.get('stepConfigs').forEach(function (_serviceConfig) {
-      var categoryConfig = _serviceConfig.get('configCategories');
-      if (categoryConfig.someProperty('name', selectedComponentName)) {
-        configs = categoryConfig.findProperty('name', selectedComponentName).get('slaveConfigs');
-      }
-    }, this);
-    debugger;
+    if (selectedComponentName) {
+      App.router.get('wizardStep7Controller.stepConfigs').forEach(function (_serviceConfig) {
+        var categoryConfig = _serviceConfig.get('configCategories');
+        if (categoryConfig.someProperty('name', selectedComponentName)) {
+          configs = categoryConfig.findProperty('name', selectedComponentName).get('slaveConfigs');
+        }
+      }, this);
+    }
     return configs;
-  }.property('selectedComponentName', 'stepConfigs.@each.configCategories','stepConfigs.@each.configCategories.@each.slaveConfigs'),
+  }.property('selectedComponentName', 'stepConfigs.@each.configCategories', 'stepConfigs.@each.configCategories.@each.slaveConfigs'),
 
   hosts: function () {
     if (this.get('selectedSlaveComponent')) {
-      return this.get('selectedSlaveComponent').hosts;
+      return this.get('selectedSlaveComponent').get('hosts');
     }
   }.property('selectedSlaveComponent'),
 
   groups: function () {
     var hosts = this.get('hosts');
-    if (hosts) {
+    if(hosts){
       return hosts.mapProperty('group').uniq();
     }
   }.property('hosts'),
 
   componentGroups: function () {
     var component = this.get('selectedSlaveComponent');
-    if (component && component.groups) {
-      return component.groups;
+    if (component && component.get('groups')) {
+      return component.get('groups');
     }
     return [];
-  }.property('selectedSlaveComponent', 'selectedSlaveComponent.groups','stepConfigs.@each'),
+  }.property('selectedSlaveComponent', 'selectedSlaveComponent.groups', 'stepConfigs.@each.configCategories.@each.slaveConfigs.groups.@each.properties.@each.value'),
+
 
   getGroupsForDropDown: function () {
     return this.get('componentGroups').getEach('name');
@@ -167,12 +168,12 @@ App.SlaveComponentGroupsController = Em.Controller.extend({
     var componentGroups = this.get('componentGroups');
     if (componentGroups) {
       var active = componentGroups.findProperty('active', true);
-      if (active) {
+      if (active){
         return active;
       }
     }
     return null;
-  }.property('componentGroups.@each.active', 'componentGroups.@each.name'),
+  }.property('componentGroups.@each.active', 'componentGroups.@each.name', 'componentGroups.@each.properties.@each.value'),
 
 
   /**
@@ -191,7 +192,7 @@ App.SlaveComponentGroupsController = Em.Controller.extend({
       onPrimary: function (event) {
         if (component.tempSelectedGroups && component.tempSelectedGroups.length) {
           component.tempSelectedGroups.forEach(function (item) {
-            var changed = component.hosts.filterProperty('hostName', item.hostName);
+            var changed = component.get('hosts').filterProperty('hostName', item.hostName);
             changed.setEach('group', item.groupName);
           })
         }
@@ -233,9 +234,9 @@ App.SlaveComponentGroupsController = Em.Controller.extend({
   addSlaveComponentGroup: function () {
     var component = this.get('selectedSlaveComponent');
     var newGroupName = 'New Group';
-    component.groups.setEach('active', false);
-    var newGroups = component.groups.filterProperty('name', newGroupName);
-    if (newGroups.length === 0) {
+    component.get('groups').setEach('active', false);
+    var newGroups = component.get('groups').filterProperty('name', newGroupName);
+    if (newGroups.length === 0){
       component.newGroupIndex = 0;
     }
     else {
@@ -252,7 +253,7 @@ App.SlaveComponentGroupsController = Em.Controller.extend({
     var component = this.get('selectedSlaveComponent');
     component.newGroupIndex++;
     var newGroupName = 'New Group ' + component.newGroupIndex;
-    var groups = component.groups.filterProperty('name', newGroupName);
+    var groups = component.get('groups').filterProperty('name', newGroupName);
     if (groups.length !== 0) {
       this.checkGroupName();
     }
@@ -268,7 +269,7 @@ App.SlaveComponentGroupsController = Em.Controller.extend({
 
   getHostsByGroup: function (group) {
     var hosts = this.get('hosts');
-    if (hosts) {
+    if(hosts){
       return hosts.filterProperty('group', group.name);
     }
   },
@@ -279,12 +280,13 @@ App.SlaveComponentGroupsController = Em.Controller.extend({
    */
   showSlaveComponentGroup: function (event) {
     var component = this.get('selectedSlaveComponent');
-    if (!component.groups) {
+    if(!component.groups){
+
     }
-    component.groups.setEach('active', false);
-    var group = component.groups.filterProperty('name', event.context.name);
+    component.get('groups').setEach('active', false);
+    var group = component.get('groups').filterProperty('name', event.context.name);
     group.setEach('active', true);
-    var assignedHosts = component.hosts.filterProperty('group', event.context.name);
+    var assignedHosts = component.get('hosts').filterProperty('group', event.context.name);
     if (assignedHosts.length === 0) {
       $('.remove-group-error').hide();
     }
@@ -297,7 +299,7 @@ App.SlaveComponentGroupsController = Em.Controller.extend({
   removeSlaveComponentGroup: function (event) {
     var group = event.context;
     var component = this.get('selectedSlaveComponent');
-    var assignedHosts = component.hosts.filterProperty('group', group.name);
+    var assignedHosts = component.get('hosts').filterProperty('group', group.name);
     if (assignedHosts.length !== 0) {
       $('.remove-group-error').show();
     } else {
@@ -330,17 +332,18 @@ App.SlaveComponentGroupsController = Em.Controller.extend({
    */
   changeSlaveGroupName: function (group, newGroupName) {
     var component = this.get('selectedSlaveComponent');
-    var isExist = component.groups.filterProperty('name', newGroupName);
+    var isExist = component.get('groups').filterProperty('name', newGroupName);
     if (isExist.length !== 0)
       return true;
     else {
-      var assignedHosts = component.hosts.filterProperty('group', group.name);
-      if (assignedHosts.length !== 0) {
+      var assignedHosts = component.get('hosts').filterProperty('group', group.name);
+      if (assignedHosts.length !== 0){
         assignedHosts.setEach('group', newGroupName);
       }
-      var groupFilter = component.groups.filterProperty('name', group.name);
+      var groupFilter = component.get('groups').filterProperty('name', group.name);
       groupFilter.setEach('name', newGroupName);
     }
     return false;
   }
+
 });

+ 11 - 16
ambari-web/app/controllers/wizard/step3_controller.js

@@ -44,15 +44,6 @@ App.WizardStep3Controller = Em.Controller.extend({
 
   navigateStep: function () {
     this.loadStep();
-    if (App.testMode && App.skipBootstrap) {
-      this.get('hosts').forEach(function (_host) {
-        _host.set('bootStatus', 'REGISTERED');
-        _host.set('bootLog', 'Success');
-      }, this);
-      this.set('bootHosts', this.get('hosts'));
-      this.stopRegistration();
-      return;
-    }
     if (this.get('content.hosts.manualInstall') !== true) {
       if (App.db.getBootStatus() === false) {
         this.startBootstrap();
@@ -79,10 +70,14 @@ App.WizardStep3Controller = Em.Controller.extend({
 
   loadStep: function () {
     console.log("TRACE: Loading step3: Confirm Hosts");
-    this.clearStep();
-    var hosts = this.loadHosts();
-    // hosts.setEach('bootStatus', 'RUNNING');
-    this.renderHosts(hosts);
+    if(!this.get('hosts').length){
+      this.clearStep();
+      var hosts = this.loadHosts();
+      // hosts.setEach('bootStatus', 'RUNNING');
+      this.renderHosts(hosts);
+    } else {
+      this.set('isSubmitDisabled', false);
+    }
   },
 
   /* Loads the hostinfo from localStorage on the insertion of view. It's being called from view */
@@ -254,7 +249,7 @@ App.WizardStep3Controller = Em.Controller.extend({
     //TODO: uncomment following line after the hook up with the API call
     console.log('stopBootstrap() called');
     // this.set('isSubmitDisabled',false);
-    Ember.run.later(this, function () {
+    Ember.run.later(this, function(){
       this.startRegistration();
     }, 1000);
   },
@@ -412,7 +407,7 @@ App.WizardStep3Controller = Em.Controller.extend({
           var self = this;
           var button = $(this.get('element')).find('.textTrigger');
           button.click(function () {
-            if (self.get('isTextArea')) {
+            if(self.get('isTextArea')){
               $(this).text('click to highlight');
             } else {
               $(this).text('press CTRL+C');
@@ -433,7 +428,7 @@ App.WizardStep3Controller = Em.Controller.extend({
         },
         isTextArea: false,
         textArea: Em.TextArea.extend({
-          didInsertElement: function () {
+          didInsertElement: function(){
             var element = $(this.get('element'));
             element.width($(this.get('parentView').get('element')).width() - 10);
             element.height($(this.get('parentView').get('element')).height());

+ 2 - 1
ambari-web/app/controllers/wizard/step7_controller.js

@@ -40,7 +40,7 @@ App.WizardStep7Controller = Em.Controller.extend({
 
   isSubmitDisabled: function () {
     return !this.stepConfigs.everyProperty('errorCount', 0);
-  }.property('stepConfigs.@each.errorCount','content.slaveGroupProperties.@each.groups.@each.errorCount'),
+  }.property('stepConfigs.@each.errorCount'),
 
   selectedServiceNames: function () {
     return this.get('content.services').filterProperty('isSelected', true).filterProperty('isInstalled', false).mapProperty('serviceName');
@@ -118,6 +118,7 @@ App.WizardStep7Controller = Em.Controller.extend({
     }
   },
 
+
   /**
    * Render a custom conf-site box for entering properties that will be written in *-site.xml files of the services
    */

+ 98 - 28
ambari-web/app/controllers/wizard/step8_controller.js

@@ -27,8 +27,9 @@ App.WizardStep8Controller = Em.Controller.extend({
   configs: [],
   globals: [],
   configMapping: require('data/config_mapping'),
+  slaveComponentConfig: null,
+  isSubmitDisabled: false,
 
-  isSubmitDisabled : false,
 
   selectedServices: function () {
     return this.get('content.services').filterProperty('isSelected', true).filterProperty('isInstalled', false);
@@ -48,9 +49,61 @@ App.WizardStep8Controller = Em.Controller.extend({
     this.loadConfigs();
     this.setCustomConfigs();
     this.loadClusterInfo();
+    this.loadSlaveConfiguration();
     this.loadServices();
   },
 
+  loadSlaveConfiguration: function () {
+    var slaveComponentConfig = this.convertSlaveConfig(this.get('content.slaveGroupProperties'));
+    this.set("slaveComponentConfig", slaveComponentConfig);
+  },
+
+  convertSlaveConfig: function (slaveContent) {
+    var dest = {
+      "version": "1.0",
+      "components": [
+      ]
+    };
+
+    slaveContent.forEach(function (_slaveContent) {
+      var newComponent = {};
+      newComponent.componentName = _slaveContent.componentName;
+      newComponent.serviceName = this.getServiceName(newComponent.componentName);
+      newComponent.groups = [];
+      _slaveContent.groups.forEach(function (_group) {
+        var newGroup = {};
+        newGroup.groupName = _group.name;
+        newGroup.configVersion = "1.0"; // TODO : every time a new version should be generated
+        newGroup.hostNames = _slaveContent.hosts.filterProperty("group", newGroup.groupName);
+        newGroup.properties = _group.properties;
+        if (!Ember.empty(newGroup.hostNames)) {
+          newComponent.groups.push(newGroup);
+        }
+      }, this);
+      dest.components.push(newComponent);
+    }, this);
+    return dest;
+
+  },
+
+  getServiceName: function (componentName) {
+    var serviceName = null
+    switch (componentName) {
+      case 'DATANODE':
+        serviceName = 'HDFS';
+        break;
+      case 'TASKTRACKER':
+        serviceName = 'MAPREDUCE';
+        break;
+      case 'HBASE_REGIONSERVER':
+        serviceName = 'HBASE';
+        break;
+      default:
+        serviceName = null;
+    }
+    return serviceName;
+  },
+
   loadGlobals: function () {
     var globals = this.get('content.serviceConfigProperties').filterProperty('id', 'puppet var');
     if (globals.someProperty('name', 'hive_database')) {
@@ -100,7 +153,7 @@ App.WizardStep8Controller = Em.Controller.extend({
     return uiConfig;
   },
 
-  getRegisteredHosts: function() {
+  getRegisteredHosts: function () {
     var allHosts = this.get('content.hostsInfo');
     var hosts = [];
     for (var hostName in allHosts) {
@@ -353,12 +406,7 @@ App.WizardStep8Controller = Em.Controller.extend({
   loadDnValue: function (dnComponent) {
     var dnHosts = this.get('content.slaveComponentHosts').findProperty('displayName', 'DataNode');
     var totalDnHosts = dnHosts.hosts.length;
-    var dnHostGroups = [];
-    dnHosts.hosts.forEach(function (_dnHost) {
-      dnHostGroups.push(_dnHost.group);
-
-    }, this);
-    var totalGroups = dnHostGroups.uniq().length;
+    var totalGroups = this.get('slaveComponentConfig.components').findProperty('componentName','DATANODE').groups.length;
     var groupLabel;
     if (totalGroups == 1) {
       groupLabel = 'group';
@@ -368,6 +416,7 @@ App.WizardStep8Controller = Em.Controller.extend({
     dnComponent.set('component_value', totalDnHosts + ' hosts ' + '(' + totalGroups + ' ' + groupLabel + ')');
   },
 
+
   /**
    * Load all info about mapReduce service
    * @param mrObj
@@ -395,11 +444,7 @@ App.WizardStep8Controller = Em.Controller.extend({
   loadTtValue: function (ttComponent) {
     var ttHosts = this.get('content.slaveComponentHosts').findProperty('displayName', 'TaskTracker');
     var totalTtHosts = ttHosts.hosts.length;
-    var ttHostGroups = [];
-    ttHosts.hosts.forEach(function (_ttHost) {
-      ttHostGroups.push(_ttHost.group);
-    }, this);
-    var totalGroups = ttHostGroups.uniq().length;
+    var totalGroups = this.get('slaveComponentConfig.components').findProperty('componentName','TASKTRACKER').groups.length;
     var groupLabel;
     if (totalGroups == 1) {
       groupLabel = 'group';
@@ -477,11 +522,7 @@ App.WizardStep8Controller = Em.Controller.extend({
   loadRegionServerValue: function (rsComponent) {
     var rsHosts = this.get('content.slaveComponentHosts').findProperty('displayName', 'RegionServer');
     var totalRsHosts = rsHosts.hosts.length;
-    var rsHostGroups = [];
-    rsHosts.hosts.forEach(function (_ttHost) {
-      rsHostGroups.push(_ttHost.group);
-    }, this);
-    var totalGroups = rsHostGroups.uniq().length;
+    var totalGroups = this.get('slaveComponentConfig.components').findProperty('componentName','HBASE_REGIONSERVER').groups.length;
     var groupLabel;
     if (totalGroups == 1) {
       groupLabel = 'group';
@@ -620,6 +661,7 @@ App.WizardStep8Controller = Em.Controller.extend({
     if (App.testMode || !this.get('content.cluster.requestId')) {
       this.createCluster();
       this.createSelectedServices();
+      this.setAmbariUIDb();
       this.createConfigurations();
       this.applyCreatedConfToServices();
       this.createComponents();
@@ -630,7 +672,33 @@ App.WizardStep8Controller = Em.Controller.extend({
     App.router.send('next');
   },
 
-  clusterName: function() {
+  setAmbariUIDb: function () {
+    var slaveComponentConfig = this.get("slaveComponentConfig");
+    this.persistKeyValues(slaveComponentConfig.version, slaveComponentConfig);
+  },
+
+  persistKeyValues: function (key, value) {
+
+    var str = "{ '" + key + "' : '" + JSON.stringify(value) + "'}";
+    var obj = eval("(" + str + ")");
+    $.ajax({
+      type: "POST",
+      url: App.apiPrefix + '/persist',
+      data: JSON.stringify(obj),
+      async: false,
+      dataType: 'text',
+      timeout: App.timeout,
+      success: function (data) {
+        console.debug('success...ajax call returned');
+      },
+
+      error: function (request, ajaxOptions, error) {
+        console.log('Step8: Error message is: ' + request.responseText);
+      }
+    });
+  },
+
+  clusterName: function () {
     return this.get('content.cluster.name');
   }.property('content.cluster.name'),
 
@@ -654,7 +722,7 @@ App.WizardStep8Controller = Em.Controller.extend({
       async: false,
       //accepts: 'text',
       dataType: 'text',
-      data: JSON.stringify({ "Clusters": {"version" : stackVersion }}),
+      data: JSON.stringify({ "Clusters": {"version": stackVersion }}),
       timeout: App.timeout,
       success: function (data) {
         var jsonData = jQuery.parseJSON(data);
@@ -786,7 +854,7 @@ App.WizardStep8Controller = Em.Controller.extend({
   },
 
   createRegisterHostData: function () {
-    return this.getRegisteredHosts().map(function(host) {
+    return this.getRegisteredHosts().map(function (host) {
       if (!host.isInstalled) {
         return {"Hosts": { "host_name": host.hostName}};
       }
@@ -804,7 +872,7 @@ App.WizardStep8Controller = Em.Controller.extend({
     // note: masterHosts has 'component' vs slaveHosts has 'componentName'
     var masterComponents = masterHosts.mapProperty('component').uniq();
 
-    masterComponents.forEach(function(component) {
+    masterComponents.forEach(function (component) {
       var hostNames = masterHosts.filterProperty('component', component).filterProperty('isInstalled', false).mapProperty('hostName');
       this.registerHostsToComponent(hostNames, component);
     }, this);
@@ -835,7 +903,7 @@ App.WizardStep8Controller = Em.Controller.extend({
                 masterHosts.filterProperty('component', 'OOZIE_SERVER').filterProperty('isInstalled', false).forEach(function (_masterHost) {
                   hostNames.pushObject(_masterHost.hostName);
                 }, this);
-               break;
+                break;
             }
             hostNames = hostNames.uniq();
             this.registerHostsToComponent(hostNames, _client.component_name);
@@ -858,17 +926,19 @@ App.WizardStep8Controller = Em.Controller.extend({
     }
     console.log('registering ' + componentName + ' to ' + JSON.stringify(hostNames));
 
-    var hostsPredicate = hostNames.map(function(hostName) {
+    var hostsPredicate = hostNames.map(function (hostName) {
       return 'Hosts/host_name=' + hostName;
     }).join('|');
 
     var url = App.apiPrefix + '/clusters/' + this.get('clusterName') + '/hosts?' + hostsPredicate;
     var data = {
-      "host_components": [{
-        "HostRoles": {
-          "component_name": componentName
+      "host_components": [
+        {
+          "HostRoles": {
+            "component_name": componentName
+          }
         }
-      }]
+      ]
     };
 
     $.ajax({

+ 15 - 7
ambari-web/app/controllers/wizard/step9_controller.js

@@ -28,6 +28,7 @@ App.WizardStep9Controller = Em.Controller.extend({
   }.property('isStepCompleted'),
 
   mockHostData: require('data/mock/step9_hosts'),
+  mockDataPrefix: '/data/wizard/deploy/5_hosts',
   pollDataCounter: 0,
   polledData: [],
 
@@ -47,7 +48,13 @@ App.WizardStep9Controller = Em.Controller.extend({
     return this.get('status') == 'failed';
   }.property('status'),
 
+  // called by App.WizardStep9View's didInsertElement and "retry" from router.
   navigateStep: function () {
+    if (App.testMode) {
+      // this is for repeatedly testing out installs in test mode
+      this.set('content.cluster.status', 'PENDING');
+      this.set('content.cluster.isCompleted', false);
+    }
     if (this.get('content.cluster.isCompleted') === false) {
       if (this.get('content.cluster.status') === 'INSTALL FAILED') {
         this.loadStep();
@@ -211,8 +218,8 @@ App.WizardStep9Controller = Em.Controller.extend({
     var method = 'PUT';
 
     if (App.testMode) {
-      //debugger;
-      url = '/data/wizard/deploy/poll_6.json';
+      debugger;
+      url = this.get('mockDataPrefix') + '/poll_6.json';
       method = 'GET';
       this.numPolls = 6;
     }
@@ -468,7 +475,7 @@ App.WizardStep9Controller = Em.Controller.extend({
     var tasksData = polledData.tasks;
     console.log("The value of tasksData is: ", tasksData);
     if (!tasksData) {
-      console.log("Step9: ERROR: NO tasks availaible to process");
+      console.log("Step9: ERROR: NO tasks available to process");
     }
     this.replacePolledData(tasksData);
     this.hosts.forEach(function (_host) {
@@ -479,7 +486,7 @@ App.WizardStep9Controller = Em.Controller.extend({
       if (actionsPerHost !== null && actionsPerHost !== undefined && actionsPerHost.length !== 0) {
         this.setLogTasksStatePerHost(actionsPerHost, _host);
         this.onSuccessPerHost(actionsPerHost, _host);     // every action should be a success
-        this.onWarningPerHost(actionsPerHost, _host);     // any action should be a faliure
+        this.onWarningPerHost(actionsPerHost, _host);     // any action should be a failure
         this.onInProgressPerHost(actionsPerHost, _host);  // current running action for a host
         totalProgress += self.progressPerHost(actionsPerHost, _host);
       }
@@ -515,11 +522,12 @@ App.WizardStep9Controller = Em.Controller.extend({
       this.POLL_INTERVAL = 1;
       this.numPolls++;
       if (this.numPolls == 5) {
-        url = 'data/wizard/deploy/poll_5.json';
-        // url = 'data/wizard/deploy/poll_5_failed.json';
+        url = this.get('mockDataPrefix') + '/poll_5.json';
+        // url = this.get('mockDataPrefix') + '/poll_5_failed.json';
       } else {
-        url = 'data/wizard/deploy/poll_' + this.numPolls + '.json';
+        url = this.get('mockDataPrefix') + '/poll_' + this.numPolls + '.json';
       }
+      debugger;
     }
 
     $.ajax({

+ 5 - 3
ambari-web/app/data/config_properties.js

@@ -1165,7 +1165,8 @@ module.exports =
       "displayType": "directories",
       "isReconfigurable": false,
       "isVisible": true,
-      "serviceName": "MAPREDUCE"
+      "serviceName": "MAPREDUCE",
+      "category": "TaskTracker"
     },
     {
       "id": "puppet var",
@@ -1324,7 +1325,8 @@ module.exports =
       "displayType": "int",
       "unit": "MB",
       "isVisible": true,
-      "serviceName": "MAPREDUCE"
+      "serviceName": "MAPREDUCE",
+      "category": "TaskTracker"
     },
     {
       "id": "puppet var",
@@ -1394,7 +1396,7 @@ module.exports =
       "name": "rca_enabled",
       "displayName": "Enable RCA",
       "description": "Enable RCA",
-      "defaultValue": false,
+      "defaultValue": true,
       "isReconfigurable": true,
       "displayType": "checkbox",
       "isVisible": true,

+ 2 - 1
ambari-web/app/data/statusCodes.js

@@ -20,7 +20,7 @@
 module.exports = {
 	200: function () {
 		console.log("Status code 200: Success.");
-	},
+  },
   202: function () {
     console.log("Status code 202: Success for creation.");
   },
@@ -35,6 +35,7 @@ module.exports = {
 	},
 	403: function () {
 		console.log("Error code 403: Forbidden.");
+    App.router.logOff();
 	},
 	404: function () {
 		console.log("Error code 404: URI not found.");

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

@@ -54,6 +54,13 @@ App.Component = DS.Model.extend({
     return this.get('componentName');
   }.property('componentName'),
 
+  isClient: function () {
+    if (!this.get('componentName')) {
+      return false;
+    }
+    return Boolean(this.get('componentName').match(/_client/gi));
+  }.property('componentName'),
+
   decommissioned: DS.attr('boolean')
 });
 

+ 1 - 2
ambari-web/app/models/host.js

@@ -65,7 +65,6 @@ App.Host = DS.Model.extend({
   }.property('loadOne', 'loadFive', 'loadFifteen'),
 
   updateHostStatus: function(){
-
     /**
      * Do nothing until load
      */
@@ -77,7 +76,7 @@ App.Host = DS.Model.extend({
     var status;
 
     var masterComponents = components.filterProperty('isMaster', true);
-    if(components.everyProperty('workStatus', App.Component.Status.started)){
+    if(components.filterProperty('isClient', false).everyProperty('workStatus', App.Component.Status.started)){
       status = 'LIVE';
     } else if(this.get('isNotHeartBeating')){
       status = 'DEAD-YELLOW';

+ 23 - 1
ambari-web/app/models/service_config.js

@@ -32,7 +32,7 @@ App.ServiceConfig = Ember.Object.extend({
     var masterErrors = this.get('configs').filterProperty('isValid', false).filterProperty('isVisible', true).get('length');
     var slaveErrors = 0;
     this.get('configCategories').forEach(function(_category){
-    slaveErrors += _category.get('slaveErrorCount');
+      slaveErrors += _category.get('slaveErrorCount');
     },this);
     return masterErrors + slaveErrors;
   }.property('configs.@each.isValid', 'configs.@each.isVisible', 'configCategories.@each.slaveErrorCount')
@@ -40,7 +40,21 @@ App.ServiceConfig = Ember.Object.extend({
 
 App.ServiceConfigCategory = Ember.Object.extend({
   name: null,
+
   slaveConfigs: null,
+  primaryName: function () {
+    switch (this.get('name')) {
+      case 'DataNode':
+        return 'DATANODE';
+        break;
+      case 'TaskTracker':
+        return 'TASKTRACKER';
+        break;
+      case 'RegionServer':
+        return 'HBASE_REGIONSERVER';
+    }
+  }.property('name'),
+
 
   isForMasterComponent: function () {
     var masterServices = [ 'NameNode', 'SNameNode', 'JobTracker', 'HBase Master', 'Oozie Master',
@@ -65,6 +79,14 @@ App.ServiceConfigCategory = Ember.Object.extend({
   }.property('slaveConfigs.groups.@each.errorCount')
 });
 
+
+App.SlaveConfigs = Ember.Object.extend({
+  componentName: null,
+  displayName: null,
+  hosts: null,
+  groups: null
+});
+
 App.Group = Ember.Object.extend({
   name: null,
   hostNames: null,

+ 16 - 14
ambari-web/app/router.js

@@ -153,13 +153,13 @@ App.Router = Em.Router.extend({
       },
       statusCode: {
         200: function () {
-          console.log('Authorization status: 200');
+          console.log("Status code 200: Success.");
         },
         401: function () {
-          console.log('Authorization status: 401');
+          console.log("Error code 401: Unauthorized.");
         },
         403: function () {
-          console.log('Authorization status: 403');
+          console.log("Error code 403: Forbidden.");
         }
       },
       success: function (data) {
@@ -255,7 +255,18 @@ App.Router = Em.Router.extend({
       return 'installer';
     }
   },
-
+  logOff: function(context){
+    console.log('logging off');
+    // App.db.cleanUp() must be called before router.clearAllSteps().
+    // otherwise, this.set('installerController.currentStep, 0) would have no effect
+    // since it's a computed property but we are not setting it as a dependent of App.db.
+    App.db.cleanUp();
+    this.clearAllSteps();
+    console.log("Log off: " + App.db.getClusterName());
+    this.set('loginController.loginName', '');
+    this.set('loginController.password', '');
+    this.transitionTo('login', context);
+  },
   root: Em.Route.extend({
     index: Em.Route.extend({
       route: '/',
@@ -290,16 +301,7 @@ App.Router = Em.Router.extend({
     main: require('routes/main'),
 
     logoff: function (router, context) {
-      console.log('logging off');
-      // App.db.cleanUp() must be called before router.clearAllSteps().
-      // otherwise, this.set('installerController.currentStep, 0) would have no effect
-      // since it's a computed property but we are not setting it as a dependent of App.db.
-      App.db.cleanUp();
-      router.clearAllSteps();
-      console.log("Log off: " + App.db.getClusterName());
-      router.set('loginController.loginName', '');
-      router.set('loginController.password', '');
-      router.transitionTo('login', context);
+      router.logOff(context);
     }
 
   })

+ 6 - 4
ambari-web/app/routes/installer.js

@@ -222,6 +222,7 @@ module.exports = Em.Route.extend({
         controller.get('content').set('serviceConfigProperties', null);
         App.db.setServiceConfigProperties(null);
         App.db.setSlaveProperties(null);
+        controller.loadSlaveGroupProperties();
         controller.loadAdvancedConfigs();
         router.transitionTo('step7');
       }
@@ -262,6 +263,7 @@ module.exports = Em.Route.extend({
     next: function (router) {
       var installerController = router.get('installerController');
       var wizardStep8Controller = router.get('wizardStep8Controller');
+      // invoke API call to install selected services
       installerController.installServices();
       installerController.setInfoForStep9();
       router.transitionTo('step9');
@@ -275,7 +277,7 @@ module.exports = Em.Route.extend({
       var controller = router.get('installerController');
       controller.setCurrentStep('9', false);
       controller.loadAllPriorSteps();
-      if (!App.testMode) {              //if test mode is ON don't disable prior steps link.
+      if (!App.testMode) { // if test mode is ON don't disable prior steps link.
         controller.setLowerStepsDisable(9);
       }
       controller.connectOutlet('wizardStep9', controller.get('content'));
@@ -286,15 +288,15 @@ module.exports = Em.Route.extend({
       var wizardStep9Controller = router.get('wizardStep9Controller');
       if (!wizardStep9Controller.get('isSubmitDisabled')) {
         if (wizardStep9Controller.get('content.cluster.status') !== 'START FAILED') {
-        installerController.installServices(true);
-        installerController.setInfoForStep9();
+          installerController.installServices(true);
+          installerController.setInfoForStep9();
         } else {
           wizardStep9Controller.set('content.cluster.isCompleted', false);
         }
         wizardStep9Controller.navigateStep();
       }
     },
-    unroutePath: function() {
+    unroutePath: function () {
       return false;
     },
     next: function (router) {

+ 15 - 3
ambari-web/app/styles/application.less

@@ -498,7 +498,9 @@ a:focus {
   dd {
     margin-left: 145px;
   }
-
+  .like_pointer {
+    cursor: pointer;
+  }
   .service {
     position: relative;
     margin-top: 10px;
@@ -528,7 +530,7 @@ a:focus {
       margin-top: 14px;
       color: #7b7b7b;
       font-size: 13px;
-      width: 80%;
+      //width: 80%;
       tr > td:first-child {
         padding-right: 10px;
         text-align: right !important;
@@ -540,12 +542,16 @@ a:focus {
 
     .dashboard-mini-chart {
       right: 0;
+      float: right;
       top: 7px;
       position: absolute;
       overflow: visible; // for quick links
       text-align: center;
-      width: 180px;
+      //width: 180px;
       height: 200px;
+      .dropdown-menu {
+        text-align: left;
+      }
       .chart-container{
         .chart-x-axis{
           left: 0%;
@@ -557,6 +563,12 @@ a:focus {
         font-size: 11px;
         color: #7b7b7b;
       }
+      .chart-legend {
+        left: -205px;
+        text-align: left;
+        top: 0;
+        width: 185px;
+      }
     }
   }
 }

+ 1 - 1
ambari-web/app/templates/application.hbs

@@ -29,7 +29,7 @@
             </a>
           {{else}}
             <a class="brand cluster-name" href="#">
-              loading...
+              - Install Wizard
             </a>
           {{/if}}
           <ul class="nav">

+ 5 - 2
ambari-web/app/templates/main.hbs

@@ -21,8 +21,11 @@
   <div class="navbar">
     <div class="navbar-inner">
       <a class="brand" href="#">
-        {{clusterName}}
-
+        {{#if clusterName}}
+          {{clusterName}}
+        {{else}}
+          My Cluster
+        {{/if}}
           {{#view App.EmptyView controllerBinding="App.router.backgroundOperationsController"}}
             {{#if allOperationsCount}}
               <span class="label operations-count" {{action "showPopup" target="controller"}}>{{allOperationsCount}}</span>

+ 57 - 55
ambari-web/app/templates/main/dashboard/service/hbase.hbs

@@ -17,7 +17,7 @@
 }}
 
 {{#unless view.showOnlyRows}}
-<div class="clearfix" {{action toggleInfoView target="view"}}>
+<div class="clearfix like_pointer" {{action toggleInfoView target="view"}}>
   <div class="name span2">
     {{#if view.isCollapsed}}
     <i class="icon-caret-down pull-left"></i>
@@ -35,60 +35,62 @@
   </div>
 </div>
 <div id="hbase-info">
-<table class="table no-borders">
-  <tbody>
-{{/unless}}
-  <!-- HBase Master Server -->
-  <tr>
-    <td>{{t dashboard.services.hbase.masterServer}}</td>
-    <td><a href="#" {{action showDetails view.service.master}}>{{view.service.master.publicHostName}}</a></td>
-  </tr>
-  <!-- RegionServers -->
-  <tr>
-    <td>{{t dashboard.services.hbase.regionServers}}</td>
-    <td><a href="#" {{action filterHosts view.regionServerComponent}}>{{view.service.regionServers.length}} {{t dashboard.services.hbase.regionServers}}</a></td>
-  </tr>
-  <!-- Version -->
-  <tr>
-    <td>{{t dashboard.services.hbase.version}}</td>
-    <td>{{view.service.version}} {{view.service.revision}}</td>
-  </tr>
-  <!-- HBaseMaster Web UI -->
-  <tr>
-    <td>{{t dashboard.services.hbase.masterWebUI}}</td>
-    <td><a {{bindAttr href="view.hbaseMasterWebUrl"}} target="_blank">{{view.service.master.publicHostName}}:60010</a>
-    </td>
-  </tr>
-  <!-- Regions in Transition -->
-  <tr>
-    <td>{{t dashboard.services.hbase.regions.transition}}</td>
-    <td>{{view.service.regionsInTransition}}</td>
-  </tr>
-  <!-- HBase Master Started Time -->
-  <tr>
-    <td>{{t dashboard.services.hbase.masterStarted}}</td>
-    <td>{{view.masterStartedTime}}</td>
-  </tr>
-  <!-- HBase Master Activated Time -->
-  <tr>
-    <td>{{t dashboard.services.hbase.masterActivated}}</td>
-    <td>{{view.masterStartedTime}}</td>
-  </tr>
-  <!-- Average Load -->
-  <tr>
-    <td>{{t dashboard.services.hbase.averageLoad}}</td>
-    <td>{{view.averageLoad}}</td>
-  </tr>
-  <!-- Master Server Heap -->
-  <tr>
-    <td>{{t dashboard.services.hbase.masterServerHeap}}</td>
-    <td>{{view.masterServerHeapSummary}}</td>
-  </tr>
-  
-{{#unless view.showOnlyRows}}
-  </tbody>
-</table>
-<div class="dashboard-mini-chart">
+  <div class="span4">
+    <table class="table no-borders">
+      <tbody>
+    {{/unless}}
+      <!-- HBase Master Server -->
+      <tr>
+        <td>{{t dashboard.services.hbase.masterServer}}</td>
+        <td><a href="#" {{action showDetails view.service.master}}>{{view.service.master.publicHostName}}</a></td>
+      </tr>
+      <!-- RegionServers -->
+      <tr>
+        <td>{{t dashboard.services.hbase.regionServers}}</td>
+        <td><a href="#" {{action filterHosts view.regionServerComponent}}>{{view.service.regionServers.length}} {{t dashboard.services.hbase.regionServers}}</a></td>
+      </tr>
+      <!-- Version -->
+      <tr>
+        <td>{{t dashboard.services.hbase.version}}</td>
+        <td>{{view.service.version}} {{view.service.revision}}</td>
+      </tr>
+      <!-- HBaseMaster Web UI -->
+      <tr>
+        <td>{{t dashboard.services.hbase.masterWebUI}}</td>
+        <td><a {{bindAttr href="view.hbaseMasterWebUrl"}} target="_blank">{{view.service.master.publicHostName}}:60010</a>
+        </td>
+      </tr>
+      <!-- Regions in Transition -->
+      <tr>
+        <td>{{t dashboard.services.hbase.regions.transition}}</td>
+        <td>{{view.service.regionsInTransition}}</td>
+      </tr>
+      <!-- HBase Master Started Time -->
+      <tr>
+        <td>{{t dashboard.services.hbase.masterStarted}}</td>
+        <td>{{view.masterStartedTime}}</td>
+      </tr>
+      <!-- HBase Master Activated Time -->
+      <tr>
+        <td>{{t dashboard.services.hbase.masterActivated}}</td>
+        <td>{{view.masterStartedTime}}</td>
+      </tr>
+      <!-- Average Load -->
+      <tr>
+        <td>{{t dashboard.services.hbase.averageLoad}}</td>
+        <td>{{view.averageLoad}}</td>
+      </tr>
+      <!-- Master Server Heap -->
+      <tr>
+        <td>{{t dashboard.services.hbase.masterServerHeap}}</td>
+        <td>{{view.masterServerHeapSummary}}</td>
+      </tr>
+
+    {{#unless view.showOnlyRows}}
+      </tbody>
+    </table>
+  </div>
+<div class="dashboard-mini-chart span2">
   {{view App.ChartServiceMetricsHBASE_RegionServerReadWriteRequests}}
   
   {{#if view.service.quickLinks.length}}

+ 104 - 102
ambari-web/app/templates/main/dashboard/service/hdfs.hbs

@@ -17,7 +17,7 @@
 }}
 
 {{#unless view.showOnlyRows}}
-<div class="clearfix" {{action toggleInfoView target="view"}}>
+<div class="clearfix like_pointer" {{action toggleInfoView target="view"}}>
   <div class="name span2">
     {{#if view.isCollapsed}}
     <i class="icon-caret-down pull-left"></i>
@@ -35,108 +35,110 @@
   </div>
 </div>
 <div id="hdfs-info">
-<table class="table no-borders">
-  <tbody>
-{{/unless}}
+  <div class="span4">
+    <table class="table no-borders">
+      <tbody>
+    {{/unless}}
 
-  <!-- NameNode -->
-  <tr>
-    <td>{{t dashboard.services.hdfs.nanmenode}}</td>
-    <td><a href="#" {{action showDetails view.service.nameNode}}>{{view.service.nameNode.publicHostName}}</a></td>
-  </tr>
-  <!-- SecondaryNameNode -->
-  <tr>
-    <td>{{t dashboard.services.hdfs.snanmenode}}</td>
-    <td><a href="#" {{action showDetails view.service.snameNode}}>{{view.service.snameNode.publicHostName}}</a></td>
-  </tr>
-  <!-- Data Nodes -->
-  <tr>
-    <td>{{t dashboard.services.hdfs.datanodes}}</td>
-    <td>
-      <a href="#" {{action filterHosts view.dataNodeComponent}}>{{view.service.dataNodes.length}} {{t dashboard.services.hdfs.datanodes}}</a>
-    </td>
-  </tr>
-  <!-- Version -->
-  <tr>
-    <td>{{t dashboard.services.hdfs.version}}</td>
-    <td>{{view.service.version}}</td>
-  </tr>
-  <!-- NameNode Web UI -->
-  <tr>
-    <td>{{t dashboard.services.hdfs.nameNodeWebUI}}</td>
-    <td><a {{bindAttr href="view.nodeWebUrl"}} target="_blank">{{view.service.nameNode.publicHostName}}:50070</a>
-    </td>
-  </tr>
-  <!-- NameNode Uptime -->
-  <tr>
-    <td>{{t dashboard.services.hdfs.nodes.uptime}}</td>
-    <td>{{view.nodeUptime}}</td>
-  </tr>
-  <!-- NameNode Heap -->
-  <tr>
-    <td>{{t dashboard.services.hdfs.nodes.heap}}</td>
-    <td>{{view.nodeHeap}}</td>
-  </tr>
-  <!-- Data Node Counts -->
-  <tr>
-    <td>{{t dashboard.services.hdfs.datanodecounts}}</td>
-    <td>
-      {{view.service.liveDataNodes.length}} {{t dashboard.services.hdfs.nodes.live}} /
-      {{view.service.deadDataNodes.length}} {{t dashboard.services.hdfs.nodes.dead}} /
-      {{view.service.decommisionDataNodes.length}} {{t dashboard.services.hdfs.nodes.decom}}
-    </td>
-  </tr>
-  <!-- HDFS Capacity -->
-  <tr>
-    <td>{{t dashboard.services.hdfs.capacity}}</td>
-    <td>{{view.capacity}}</td>
-  </tr>
-  <!-- Blocks Total -->
-  <tr>
-    <td>{{t services.service.summary.blocksTotal}}</td>
-    <td>{{view.service.dfsTotalBlocks}}</td>
-  </tr>
-  <!-- Block Errors -->
-  <tr>
-    <td>{{t services.service.summary.blockErrors}}</td>
-    <td>
-      {{view.service.dfsCorruptBlocks}} corrupt / 
-      {{view.service.dfsMissingBlocks}} missing / 
-      {{view.service.dfsUnderReplicatedBlocks}} under replicated
-    </td>
-  </tr>
-  <!-- Total Files And Directories -->
-  <tr>
-    <td>{{t dashboard.services.hdfs.totalFilesAndDirs}}</td>
-    <td>{{view.service.dfsTotalFiles}}</td>
-  </tr>
-  <!-- Upgrade Status -->
-  <tr>
-    <td>{{t services.service.summary.pendingUpgradeStatus}}</td>
-    <td>
-      {{#if view.service.upgradeStatus}}
-        {{t services.service.summary.pendingUpgradeStatus.notPending}}
-      {{else}}
-        {{t services.service.summary.pendingUpgradeStatus.pending}}
-      {{/if}}
-    </td>
-  </tr>
-  <!-- Safe Mode Status -->
-  <tr>
-    <td>{{t services.service.summary.safeModeStatus}}</td>
-    <td>
-      {{#if view.isSafeMode}}
-        {{t services.service.summary.safeModeStatus.inSafeMode}}
-      {{else}}
-        {{t services.service.summary.safeModeStatus.notInSafeMode}}
-      {{/if}}
-    </td>
-  </tr>
-  
-{{#unless view.showOnlyRows}}
-  </tbody>
-</table>
-<div class="dashboard-mini-chart">
+      <!-- NameNode -->
+      <tr>
+        <td>{{t dashboard.services.hdfs.nanmenode}}</td>
+        <td><a href="#" {{action showDetails view.service.nameNode}}>{{view.service.nameNode.publicHostName}}</a></td>
+      </tr>
+      <!-- SecondaryNameNode -->
+      <tr>
+        <td>{{t dashboard.services.hdfs.snanmenode}}</td>
+        <td><a href="#" {{action showDetails view.service.snameNode}}>{{view.service.snameNode.publicHostName}}</a></td>
+      </tr>
+      <!-- Data Nodes -->
+      <tr>
+        <td>{{t dashboard.services.hdfs.datanodes}}</td>
+        <td>
+          <a href="#" {{action filterHosts view.dataNodeComponent}}>{{view.service.dataNodes.length}} {{t dashboard.services.hdfs.datanodes}}</a>
+        </td>
+      </tr>
+      <!-- Version -->
+      <tr>
+        <td>{{t dashboard.services.hdfs.version}}</td>
+        <td>{{view.service.version}}</td>
+      </tr>
+      <!-- NameNode Web UI -->
+      <tr>
+        <td>{{t dashboard.services.hdfs.nameNodeWebUI}}</td>
+        <td><a {{bindAttr href="view.nodeWebUrl"}} target="_blank">{{view.service.nameNode.publicHostName}}:50070</a>
+        </td>
+      </tr>
+      <!-- NameNode Uptime -->
+      <tr>
+        <td>{{t dashboard.services.hdfs.nodes.uptime}}</td>
+        <td>{{view.nodeUptime}}</td>
+      </tr>
+      <!-- NameNode Heap -->
+      <tr>
+        <td>{{t dashboard.services.hdfs.nodes.heap}}</td>
+        <td>{{view.nodeHeap}}</td>
+      </tr>
+      <!-- Data Node Counts -->
+      <tr>
+        <td>{{t dashboard.services.hdfs.datanodecounts}}</td>
+        <td>
+          {{view.service.liveDataNodes.length}} {{t dashboard.services.hdfs.nodes.live}} /
+          {{view.service.deadDataNodes.length}} {{t dashboard.services.hdfs.nodes.dead}} /
+          {{view.service.decommisionDataNodes.length}} {{t dashboard.services.hdfs.nodes.decom}}
+        </td>
+      </tr>
+      <!-- HDFS Capacity -->
+      <tr>
+        <td>{{t dashboard.services.hdfs.capacity}}</td>
+        <td>{{view.capacity}}</td>
+      </tr>
+      <!-- Blocks Total -->
+      <tr>
+        <td>{{t services.service.summary.blocksTotal}}</td>
+        <td>{{view.service.dfsTotalBlocks}}</td>
+      </tr>
+      <!-- Block Errors -->
+      <tr>
+        <td>{{t services.service.summary.blockErrors}}</td>
+        <td>
+          {{view.service.dfsCorruptBlocks}} corrupt /
+          {{view.service.dfsMissingBlocks}} missing /
+          {{view.service.dfsUnderReplicatedBlocks}} under replicated
+        </td>
+      </tr>
+      <!-- Total Files And Directories -->
+      <tr>
+        <td>{{t dashboard.services.hdfs.totalFilesAndDirs}}</td>
+        <td>{{view.service.dfsTotalFiles}}</td>
+      </tr>
+      <!-- Upgrade Status -->
+      <tr>
+        <td>{{t services.service.summary.pendingUpgradeStatus}}</td>
+        <td>
+          {{#if view.service.upgradeStatus}}
+            {{t services.service.summary.pendingUpgradeStatus.notPending}}
+          {{else}}
+            {{t services.service.summary.pendingUpgradeStatus.pending}}
+          {{/if}}
+        </td>
+      </tr>
+      <!-- Safe Mode Status -->
+      <tr>
+        <td>{{t services.service.summary.safeModeStatus}}</td>
+        <td>
+          {{#if view.isSafeMode}}
+            {{t services.service.summary.safeModeStatus.inSafeMode}}
+          {{else}}
+            {{t services.service.summary.safeModeStatus.notInSafeMode}}
+          {{/if}}
+        </td>
+      </tr>
+
+    {{#unless view.showOnlyRows}}
+      </tbody>
+    </table>
+  </div>
+<div class="dashboard-mini-chart span2">
   {{view view.Chart serviceBinding="view.service"}}
   <div class="chartLabel">{{t dashboard.services.hdfs.chart.label}}</div>
   {{#if view.service.quickLinks.length}}

+ 1 - 1
ambari-web/app/templates/main/dashboard/service/hive.hbs

@@ -16,7 +16,7 @@
 * limitations under the License.
 }}
 
-<div class="clearfix">
+<div class="clearfix like_pointer">
   <div class="name span2">
     {{view App.MainDashboardServiceHealthView serviceBinding="view.service"}}
     <a {{action selectService view.service href=true}}>{{view.service.displayName}}</a>

+ 86 - 84
ambari-web/app/templates/main/dashboard/service/mapreduce.hbs

@@ -17,7 +17,7 @@
 }}
 
 {{#unless view.showOnlyRows}}
-<div class="clearfix" {{action toggleInfoView target="view"}}>
+<div class="clearfix like_pointer" {{action toggleInfoView target="view"}}>
   <div class="name span2">
     {{#if view.isCollapsed}}
     <i class="icon-caret-down pull-left"></i>
@@ -35,89 +35,91 @@
   </div>
 </div>
 <div id="mapreduce-info">
-<table class="table no-borders">
-  <tbody>
-{{/unless}}
-  <!-- JobTracker -->
-  <tr>
-    <td>{{t services.service.summary.jobTracker}}</td>
-    <td><a href="#" {{action showDetails view.service.jobTracker}}>{{view.service.jobTracker.publicHostName}}</a></td>
-  </tr>
-  <!-- TaskTrackers -->
-  <tr>
-    <td>{{t dashboard.services.mapreduce.taskTrackers}}</td>
-    <td><a href="#" {{action filterHosts view.taskTrackerComponent}}>{{view.service.taskTrackers.length}} {{t dashboard.services.mapreduce.taskTrackers}}</a></td>
-  </tr>
-  <!-- Version -->
-  <tr>
-    <td>{{t dashboard.services.hdfs.version}}</td>
-    <td>{{view.service.version}}</td>
-  </tr>
-  <!-- JobTracker Web UI -->
-  <tr>
-    <td>{{t services.service.summary.jobTrackerWebUI}}</td>
-    <td><a {{bindAttr href="view.jobTrackerWebUrl"}} target="_blank">{{view.service.jobTracker.publicHostName}}:50030</a>
-    </td>
-  </tr>
-  <!-- Job Tracker Uptime -->
-  <tr>
-    <td>{{t dashboard.services.mapreduce.jobTrackerUptime}}</td>
-    <td>{{view.jobTrackerUptime}}</td>
-  </tr>
-  <!-- Trackers -->
-  <tr>
-    <td>{{t dashboard.services.mapreduce.trackers}}</td>
-    <td>{{view.trackersSummary}}</td>
-  </tr>
-  <!-- TaskTracker Counts -->
-  <tr>
-    <td>{{t dashboard.services.mapreduce.taskTrackerCounts}}</td>
-    <td>
-      {{view.service.grayListTrackers.length}} {{t dashboard.services.mapreduce.nodes.blacklist}} /
-      {{view.service.blackListTrackers.length}} {{t dashboard.services.mapreduce.nodes.graylist}} /
-      {{view.service.trackersDecommisioned}} {{t dashboard.services.hdfs.nodes.decom}} 
-    </td>
-  </tr>
-  <!-- JobTracker Heap -->
-  <tr>
-    <td>{{t dashboard.services.mapreduce.jobTrackerHeap}}</td>
-    <td>{{view.trackersHeapSummary}}</td>
-  </tr>
-  <!-- Total slots capacity -->
-  <tr>
-    <td>{{t dashboard.services.mapreduce.slotCapacity}}</td>
-    <td>{{view.slotsCapacitySummary}}</td>
-  </tr>
-  <!-- Jobs -->
-  <tr>
-    <td>{{t dashboard.services.mapreduce.jobs}}</td>
-    <td>{{view.jobsSummary}}</td>
-  </tr>
-  <!-- Map Slots -->
-  <tr>
-    <td>{{t dashboard.services.mapreduce.mapSlots}}</td>
-    <td>{{view.mapSlotsSummary}}</td>
-  </tr>
-  <!-- Reduce Slots -->
-  <tr>
-    <td>{{t dashboard.services.mapreduce.reduceSlots}}</td>
-    <td>{{view.reduceSlotsSummary}}</td>
-  </tr>
-  <!-- Tasks:Maps -->
-  <tr>
-    <td>{{t dashboard.services.mapreduce.tasks.maps}}</td>
-    <td>{{view.mapTasksSummary}}</td>
-  </tr>
-  <!-- Tasks:Reduces -->
-  <tr>
-    <td>{{t dashboard.services.mapreduce.tasks.reduces}}</td>
-    <td>{{view.reduceTasksSummary}}</td>
-  </tr>
-  
-{{#unless view.showOnlyRows}}
-  </tbody>
-</table>
-<div class="dashboard-mini-chart">
+  <div class="span4">
+    <table class="table no-borders">
+      <tbody>
+    {{/unless}}
+      <!-- JobTracker -->
+      <tr>
+        <td>{{t services.service.summary.jobTracker}}</td>
+        <td><a href="#" {{action showDetails view.service.jobTracker}}>{{view.service.jobTracker.publicHostName}}</a></td>
+      </tr>
+      <!-- TaskTrackers -->
+      <tr>
+        <td>{{t dashboard.services.mapreduce.taskTrackers}}</td>
+        <td><a href="#" {{action filterHosts view.taskTrackerComponent}}>{{view.service.taskTrackers.length}} {{t dashboard.services.mapreduce.taskTrackers}}</a></td>
+      </tr>
+      <!-- Version -->
+      <tr>
+        <td>{{t dashboard.services.hdfs.version}}</td>
+        <td>{{view.service.version}}</td>
+      </tr>
+      <!-- JobTracker Web UI -->
+      <tr>
+        <td>{{t services.service.summary.jobTrackerWebUI}}</td>
+        <td><a {{bindAttr href="view.jobTrackerWebUrl"}} target="_blank">{{view.service.jobTracker.publicHostName}}:50030</a>
+        </td>
+      </tr>
+      <!-- Job Tracker Uptime -->
+      <tr>
+        <td>{{t dashboard.services.mapreduce.jobTrackerUptime}}</td>
+        <td>{{view.jobTrackerUptime}}</td>
+      </tr>
+      <!-- Trackers -->
+      <tr>
+        <td>{{t dashboard.services.mapreduce.trackers}}</td>
+        <td>{{view.trackersSummary}}</td>
+      </tr>
+      <!-- TaskTracker Counts -->
+      <tr>
+        <td>{{t dashboard.services.mapreduce.taskTrackerCounts}}</td>
+        <td>
+          {{view.service.grayListTrackers.length}} {{t dashboard.services.mapreduce.nodes.blacklist}} /
+          {{view.service.blackListTrackers.length}} {{t dashboard.services.mapreduce.nodes.graylist}} /
+          {{view.service.trackersDecommisioned}} {{t dashboard.services.hdfs.nodes.decom}}
+        </td>
+      </tr>
+      <!-- JobTracker Heap -->
+      <tr>
+        <td>{{t dashboard.services.mapreduce.jobTrackerHeap}}</td>
+        <td>{{view.trackersHeapSummary}}</td>
+      </tr>
+      <!-- Total slots capacity -->
+      <tr>
+        <td>{{t dashboard.services.mapreduce.slotCapacity}}</td>
+        <td>{{view.slotsCapacitySummary}}</td>
+      </tr>
+      <!-- Jobs -->
+      <tr>
+        <td>{{t dashboard.services.mapreduce.jobs}}</td>
+        <td>{{view.jobsSummary}}</td>
+      </tr>
+      <!-- Map Slots -->
+      <tr>
+        <td>{{t dashboard.services.mapreduce.mapSlots}}</td>
+        <td>{{view.mapSlotsSummary}}</td>
+      </tr>
+      <!-- Reduce Slots -->
+      <tr>
+        <td>{{t dashboard.services.mapreduce.reduceSlots}}</td>
+        <td>{{view.reduceSlotsSummary}}</td>
+      </tr>
+      <!-- Tasks:Maps -->
+      <tr>
+        <td>{{t dashboard.services.mapreduce.tasks.maps}}</td>
+        <td>{{view.mapTasksSummary}}</td>
+      </tr>
+      <!-- Tasks:Reduces -->
+      <tr>
+        <td>{{t dashboard.services.mapreduce.tasks.reduces}}</td>
+        <td>{{view.reduceTasksSummary}}</td>
+      </tr>
+
+    {{#unless view.showOnlyRows}}
+      </tbody>
+    </table>
+  </div>
+<div class="dashboard-mini-chart span2">
   {{view App.ChartServiceMetricsMapReduce_JobsRunningWaiting}}
   
   {{#if view.service.quickLinks.length}}

+ 1 - 1
ambari-web/app/templates/main/dashboard/service/oozie.hbs

@@ -16,7 +16,7 @@
 * limitations under the License.
 }}
 
-<div class="clearfix">
+<div class="clearfix like_pointer">
   <div class="name span2">
     {{view App.MainDashboardServiceHealthView serviceBinding="view.service"}}
     <a {{action selectService view.service href=true}}>{{view.service.displayName}}</a>

+ 1 - 1
ambari-web/app/templates/main/dashboard/service/zookeeper.hbs

@@ -16,7 +16,7 @@
 * limitations under the License.
 }}
 
-<div class="clearfix">
+<div class="clearfix like_pointer">
   <div class="name span2">
     {{view App.MainDashboardServiceHealthView serviceBinding="view.service"}}
     <a {{action selectService view.service href=true}}>{{view.service.displayName}}</a>

+ 1 - 21
ambari-web/app/templates/main/service/info/summary.hbs

@@ -141,27 +141,7 @@
 		<ul id='summary-alerts-list' class="alerts">
 		  {{#if controller.alerts.length}}
 				{{#each controller.alerts}}
-				 <li class="status-{{unbound status}}">
-	          <div class="container-fluid">
-	            <div class="row-fluid">
-	              <div class="span1 status-icon">
-	                {{#if isOk}}
-	                  <i class="icon-ok icon-large"></i>
-	                {{else}}
-	                  <i class="icon-remove icon-large"></i>
-	                {{/if}}
-	              </div>
-	              <div class="span11">
-	                <div class="row-fluid">
-	                  <div class="span7 title">{{title}}
-	                  </div>
-	                  <div rel="tooltip" {{bindAttr data-title="timeSinceAlertDetails"}} data-placement="right" class="span5 date-time">{{timeSinceAlert}}</div>
-	                </div>
-	                <div class="row-fluid message">{{message}}</div>
-	              </div>
-	            </div>
-	          </div>
-	        </li>
+          {{view view.alertItemView contentBinding="this"}}
 				{{/each}}
 			{{else}}
 		    {{#if controller.isNagiosInstalled}}

+ 37 - 0
ambari-web/app/templates/main/service/info/summary_alert.hbs

@@ -0,0 +1,37 @@
+{{!
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements.  See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership.  The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License.  You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+}}
+
+<div class="container-fluid">
+    <div class="row-fluid">
+        <div class="span1 status-icon">
+          {{#if isOk}}
+              <i class="icon-ok icon-large"></i>
+          {{else}}
+              <i class="icon-remove icon-large"></i>
+          {{/if}}
+        </div>
+        <div class="span11">
+            <div class="row-fluid">
+                <div class="span7 title">{{title}}
+                </div>
+                <div rel="tooltip" {{bindAttr data-title="timeSinceAlertDetails"}} data-placement="right" class="span5 date-time">{{timeSinceAlert}}</div>
+            </div>
+            <div class="row-fluid message">{{message}}</div>
+        </div>
+    </div>
+</div>

+ 12 - 12
ambari-web/app/templates/wizard/slave_component_hosts.hbs

@@ -17,16 +17,16 @@
 }}
 
 {{#if view.hasNoHosts}}
-  none -
-  <a href="#" {{action showEditSlaveComponentGroups view.serviceConfig.category target="controller"}}>
-    select hosts for this group
-  </a>
+none -
+<a href="#" {{action showEditSlaveComponentGroups view.serviceConfig.category target="controller"}}>
+  select hosts for this group
+</a>
 {{else}}
-  <a href="#" {{action showEditSlaveComponentGroups view.serviceConfig.category target="controller"}}>
-    {{#if view.hasMultipleHosts}}
-    {{view.hosts.firstObject.hostName}} and {{view.otherLength}}
-    {{else}}
-    {{view.hosts.firstObject.hostName}}
-    {{/if}}
-  </a>
-{{/if}}
+<a href="#" {{action showEditSlaveComponentGroups view.serviceConfig.category target="controller"}}>
+  {{#if view.hasMultipleHosts}}
+  {{view.hosts.firstObject.hostName}} and {{view.otherLength}}
+  {{else}}
+  {{view.hosts.firstObject.hostName}}
+  {{/if}}
+</a>
+  {{/if}}

+ 3 - 2
ambari-web/app/templates/wizard/slave_hosts.hbs

@@ -19,11 +19,12 @@
 {{#if view.hasNoHosts}}
 No host assigned
 {{else}}
-<a href="#" {{action showEditSlaveComponentGroups view.serviceConfig.category target="controller"}}>
+<a
+  href="#" {{action showEditSlaveComponentGroups view.serviceConfig.category target="controller"}}>
   {{#if view.hasMultipleHosts}}
   {{hosts.firstObject.hostName}} and {{view.otherLength}}
   {{else}}
   {{hosts.firstObject.hostName}}
   {{/if}}
 </a>
-{{/if}}
+  {{/if}}

+ 1 - 1
ambari-web/app/templates/wizard/step7.hbs

@@ -131,4 +131,4 @@
       class="btn btn-success pull-right" {{bindAttr disabled="isSubmitDisabled"}}
       {{action submit target="controller"}}>Next &rarr;</a>
   </div>
-</div>
+</div>

+ 1 - 1
ambari-web/app/templates/wizard/step9.hbs

@@ -79,7 +79,7 @@
         </td>
         <td>
           <div class="progress-bar pull-left">
-            <div {{bindAttr class="isStepCompleted::progress-striped isStepCompleted::active view.barColor :progress"}}>
+            <div {{bindAttr class="view.isHostCompleted::progress-striped view.isHostCompleted::active view.barColor :progress"}}>
               <div class="bar" {{bindAttr style="view.barWidth"}}>
               </div>
             </div>

+ 11 - 12
ambari-web/app/utils/db.js

@@ -51,9 +51,9 @@ App.db.cleanUp = function () {
       'loginName': '',
       'authenticated': false
     },
-    'Installer': {},
-    'AddHost': {},
-    'AddService': {}
+    'Installer' : {},
+    'AddHost' : {},
+    'AddService' : {}
   };
   console.log("In cleanup./..");
   localStorage.setObject('ambari', App.db.data);
@@ -195,13 +195,19 @@ App.db.setSlaveComponentHosts = function (slaveComponentHosts) {
   localStorage.setObject('ambari', App.db.data);
 };
 
+App.db.setSlaveProperties = function (slaveProperties) {
+  App.db.data = localStorage.getObject('ambari');
+  App.db.data.Installer.slaveProperties = slaveProperties;
+  localStorage.setObject('ambari', App.db.data);
+};
+
 App.db.setServiceConfigs = function (serviceConfigs) {
   App.db.data = localStorage.getObject('ambari');
   App.db.data.Installer.serviceConfigs = serviceConfigs;
   localStorage.setObject('ambari', App.db.data);
 };
 
-App.db.setAdvancedServiceConfig = function (serviceConfigs) {
+App.db.setAdvancedServiceConfig = function(serviceConfigs) {
   App.db.data = localStorage.getObject('ambari');
   App.db.data.Installer.advanceServiceConfigs = serviceConfigs;
   localStorage.setObject('ambari', App.db.data);
@@ -213,12 +219,6 @@ App.db.setServiceConfigProperties = function (configProperties) {
   localStorage.setObject('ambari', App.db.data);
 };
 
-App.db.setSlaveProperties = function (slaveProperties) {
-  App.db.data = localStorage.getObject('ambari');
-  App.db.data.Installer.slaveProperties = slaveProperties;
-  localStorage.setObject('ambari', App.db.data);
-};
-
 App.db.setClusterStatus = function (status) {
   App.db.data = localStorage.getObject('ambari');
   App.db.data.Installer.clusterStatus = status;
@@ -364,7 +364,7 @@ App.db.getServiceConfigs = function () {
   return App.db.data.Installer.serviceConfigs;
 };
 
-App.db.getAdvancedServiceConfig = function () {
+App.db.getAdvancedServiceConfig = function() {
   App.db.data = localStorage.getObject('ambari');
   return App.db.data.Installer.advanceServiceConfigs;
 };
@@ -379,7 +379,6 @@ App.db.getSlaveProperties = function () {
   return App.db.data.Installer.slaveProperties;
 };
 
-
 App.db.getClusterStatus = function () {
   console.log('TRACE: Entering db:getClusterStatus function');
   App.db.data = localStorage.getObject('ambari');

+ 9 - 2
ambari-web/app/views/common/chart/linear_time.js

@@ -86,6 +86,8 @@ App.ChartLinearTimeView = Ember.View.extend({
 
       _seriesProperties: null,
 
+      renderer: 'area',
+
       popupSuffix: '-popup',
 
       isPopup: false,
@@ -362,14 +364,19 @@ App.ChartLinearTimeView = Ember.View.extend({
         var legendElement = document.querySelector(legendElementId);
         var timelineElement = document.querySelector(timelineElementId);
 
+        var strokeWidth = 1;
+        if (this.get('renderer') != 'area') {
+          strokeWidth = 2;
+        }
+
         var _graph = new Rickshaw.Graph({
           height: 150,
           element: chartElement,
           series: seriesData,
           interpolation: 'step-after',
           stroke: true,
-          renderer: 'area',
-          strokeWidth: 1
+          renderer: this.get('renderer'),
+          strokeWidth: strokeWidth
         });
         _graph.renderer.unstack = false;
 

+ 1 - 1
ambari-web/app/views/main/dashboard/cluster_metrics/load.js

@@ -35,7 +35,7 @@ App.ChartClusterMetricsLoad = App.ChartLinearTimeView.extend({
       clusterName: App.router.get('clusterController.clusterName')
     }, "/data/cluster_metrics/load_1hr.json");
   }.property('App.router.clusterController.clusterName'),
-  
+  renderer: 'line',
   title: "Cluster Load",
   
   transformToSeries: function(jsonData){

+ 1 - 1
ambari-web/app/views/main/dashboard/cluster_metrics/memory.js

@@ -35,7 +35,7 @@ App.ChartClusterMetricsMemory = App.ChartLinearTimeView.extend({
   }.property('App.router.clusterController.clusterName'),
   title: "Memory Usage",
   yAxisFormatter: App.ChartLinearTimeView.BytesFormatter,
-  
+  renderer: 'line',
   transformToSeries: function (jsonData) {
     var seriesArray = [];
     if (jsonData && jsonData.metrics && jsonData.metrics.memory) {

+ 2 - 1
ambari-web/app/views/main/dashboard/cluster_metrics/network.js

@@ -36,7 +36,8 @@ App.ChartClusterMetricsNetwork = App.ChartLinearTimeView.extend({
   }.property('App.router.clusterController.clusterName'),
   title: "Network Usage",
   yAxisFormatter: App.ChartLinearTimeView.BytesFormatter,
-  
+  renderer: 'line',
+
   transformToSeries : function (jsonData) {
     var seriesArray = [];
     if (jsonData && jsonData.metrics && jsonData.metrics.network) {

+ 1 - 1
ambari-web/app/views/main/host/metrics/disk.js

@@ -30,7 +30,7 @@ App.ChartHostMetricsDisk = App.ChartLinearTimeView.extend({
   id: "host-metrics-disk",
   title: "Disk Usage",
   yAxisFormatter: App.ChartLinearTimeView.BytesFormatter,
-
+  renderer: 'line',
   url: function () {
     return App.formatUrl(App.apiPrefix + "/clusters/{clusterName}/hosts/{hostName}?fields=metrics/disk/disk_total[{fromSeconds},{toSeconds},{stepSeconds}],metrics/part_max_used[{fromSeconds},{toSeconds},{stepSeconds}],metrics/disk/disk_free[{fromSeconds},{toSeconds},{stepSeconds}]", {
       clusterName: App.router.get('clusterController.clusterName'),

+ 1 - 1
ambari-web/app/views/main/host/metrics/load.js

@@ -29,7 +29,7 @@ var App = require('app');
 App.ChartHostMetricsLoad = App.ChartLinearTimeView.extend({
   id: "host-metrics-load",
   title: "Load",
-
+  renderer: 'line',
   url: function () {
     return App.formatUrl(App.apiPrefix + "/clusters/{clusterName}/hosts/{hostName}?fields=metrics/load/load_fifteen[{fromSeconds},{toSeconds},{stepSeconds}],metrics/load/load_one[{fromSeconds},{toSeconds},{stepSeconds}],metrics/load/load_five[{fromSeconds},{toSeconds},{stepSeconds}]", {
       clusterName: App.router.get('clusterController.clusterName'),

+ 1 - 1
ambari-web/app/views/main/host/metrics/memory.js

@@ -30,7 +30,7 @@ App.ChartHostMetricsMemory = App.ChartLinearTimeView.extend({
   id: "host-metrics-memory",
   title: "Memory Usage",
   yAxisFormatter: App.ChartLinearTimeView.BytesFormatter,
-
+  renderer: 'line',
   url: function () {
     return App.formatUrl(App.apiPrefix + "/clusters/{clusterName}/hosts/{hostName}?fields=metrics/memory/swap_free[{fromSeconds},{toSeconds},{stepSeconds}],metrics/memory/mem_total[{fromSeconds},{toSeconds},{stepSeconds}],metrics/memory/mem_free[{fromSeconds},{toSeconds},{stepSeconds}],metrics/memory/mem_cached[{fromSeconds},{toSeconds},{stepSeconds}],metrics/memory/mem_buffers[{fromSeconds},{toSeconds},{stepSeconds}]", {
       clusterName: App.router.get('clusterController.clusterName'),

+ 1 - 1
ambari-web/app/views/main/host/metrics/network.js

@@ -30,7 +30,7 @@ App.ChartHostMetricsNetwork = App.ChartLinearTimeView.extend({
   id: "host-metrics-network",
   title: "Network Usage",
   yAxisFormatter: App.ChartLinearTimeView.BytesFormatter,
-
+  renderer: 'line',
   url: function () {
     return App.formatUrl(App.apiPrefix + "/clusters/{clusterName}/hosts/{hostName}?fields=metrics/network/bytes_in[{fromSeconds},{toSeconds},{stepSeconds}],metrics/network/bytes_out[{fromSeconds},{toSeconds},{stepSeconds}],metrics/network/pkts_in[{fromSeconds},{toSeconds},{stepSeconds}],metrics/network/pkts_out[{fromSeconds},{toSeconds},{stepSeconds}]", {
       clusterName: App.router.get('clusterController.clusterName'),

+ 1 - 1
ambari-web/app/views/main/host/metrics/processes.js

@@ -29,7 +29,7 @@ var App = require('app');
 App.ChartHostMetricsProcesses = App.ChartLinearTimeView.extend({
   id: "host-metrics-processes",
   title: "Processes",
-
+  renderer: 'line',
   url: function () {
     return App.formatUrl(App.apiPrefix + "/clusters/{clusterName}/hosts/{hostName}?fields=metrics/process/proc_total[{fromSeconds},{toSeconds},{stepSeconds}],metrics/process/proc_run[{fromSeconds},{toSeconds},{stepSeconds}]", {
       clusterName: App.router.get('clusterController.clusterName'),

+ 1 - 1
ambari-web/app/views/main/service/info/metrics/hbase/regionserver_queuesize.js

@@ -29,7 +29,7 @@ var App = require('app');
 App.ChartServiceMetricsHBASE_RegionServerQueueSize = App.ChartLinearTimeView.extend({
   id: "service-metrics-hbase-regionserver-queuesize",
   title: "RegionServer Queue Size",
-
+  renderer: 'line',
   url: function () {
     return App.formatUrl(App.apiPrefix + "/clusters/{clusterName}/services/HBASE/components/HBASE_REGIONSERVER?fields=metrics/hbase/regionserver/flushQueueSize[{fromSeconds},{toSeconds},{stepSeconds}],metrics/hbase/regionserver/compactionQueueSize[{fromSeconds},{toSeconds},{stepSeconds}]", {
       clusterName: App.router.get('clusterController.clusterName')

+ 1 - 1
ambari-web/app/views/main/service/info/metrics/hbase/regionserver_rw_requests.js

@@ -29,7 +29,7 @@ var App = require('app');
 App.ChartServiceMetricsHBASE_RegionServerReadWriteRequests = App.ChartLinearTimeView.extend({
   id: "service-metrics-hbase-regionserver-rw-requests",
   title: "RegionServer Requests",
-
+  renderer: 'line',
   url: function () {
     return App.formatUrl(App.apiPrefix + "/clusters/{clusterName}/services/HBASE/components/HBASE_REGIONSERVER?fields=metrics/hbase/regionserver/readRequestsCount[{fromSeconds},{toSeconds},{stepSeconds}],metrics/hbase/regionserver/writeRequestsCount[{fromSeconds},{toSeconds},{stepSeconds}]", {
       clusterName: App.router.get('clusterController.clusterName')

+ 1 - 1
ambari-web/app/views/main/service/info/metrics/hdfs/block_status.js

@@ -29,7 +29,7 @@ var App = require('app');
 App.ChartServiceMetricsHDFS_BlockStatus = App.ChartLinearTimeView.extend({
   id: "service-metrics-hdfs-block-status",
   title: "Block Status",
-
+  renderer: 'line',
   url: function () {
     var hdfsService = App.HDFSService.find().objectAt(0);
     var nameNodeHostName = hdfsService.get('nameNode').get('hostName');

+ 1 - 1
ambari-web/app/views/main/service/info/metrics/hdfs/file_operations.js

@@ -29,7 +29,7 @@ var App = require('app');
 App.ChartServiceMetricsHDFS_FileOperations = App.ChartLinearTimeView.extend({
   id: "service-metrics-hdfs-file-operations",
   title: "File Operations",
-
+  renderer: 'line',
   url: function () {
     var hdfsService = App.HDFSService.find().objectAt(0);
     var nameNodeHostName = hdfsService.get('nameNode').get('hostName');

+ 1 - 1
ambari-web/app/views/main/service/info/metrics/hdfs/io.js

@@ -30,7 +30,7 @@ App.ChartServiceMetricsHDFS_IO = App.ChartLinearTimeView.extend({
   id: "service-metrics-hdfs-io",
   title: "HDFS I/O",
   yAxisFormatter: App.ChartLinearTimeView.BytesFormatter,
-
+  renderer: 'line',
   url: function () {
     return App.formatUrl(App.apiPrefix + "/clusters/{clusterName}/services/HDFS/components/DATANODE?fields=metrics/dfs/datanode/bytes_written[{fromSeconds},{toSeconds},{stepSeconds}],metrics/dfs/datanode/bytes_read[{fromSeconds},{toSeconds},{stepSeconds}]", {
       clusterName: App.router.get('clusterController.clusterName')

+ 1 - 1
ambari-web/app/views/main/service/info/metrics/hdfs/jvm_heap.js

@@ -30,7 +30,7 @@ App.ChartServiceMetricsHDFS_JVMHeap = App.ChartLinearTimeView.extend({
   id: "service-metrics-hdfs-jvm-heap",
   title: "JVM Memory Status",
   yAxisFormatter: App.ChartLinearTimeView.BytesFormatter,
-
+  renderer: 'line',
   url: function () {
     var hdfsService = App.HDFSService.find().objectAt(0);
     var nameNodeHostName = hdfsService.get('nameNode').get('hostName');

+ 1 - 1
ambari-web/app/views/main/service/info/metrics/hdfs/jvm_threads.js

@@ -29,7 +29,7 @@ var App = require('app');
 App.ChartServiceMetricsHDFS_JVMThreads = App.ChartLinearTimeView.extend({
   id: "service-metrics-hdfs-jvm-threads",
   title: "JVM Thread Status",
-
+  renderer: 'line',
   url: function () {
     var hdfsService = App.HDFSService.find().objectAt(0);
     var nameNodeHostName = hdfsService.get('nameNode').get('hostName');

+ 1 - 1
ambari-web/app/views/main/service/info/metrics/hdfs/space_utilization.js

@@ -30,7 +30,7 @@ App.ChartServiceMetricsHDFS_SpaceUtilization = App.ChartLinearTimeView.extend({
   id: "service-metrics-hdfs-space-utilization",
   title: "Total Space Utilization",
   yAxisFormatter: App.ChartLinearTimeView.BytesFormatter,
-
+  renderer: 'line',
   url: function () {
     var hdfsService = App.HDFSService.find().objectAt(0);
     var nameNodeHostName = hdfsService.get('nameNode').get('hostName');

+ 1 - 1
ambari-web/app/views/main/service/info/metrics/mapreduce/jobs_running_waiting.js

@@ -29,7 +29,7 @@ var App = require('app');
 App.ChartServiceMetricsMapReduce_JobsRunningWaiting = App.ChartLinearTimeView.extend({
   id: "service-metrics-mapreduce-jobs-running-waiting",
   title: "Jobs (Running/Waiting)",
-
+  renderer: 'line',
   url: function () {
     return App.formatUrl(App.apiPrefix + "/clusters/{clusterName}/services/MAPREDUCE/components/JOBTRACKER?fields=metrics/mapred/jobtracker/running_maps[{fromSeconds},{toSeconds},{stepSeconds}],metrics/mapred/jobtracker/running_reduces[{fromSeconds},{toSeconds},{stepSeconds}],metrics/mapred/jobtracker/waiting_maps[{fromSeconds},{toSeconds},{stepSeconds}],metrics/mapred/jobtracker/waiting_reduces[{fromSeconds},{toSeconds},{stepSeconds}]", {
       clusterName: App.router.get('clusterController.clusterName')

+ 1 - 1
ambari-web/app/views/main/service/info/metrics/mapreduce/jobs_status.js

@@ -29,7 +29,7 @@ var App = require('app');
 App.ChartServiceMetricsMapReduce_JobsStatus = App.ChartLinearTimeView.extend({
   id: "service-metrics-mapreduce-jobs-status",
   title: "Jobs Status",
-
+  renderer: 'line',
   url: function () {
     return App.formatUrl(App.apiPrefix + "/clusters/{clusterName}/services/MAPREDUCE/components/JOBTRACKER?fields=metrics/mapred/jobtracker/jobs_completed[{fromSeconds},{toSeconds},{stepSeconds}],metrics/mapred/jobtracker/jobs_preparing[{fromSeconds},{toSeconds},{stepSeconds}],metrics/mapred/jobtracker/jobs_failed[{fromSeconds},{toSeconds},{stepSeconds}],metrics/mapred/jobtracker/jobs_submitted[{fromSeconds},{toSeconds},{stepSeconds}],metrics/mapred/jobtracker/jobs_failed[{fromSeconds},{toSeconds},{stepSeconds}],metrics/mapred/jobtracker/jobs_running[{fromSeconds},{toSeconds},{stepSeconds}]", {
       clusterName: App.router.get('clusterController.clusterName')

+ 1 - 1
ambari-web/app/views/main/service/info/metrics/mapreduce/map_slots.js

@@ -29,7 +29,7 @@ var App = require('app');
 App.ChartServiceMetricsMapReduce_MapSlots = App.ChartLinearTimeView.extend({
   id: "service-metrics-mapreduce-map-slots",
   title: "Map Slot Utilization",
-
+  renderer: 'line',
   url: function () {
     return App.formatUrl(App.apiPrefix + "/clusters/{clusterName}/services/MAPREDUCE/components/JOBTRACKER?fields=metrics/mapred/jobtracker/occupied_map_slots[{fromSeconds},{toSeconds},{stepSeconds}],metrics/mapred/jobtracker/reserved_map_slots[{fromSeconds},{toSeconds},{stepSeconds}]", {
       clusterName: App.router.get('clusterController.clusterName')

+ 1 - 1
ambari-web/app/views/main/service/info/metrics/mapreduce/reduce_slots.js

@@ -29,7 +29,7 @@ var App = require('app');
 App.ChartServiceMetricsMapReduce_ReduceSlots = App.ChartLinearTimeView.extend({
   id: "service-metrics-mapreduce-reduce-slots",
   title: "Reduce Slots Utilization",
-
+  renderer: 'line',
   url: function () {
     return App.formatUrl(App.apiPrefix + "/clusters/{clusterName}/services/MAPREDUCE/components/JOBTRACKER?fields=metrics/mapred/jobtracker/occupied_reduce_slots[{fromSeconds},{toSeconds},{stepSeconds}],metrics/mapred/jobtracker/reserved_reduce_slots[{fromSeconds},{toSeconds},{stepSeconds}]", {
       clusterName: App.router.get('clusterController.clusterName')

+ 14 - 2
ambari-web/app/views/main/service/info/summary.js

@@ -192,10 +192,22 @@ App.MainServiceInfoSummaryView = Em.View.extend({
         $(summaryTable).attr('style', "height:" + alertsList.clientHeight + "px;");
       }
     }
-    // Tooltips for alerts need to be enabled.
-    $("div[rel=tooltip]").tooltip();
   },
 
+  alertItemView:Em.View.extend({
+    tagName:"li",
+    templateName: require('templates/main/service/info/summary_alert'),
+    classNameBindings: ["status"],
+    status: function () {
+      return "status-" + this.get("content.status");
+    }.property('content'),
+    didInsertElement: function () {
+      // Tooltips for alerts need to be enabled.
+      $("div[rel=tooltip]").tooltip();
+      $(".tooltip").remove();
+    }
+  }),
+
   clientHosts:App.Host.find(),
 
   clientHostsLength:function () {

+ 2 - 1
ambari-web/app/views/wizard/controls_view.js

@@ -331,7 +331,7 @@ App.SlaveComponentGroupsMenu = Em.CollectionView.extend({
 
     errorCount: function () {
       return this.get('content.properties').filterProperty('isValid', false).filterProperty('isVisible', true).get('length');
-    }.property('content.properties.@each.isValid','content.properties.@each.isVisible'),
+    }.property('content.properties.@each.isValid', 'content.properties.@each.isVisible'),
 
     template: Ember.Handlebars.compile('<a {{action showSlaveComponentGroup view.content target="controller"}} href="#"> {{view.content.name}}{{#if view.errorCount}}<span class="badge badge-important">{{view.errorCount}}</span>{{/if}}</a><i {{action removeSlaveComponentGroup view.content target="controller"}} class="icon-remove"></i>')
   })
@@ -468,3 +468,4 @@ App.SlaveComponentChangeGroupNameView = Ember.View.extend({
     }
   }
 });
+

+ 0 - 1
ambari-web/app/views/wizard/step7_view.js

@@ -60,7 +60,6 @@ App.WizardStep7.ServiceConfigsByCategoryView = Ember.View.extend({
       this.set('category.isCollapsed', false);
     }
   },
-
   layout: Ember.Handlebars.compile('<div {{bindAttr id="view.category.name"}} class="accordion-body collapse in"><div class="accordion-inner">{{yield}}</div></div>')
 });
 

+ 5 - 0
ambari-web/app/views/wizard/step9_view.js

@@ -67,6 +67,7 @@ App.HostStatusView = Em.View.extend({
     var controller = this.get('controller');
     this.onStatus();
   },
+
   barWidth: function () {
     var barWidth = 'width: ' + this.get('obj.progress') + '%;';
     return barWidth;
@@ -117,6 +118,10 @@ App.HostStatusView = Em.View.extend({
     }
   }.property('controller.isStepCompleted', 'controller.status'),
 
+  isHostCompleted: function () {
+    return this.get('obj.progress') == 100 || this.get('controller.isStepCompleted');
+  }.property('controller.isStepCompleted', 'obj.progress'),
+
   hostLogPopup: function (event, context) {
     var self = this;
     var host = event.context;

+ 15 - 0
ambari-web/pom.xml

@@ -44,6 +44,21 @@
         <artifactId>maven-antrun-plugin</artifactId>
         <version>1.7</version>
         <executions>
+          <execution>
+            <id>clean</id>
+            <phase>clean</phase>
+            <goals>
+              <goal>run</goal>
+            </goals>
+            <configuration>
+              <target name="ambari-web-clean">
+                <exec dir="${basedir}" executable="rm" failonerror="false">
+                  <arg value="-rf"/>
+                  <arg value="public"/>
+                </exec>
+              </target>
+            </configuration>
+          </execution>
           <execution>
             <id>compile</id>
             <phase>compile</phase>

Some files were not shown because too many files changed in this diff