Explorar el Código

AMBARI-1145. Cluster Management refactoring. (yusaku)

git-svn-id: https://svn.apache.org/repos/asf/incubator/ambari/trunk@1431599 13f79535-47bb-0310-9956-ffa450edef68
Yusaku Sako hace 12 años
padre
commit
a4631cf7bc
Se han modificado 30 ficheros con 2872 adiciones y 213 borrados
  1. 2589 8
      ambari-web/app/assets/data/apps/runs.json
  2. 40 0
      ambari-web/app/assets/data/wizard/stack/hdp/version01/WEBHCAT.json
  3. 19 32
      ambari-web/app/controllers/main/apps_controller.js
  4. 13 2
      ambari-web/app/controllers/main/host.js
  5. 0 1
      ambari-web/app/controllers/main/service.js
  6. 8 1
      ambari-web/app/controllers/wizard/step2_controller.js
  7. 18 2
      ambari-web/app/controllers/wizard/step8_controller.js
  8. 0 48
      ambari-web/app/data/config_properties.js
  9. 12 0
      ambari-web/app/data/custom_configs.js
  10. 10 0
      ambari-web/app/data/service_configs.js
  11. 20 0
      ambari-web/app/mappers/service_mapper.js
  12. 10 5
      ambari-web/app/models/component.js
  13. 12 0
      ambari-web/app/models/host_component.js
  14. 7 1
      ambari-web/app/models/run.js
  15. 0 3
      ambari-web/app/routes/main.js
  16. 7 1
      ambari-web/app/styles/application.less
  17. 1 1
      ambari-web/app/styles/apps.less
  18. 2 3
      ambari-web/app/templates/main/apps.hbs
  19. 1 1
      ambari-web/app/templates/main/apps/list_row.hbs
  20. 1 1
      ambari-web/app/templates/main/host/summary.hbs
  21. 0 62
      ambari-web/app/templates/main/service/info/client_summary.hbs
  22. 0 2
      ambari-web/app/templates/main/service/item.hbs
  23. 0 2
      ambari-web/app/templates/main/service/menu_item.hbs
  24. 3 2
      ambari-web/app/utils/data_table.js
  25. 24 0
      ambari-web/app/utils/date.js
  26. 34 20
      ambari-web/app/views/main/apps_view.js
  27. 34 0
      ambari-web/app/views/main/host.js
  28. 6 6
      ambari-web/app/views/main/host/summary.js
  29. 1 3
      ambari-web/app/views/main/service/info/summary.js
  30. 0 6
      ambari-web/app/views/main/service/menu.js

+ 2589 - 8
ambari-web/app/assets/data/apps/runs.json

@@ -3,7 +3,7 @@
     "elapsedTime": 693129,
     "numJobsCompleted": 3,
     "numJobsTotal": 3,
