YARN-7392. Render cluster information on new YARN web ui. Contributed by Vasudevan Skm.
This commit is contained in:
parent
b00f828d84
commit
c41728486b
|
@ -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);
|
|
@ -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);
|
35
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/initializers/jquery.js
vendored
Normal file
35
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/initializers/jquery.js
vendored
Normal file
|
@ -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
|
||||||
|
};
|
|
@ -27,5 +27,8 @@ export default DS.Model.extend({
|
||||||
resourceManagerBuildVersion: DS.attr('string'),
|
resourceManagerBuildVersion: DS.attr('string'),
|
||||||
hadoopVersion: DS.attr('string'),
|
hadoopVersion: DS.attr('string'),
|
||||||
hadoopBuildVersion: DS.attr('string'),
|
hadoopBuildVersion: DS.attr('string'),
|
||||||
hadoopVersionBuiltOn: DS.attr('string')
|
hadoopVersionBuiltOn: DS.attr('string'),
|
||||||
});
|
getYARNBuildHash: function() {
|
||||||
|
return this.get("hadoopVersion") + " from " + this.get("resourceManagerBuildVersion").split(" ")[2];
|
||||||
|
}.property("yarnHash")
|
||||||
|
});
|
||||||
|
|
|
@ -17,8 +17,13 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import Ember from 'ember';
|
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: {
|
actions: {
|
||||||
/**
|
/**
|
||||||
* Base error handler for the application.
|
* Base error handler for the application.
|
||||||
|
@ -35,5 +40,9 @@ export default Ember.Route.extend({
|
||||||
this.intermediateTransitionTo('/error');
|
this.intermediateTransitionTo('/error');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
|
||||||
|
unloadAll: function() {
|
||||||
|
this.store.unloadAll('ClusterInfo');
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
|
|
@ -418,3 +418,39 @@ div.attempt-info-panel table > tbody > tr > td:last-of-type {
|
||||||
width: 14px;
|
width: 14px;
|
||||||
display: inline-block;
|
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;
|
||||||
|
}
|
||||||
|
|
|
@ -80,8 +80,8 @@
|
||||||
<br/>
|
<br/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="footer">
|
<div class="footer yarn-ui-footer">
|
||||||
<div class="container-fluid content">
|
<div>
|
||||||
<a href={{env.app.hrefs.license}} target="_blank">
|
<a href={{env.app.hrefs.license}} target="_blank">
|
||||||
Licensed under the Apache License, Version 2.0.
|
Licensed under the Apache License, Version 2.0.
|
||||||
</a>
|
</a>
|
||||||
|
@ -91,4 +91,13 @@
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="yarn-cluster-info">
|
||||||
|
<div>
|
||||||
|
<strong>v{{model.firstObject.hadoopVersion}}</strong>
|
||||||
|
<span class="yarn-cluster-status yarn-tooltip" title="Hadoop Version: {{model.firstObject.getYARNBuildHash}} Started on: {{date-formatter model.firstObject.startedOn}}" data-toggle="tooltip" data-placement="top">
|
||||||
|
<i class={{lower model.firstObject.state}} />
|
||||||
|
</span>
|
||||||
|
<div>Started at {{date-formatter model.firstObject.startedOn}}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -0,0 +1,28 @@
|
||||||
|
/**
|
||||||
|
* 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 { dateFormatter } from '../../../helpers/date-formatter';
|
||||||
|
import { module, test } from 'qunit';
|
||||||
|
|
||||||
|
module('Unit | Helper | date formatter');
|
||||||
|
|
||||||
|
// Replace this with your real tests.
|
||||||
|
test('it works', function(assert) {
|
||||||
|
let result = dateFormatter(42);
|
||||||
|
assert.ok(result);
|
||||||
|
});
|
|
@ -0,0 +1,28 @@
|
||||||
|
/**
|
||||||
|
* 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 { lower } from '../../../helpers/lower';
|
||||||
|
import { module, test } from 'qunit';
|
||||||
|
|
||||||
|
module('Unit | Helper | lower');
|
||||||
|
|
||||||
|
// Replace this with your real tests.
|
||||||
|
test('it works', function(assert) {
|
||||||
|
let result = lower(42);
|
||||||
|
assert.ok(result);
|
||||||
|
});
|
|
@ -1730,6 +1730,14 @@ ember-export-application-global@1.0.5:
|
||||||
version "1.0.5"
|
version "1.0.5"
|
||||||
resolved "https://registry.yarnpkg.com/ember-export-application-global/-/ember-export-application-global-1.0.5.tgz#73bd641b19e3474190f717c9b504617511506bea"
|
resolved "https://registry.yarnpkg.com/ember-export-application-global/-/ember-export-application-global-1.0.5.tgz#73bd641b19e3474190f717c9b504617511506bea"
|
||||||
|
|
||||||
|
ember-lodash@0.0.10:
|
||||||
|
version "0.0.10"
|
||||||
|
resolved "https://registry.yarnpkg.com/ember-lodash/-/ember-lodash-0.0.10.tgz#edf132aa54a983a87543a093615df03892c9a15c"
|
||||||
|
dependencies:
|
||||||
|
broccoli-merge-trees "^1.1.1"
|
||||||
|
ember-cli-babel "^5.1.5"
|
||||||
|
lodash-es "^3.10.0"
|
||||||
|
|
||||||
ember-qunit@^0.4.18:
|
ember-qunit@^0.4.18:
|
||||||
version "0.4.24"
|
version "0.4.24"
|
||||||
resolved "https://registry.yarnpkg.com/ember-qunit/-/ember-qunit-0.4.24.tgz#b54cf6688c442d07eacea47c3285879cdd7c2163"
|
resolved "https://registry.yarnpkg.com/ember-qunit/-/ember-qunit-0.4.24.tgz#b54cf6688c442d07eacea47c3285879cdd7c2163"
|
||||||
|
@ -2945,6 +2953,10 @@ lockfile@~1.0.1:
|
||||||
version "1.0.3"
|
version "1.0.3"
|
||||||
resolved "https://registry.yarnpkg.com/lockfile/-/lockfile-1.0.3.tgz#2638fc39a0331e9cac1a04b71799931c9c50df79"
|
resolved "https://registry.yarnpkg.com/lockfile/-/lockfile-1.0.3.tgz#2638fc39a0331e9cac1a04b71799931c9c50df79"
|
||||||
|
|
||||||
|
lodash-es@^3.10.0:
|
||||||
|
version "3.10.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-3.10.1.tgz#a1c85d9829c9009004339dc3846dbabb46cf4e19"
|
||||||
|
|
||||||
lodash-node@^2.4.1:
|
lodash-node@^2.4.1:
|
||||||
version "2.4.1"
|
version "2.4.1"
|
||||||
resolved "https://registry.yarnpkg.com/lodash-node/-/lodash-node-2.4.1.tgz#ea82f7b100c733d1a42af76801e506105e2a80ec"
|
resolved "https://registry.yarnpkg.com/lodash-node/-/lodash-node-2.4.1.tgz#ea82f7b100c733d1a42af76801e506105e2a80ec"
|
||||||
|
|
Loading…
Reference in New Issue