diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/helpers/date-formatter.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/helpers/date-formatter.js
new file mode 100644
index 0000000000..17834e4df9
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/helpers/date-formatter.js
@@ -0,0 +1,29 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+
+import Converter from 'yarn-ui/utils/converter';
+
+export function dateFormatter(params) {
+ const [timestamp, dateOnly] = params;
+
+ return dateOnly ? Converter.timeStampToDateOnly(timestamp) : Converter.timeStampToDate(timestamp);
+}
+
+export default Ember.Helper.helper(dateFormatter);
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/helpers/lower.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/helpers/lower.js
new file mode 100644
index 0000000000..e51990545d
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/helpers/lower.js
@@ -0,0 +1,27 @@
+/**
+ * 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.
+ */
+
+
+import Ember from 'ember';
+
+export function lower(params) {
+ const string = params[0];
+ return string.toLowerCase();
+}
+
+export default Ember.Helper.helper(lower);
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/initializers/jquery.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/initializers/jquery.js
new file mode 100644
index 0000000000..9633cbcded
--- /dev/null
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/initializers/jquery.js
@@ -0,0 +1,35 @@
+/**
+ * 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.
+ */
+
+import Ember from 'ember';
+
+export function initialize(/* application */) {
+ Ember.$(document).tooltip({
+ tooltipClass: 'generic-tooltip',
+ selector: ".yarn-tooltip"
+ });
+
+ Ember.$.ajaxSetup({
+ cache: false
+ });
+}
+
+export default {
+ name: 'jquery',
+ initialize
+};
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/cluster-info.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/cluster-info.js
index 332fdf3113..c1a095a774 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/cluster-info.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/cluster-info.js
@@ -27,5 +27,8 @@ export default DS.Model.extend({
resourceManagerBuildVersion: DS.attr('string'),
hadoopVersion: DS.attr('string'),
hadoopBuildVersion: DS.attr('string'),
- hadoopVersionBuiltOn: DS.attr('string')
-});
\ No newline at end of file
+ hadoopVersionBuiltOn: DS.attr('string'),
+ getYARNBuildHash: function() {
+ return this.get("hadoopVersion") + " from " + this.get("resourceManagerBuildVersion").split(" ")[2];
+ }.property("yarnHash")
+});
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/application.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/application.js
index 1fd11e66fb..33a741a443 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/application.js
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/routes/application.js
@@ -17,8 +17,13 @@
*/
import Ember from 'ember';
+import AbstractRoute from './abstract';
+
+export default AbstractRoute.extend({
+ model() {
+ return this.store.findAll('ClusterInfo', {reload: true});
+ },
-export default Ember.Route.extend({
actions: {
/**
* Base error handler for the application.
@@ -35,5 +40,9 @@ export default Ember.Route.extend({
this.intermediateTransitionTo('/error');
}
}
- }
+ },
+
+ unloadAll: function() {
+ this.store.unloadAll('ClusterInfo');
+ },
});
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/styles/app.css b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/styles/app.css
index f48c186806..9682e86f0b 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/styles/app.css
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/styles/app.css
@@ -418,3 +418,39 @@ div.attempt-info-panel table > tbody > tr > td:last-of-type {
width: 14px;
display: inline-block;
}
+
+.yarn-cluster-status i {
+ display: inline-block;
+ width: 12px;
+ height: 12px;
+ border-radius: 10px;
+ border: 1px solid;
+ margin: 3px;
+ vertical-align: bottom;
+}
+
+.yarn-cluster-status i.started {
+ border-color: #43b135;
+ background-color: #60cea5;
+}
+.yarn-cluster-status i.stopped {
+ border-color: #b04b4e;
+ background-color: #ef6162;
+}
+.yarn-cluster-status i.inited{
+ border-color: #1c95c0;
+ background-color: #26bbf0;
+}
+.yarn-cluster-status i.notinited {
+ border-color: #dca41b;
+ background-color: #ffbc0b;
+}
+.yarn-cluster-info {
+ display: flex;
+ margin-left: auto
+}
+
+.yarn-ui-footer {
+ display: flex;
+ padding: 10px 25px;
+}
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/application.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/application.hbs
index 1ac53bf5e7..0d87de63d4 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/application.hbs
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/application.hbs
@@ -80,8 +80,8 @@
-