-    "startTime": 1352095518432,
+    "startTime": 1355365518432,
     "userName": "root",
     "workflowContext": {
       "workflowDag": {
@@ -28,7 +28,7 @@
     "elapsedTime": 892896,
     "numJobsCompleted": 5,
     "numJobsTotal": 5,
-    "startTime": 1352015770967,
+    "startTime": 1355015770967,
     "userName": "root",
     "workflowContext": {
       "workflowDag": {
@@ -61,7 +61,7 @@
     "elapsedTime": 910360,
     "numJobsCompleted": 5,
     "numJobsTotal": 5,
-    "startTime": 1352012856094,
+    "startTime": 1355012856094,
     "userName": "root",
     "workflowContext": {
       "workflowDag": {
@@ -94,7 +94,7 @@
     "elapsedTime": 920579,
     "numJobsCompleted": 5,
     "numJobsTotal": 5,
-    "startTime": 1351986424338,
+    "startTime": 1354986424338,
     "userName": "root",
     "workflowContext": {
       "workflowDag": {
@@ -127,7 +127,7 @@
     "elapsedTime": 687631,
     "numJobsCompleted": 3,
     "numJobsTotal": 3,
-    "startTime": 1352096970440,
+    "startTime": 1355096970440,
     "userName": "root",
     "workflowContext": {
       "workflowDag": {
@@ -152,7 +152,7 @@
     "elapsedTime": 905375,
     "numJobsCompleted": 5,
     "numJobsTotal": 5,
-    "startTime": 1352014799808,
+    "startTime": 1355014799808,
     "userName": "root",
     "workflowContext": {
       "workflowDag": {
@@ -185,7 +185,7 @@
     "elapsedTime": 683055,
     "numJobsCompleted": 3,
     "numJobsTotal": 3,
-    "startTime": 1351988051564,
+    "startTime": 1354988051564,
     "userName": "root",
     "workflowContext": {
       "workflowDag": {
@@ -210,7 +210,7 @@
     "elapsedTime": 35150977,
     "numJobsCompleted": 5,
     "numJobsTotal": 5,
-    "startTime": 1352048063698,
+    "startTime": 1355048063698,
     "userName": "root",
     "workflowContext": {
       "workflowDag": {
@@ -453,5 +453,2586 @@
     "workflowName": "script2-hadoop.pig",
     "inputBytes": 428423,
     "outputBytes": 18434
+  },
+  {
+    "elapsedTime": 693129,
+    "numJobsCompleted": 3,
+    "numJobsTotal": 3,
+    "startTime": 1355365518432,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "89",
+            "targets": ["97"]
+          },
+          {
+            "source": "97",
+            "targets": ["103"]
+          }
+        ]
+      }
+    },
+    "workflowId": "mr_b6d5cc44-ac51-4ecd-92c7-2e477c2fb1d6",
+    "workflowName": "script2-hadoop.pig",
+    "inputBytes": 423423,
+    "outputBytes": 12434
+  },
+  {
+    "elapsedTime": 892896,
+    "numJobsCompleted": 5,
+    "numJobsTotal": 5,
+    "startTime": 1355015770967,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "80",
+            "targets": ["83"]
+          },
+          {
+            "source": "83",
+            "targets": ["86"]
+          },
+          {
+            "source": "86",
+            "targets": ["103"]
+          },
+          {
+            "source": "72",
+            "targets": ["80"]
+          }
+        ]
+      }
+    },
+    "workflowId": "hive_7c779523-6bca-416e-829b3-b01b73a60174",
+    "workflowName": "script1-hadoop.pig",
+    "inputBytes": 473423,
+    "outputBytes": 82434
+  },
+  {
+    "elapsedTime": 910360,
+    "numJobsCompleted": 5,
+    "numJobsTotal": 5,
+    "startTime": 1355012856094,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "80",
+            "targets": ["83"]
+          },
+          {
+            "source": "83",
+            "targets": ["86"]
+          },
+          {
+            "source": "86",
+            "targets": ["103"]
+          },
+          {
+            "source": "72",
+            "targets": ["80"]
+          }
+        ]
+      }
+    },
+    "workflowId": "pig_5750f4cf-f0d2-4e93d-a7ce-90912b309c12",
+    "workflowName": "script1-hadoop.pig",
+    "inputBytes": 923423,
+    "outputBytes": 32434
+  },
+  {
+    "elapsedTime": 920579,
+    "numJobsCompleted": 5,
+    "numJobsTotal": 5,
+    "startTime": 1354986424338,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "80",
+            "targets": ["83"]
+          },
+          {
+            "source": "83",
+            "targets": ["86"]
+          },
+          {
+            "source": "86",
+            "targets": ["103"]
+          },
+          {
+            "source": "72",
+            "targets": ["80"]
+          }
+        ]
+      }
+    },
+    "workflowId": "mr_25547729-848f9-4287-a45a-64901a82f22b",
+    "workflowName": "script1-hadoop.pig",
+    "inputBytes": 623423,
+    "outputBytes": 42434
+  },
+  {
+    "elapsedTime": 687631,
+    "numJobsCompleted": 3,
+    "numJobsTotal": 3,
+    "startTime": 1355096970440,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "89",
+            "targets": ["97"]
+          },
+          {
+            "source": "97",
+            "targets": ["103"]
+          }
+        ]
+      }
+    },
+    "workflowId": "hive_a5b49c06f-96d2-4ea8-80e0-3c063ae831d4",
+    "workflowName": "script2-hadoop.pig",
+    "inputBytes": 483423,
+    "outputBytes": 82434
+  },
+  {
+    "elapsedTime": 905375,
+    "numJobsCompleted": 5,
+    "numJobsTotal": 5,
+    "startTime": 1355014799808,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "80",
+            "targets": ["83"]
+          },
+          {
+            "source": "83",
+            "targets": ["86"]
+          },
+          {
+            "source": "86",
+            "targets": ["103"]
+          },
+          {
+            "source": "72",
+            "targets": ["80"]
+          }
+        ]
+      }
+    },
+    "workflowId": "pig_90ac94ff-20c4-4637-8b1c-51379cfe010df",
+    "workflowName": "script1-hadoop.pig",
+    "inputBytes": 428423,
+    "outputBytes": 32434
+  },
+  {
+    "elapsedTime": 683055,
+    "numJobsCompleted": 3,
+    "numJobsTotal": 3,
+    "startTime": 1354988051564,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "89",
+            "targets": ["97"]
+          },
+          {
+            "source": "97",
+            "targets": ["103"]
+          }
+        ]
+      }
+    },
+    "workflowId": "hive_c2832f923-9bd4-421f-9a51-8f45991d91de",
+    "workflowName": "script2-hadoop.pig",
+    "inputBytes": 723423,
+    "outputBytes": 62434
+  },
+  {
+    "elapsedTime": 35150977,
+    "numJobsCompleted": 5,
+    "numJobsTotal": 5,
+    "startTime": 1355048063698,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "80",
+            "targets": ["83"]
+          },
+          {
+            "source": "83",
+            "targets": ["86"]
+          },
+          {
+            "source": "86",
+            "targets": ["103"]
+          },
+          {
+            "source": "72",
+            "targets": ["80"]
+          }
+        ]
+      }
+    },
+    "workflowId": "mr_a0aad2e31-47f8-475b-b887-60a79bcea5c4",
+    "workflowName": "script1-hadoop.pig",
+    "inputBytes": 463423,
+    "outputBytes": 57434
+  },
+  {
+    "elapsedTime": 888790,
+    "numJobsCompleted": 5,
+    "numJobsTotal": 5,
+    "startTime": 1352047088454,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "80",
+            "targets": ["83"]
+          },
+          {
+            "source": "83",
+            "targets": ["86"]
+          },
+          {
+            "source": "86",
+            "targets": ["103"]
+          },
+          {
+            "source": "72",
+            "targets": ["80"]
+          }
+        ]
+      }
+    },
+    "workflowId": "pig_b4365f79-108da-4db6-bbfd-e8a850d6c6e8",
+    "workflowName": "script1-hadoop.pig",
+    "inputBytes": 723423,
+    "outputBytes": 82434
+  },
+  {
+    "elapsedTime": 902653,
+    "numJobsCompleted": 5,
+    "numJobsTotal": 5,
+    "startTime": 1352013831863,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "80",
+            "targets": ["83"]
+          },
+          {
+            "source": "83",
+            "targets": ["86"]
+          },
+          {
+            "source": "86",
+            "targets": ["103"]
+          },
+          {
+            "source": "72",
+            "targets": ["80"]
+          }
+        ]
+      }
+    },
+    "workflowId": "hive_b6bf290a4-324f-4435-8ed3-bee10622ea48",
+    "workflowName": "script1-hadoop.pig",
+    "inputBytes": 923423,
+    "outputBytes": 52434
+  },
+  {
+    "elapsedTime": 884834,
+    "numJobsCompleted": 5,
+    "numJobsTotal": 5,
+    "startTime": 1352016729699,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "80",
+            "targets": ["83"]
+          },
+          {
+            "source": "83",
+            "targets": ["86"]
+          },
+          {
+            "source": "86",
+            "targets": ["103"]
+          },
+          {
+            "source": "72",
+            "targets": ["80"]
+          }
+        ]
+      }
+    },
+    "workflowId": "pig_a06a6fb32-b3fd-4427-ab54-449d0895fbb2",
+    "workflowName": "script1-hadoop.pig",
+    "inputBytes": 403423,
+    "outputBytes": 82434
+  },
+  {
+    "elapsedTime": 674392,
+    "numJobsCompleted": 3,
+    "numJobsTotal": 3,
+    "startTime": 1352096252185,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "89",
+            "targets": ["97"]
+          },
+          {
+            "source": "97",
+            "targets": ["103"]
+          }
+        ]
+      }
+    },
+    "workflowId": "pig_f69499b1-a504-433e-8904-07606deb5a183",
+    "workflowName": "script2-hadoop.pig",
+    "inputBytes": 423123,
+    "outputBytes": 52434
+  },
+  {
+    "elapsedTime": 926853,
+    "numJobsCompleted": 5,
+    "numJobsTotal": 5,
+    "startTime": 1352100483608,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "80",
+            "targets": ["83"]
+          },
+          {
+            "source": "83",
+            "targets": ["86"]
+          },
+          {
+            "source": "86",
+            "targets": ["103"]
+          },
+          {
+            "source": "72",
+            "targets": ["80"]
+          }
+        ]
+      }
+    },
+    "workflowId": "mr_73e014732-ea7f-43b8-9a2f-0f5a30e665da",
+    "workflowName": "script1-hadoop.pig",
+    "inputBytes": 523423,
+    "outputBytes": 92434
+  },
+  {
+    "elapsedTime": 0,
+    "numJobsCompleted": 0,
+    "numJobsTotal": 5,
+    "startTime": 1352194719224,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "80",
+            "targets": ["83"]
+          },
+          {
+            "source": "83",
+            "targets": ["86"]
+          },
+          {
+            "source": "86",
+            "targets": ["103"]
+          },
+          {
+            "source": "72",
+            "targets": ["80"]
+          }
+        ]
+      }
+    },
+    "workflowId": "pig_321b2111b-cc2e-4024-a8db-d181855a463f",
+    "workflowName": "script1-hadoop.pig",
+    "inputBytes": 443423,
+    "outputBytes": 32434
+  },
+  {
+    "elapsedTime": 670929,
+    "numJobsCompleted": 3,
+    "numJobsTotal": 3,
+    "startTime": 1352097700564,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "89",
+            "targets": ["97"]
+          },
+          {
+            "source": "97",
+            "targets": ["103"]
+          }
+        ]
+      }
+    },
+    "workflowId": "hive_097d06598-3620-4232-9c79-4deccbf6c98a",
+    "workflowName": "script2-hadoop.pig",
+    "inputBytes": 428423,
+    "outputBytes": 18434
+  },
+  {
+    "elapsedTime": 693129,
+    "numJobsCompleted": 3,
+    "numJobsTotal": 3,
+    "startTime": 1355365518432,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "89",
+            "targets": ["97"]
+          },
+          {
+            "source": "97",
+            "targets": ["103"]
+          }
+        ]
+      }
+    },
+    "workflowId": "mr_b6d5ccb44-ac51-4ecd-92c7-2e477c2fbed6",
+    "workflowName": "script2-hadoop.pig",
+    "inputBytes": 423423,
+    "outputBytes": 12434
+  },
+  {
+    "elapsedTime": 892896,
+    "numJobsCompleted": 5,
+    "numJobsTotal": 5,
+    "startTime": 1355015770967,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "80",
+            "targets": ["83"]
+          },
+          {
+            "source": "83",
+            "targets": ["86"]
+          },
+          {
+            "source": "86",
+            "targets": ["103"]
+          },
+          {
+            "source": "72",
+            "targets": ["80"]
+          }
+        ]
+      }
+    },
+    "workflowId": "hive_7c77c9523-6bca-416e-89b3-b01b73a60174",
+    "workflowName": "script1-hadoop.pig",
+    "inputBytes": 473423,
+    "outputBytes": 82434
+  },
+  {
+    "elapsedTime": 910360,
+    "numJobsCompleted": 5,
+    "numJobsTotal": 5,
+    "startTime": 1355012856094,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "80",
+            "targets": ["83"]
+          },
+          {
+            "source": "83",
+            "targets": ["86"]
+          },
+          {
+            "source": "86",
+            "targets": ["103"]
+          },
+          {
+            "source": "72",
+            "targets": ["80"]
+          }
+        ]
+      }
+    },
+    "workflowId": "pig_5750fd4cf-f0d2-4e3d-a7ce-90912b309c12",
+    "workflowName": "script1-hadoop.pig",
+    "inputBytes": 923423,
+    "outputBytes": 32434
+  },
+  {
+    "elapsedTime": 920579,
+    "numJobsCompleted": 5,
+    "numJobsTotal": 5,
+    "startTime": 1354986424338,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "80",
+            "targets": ["83"]
+          },
+          {
+            "source": "83",
+            "targets": ["86"]
+          },
+          {
+            "source": "86",
+            "targets": ["103"]
+          },
+          {
+            "source": "72",
+            "targets": ["80"]
+          }
+        ]
+      }
+    },
+    "workflowId": "mr_25e547729-88f9-4287-a45a-64901a82f22b",
+    "workflowName": "script1-hadoop.pig",
+    "inputBytes": 623423,
+    "outputBytes": 42434
+  },
+  {
+    "elapsedTime": 687631,
+    "numJobsCompleted": 3,
+    "numJobsTotal": 3,
+    "startTime": 1355096970440,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "89",
+            "targets": ["97"]
+          },
+          {
+            "source": "97",
+            "targets": ["103"]
+          }
+        ]
+      }
+    },
+    "workflowId": "hive_a5b9c06f-96d2-4ea8-80e0-3c063ae8a31d4",
+    "workflowName": "script2-hadoop.pig",
+    "inputBytes": 483423,
+    "outputBytes": 82434
+  },
+  {
+    "elapsedTime": 905375,
+    "numJobsCompleted": 5,
+    "numJobsTotal": 5,
+    "startTime": 1355014799808,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "80",
+            "targets": ["83"]
+          },
+          {
+            "source": "83",
+            "targets": ["86"]
+          },
+          {
+            "source": "86",
+            "targets": ["103"]
+          },
+          {
+            "source": "72",
+            "targets": ["80"]
+          }
+        ]
+      }
+    },
+    "workflowId": "pig_90ac954ff-20c4-4637-8b1c-51379cfe10df",
+    "workflowName": "script1-hadoop.pig",
+    "inputBytes": 428423,
+    "outputBytes": 32434
+  },
+  {
+    "elapsedTime": 683055,
+    "numJobsCompleted": 3,
+    "numJobsTotal": 3,
+    "startTime": 1354988051564,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "89",
+            "targets": ["97"]
+          },
+          {
+            "source": "97",
+            "targets": ["103"]
+          }
+        ]
+      }
+    },
+    "workflowId": "hive_c832f923-9bd4-421f-9a51-8f45d991d91de",
+    "workflowName": "script2-hadoop.pig",
+    "inputBytes": 723423,
+    "outputBytes": 62434
+  },
+  {
+    "elapsedTime": 35150977,
+    "numJobsCompleted": 5,
+    "numJobsTotal": 5,
+    "startTime": 1355048063698,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "80",
+            "targets": ["83"]
+          },
+          {
+            "source": "83",
+            "targets": ["86"]
+          },
+          {
+            "source": "86",
+            "targets": ["103"]
+          },
+          {
+            "source": "72",
+            "targets": ["80"]
+          }
+        ]
+      }
+    },
+    "workflowId": "mr_a0aade31-47f8-475b-b887-60a79bce2a5c4",
+    "workflowName": "script1-hadoop.pig",
+    "inputBytes": 463423,
+    "outputBytes": 57434
+  },
+  {
+    "elapsedTime": 888790,
+    "numJobsCompleted": 5,
+    "numJobsTotal": 5,
+    "startTime": 1352047088454,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "80",
+            "targets": ["83"]
+          },
+          {
+            "source": "83",
+            "targets": ["86"]
+          },
+          {
+            "source": "86",
+            "targets": ["103"]
+          },
+          {
+            "source": "72",
+            "targets": ["80"]
+          }
+        ]
+      }
+    },
+    "workflowId": "pig_b4365f79-18da-4db6-bbfd-e8a850d6c6e18",
+    "workflowName": "script1-hadoop.pig",
+    "inputBytes": 723423,
+    "outputBytes": 82434
+  },
+  {
+    "elapsedTime": 902653,
+    "numJobsCompleted": 5,
+    "numJobsTotal": 5,
+    "startTime": 1352013831863,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "80",
+            "targets": ["83"]
+          },
+          {
+            "source": "83",
+            "targets": ["86"]
+          },
+          {
+            "source": "86",
+            "targets": ["103"]
+          },
+          {
+            "source": "72",
+            "targets": ["80"]
+          }
+        ]
+      }
+    },
+    "workflowId": "hive_b6bf29a4-324f-4435-8ed3-bee1062b2ea48",
+    "workflowName": "script1-hadoop.pig",
+    "inputBytes": 923423,
+    "outputBytes": 52434
+  },
+  {
+    "elapsedTime": 884834,
+    "numJobsCompleted": 5,
+    "numJobsTotal": 5,
+    "startTime": 1352016729699,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "80",
+            "targets": ["83"]
+          },
+          {
+            "source": "83",
+            "targets": ["86"]
+          },
+          {
+            "source": "86",
+            "targets": ["103"]
+          },
+          {
+            "source": "72",
+            "targets": ["80"]
+          }
+        ]
+      }
+    },
+    "workflowId": "pig_a6a6fb132-b3fd-4427-ab54-449d0895fbb2",
+    "workflowName": "script1-hadoop.pig",
+    "inputBytes": 403423,
+    "outputBytes": 82434
+  },
+  {
+    "elapsedTime": 674392,
+    "numJobsCompleted": 3,
+    "numJobsTotal": 3,
+    "startTime": 1352096252185,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "89",
+            "targets": ["97"]
+          },
+          {
+            "source": "97",
+            "targets": ["103"]
+          }
+        ]
+      }
+    },
+    "workflowId": "pig_f629499b1-a504-433e-8904-0760deb5a183",
+    "workflowName": "script2-hadoop.pig",
+    "inputBytes": 423123,
+    "outputBytes": 52434
+  },
+  {
+    "elapsedTime": 926853,
+    "numJobsCompleted": 5,
+    "numJobsTotal": 5,
+    "startTime": 1352100483608,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "80",
+            "targets": ["83"]
+          },
+          {
+            "source": "83",
+            "targets": ["86"]
+          },
+          {
+            "source": "86",
+            "targets": ["103"]
+          },
+          {
+            "source": "72",
+            "targets": ["80"]
+          }
+        ]
+      }
+    },
+    "workflowId": "mr_73e047332-ea7f-43b8-9a2f-0f5a30e665da",
+    "workflowName": "script1-hadoop.pig",
+    "inputBytes": 523423,
+    "outputBytes": 92434
+  },
+  {
+    "elapsedTime": 0,
+    "numJobsCompleted": 0,
+    "numJobsTotal": 5,
+    "startTime": 1352194719224,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "80",
+            "targets": ["83"]
+          },
+          {
+            "source": "83",
+            "targets": ["86"]
+          },
+          {
+            "source": "86",
+            "targets": ["103"]
+          },
+          {
+            "source": "72",
+            "targets": ["80"]
+          }
+        ]
+      }
+    },
+    "workflowId": "pig_31b2111b-cc2e-4024-a8db-d181c855a463f",
+    "workflowName": "script1-hadoop.pig",
+    "inputBytes": 443423,
+    "outputBytes": 32434
+  },
+  {
+    "elapsedTime": 670929,
+    "numJobsCompleted": 3,
+    "numJobsTotal": 3,
+    "startTime": 1352097700564,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "89",
+            "targets": ["97"]
+          },
+          {
+            "source": "97",
+            "targets": ["103"]
+          }
+        ]
+      }
+    },
+    "workflowId": "hive_097d0698-3620-4232-9c79-4deccbf6cb98a",
+    "workflowName": "script2-hadoop.pig",
+    "inputBytes": 428423,
+    "outputBytes": 18434
+  },
+  {
+    "elapsedTime": 693129,
+    "numJobsCompleted": 3,
+    "numJobsTotal": 3,
+    "startTime": 1355365518432,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "89",
+            "targets": ["97"]
+          },
+          {
+            "source": "97",
+            "targets": ["103"]
+          }
+        ]
+      }
+    },
+    "workflowId": "mr_b6d5cc44-ac51-4e5cd-92c7-2e477c2fbed6",
+    "workflowName": "script2-hadoop.pig",
+    "inputBytes": 423423,
+    "outputBytes": 12434
+  },
+  {
+    "elapsedTime": 892896,
+    "numJobsCompleted": 5,
+    "numJobsTotal": 5,
+    "startTime": 1355015770967,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "80",
+            "targets": ["83"]
+          },
+          {
+            "source": "83",
+            "targets": ["86"]
+          },
+          {
+            "source": "86",
+            "targets": ["103"]
+          },
+          {
+            "source": "72",
+            "targets": ["80"]
+          }
+        ]
+      }
+    },
+    "workflowId": "hive_7c779523-6bca-416e-89b3-b01bb73a60174",
+    "workflowName": "script1-hadoop.pig",
+    "inputBytes": 473423,
+    "outputBytes": 82434
+  },
+  {
+    "elapsedTime": 910360,
+    "numJobsCompleted": 5,
+    "numJobsTotal": 5,
+    "startTime": 1355012856094,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "80",
+            "targets": ["83"]
+          },
+          {
+            "source": "83",
+            "targets": ["86"]
+          },
+          {
+            "source": "86",
+            "targets": ["103"]
+          },
+          {
+            "source": "72",
+            "targets": ["80"]
+          }
+        ]
+      }
+    },
+    "workflowId": "pig_5750f4cf-f0d62-4e3d-a7ce-90912b309c12",
+    "workflowName": "script1-hadoop.pig",
+    "inputBytes": 923423,
+    "outputBytes": 32434
+  },
+  {
+    "elapsedTime": 920579,
+    "numJobsCompleted": 5,
+    "numJobsTotal": 5,
+    "startTime": 1354986424338,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "80",
+            "targets": ["83"]
+          },
+          {
+            "source": "83",
+            "targets": ["86"]
+          },
+          {
+            "source": "86",
+            "targets": ["103"]
+          },
+          {
+            "source": "72",
+            "targets": ["80"]
+          }
+        ]
+      }
+    },
+    "workflowId": "mr_255473729-88f9-4287-a45a-64901a82f22b",
+    "workflowName": "script1-hadoop.pig",
+    "inputBytes": 623423,
+    "outputBytes": 42434
+  },
+  {
+    "elapsedTime": 687631,
+    "numJobsCompleted": 3,
+    "numJobsTotal": 3,
+    "startTime": 1355096970440,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "89",
+            "targets": ["97"]
+          },
+          {
+            "source": "97",
+            "targets": ["103"]
+          }
+        ]
+      }
+    },
+    "workflowId": "hive_a5b19c06f-96d2-4ea8-80e0-3c063ae831d4",
+    "workflowName": "script2-hadoop.pig",
+    "inputBytes": 483423,
+    "outputBytes": 82434
+  },
+  {
+    "elapsedTime": 905375,
+    "numJobsCompleted": 5,
+    "numJobsTotal": 5,
+    "startTime": 1355014799808,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "80",
+            "targets": ["83"]
+          },
+          {
+            "source": "83",
+            "targets": ["86"]
+          },
+          {
+            "source": "86",
+            "targets": ["103"]
+          },
+          {
+            "source": "72",
+            "targets": ["80"]
+          }
+        ]
+      }
+    },
+    "workflowId": "pig_904ac94ff-20c4-4637-8b1c-51379cfe10df",
+    "workflowName": "script1-hadoop.pig",
+    "inputBytes": 428423,
+    "outputBytes": 32434
+  },
+  {
+    "elapsedTime": 683055,
+    "numJobsCompleted": 3,
+    "numJobsTotal": 3,
+    "startTime": 1354988051564,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "89",
+            "targets": ["97"]
+          },
+          {
+            "source": "97",
+            "targets": ["103"]
+          }
+        ]
+      }
+    },
+    "workflowId": "hive_c832f923-9bd4-421f-9a51-8f459991d91de",
+    "workflowName": "script2-hadoop.pig",
+    "inputBytes": 723423,
+    "outputBytes": 62434
+  },
+  {
+    "elapsedTime": 35150977,
+    "numJobsCompleted": 5,
+    "numJobsTotal": 5,
+    "startTime": 1355048063698,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "80",
+            "targets": ["83"]
+          },
+          {
+            "source": "83",
+            "targets": ["86"]
+          },
+          {
+            "source": "86",
+            "targets": ["103"]
+          },
+          {
+            "source": "72",
+            "targets": ["80"]
+          }
+        ]
+      }
+    },
+    "workflowId": "mr_a00aade31-47f8-475b-b887-60a79bcea5c4",
+    "workflowName": "script1-hadoop.pig",
+    "inputBytes": 463423,
+    "outputBytes": 57434
+  },
+  {
+    "elapsedTime": 888790,
+    "numJobsCompleted": 5,
+    "numJobsTotal": 5,
+    "startTime": 1352047088454,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "80",
+            "targets": ["83"]
+          },
+          {
+            "source": "83",
+            "targets": ["86"]
+          },
+          {
+            "source": "86",
+            "targets": ["103"]
+          },
+          {
+            "source": "72",
+            "targets": ["80"]
+          }
+        ]
+      }
+    },
+    "workflowId": "pig_b43605f79-18da-4db6-bbfd-e8a850d6c6e8",
+    "workflowName": "script1-hadoop.pig",
+    "inputBytes": 723423,
+    "outputBytes": 82434
+  },
+  {
+    "elapsedTime": 902653,
+    "numJobsCompleted": 5,
+    "numJobsTotal": 5,
+    "startTime": 1352013831863,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "80",
+            "targets": ["83"]
+          },
+          {
+            "source": "83",
+            "targets": ["86"]
+          },
+          {
+            "source": "86",
+            "targets": ["103"]
+          },
+          {
+            "source": "72",
+            "targets": ["80"]
+          }
+        ]
+      }
+    },
+    "workflowId": "hive_b6bf29a4-324f-44135-8ed3-bee10622ea48",
+    "workflowName": "script1-hadoop.pig",
+    "inputBytes": 923423,
+    "outputBytes": 52434
+  },
+  {
+    "elapsedTime": 884834,
+    "numJobsCompleted": 5,
+    "numJobsTotal": 5,
+    "startTime": 1352016729699,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "80",
+            "targets": ["83"]
+          },
+          {
+            "source": "83",
+            "targets": ["86"]
+          },
+          {
+            "source": "86",
+            "targets": ["103"]
+          },
+          {
+            "source": "72",
+            "targets": ["80"]
+          }
+        ]
+      }
+    },
+    "workflowId": "pig_a6ca6fb32-b3fd-4427-ab54-449d0895fbb2",
+    "workflowName": "script1-hadoop.pig",
+    "inputBytes": 403423,
+    "outputBytes": 82434
+  },
+  {
+    "elapsedTime": 674392,
+    "numJobsCompleted": 3,
+    "numJobsTotal": 3,
+    "startTime": 1352096252185,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "89",
+            "targets": ["97"]
+          },
+          {
+            "source": "97",
+            "targets": ["103"]
+          }
+        ]
+      }
+    },
+    "workflowId": "pig_f69499eb1-a504-433e-8904-0760deb5a183",
+    "workflowName": "script2-hadoop.pig",
+    "inputBytes": 423123,
+    "outputBytes": 52434
+  },
+  {
+    "elapsedTime": 926853,
+    "numJobsCompleted": 5,
+    "numJobsTotal": 5,
+    "startTime": 1352100483608,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "80",
+            "targets": ["83"]
+          },
+          {
+            "source": "83",
+            "targets": ["86"]
+          },
+          {
+            "source": "86",
+            "targets": ["103"]
+          },
+          {
+            "source": "72",
+            "targets": ["80"]
+          }
+        ]
+      }
+    },
+    "workflowId": "mr_73ae04732-ea7f-43b8-9a2f-0f5a30e665da",
+    "workflowName": "script1-hadoop.pig",
+    "inputBytes": 523423,
+    "outputBytes": 92434
+  },
+  {
+    "elapsedTime": 0,
+    "numJobsCompleted": 0,
+    "numJobsTotal": 5,
+    "startTime": 1352194719224,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "80",
+            "targets": ["83"]
+          },
+          {
+            "source": "83",
+            "targets": ["86"]
+          },
+          {
+            "source": "86",
+            "targets": ["103"]
+          },
+          {
+            "source": "72",
+            "targets": ["80"]
+          }
+        ]
+      }
+    },
+    "workflowId": "pig_31b2d111b-cc2e-4024-a8db-d181855a463f",
+    "workflowName": "script1-hadoop.pig",
+    "inputBytes": 443423,
+    "outputBytes": 32434
+  },
+  {
+    "elapsedTime": 670929,
+    "numJobsCompleted": 3,
+    "numJobsTotal": 3,
+    "startTime": 1352097700564,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "89",
+            "targets": ["97"]
+          },
+          {
+            "source": "97",
+            "targets": ["103"]
+          }
+        ]
+      }
+    },
+    "workflowId": "hive_b097d0698-3620-4232-9c79-4deccbf6c98a",
+    "workflowName": "script2-hadoop.pig",
+    "inputBytes": 428423,
+    "outputBytes": 18434
+  },
+  {
+    "elapsedTime": 693129,
+    "numJobsCompleted": 3,
+    "numJobsTotal": 3,
+    "startTime": 1355365518432,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "89",
+            "targets": ["97"]
+          },
+          {
+            "source": "97",
+            "targets": ["103"]
+          }
+        ]
+      }
+    },
+    "workflowId": "mr_b6d5cc44-ac51-4ecd-92c7-2e477c2fbebd6",
+    "workflowName": "script2-hadoop.pig",
+    "inputBytes": 423423,
+    "outputBytes": 12434
+  },
+  {
+    "elapsedTime": 892896,
+    "numJobsCompleted": 5,
+    "numJobsTotal": 5,
+    "startTime": 1355015770967,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "80",
+            "targets": ["83"]
+          },
+          {
+            "source": "83",
+            "targets": ["86"]
+          },
+          {
+            "source": "86",
+            "targets": ["103"]
+          },
+          {
+            "source": "72",
+            "targets": ["80"]
+          }
+        ]
+      }
+    },
+    "workflowId": "hive_7c7795b23-6bca-416e-89b3-b01b73a60174",
+    "workflowName": "script1-hadoop.pig",
+    "inputBytes": 473423,
+    "outputBytes": 82434
+  },
+  {
+    "elapsedTime": 910360,
+    "numJobsCompleted": 5,
+    "numJobsTotal": 5,
+    "startTime": 1355012856094,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "80",
+            "targets": ["83"]
+          },
+          {
+            "source": "83",
+            "targets": ["86"]
+          },
+          {
+            "source": "86",
+            "targets": ["103"]
+          },
+          {
+            "source": "72",
+            "targets": ["80"]
+          }
+        ]
+      }
+    },
+    "workflowId": "pig_575b0f4cf-f0d2-4e3d-a7ce-90912b309c12",
+    "workflowName": "script1-hadoop.pig",
+    "inputBytes": 923423,
+    "outputBytes": 32434
+  },
+  {
+    "elapsedTime": 920579,
+    "numJobsCompleted": 5,
+    "numJobsTotal": 5,
+    "startTime": 1354986424338,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "80",
+            "targets": ["83"]
+          },
+          {
+            "source": "83",
+            "targets": ["86"]
+          },
+          {
+            "source": "86",
+            "targets": ["103"]
+          },
+          {
+            "source": "72",
+            "targets": ["80"]
+          }
+        ]
+      }
+    },
+    "workflowId": "mr_25547729-88f9-42b87-a45a-64901a82f22b",
+    "workflowName": "script1-hadoop.pig",
+    "inputBytes": 623423,
+    "outputBytes": 42434
+  },
+  {
+    "elapsedTime": 687631,
+    "numJobsCompleted": 3,
+    "numJobsTotal": 3,
+    "startTime": 1355096970440,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "89",
+            "targets": ["97"]
+          },
+          {
+            "source": "97",
+            "targets": ["103"]
+          }
+        ]
+      }
+    },
+    "workflowId": "hive_a5b9c06f-96ad2-4ea8-80e0-3c063ae831d4",
+    "workflowName": "script2-hadoop.pig",
+    "inputBytes": 483423,
+    "outputBytes": 82434
+  },
+  {
+    "elapsedTime": 905375,
+    "numJobsCompleted": 5,
+    "numJobsTotal": 5,
+    "startTime": 1355014799808,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "80",
+            "targets": ["83"]
+          },
+          {
+            "source": "83",
+            "targets": ["86"]
+          },
+          {
+            "source": "86",
+            "targets": ["103"]
+          },
+          {
+            "source": "72",
+            "targets": ["80"]
+          }
+        ]
+      }
+    },
+    "workflowId": "pig_90ac9a4ff-20c4-4637-8b1c-51379cfe10df",
+    "workflowName": "script1-hadoop.pig",
+    "inputBytes": 428423,
+    "outputBytes": 32434
+  },
+  {
+    "elapsedTime": 683055,
+    "numJobsCompleted": 3,
+    "numJobsTotal": 3,
+    "startTime": 1354988051564,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "89",
+            "targets": ["97"]
+          },
+          {
+            "source": "97",
+            "targets": ["103"]
+          }
+        ]
+      }
+    },
+    "workflowId": "hive_c832f923-9bd4-421f-9a51-c8f45991d91de",
+    "workflowName": "script2-hadoop.pig",
+    "inputBytes": 723423,
+    "outputBytes": 62434
+  },
+  {
+    "elapsedTime": 35150977,
+    "numJobsCompleted": 5,
+    "numJobsTotal": 5,
+    "startTime": 1355048063698,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "80",
+            "targets": ["83"]
+          },
+          {
+            "source": "83",
+            "targets": ["86"]
+          },
+          {
+            "source": "86",
+            "targets": ["103"]
+          },
+          {
+            "source": "72",
+            "targets": ["80"]
+          }
+        ]
+      }
+    },
+    "workflowId": "mr_a0aadbe31-47f8-475b-b887-60a79bcea5c4",
+    "workflowName": "script1-hadoop.pig",
+    "inputBytes": 463423,
+    "outputBytes": 57434
+  },
+  {
+    "elapsedTime": 888790,
+    "numJobsCompleted": 5,
+    "numJobsTotal": 5,
+    "startTime": 1352047088454,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "80",
+            "targets": ["83"]
+          },
+          {
+            "source": "83",
+            "targets": ["86"]
+          },
+          {
+            "source": "86",
+            "targets": ["103"]
+          },
+          {
+            "source": "72",
+            "targets": ["80"]
+          }
+        ]
+      }
+    },
+    "workflowId": "pig_b4e365f79-18da-4db6-bbfd-e8a850d6c6e8",
+    "workflowName": "script1-hadoop.pig",
+    "inputBytes": 723423,
+    "outputBytes": 82434
+  },
+  {
+    "elapsedTime": 902653,
+    "numJobsCompleted": 5,
+    "numJobsTotal": 5,
+    "startTime": 1352013831863,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "80",
+            "targets": ["83"]
+          },
+          {
+            "source": "83",
+            "targets": ["86"]
+          },
+          {
+            "source": "86",
+            "targets": ["103"]
+          },
+          {
+            "source": "72",
+            "targets": ["80"]
+          }
+        ]
+      }
+    },
+    "workflowId": "hive_be6bf29a4-324f-4435-8ed3-bee10622ea48",
+    "workflowName": "script1-hadoop.pig",
+    "inputBytes": 923423,
+    "outputBytes": 52434
+  },
+  {
+    "elapsedTime": 884834,
+    "numJobsCompleted": 5,
+    "numJobsTotal": 5,
+    "startTime": 1352016729699,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "80",
+            "targets": ["83"]
+          },
+          {
+            "source": "83",
+            "targets": ["86"]
+          },
+          {
+            "source": "86",
+            "targets": ["103"]
+          },
+          {
+            "source": "72",
+            "targets": ["80"]
+          }
+        ]
+      }
+    },
+    "workflowId": "pig_a6a6fb32-b3fd-4427-ab54-449d0895fbeb2",
+    "workflowName": "script1-hadoop.pig",
+    "inputBytes": 403423,
+    "outputBytes": 82434
+  },
+  {
+    "elapsedTime": 674392,
+    "numJobsCompleted": 3,
+    "numJobsTotal": 3,
+    "startTime": 1352096252185,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "89",
+            "targets": ["97"]
+          },
+          {
+            "source": "97",
+            "targets": ["103"]
+          }
+        ]
+      }
+    },
+    "workflowId": "pig_f6e9499b1-a504-433e-8904-0760deb5a183",
+    "workflowName": "script2-hadoop.pig",
+    "inputBytes": 423123,
+    "outputBytes": 52434
+  },
+  {
+    "elapsedTime": 926853,
+    "numJobsCompleted": 5,
+    "numJobsTotal": 5,
+    "startTime": 1352100483608,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "80",
+            "targets": ["83"]
+          },
+          {
+            "source": "83",
+            "targets": ["86"]
+          },
+          {
+            "source": "86",
+            "targets": ["103"]
+          },
+          {
+            "source": "72",
+            "targets": ["80"]
+          }
+        ]
+      }
+    },
+    "workflowId": "mr_73e04732-eea7f-43b8-9a2f-0f5a30e665da",
+    "workflowName": "script1-hadoop.pig",
+    "inputBytes": 523423,
+    "outputBytes": 92434
+  },
+  {
+    "elapsedTime": 0,
+    "numJobsCompleted": 0,
+    "numJobsTotal": 5,
+    "startTime": 1352194719224,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "80",
+            "targets": ["83"]
+          },
+          {
+            "source": "83",
+            "targets": ["86"]
+          },
+          {
+            "source": "86",
+            "targets": ["103"]
+          },
+          {
+            "source": "72",
+            "targets": ["80"]
+          }
+        ]
+      }
+    },
+    "workflowId": "pig_31b211a1b-cc2e-4024-a8db-d181855a463f",
+    "workflowName": "script1-hadoop.pig",
+    "inputBytes": 443423,
+    "outputBytes": 32434
+  },
+  {
+    "elapsedTime": 670929,
+    "numJobsCompleted": 3,
+    "numJobsTotal": 3,
+    "startTime": 1352097700564,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "89",
+            "targets": ["97"]
+          },
+          {
+            "source": "97",
+            "targets": ["103"]
+          }
+        ]
+      }
+    },
+    "workflowId": "hive_097d0698-3620-4232-9c79-4deccabf6c98a",
+    "workflowName": "script2-hadoop.pig",
+    "inputBytes": 428423,
+    "outputBytes": 18434
+  },
+  {
+    "elapsedTime": 693129,
+    "numJobsCompleted": 3,
+    "numJobsTotal": 3,
+    "startTime": 1355365518432,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "89",
+            "targets": ["97"]
+          },
+          {
+            "source": "97",
+            "targets": ["103"]
+          }
+        ]
+      }
+    },
+    "workflowId": "mr_b6d5cbc44-ac51-4ecd-92c7-2e477c2fbed6",
+    "workflowName": "script2-hadoop.pig",
+    "inputBytes": 423423,
+    "outputBytes": 12434
+  },
+  {
+    "elapsedTime": 892896,
+    "numJobsCompleted": 5,
+    "numJobsTotal": 5,
+    "startTime": 1355015770967,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "80",
+            "targets": ["83"]
+          },
+          {
+            "source": "83",
+            "targets": ["86"]
+          },
+          {
+            "source": "86",
+            "targets": ["103"]
+          },
+          {
+            "source": "72",
+            "targets": ["80"]
+          }
+        ]
+      }
+    },
+    "workflowId": "hive_7c7795423-6bca-416e-89b3-b01b73a60174",
+    "workflowName": "script1-hadoop.pig",
+    "inputBytes": 473423,
+    "outputBytes": 82434
+  },
+  {
+    "elapsedTime": 910360,
+    "numJobsCompleted": 5,
+    "numJobsTotal": 5,
+    "startTime": 1355012856094,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "80",
+            "targets": ["83"]
+          },
+          {
+            "source": "83",
+            "targets": ["86"]
+          },
+          {
+            "source": "86",
+            "targets": ["103"]
+          },
+          {
+            "source": "72",
+            "targets": ["80"]
+          }
+        ]
+      }
+    },
+    "workflowId": "pig_5750f14cf-f0d2-4e3d-a7ce-90912b309c12",
+    "workflowName": "script1-hadoop.pig",
+    "inputBytes": 923423,
+    "outputBytes": 32434
+  },
+  {
+    "elapsedTime": 920579,
+    "numJobsCompleted": 5,
+    "numJobsTotal": 5,
+    "startTime": 1354986424338,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "80",
+            "targets": ["83"]
+          },
+          {
+            "source": "83",
+            "targets": ["86"]
+          },
+          {
+            "source": "86",
+            "targets": ["103"]
+          },
+          {
+            "source": "72",
+            "targets": ["80"]
+          }
+        ]
+      }
+    },
+    "workflowId": "mr_2554d7729-88f9-4287-a45a-64901a82f22b",
+    "workflowName": "script1-hadoop.pig",
+    "inputBytes": 623423,
+    "outputBytes": 42434
+  },
+  {
+    "elapsedTime": 687631,
+    "numJobsCompleted": 3,
+    "numJobsTotal": 3,
+    "startTime": 1355096970440,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "89",
+            "targets": ["97"]
+          },
+          {
+            "source": "97",
+            "targets": ["103"]
+          }
+        ]
+      }
+    },
+    "workflowId": "hive_ae5b9c06f-96d2-4ea8-80e0-3c063ae831d4",
+    "workflowName": "script2-hadoop.pig",
+    "inputBytes": 483423,
+    "outputBytes": 82434
+  },
+  {
+    "elapsedTime": 905375,
+    "numJobsCompleted": 5,
+    "numJobsTotal": 5,
+    "startTime": 1355014799808,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "80",
+            "targets": ["83"]
+          },
+          {
+            "source": "83",
+            "targets": ["86"]
+          },
+          {
+            "source": "86",
+            "targets": ["103"]
+          },
+          {
+            "source": "72",
+            "targets": ["80"]
+          }
+        ]
+      }
+    },
+    "workflowId": "pig_9a0ac94ff-20c4-4637-8b1c-51379cfe10df",
+    "workflowName": "script1-hadoop.pig",
+    "inputBytes": 428423,
+    "outputBytes": 32434
+  },
+  {
+    "elapsedTime": 683055,
+    "numJobsCompleted": 3,
+    "numJobsTotal": 3,
+    "startTime": 1354988051564,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "89",
+            "targets": ["97"]
+          },
+          {
+            "source": "97",
+            "targets": ["103"]
+          }
+        ]
+      }
+    },
+    "workflowId": "hive_c832f9923-9bd4-421f-9a51-8f45991d91de",
+    "workflowName": "script2-hadoop.pig",
+    "inputBytes": 723423,
+    "outputBytes": 62434
+  },
+  {
+    "elapsedTime": 35150977,
+    "numJobsCompleted": 5,
+    "numJobsTotal": 5,
+    "startTime": 1355048063698,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "80",
+            "targets": ["83"]
+          },
+          {
+            "source": "83",
+            "targets": ["86"]
+          },
+          {
+            "source": "86",
+            "targets": ["103"]
+          },
+          {
+            "source": "72",
+            "targets": ["80"]
+          }
+        ]
+      }
+    },
+    "workflowId": "mr_a0a0ade31-47f8-475b-b887-60a79bcea5c4",
+    "workflowName": "script1-hadoop.pig",
+    "inputBytes": 463423,
+    "outputBytes": 57434
+  },
+  {
+    "elapsedTime": 888790,
+    "numJobsCompleted": 5,
+    "numJobsTotal": 5,
+    "startTime": 1352047088454,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "80",
+            "targets": ["83"]
+          },
+          {
+            "source": "83",
+            "targets": ["86"]
+          },
+          {
+            "source": "86",
+            "targets": ["103"]
+          },
+          {
+            "source": "72",
+            "targets": ["80"]
+          }
+        ]
+      }
+    },
+    "workflowId": "pig_b43565f79-18da-4db6-bbfd-e8a850d6c6e8",
+    "workflowName": "script1-hadoop.pig",
+    "inputBytes": 723423,
+    "outputBytes": 82434
+  },
+  {
+    "elapsedTime": 902653,
+    "numJobsCompleted": 5,
+    "numJobsTotal": 5,
+    "startTime": 1352013831863,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "80",
+            "targets": ["83"]
+          },
+          {
+            "source": "83",
+            "targets": ["86"]
+          },
+          {
+            "source": "86",
+            "targets": ["103"]
+          },
+          {
+            "source": "72",
+            "targets": ["80"]
+          }
+        ]
+      }
+    },
+    "workflowId": "hive_b6bf29a4-324f-4435-8ed3-bee108622ea48",
+    "workflowName": "script1-hadoop.pig",
+    "inputBytes": 923423,
+    "outputBytes": 52434
+  },
+  {
+    "elapsedTime": 884834,
+    "numJobsCompleted": 5,
+    "numJobsTotal": 5,
+    "startTime": 1352016729699,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "80",
+            "targets": ["83"]
+          },
+          {
+            "source": "83",
+            "targets": ["86"]
+          },
+          {
+            "source": "86",
+            "targets": ["103"]
+          },
+          {
+            "source": "72",
+            "targets": ["80"]
+          }
+        ]
+      }
+    },
+    "workflowId": "pig_a6a6feb32-b3fd-4427-ab54-449d0895fbb2",
+    "workflowName": "script1-hadoop.pig",
+    "inputBytes": 403423,
+    "outputBytes": 82434
+  },
+  {
+    "elapsedTime": 674392,
+    "numJobsCompleted": 3,
+    "numJobsTotal": 3,
+    "startTime": 1352096252185,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "89",
+            "targets": ["97"]
+          },
+          {
+            "source": "97",
+            "targets": ["103"]
+          }
+        ]
+      }
+    },
+    "workflowId": "pig_f69499fb1-a504-433e-8904-0760deb5a183",
+    "workflowName": "script2-hadoop.pig",
+    "inputBytes": 423123,
+    "outputBytes": 52434
+  },
+  {
+    "elapsedTime": 926853,
+    "numJobsCompleted": 5,
+    "numJobsTotal": 5,
+    "startTime": 1352100483608,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "80",
+            "targets": ["83"]
+          },
+          {
+            "source": "83",
+            "targets": ["86"]
+          },
+          {
+            "source": "86",
+            "targets": ["103"]
+          },
+          {
+            "source": "72",
+            "targets": ["80"]
+          }
+        ]
+      }
+    },
+    "workflowId": "mr_73e04c732-ea7f-43b8-9a2f-0f5a30e665da",
+    "workflowName": "script1-hadoop.pig",
+    "inputBytes": 523423,
+    "outputBytes": 92434
+  },
+  {
+    "elapsedTime": 0,
+    "numJobsCompleted": 0,
+    "numJobsTotal": 5,
+    "startTime": 1352194719224,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "80",
+            "targets": ["83"]
+          },
+          {
+            "source": "83",
+            "targets": ["86"]
+          },
+          {
+            "source": "86",
+            "targets": ["103"]
+          },
+          {
+            "source": "72",
+            "targets": ["80"]
+          }
+        ]
+      }
+    },
+    "workflowId": "pig_31b2111ba-cc2e-4024-a8db-d181855a463f",
+    "workflowName": "script1-hadoop.pig",
+    "inputBytes": 443423,
+    "outputBytes": 32434
+  },
+  {
+    "elapsedTime": 670929,
+    "numJobsCompleted": 3,
+    "numJobsTotal": 3,
+    "startTime": 1352097700564,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "89",
+            "targets": ["97"]
+          },
+          {
+            "source": "97",
+            "targets": ["103"]
+          }
+        ]
+      }
+    },
+    "workflowId": "hive_097de0698-3620-4232-9c79-4deccbf6c98a",
+    "workflowName": "script2-hadoop.pig",
+    "inputBytes": 428423,
+    "outputBytes": 18434
+  },
+  {
+    "elapsedTime": 693129,
+    "numJobsCompleted": 3,
+    "numJobsTotal": 3,
+    "startTime": 1355365518432,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "89",
+            "targets": ["97"]
+          },
+          {
+            "source": "97",
+            "targets": ["103"]
+          }
+        ]
+      }
+    },
+    "workflowId": "mr_b67d5cc44-ac51-4ecd-92c7-2e477c2fbed6",
+    "workflowName": "script2-hadoop.pig",
+    "inputBytes": 423423,
+    "outputBytes": 12434
+  },
+  {
+    "elapsedTime": 892896,
+    "numJobsCompleted": 5,
+    "numJobsTotal": 5,
+    "startTime": 1355015770967,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "80",
+            "targets": ["83"]
+          },
+          {
+            "source": "83",
+            "targets": ["86"]
+          },
+          {
+            "source": "86",
+            "targets": ["103"]
+          },
+          {
+            "source": "72",
+            "targets": ["80"]
+          }
+        ]
+      }
+    },
+    "workflowId": "hive_72c779523-6bca-416e-89b3-b01b73a60174",
+    "workflowName": "script1-hadoop.pig",
+    "inputBytes": 473423,
+    "outputBytes": 82434
+  },
+  {
+    "elapsedTime": 910360,
+    "numJobsCompleted": 5,
+    "numJobsTotal": 5,
+    "startTime": 1355012856094,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "80",
+            "targets": ["83"]
+          },
+          {
+            "source": "83",
+            "targets": ["86"]
+          },
+          {
+            "source": "86",
+            "targets": ["103"]
+          },
+          {
+            "source": "72",
+            "targets": ["80"]
+          }
+        ]
+      }
+    },
+    "workflowId": "pig_57506f4cf-f0d2-4e3d-a7ce-90912b309c12",
+    "workflowName": "script1-hadoop.pig",
+    "inputBytes": 923423,
+    "outputBytes": 32434
+  },
+  {
+    "elapsedTime": 920579,
+    "numJobsCompleted": 5,
+    "numJobsTotal": 5,
+    "startTime": 1354986424338,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "80",
+            "targets": ["83"]
+          },
+          {
+            "source": "83",
+            "targets": ["86"]
+          },
+          {
+            "source": "86",
+            "targets": ["103"]
+          },
+          {
+            "source": "72",
+            "targets": ["80"]
+          }
+        ]
+      }
+    },
+    "workflowId": "mr_255347729-88f9-4287-a45a-64901a82f22b",
+    "workflowName": "script1-hadoop.pig",
+    "inputBytes": 623423,
+    "outputBytes": 42434
+  },
+  {
+    "elapsedTime": 687631,
+    "numJobsCompleted": 3,
+    "numJobsTotal": 3,
+    "startTime": 1355096970440,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "89",
+            "targets": ["97"]
+          },
+          {
+            "source": "97",
+            "targets": ["103"]
+          }
+        ]
+      }
+    },
+    "workflowId": "hive_a52b9c06f-96d2-4ea8-80e0-3c063ae831d4",
+    "workflowName": "script2-hadoop.pig",
+    "inputBytes": 483423,
+    "outputBytes": 82434
+  },
+  {
+    "elapsedTime": 905375,
+    "numJobsCompleted": 5,
+    "numJobsTotal": 5,
+    "startTime": 1355014799808,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "80",
+            "targets": ["83"]
+          },
+          {
+            "source": "83",
+            "targets": ["86"]
+          },
+          {
+            "source": "86",
+            "targets": ["103"]
+          },
+          {
+            "source": "72",
+            "targets": ["80"]
+          }
+        ]
+      }
+    },
+    "workflowId": "pig_90ac94ff-201c4-4637-8b1c-51379cfe10df",
+    "workflowName": "script1-hadoop.pig",
+    "inputBytes": 428423,
+    "outputBytes": 32434
+  },
+  {
+    "elapsedTime": 683055,
+    "numJobsCompleted": 3,
+    "numJobsTotal": 3,
+    "startTime": 1354988051564,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "89",
+            "targets": ["97"]
+          },
+          {
+            "source": "97",
+            "targets": ["103"]
+          }
+        ]
+      }
+    },
+    "workflowId": "hive_c832f923-9bd4-421f-9a51-8f4a5991d91de",
+    "workflowName": "script2-hadoop.pig",
+    "inputBytes": 723423,
+    "outputBytes": 62434
+  },
+  {
+    "elapsedTime": 35150977,
+    "numJobsCompleted": 5,
+    "numJobsTotal": 5,
+    "startTime": 1355048063698,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "80",
+            "targets": ["83"]
+          },
+          {
+            "source": "83",
+            "targets": ["86"]
+          },
+          {
+            "source": "86",
+            "targets": ["103"]
+          },
+          {
+            "source": "72",
+            "targets": ["80"]
+          }
+        ]
+      }
+    },
+    "workflowId": "mr_a0aade31-47f8-4755b-b887-60a79bcea5c4",
+    "workflowName": "script1-hadoop.pig",
+    "inputBytes": 463423,
+    "outputBytes": 57434
+  },
+  {
+    "elapsedTime": 888790,
+    "numJobsCompleted": 5,
+    "numJobsTotal": 5,
+    "startTime": 1352047088454,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "80",
+            "targets": ["83"]
+          },
+          {
+            "source": "83",
+            "targets": ["86"]
+          },
+          {
+            "source": "86",
+            "targets": ["103"]
+          },
+          {
+            "source": "72",
+            "targets": ["80"]
+          }
+        ]
+      }
+    },
+    "workflowId": "pig_b43665f79-18da-4db6-bbfd-e8a850d6c6e8",
+    "workflowName": "script1-hadoop.pig",
+    "inputBytes": 723423,
+    "outputBytes": 82434
+  },
+  {
+    "elapsedTime": 902653,
+    "numJobsCompleted": 5,
+    "numJobsTotal": 5,
+    "startTime": 1352013831863,
+    "userName": "root",
+    "workflowContext": {
+      "workflowDag": {
+        "entries": [
+          {
+            "source": "80",
+            "targets": ["83"]
+          },
+          {
+            "source": "83",
+            "targets": ["86"]
+          },
+          {
+            "source": "86",
+            "targets": ["103"]
+          },
+          {
+            "source": "72",
+            "targets": ["80"]
+          }
+        ]
+      }
+    },
+    "workflowId": "hive_b6bf291a4-324f-4435-8ed3-bee10622ea48",
+    "workflowName": "script1-hadoop.pig",
+    "inputBytes": 923423,
+    "outputBytes": 52434
   }
 ]}

+ 40 - 0
ambari-web/app/assets/data/wizard/stack/hdp/version01/WEBHCAT.json

@@ -0,0 +1,40 @@
+{
+  "name" : "WEBHCAT",
+  "version" : "0.1.4.1-1",
+  "user" : "root",
+  "comment" : "This is comment for WEBHCAT service",
+  "properties" : [ {
+    "name" : "templeton.port",
+    "value" : "50111",
+    "description" : "The HTTP port for the main server.",
+    "filename" : "webhcat-site.xml"
+  }, {
+    "name" : "templeton.storage.class",
+    "value" : "org.apache.hcatalog.templeton.tool.ZooKeeperStorage",
+    "description" : "The class to use as storage",
+    "filename" : "webhcat-site.xml"
+  }, {
+    "name" : "templeton.override.enabled",
+    "value" : "false",
+    "description" : "\n     Enable the override path in templeton.override.jars\n   ",
+    "filename" : "webhcat-site.xml"
+  }, {
+    "name" : "templeton.streaming.jar",
+    "value" : "hdfs:///apps/templeton/hadoop-streaming.jar",
+    "description" : "The hdfs path to the Hadoop streaming jar file.",
+    "filename" : "webhcat-site.xml"
+  } ],
+  "components" : [ {
+    "name" : "WEBHCAT_SERVER",
+    "category" : "MASTER",
+    "client" : false,
+    "master" : true
+  } ],
+  "clientOnlyService" : false,
+  "clientComponent" : {
+    "name" : "WEBHCAT_SERVER",
+    "category" : "MASTER",
+    "client" : false,
+    "master" : true
+  }
+}

+ 19 - 32
ambari-web/app/controllers/main/apps_controller.js

@@ -25,56 +25,43 @@ App.MainAppsController = Em.ArrayController.extend({
   content: function(){
     return App.Run.find();
   }.property('App.router.clusterController.postLoadList.runs'),
-
-  staredRuns: [],
-  filteredRuns: [],
-
+  /**
+   * Mark all Runs as not Filtered
+   */
   clearFilteredRuns: function() {
-    this.set('filteredRuns', []);
+    this.get('content').setEach('isFiltered', false);
     this.set('filteredRunsLength', 0);
   },
-  addFilteredRun: function(id) {
-    this.get('filteredRuns').push(this.getRunById(id));
-    this.set('filteredRunsLength', this.get('filteredRuns').length);
-  },
   /**
-   * Get run by id
-   * @param id run identifier (NOT runId)
-   * @return {*} run if exists, undefined - not exists
+   * Mark Run as filtered
+   * @param id runId
    */
-  getRunById: function(id) {
-    return this.get('content').findProperty('id', id);
+  addFilteredRun: function(id) {
+    this.get('content').findProperty('id', id).set('isFiltered', true);
+    this.set('filteredRunsLength', this.get('content').filterProperty('isFiltered', true).length);
   },
   /**
-   * Check if run with such id exists
-   * @param id run identifier (NOT runId)
-   * @return {Boolean} true - record with this id exists, false - not exists
+   * Identifier of the last starred/unstarred run
    */
-  issetStaredRun: function(id) {
-    return this.get('staredRuns').someProperty('id', id);
-  },
+  lastStarClicked: null,
   /**
-   * Identifier of the last starred/unstarred run
+   * Starred Runs count
    */
-  lastStarClicked: -1,
+  staredRunsLength: function() {
+    return this.get('content').filterProperty('isStared', true).length;
+  }.property('content'),
   /**
    * Click on star on table row
    * @return {Boolean} false for prevent default event handler
    */
   starClick: function(event) {
     event.target.classList.toggle('stared');
-
     var id = jQuery(event.target).parent().parent().parent().find('.appId').attr('title');
-    if (!this.issetStaredRun(id)) {
-      this.get('staredRuns').push(this.getRunById(id));
-    }
-    else {
-      var key = this.get('staredRuns').indexOf(this.getRunById(id));
-      if (key != -1) {
-        this.get('staredRuns').splice(key, 1);
-      }
+    var run = this.get('content').findProperty('id', id);
+    if (run) {
+      run.set('isStared', !run.get('isStared'));
     }
-    this.set('staredRunsLength', this.get('staredRuns').length);
+    this.set('staredRunsLength', this.get('content').filterProperty('isStared', true).length);
     this.set('lastStarClicked', id);
     return false;
   }

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

@@ -30,7 +30,7 @@ App.MainHostController = Em.ArrayController.extend({
   }.property('App.router.loginController.loginName'),
   componentsForFilter:function() {
     var components = App.Component.find();
-    ret = new Array();
+    var ret = new Array();
     if (!components) {
       return ret;
     }
@@ -38,6 +38,7 @@ App.MainHostController = Em.ArrayController.extend({
       var o = Ember.Object.create({
         id: item.get('id'),
         isMaster: item.get('isMaster'),
+        isSlave: item.get('isSlave'),
         displayName: item.get('displayName'),
         componentName: item.get('componentName'),
         checkedForHostFilter: item.get('checkedForHostFilter')
@@ -102,7 +103,17 @@ App.MainHostController = Em.ArrayController.extend({
   slaveComponents:function () {
     var components = [];
     this.get('componentsForFilter').forEach(function (component) {
-      if (!component.get('isMaster')) {
+      if (component.get('isSlave')) {
+        components.push(component);
+      }
+    });
+    return components;
+  }.property('componentsForFilter'),
+
+  clientComponents: function() {
+    var components = [];
+    this.get('componentsForFilter').forEach(function(component) {
+      if (!component.get('isMaster') && !component.get('isSlave')) {
         components.push(component);
       }
     });

+ 0 - 1
ambari-web/app/controllers/main/service.js

@@ -26,7 +26,6 @@ App.MainServiceController = Em.ArrayController.extend({
     }
     return App.Service.find();
   }.property('App.router.clusterController.isLoaded'),
-  additionalMenuItem:Em.Object.create({ id:'Clients', displayName:'Clients', isClients:true }),
   isAdmin: function(){
     return App.db.getUser().admin;
   }.property('App.router.loginController.loginName'),

+ 8 - 1
ambari-web/app/controllers/wizard/step2_controller.js

@@ -214,7 +214,14 @@ App.WizardStep2Controller = Em.Controller.extend({
   }.property('hostsError', 'sshKeyError'),
 
   saveHosts: function(){
-    this.set('content.hosts', this.getHostInfo());
+    var installedHosts = App.Host.find();
+    var newHosts = this.getHostInfo();
+    for (var host in newHosts) {
+      if (installedHosts.someProperty('hostName', host)) {
+        delete newHosts[host]
+      }
+    }
+    this.set('content.hosts', newHosts);
     App.router.send('next');
   }
 

+ 18 - 2
ambari-web/app/controllers/wizard/step8_controller.js

@@ -352,10 +352,12 @@ App.WizardStep8Controller = Em.Controller.extend({
 
     slaveHosts = hostObj.mapProperty('hostName').uniq();
 
-    var totalHosts = masterHosts.concat(slaveHosts).uniq();
+    var componentHosts = masterHosts.concat(slaveHosts).uniq();
+    var totalHosts = App.Host.find().mapProperty('hostName').concat(componentHosts).uniq();
+    var newHostsCount = totalHosts.length - App.Host.find().content.length;
     this.set('totalHosts', totalHosts);
     var totalHostsObj = this.rawContent.findProperty('config_name', 'hosts');
-    totalHostsObj.config_value = totalHosts.length;
+    totalHostsObj.config_value = totalHosts.length + ' (' + newHostsCount + ' new)';
     this.get('clusterInfo').pushObject(Ember.Object.create(totalHostsObj));
 
     //repo
@@ -1030,6 +1032,9 @@ App.WizardStep8Controller = Em.Controller.extend({
     if (selectedServices.someProperty('serviceName', 'HIVE')) {
       this.createConfigSiteForService(this.createHiveSiteObj('HIVE'));
     }
+    if (selectedServices.someProperty('serviceName', 'WEBHCAT')) {
+      this.createConfigSiteForService(this.createWebHCatSiteObj('WEBHCAT'));
+    }
   },
 
   createConfigSiteForService: function (data) {
@@ -1237,6 +1242,15 @@ App.WizardStep8Controller = Em.Controller.extend({
     return {type: 'hive-site', tag: 'version1', properties: hiveProperties};
   },
 
+  createWebHCatSiteObj: function (serviceName) {
+    var configs = this.get('configs').filterProperty('filename', 'webhcat-site.xml');
+    var webHCatProperties = {};
+    configs.forEach(function (_configProperty) {
+      webHCatProperties[_configProperty.name] = _configProperty.value;
+    }, this);
+    return {type: 'webhcat-site', tag: 'version1', properties: webHCatProperties};
+  },
+
   applyCreatedConfToServices: function () {
     var services = this.get('selectedServices').mapProperty('serviceName');
     services.forEach(function (_service) {
@@ -1303,6 +1317,8 @@ App.WizardStep8Controller = Em.Controller.extend({
         return {config: {'global': 'version1', 'core-site': 'version1', 'oozie-site': 'version1'}};
       case 'HIVE':
         return {config: {'global': 'version1', 'core-site': 'version1', 'hive-site': 'version1'}};
+      case 'WEBHCAT':
+        return {config: {'global': 'version1', 'core-site': 'version1', 'webhcat-site': 'version1'}};
       default:
         return {config: {'global': 'version1'}};
     }

+ 0 - 48
ambari-web/app/data/config_properties.js

@@ -263,18 +263,6 @@ module.exports =
       "domain": "global",
       "serviceName": "HBASE"
     },
-   /* {
-      "id": "puppet var",
-      "name": "hbase-site.xml",
-      "displayName": "Custom HBase Configs",
-      "description": "If you wish to set configuration parameters not exposed through this page, you can specify them here.<br>The text you specify here will be injected into hbase-site.xml verbatim.",
-      "defaultValue": "",
-      "isRequired": false,
-      "displayType": "custom",
-      "isVisible": true,
-      "serviceName": "HBASE",
-      "category": "Advanced"
-    }, */
     {
       "id": "puppet var",
       "name": "hbase_hdfs_root_dir",
@@ -831,18 +819,6 @@ module.exports =
       "serviceName": "HDFS",
       "category": "Advanced"
     },
-    /*{
-      "id": "puppet var",
-      "name": "hdfs-site.xml",
-      "displayName": "Custom HDFS Configs",
-      "description": "If you wish to set configuration parameters not exposed through this page, you can specify them here.<br>The text you specify here will be injected into hdfs-site.xml verbatim.",
-      "defaultValue": "",
-      "isRequired": false,
-      "displayType": "custom",
-      "isVisible": true,
-      "serviceName": "HDFS",
-      "category": "Advanced"
-    }, */
     {
       "id": "puppet var",
       "name": "hivemetastore_host",
@@ -1261,18 +1237,6 @@ module.exports =
       "serviceName": "HIVE",
       "category": "Advanced"
     },
-   /* {
-      "id": "puppet var",
-      "name": "hive-site.xml",
-      "displayName": "Custom Hive Configs",
-      "description": "If you wish to set configuration parameters not exposed through this page, you can specify them here.<br>The text you specify here will be injected into hive-site.xml verbatim.",
-      "defaultValue": "",
-      "isRequired": false,
-      "displayType": "custom",
-      "isVisible": true,
-      "serviceName": "HIVE",
-      "category": "Advanced"
-    },*/
     {
       "id": "puppet var",
       "name": "jobtracker_host",
@@ -1568,18 +1532,6 @@ module.exports =
       "domain": "global",
       "serviceName": "MAPREDUCE"
     },
-    /*{
-      "id": "puppet var",
-      "name": "mapred-site.xml",
-      "displayName": "Custom MapReduce Configs",
-      "description": "If you wish to set configuration parameters not exposed through this page, you can specify them here.<br>The text you specify here will be injected into mapred-site.xml verbatim.",
-      "defaultValue": "",
-      "isRequired": false,
-      "displayType": "custom",
-      "isVisible": true,
-      "serviceName": "MAPREDUCE",
-      "category": "Advanced"
-    },*/
     {
       "id": "puppet var",
       "name": "mapred_hosts_exclude",

+ 12 - 0
ambari-web/app/data/custom_configs.js

@@ -70,6 +70,18 @@ module.exports =
       "serviceName": "HIVE",
       "category": "Advanced"
     },
+    {
+      "id": "conf-site",
+      "name": "webhcat-site",
+      "displayName": "Custom WebHCat Configs",
+      "description": "Enter in \"key=value\" format to set webhcat-site.xml parameters not exposed through this page.<br> New line is the delimiter for every key-value pair.",
+      "defaultValue": "",
+      "isRequired": false,
+      "displayType": "custom",
+      "isVisible": true,
+      "serviceName": "WEBHCAT",
+      "category": "Advanced"
+    },
     {
       "id": "conf-site",
       "name": "oozie-site",

+ 10 - 0
ambari-web/app/data/service_configs.js

@@ -60,6 +60,16 @@ module.exports = [
     configs: configProperties.filterProperty('serviceName', 'HIVE')
   },
 
+  {
+    serviceName: 'WEBHCAT',
+    displayName: 'WebHCat',
+    filename: 'webhcat-site',
+    configCategories: [
+      App.ServiceConfigCategory.create({ name: 'Advanced'})
+    ],
+    configs: configProperties.filterProperty('serviceName', 'WEBCHAT')
+  },
+
   {
     serviceName: 'HBASE',
     displayName: 'HBase',

+ 20 - 0
ambari-web/app/mappers/service_mapper.js

@@ -424,5 +424,25 @@ App.servicesMapper = App.QuickDataMapper.create({
     finalJson = this.parseIt(item, finalConfig);
     finalJson.quick_links = [13, 14, 15, 16, 17, 18];
     return finalJson;
+  },
+  _update: function(model, json){
+    var content = model.find();
+    var addArray = [];
+    for(var i in json){
+      var item = json[i];
+      var oldItem = content.findProperty('id', item.id);
+      if(oldItem){
+
+        for(var field in item){ ///<--
+          if(field !== 'id'){
+            oldItem.set(field, item[field]);  //<--
+          }
+        }
+
+      } else {
+        addArray.push(item);
+      }
+    }
+    App.store.loadMany(model, addArray);
   }
 });

+ 10 - 5
ambari-web/app/models/component.js

@@ -53,12 +53,17 @@ App.Component = DS.Model.extend({
     }
     return this.get('componentName');
   }.property('componentName'),
-
-  isClient: function () {
-    if (!this.get('componentName')) {
-      return false;
+  isSlave: function(){
+    switch (this.get('componentName')) {
+      case 'DATANODE':
+      case 'TASKTRACKER':
+      case 'HBASE_REGIONSERVER':
+      case 'GANGLIA_MONITOR':
+        return true;
+      default:
+        return false;
     }
-    return Boolean(this.get('componentName').match(/_client/gi));
+    return this.get('componentName');
   }.property('componentName')
 });
 

+ 12 - 0
ambari-web/app/models/host_component.js

@@ -51,6 +51,18 @@ App.HostComponent = DS.Model.extend({
     }
     return this.get('componentName');
   }.property('componentName'),
+  isSlave: function(){
+    switch (this.get('componentName')) {
+      case 'DATANODE':
+      case 'TASKTRACKER':
+      case 'HBASE_REGIONSERVER':
+      case 'GANGLIA_MONITOR':
+        return true;
+      default:
+        return false;
+    }
+    return this.get('componentName');
+  }.property('componentName'),
   /**
    * A host-component is decommissioning when it is in HDFS service's list of
    * decomNodes.

+ 7 - 1
ambari-web/app/models/run.js

@@ -35,8 +35,11 @@ App.Run = DS.Model.extend({
 
   loadAllJobs : false,
 
+  isStared: false,
+  isFiltered: false,
+
   /**
-   *
+   * runId  short part
    */
   idFormatted: function() {
     return this.get('id').substr(0, 20);
@@ -91,6 +94,9 @@ App.Run = DS.Model.extend({
   lastUpdateTimeFormatted: function() {
     return date.dateFormat(this.get('lastUpdateTime'));
   }.property('lastUpdateTime'),
+  lastUpdateTimeFormattedShort: function(){
+    return date.dateFormatShort(this.get('lastUpdateTime'));
+  }.property('lastUpdateTime'),
   /**
    * Type value based on first part of id
    */

+ 0 - 3
ambari-web/app/routes/main.js

@@ -282,9 +282,6 @@ module.exports = Em.Route.extend({
     service:Em.Route.extend({
       route:'/:service_id',
       connectOutlets:function (router, service) {
-        if (service && service.get('id') == 'Clients') {
-          service = App.router.get('mainServiceController.additionalMenuItem');
-        }
         router.get('mainServiceController').connectOutlet('mainServiceItem', service);
         router.transitionTo('summary');
       },

+ 7 - 1
ambari-web/app/styles/application.less

@@ -1316,6 +1316,12 @@ a:focus {
     border-top-color: #000000;
     border-bottom-color: #000000;
   }
+  //hack to apply style only for firefox
+  @-moz-document url-prefix() {
+    .host-components .caret{
+      margin-top:-12px !important;
+    }
+  }
   .health-status-started, .health-status-starting {
     background-image: @status-live-marker;
     background-repeat: no-repeat;
@@ -1809,7 +1815,7 @@ ul.filter {
 /* CHARTS */
 .chart {
   overflow: hidden;
-  padding-bottom: 25px;
+  /*padding-bottom: 25px;*/
 
   .attributes {
     width: 75px;

+ 1 - 1
ambari-web/app/styles/apps.less

@@ -128,7 +128,7 @@
     float:left;
     padding-top:10px;
 
-    > .span3 > a.selected{
+    > .span4 > a.selected{
       cursor: default;
       text-decoration: none;
       color: #000;

+ 2 - 3
ambari-web/app/templates/main/apps.hbs

@@ -47,13 +47,12 @@
     </tbody>
   </table>
   <div id="filter_info" class="row">
-    <div class="span3" id="filter_buttons">Show:
+    <div class="span4" id="filter_buttons">Show:
       <a href="javascript:void(0)" class="all selected" {{action "clickViewType" target="view"}} data-view-type="all">All
         ({{view.content.length}})</a> &#124;
       <a href="javascript:void(0)" class="filtered" {{action "clickViewType" target="view"}} data-view-type="filtered">Filtered
         ({{view.filtered}})</a> &#124;
-      <a href="javascript:void(0)" class="stared" {{action "clickViewType" target="view"}} data-view-type="starred">Starred
-        ({{view.staredData.count}})</a>
+      <a href="javascript:void(0)" class="stared" {{action "clickViewType" target="view"}} data-view-type="starred">Starred ({{view.stared}})</a>
     </div>
     <div class="span2"><a href="#" {{action "clearFilters" target="view"}}>Clear filters</a>&nbsp;&#124;&nbsp;<a
       href="#" {{action "clearStars" target="view"}}>Clear stars</a></div>

+ 1 - 1
ambari-web/app/templates/main/apps/list_row.hbs

@@ -25,4 +25,4 @@
 <td>{{unbound run.inputFormatted}}</td>
 <td>{{unbound run.outputFormatted}}</td>
 <td>{{unbound run.duration}}</td>
-<td>{{unbound run.lastUpdateTimeFormatted}}&nbsp;{{#if run.isRunning}}<b class='red'>*</b>{{/if}}</td>
+<td ><span title="{{unbound run.lastUpdateTimeFormatted}}">{{unbound run.lastUpdateTimeFormattedShort}}</span>&nbsp;{{#if run.isRunning}}<b class='red'>*</b>{{/if}}</td>

+ 1 - 1
ambari-web/app/templates/main/host/summary.hbs

@@ -50,7 +50,7 @@
           {{#view view.ComponentView contentBinding="component"}}
             <div class="span8">
               <span {{bindAttr class="view.statusClass"}}></span>&nbsp;
-              {{component.componentName}}&nbsp;/&nbsp;
+              {{component.displayName}}&nbsp;/&nbsp;
               <a href="#" {{action routeToService component.service target="controller"  }}>{{component.service.displayName}}</a>
             </div>
             <div class="span4">

+ 0 - 62
ambari-web/app/templates/main/service/info/client_summary.hbs

@@ -1,62 +0,0 @@
-{{!
-* 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="row-fluid service-block">
-  <div class="span6">
-    {{#if view.service.quickLinks.length}}
-    {{#view App.QuickViewLinks contentBinding="view.service"}}
-    <ul class="nav nav-pills move">
-      <li class="dropdown">
-        <a class="dropdown-toggle" data-toggle="dropdown" href="#">Quick Links <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-          {{#each view.quickLinks}}
-          <a {{bindAttr href="url"}}>{{label}}</a>
-          {{/each}}
-        </ul>
-      </li>
-    </ul>
-    {{/view}}
-    {{/if}}
-
-    <div class="box">
-      <div class="box-header">
-        <h4>{{controller.content.label}} Summary</h4>
-      </div>
-      <div class="service-content">
-        <table id="summary-info" class="table table-bordered table-striped table-condensed">
-          <tbody>
-
-          {{#if controller.content.isClients}}
-          <tr>
-            <td class="summary-label">Client Hosts</td>
-            <td>{{view.clientHostsLength}}</td>
-          </tr>
-          {{#if view.clientComponentsString}}
-          <tr>
-            <td style="text-align: left;" colspan="2">
-              {{view.clientComponentsString}}
-            </td>
-          </tr>
-          {{/if}}
-          {{/if}}
-          </tbody>
-        </table>
-      </div>
-    </div>
-  </div>
-</div>

+ 0 - 2
ambari-web/app/templates/main/service/item.hbs

@@ -17,7 +17,6 @@
 }}
 
 {{view App.MainServiceInfoMenuView configTabBinding="view.hasConfigTab"}}
-{{#unless controller.content.isClients}}
 {{#if controller.isAdmin}}
 <div class="service-button">
   {{#if view.hasMaintenanceControl}}
@@ -48,5 +47,4 @@
   </a>
 </div>
 {{/if}}
-{{/unless}}
 {{outlet}}

+ 0 - 2
ambari-web/app/templates/main/service/menu_item.hbs

@@ -17,9 +17,7 @@
 }}
 
 <a href="#/main/services/{{unbound view.content.id}}/summary">
-  {{#unless view.content.isClients}}
   {{view App.MainDashboardServiceHealthView class="service-health" serviceBinding="view.content"}}&nbsp;
-  {{/unless}}
   <span>{{unbound view.content.displayName}}</span>
   {{#if view.alertsCount}}
     <span class="label operations-count">

+ 3 - 2
ambari-web/app/utils/data_table.js

@@ -34,6 +34,7 @@ jQuery.extend(jQuery.fn.dataTableExt.oSort, {
   // @see utils/date.js
   "ambari-datetime-pre": function (date_string) {
     date_string = $.trim(date_string.replace(/<script[^>]*?>.*<\/script>/g, ''));
+    date_string = $(date_string).attr('title');
     var date = date_string.substring(4);
     var month = date.substring(1, 4);
     var day = date.substring(5, 7);
@@ -299,8 +300,8 @@ jQuery.extend($.fn.dataTableExt.afnFiltering.push(
 
       function ambariDateFilter(condition, rowValue) {
         if (typeof rowValue !== 'undefined') {
-          var refinedRowValue = $.trim(rowValue.replace(/<script[^>]*?>.*<\/script>/g, '').replace('&nbsp;', ''));
-
+          var refinedRowValue = $.trim(rowValue.replace(/<script[^>]*?>.*<\/script>/g, ''));
+          refinedRowValue = $(refinedRowValue).attr('title');
           var nowTime = new Date().getTime();
           var oneDayPast = nowTime - 86400000;
           var twoDaysPast = nowTime - 172800000;

+ 24 - 0
ambari-web/app/utils/date.js

@@ -55,6 +55,30 @@ module.exports = {
     if (month < 10) month = '0' + month;
     return year + month + day + hours + minutes;
   },
+  /**
+   * Convert timestamp to date-string 'DAY_OF_THE_WEEK MONTH DAY YEAR'
+   * @param timestamp
+   * @return {*}
+   */
+  dateFormatShort: function(timestamp) {
+    if (!validator.isValidInt(timestamp)) return timestamp;
+
+    var date = new Date(timestamp*1);
+    var today = new Date();
+    if (date.toDateString() === today.toDateString()) {
+      return 'Today ' + date.toLocaleTimeString();
+    }
+    return date.toDateString();
+  },
+  /**
+   * Convert date-string 'DAY_OF_THE_WEEK MONTH DAY YEAR' to the timestamp
+   * @param date_string
+   * @return {Number}
+   */
+  dateUnformatShort: function(date_string) {
+    var date = new Date(date_string);
+    return date.getTime();
+  },
   /**
    * Convert time in mseconds to 'HOURS:MINUTES:SECONDS'
    * @param ms_interval

+ 34 - 20
ambari-web/app/views/main/apps_view.js

@@ -42,7 +42,7 @@ App.MainAppsView = Em.View.extend({
    * List of users
    */
   users: function() {
-    var result = new Array();
+    var result = [];
     this.get('content').forEach(function(item) {
        result.push(item.get('userName'));
     });
@@ -56,6 +56,10 @@ App.MainAppsView = Em.View.extend({
    * jQuery collection of stars icons (in dataTables). Saved here for easy "turning off"
    */
   smallStarsIcons: null,
+
+  stared: function() {
+    return this.get('controller.staredRunsLength');
+  }.property('controller.staredRunsLength'),
   /**
    * Count of filtered runs
    */
@@ -79,13 +83,13 @@ App.MainAppsView = Em.View.extend({
    * Avg data of filtered runs
    */
   filteredData: function() {
-    return this.getAvgData(this.get('controller.filteredRuns'));
+    return this.getAvgData(this.get('controller.content').filterProperty('isFiltered', true));
   }.property('controller.filteredRunsLength'),
   /**
    * Avg data of stared runs
    */
   staredData: function() {
-    return this.getAvgData(this.get('controller.staredRuns'));
+    return this.getAvgData(this.get('controller.content').filterProperty('isStared', true));
   }.property('controller.staredRunsLength'),
   setFilteredRuns: function(data) {
 
@@ -172,7 +176,6 @@ App.MainAppsView = Em.View.extend({
     minOutput = misc.formatBandwidth(minOutput);
     maxOutput = misc.formatBandwidth(maxOutput);
     ret = {
-      'count': this.get('controller.staredRuns').length,
       'jobs': {
         'avg': avgJobs.toFixed(2),
         'min': minJobs,
@@ -208,13 +211,15 @@ App.MainAppsView = Em.View.extend({
     this.set('whatAvgShow', !this.get('whatAvgShow'));
     $('a.icon-star.a').toggleClass('active');
   },
+  /**
+   *
+   */
   starClicked: function() {
     var runIndex = this.get('controller.lastStarClicked');
-    if (runIndex < 0) return;
     if (!this.get('oTable')) return;
     var rowIndex = -1;
     // Get real row index
-    var column = this.get('oTable').fnGetColumnData(1);
+    var column = this.get('oTable').fnGetColumnData(1);  // 1 - number of column with full runId (hidden)
     for (var i = 0; i < column.length; i++) {
       if (runIndex == column[i]) {
         rowIndex = i;
@@ -231,34 +236,31 @@ App.MainAppsView = Em.View.extend({
     if (perPage !== -1) { // Change page after reDraw (if show All is selected this will not happens)
       this.get('oTable').fnPageChange(Math.floor(rowIndex / perPage));
     }
-    var d = this.get('oTable').fnGetData();
   }.observes('controller.lastStarClicked'),
   /**
    * Flush all starred runs
    */
   clearStars: function() {
-    this.get('controller').set('staredRuns', []);
+    this.get('controller').get('content').setEach('isStared', false);
     this.get('controller').set('staredRunsLength', 0);
     this.set('viewType', this.get('defaultViewType'));
     this.set('whatAvgShow', true);
+    this.get('smallStarsIcons').removeClass('stared');
+    $('#dataTable .icon-star').removeClass('stared');
     $('a.icon-star.a').removeClass('active');
   },
   /**
    * "turn off" stars in the table
    */
   resetStars: function() {
-    var self = this;
-    if (this.get('controller.staredRunsLength') == 0 && this.get('smallStarsIcons') != null) {
+    /*var self = this;
+    if (this.get('controller.staredRunsLength') != 0 && this.get('smallStarsIcons') != null) {
       this.get('smallStarsIcons').removeClass('stared');
       $('#dataTable .icon-star').removeClass('stared');
       $('a.icon-star.a').removeClass('active');
       this.get('starFilterViewInstance').set('value', '');
-      /*$('#dataTable tbody tr').each(function(index) {
-        var td = $(this).find('td:eq(0)');
-        self.get('oTable').fnUpdate( td.html(), index, 0);
-      });*/
       this.updateStars();
-    }
+    }*/
   }.observes('controller.staredRunsLength'),
   /**
    * Update stars data in dataTable. data taken from page
@@ -292,6 +294,9 @@ App.MainAppsView = Em.View.extend({
   clickViewType: function(event) {
     this.set('viewType', $(event.target).data('view-type'));
   },
+  /**
+   *
+   */
   onChangeViewType: function(){
     var viewType = this.get('viewType');
     var table = this.get('oTable');
@@ -327,6 +332,7 @@ App.MainAppsView = Em.View.extend({
     var smallStars = $('#dataTable .icon-star');
     var self = this;
     this.set('smallStarsIcons', smallStars);
+    var d = new Date();
     var oTable = this.$('#dataTable').dataTable({
       "sDom": '<"search-bar"f><"clear">rt<"page-bar"lip><"clear">',
       "fnDrawCallback": function( oSettings ) {
@@ -374,17 +380,24 @@ App.MainAppsView = Em.View.extend({
     this.set('filtered', oTable.fnSettings().fnRecordsDisplay());
 
     // If we have some starred runs, mark them again
-    var staredRuns = this.get('controller.staredRuns');
+    var staredRuns = [];
+    this.get('controller.').get('content').filterProperty('isStared', true).forEach(function(run) {
+      staredRuns.push(run.get('id'));
+    });
     this.clearStars();
+    var tr = $('#dataTable').find('tr');
     staredRuns.forEach(function(item) {
-      $('#dataTable').find('tr').each(function() {
-        if ($(this).find('td.appId:eq(0)').attr('title') == item.get('id')) {
-          $(this).find('td a:eq(0) span').trigger('click');
+      tr.each(function() {
+        if ($(this).find('td.appId:eq(0)').attr('title') == item) {
+          return $(this).find('td a:eq(0) span').trigger('click');
         }
       });
     });
     this.get('oTable').fnSettings()._iDisplayLength = 10;
     this.get('oTable').fnDraw(false);
+    console.log('Rendering Apps Table:');
+    console.log('Start - ', d.toLocaleTimeString());
+    console.log('End   - ', (new Date()).toLocaleTimeString());
   },
 
   loaded: false,
@@ -409,7 +422,7 @@ App.MainAppsView = Em.View.extend({
   }.observes('App.router.clusterController.postLoadList.runs'),
 
   didInsertElement: function () {
-    $('#dataTable').css('visibility', 'hidden');
+    $('#dataTable').css('visibility', 'hidden'); // hide table before dataTables id initialized
     this.set('inserted', true);
     this.onLoad();
   },
@@ -431,6 +444,7 @@ App.MainAppsView = Em.View.extend({
     }
     });
     this.get('oTable').fnFilterClear();
+    //this.get('controller').clearFilteredRuns();
     this.set('viewType', this.get('defaultViewType'));
     this.set('filtered',this.get('oTable').fnSettings().fnRecordsDisplay());
     this.setFilteredRuns(this.get('oTable')._('tr', {"filter":"applied"}));

+ 34 - 0
ambari-web/app/views/main/host.js

@@ -237,6 +237,7 @@ App.MainHostView = Em.View.extend({
     toggleAllComponents:function () {
       this.set('masterComponentsChecked', this.get('allComponentsChecked'));
       this.set('slaveComponentsChecked', this.get('allComponentsChecked'));
+      this.set('clientComponentsChecked', this.get('allComponentsChecked'));
     }.observes('allComponentsChecked'),
 
     masterComponentsChecked:false,
@@ -255,6 +256,14 @@ App.MainHostView = Em.View.extend({
       });
     }.observes('slaveComponentsChecked'),
 
+    clientComponentsChecked: false,
+    toggleClientComponents: function() {
+      var checked = this.get('clientComponentsChecked');
+      this.get('clientComponents').forEach(function(comp) {
+        comp.set('checkedForHostFilter', checked);
+      });
+    }.observes('clientComponentsChecked'),
+
     masterComponents:function(){
       var masterComponents = [];
       for(var i = 0; i < this.get('parentView').get('controller.masterComponents').length; i++) {
@@ -271,6 +280,14 @@ App.MainHostView = Em.View.extend({
       return slaveComponents;
     }.property('parentView.controller.slaveComponents'),
 
+    clientComponents: function() {
+      var clientComponents = [];
+      for (var i = 0; i < this.get('parentView').get('controller.clientComponents').length; i++) {
+        clientComponents.push(this.get('parentView').get('controller.clientComponents')[i]);
+      }
+      return clientComponents;
+    }.property('parentView.controller.clientComponents'),
+
     template: Ember.Handlebars.compile('<div {{bindAttr class="view.btnGroupClass"}} >'+
       '<button class="btn btn-info single-btn-group" {{action "clickFilterButton" target="view"}}>' +
         'Components ' +
@@ -312,6 +329,20 @@ App.MainHostView = Em.View.extend({
                     '{{/each}}' +
                   '</ul>' +
                 '</li>' +
+                '<li>' +
+                  '<label class="checkbox">' +
+                    '{{view Ember.Checkbox checkedBinding="view.clientComponentsChecked"}} Client Components:' +
+                  '</label>' +
+                  '<ul>' +
+                    '{{#each component in clientComponents}}' +
+                      '<li>' +
+                        '<label class="checkbox">' +
+                          '{{view Ember.Checkbox checkedBinding="component.checkedForHostFilter" }} {{unbound component.displayName}}' +
+                        '</label>' +
+                      '</li>' +
+                    '{{/each}}' +
+                  '</ul>' +
+                '</li>' +
               '</li>' +
             '</ul>' +
           '</li>' +
@@ -370,6 +401,9 @@ App.MainHostView = Em.View.extend({
       this.get('slaveComponents').forEach(function(item){
         if(item.get('checkedForHostFilter')) chosenComponents.push(item.get('displayName'));
       });
+      this.get('clientComponents').forEach(function(item){
+        if(item.get('checkedForHostFilter')) chosenComponents.push(item.get('displayName'));
+      });
       jQuery('#components_filter').val(chosenComponents);
       this.get('parentView').get('applyFilter')(this.get('parentView'), 9);
       if (chosenComponents.length == 0) {

+ 6 - 6
ambari-web/app/views/main/host/summary.js

@@ -94,13 +94,9 @@ App.MainHostSummaryView = Em.View.extend({
     var slaveComponents = [];
     var masterComponents = [];
     this.get('content.components').forEach(function(component){
-      if(!component.get('componentName')){
-        //temporary fix because of different data in hostComponents and serviceComponents
-        return;
-      }
       if(component.get('isMaster')){
         masterComponents.push(component);
-      } else if(!component.get('isClient')) {
+      } else if(component.get('isSlave')) {
         slaveComponents.push(component);
       }
     }, this);
@@ -109,7 +105,11 @@ App.MainHostSummaryView = Em.View.extend({
   clients: function(){
     var clients = [];
     this.get('content.components').forEach(function(component){
-      if(component.get('isClient')) {
+      if(!component.get('componentName')){
+        //temporary fix because of different data in hostComponents and serviceComponents
+        return;
+      }
+      if(!component.get('isSlave') && !component.get('isMaster')) {
         if(clients.length){
           clients[clients.length-1].set('isLast', false);
         }

+ 1 - 3
ambari-web/app/views/main/service/info/summary.js

@@ -18,9 +18,7 @@
 var App = require('app');
 
 App.MainServiceInfoSummaryView = Em.View.extend({
-  templateName:function () {
-    return require(this.get('service.isClients') ? 'templates/main/service/info/client_summary' : 'templates/main/service/info/summary');
-  }.property('service'),
+  templateName: require('templates/main/service/info/summary'),
   attributes:null,
   serviceStatus:{
     hdfs:false,

+ 0 - 6
ambari-web/app/views/main/service/menu.js

@@ -26,8 +26,6 @@ App.MainServiceMenuView = Em.CollectionView.extend({
       }
       return true;
     });
-
-    items.push(App.router.get('mainServiceController.additionalMenuItem'));
     return items;
   }.property('App.router.mainServiceController.content'),
 
@@ -70,10 +68,6 @@ App.MainServiceMenuView = Em.CollectionView.extend({
       }
       return 0;
     }.property('App.router.clusterController.alerts'),
-    clients: function(){
-      var content = this.get('content');
-      return this.get('content.isClients') ? "clients" : "";
-    }.property("content"),
     templateName:require('templates/main/service/menu_item')
   })
 });