blob: eec736bc233f14dd3a2aca8575a5110ffee66f2f [file] [log] [blame]
/**
* 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.
*/
var App = require('app');
var date = require('utils/date');
App.MainDashboardServiceHdfsView = App.MainDashboardServiceView.extend({
templateName: require('templates/main/dashboard/service/hdfs'),
serviceName: 'HDFS',
Chart: App.ChartPieView.extend({
service: null,
color: '#0066B3',
stroke: '#0066B3',
palette: new Rickshaw.Color.Palette({
scheme: [ 'rgba(0,102,179,0)', 'rgba(0,102,179,1)'].reverse()
}),
data: function () {
var total = this.get('service.capacityTotal') + 0;
var remaining = (this.get('service.capacityRemaining') + 0);
var used = total - remaining;
return [ used, remaining ];
}.property('service.capacityUsed', 'service.capacityTotal')
}),
version: function(){
return this.formatUnavailable(this.get('service.version'));
}.property('service.version'),
dfsTotalBlocks: function(){
return this.formatUnavailable(this.get('service.dfsTotalBlocks'));
}.property('service.dfsTotalBlocks'),
dfsTotalFiles: function(){
return this.formatUnavailable(this.get('service.dfsTotalFiles'));
}.property('service.dfsTotalFiles'),
dfsCorruptBlocks: function(){
return this.formatUnavailable(this.get('service.dfsCorruptBlocks'));
}.property('service.dfsCorruptBlocks'),
dfsMissingBlocks: function(){
return this.formatUnavailable(this.get('service.dfsMissingBlocks'));
}.property('service.dfsMissingBlocks'),
dfsUnderReplicatedBlocks: function(){
return this.formatUnavailable(this.get('service.dfsUnderReplicatedBlocks'));
}.property('service.dfsUnderReplicatedBlocks'),
blockErrorsMessage: function() {
return Em.I18n.t('dashboard.services.hdfs.blockErrors').format(this.get('dfsCorruptBlocks'), this.get('dfsMissingBlocks'), this.get('dfsUnderReplicatedBlocks'));
}.property('dfsCorruptBlocks','dfsMissingBlocks','dfsUnderReplicatedBlocks'),
nodeUptime: function () {
var uptime = this.get('service').get('nameNodeStartTime');
if (uptime && uptime > 0){
var diff = (new Date()).getTime() - uptime;
if (diff < 0) {
diff = 0;
}
var formatted = date.timingFormat(diff);
return this.t('dashboard.services.uptime').format(formatted);
}
return this.t('services.service.summary.notRunning');
}.property("service.nameNodeStartTime"),
nodeWebUrl: function () {
return "http://" + this.get('service').get('nameNode').get('publicHostName') + ":50070";
}.property('service.nameNode'),
nodeHeap: function () {
var memUsed = this.get('service').get('jvmMemoryHeapUsed') * 1000000;
var memCommitted = this.get('service').get('jvmMemoryHeapCommitted') * 1000000;
var percent = memCommitted > 0 ? ((100 * memUsed) / memCommitted) : 0;
return this.t('dashboard.services.hdfs.nodes.heapUsed').format(memUsed.bytesToSize(1, 'parseFloat'), memCommitted.bytesToSize(1, 'parseFloat'), percent.toFixed(1));
}.property('service.jvmMemoryHeapUsed', 'service.jvmMemoryHeapCommitted'),
summaryHeader: function () {
var text = this.t("dashboard.services.hdfs.summary");
var svc = this.get('service');
var liveCount = svc.get('liveDataNodes').get('length');
var totalCount = svc.get('dataNodes').get('length');
var total = this.get('service.capacityTotal') + 0;
var remaining = this.get('service.capacityRemaining') + 0;
var used = total - remaining;
var percent = total > 0 ? ((used * 100) / total).toFixed(1) : 0;
if (percent == "NaN" || percent < 0) {
percent = "n/a ";
}
return text.format(liveCount, totalCount, percent);
}.property('service.liveDataNodes', 'service.dataNodes', 'service.capacityUsed', 'service.capacityTotal'),
capacity: function () {
var text = this.t("dashboard.services.hdfs.capacityUsed");
var total = this.get('service.capacityTotal') + 0;
var remaining = this.get('service.capacityRemaining') + 0;
var used = total - remaining;
var percent = total > 0 ? ((used * 100) / total).toFixed(1) : 0;
if (percent == "NaN" || percent < 0) {
percent = "n/a ";
}
if (used < 0) {
used = 0;
}
if (total < 0) {
total = 0;
}
return text.format(used.bytesToSize(1, 'parseFloat'), total.bytesToSize(1, 'parseFloat'), percent);
}.property('service.capacityUsed', 'service.capacityTotal'),
dataNodeComponent: function () {
return App.HostComponent.find().findProperty('componentName', 'DATANODE');
}.property('+'),
isSafeMode: function () {
var safeMode = this.get('service.safeModeStatus');
return safeMode != null && safeMode.length > 0;
}.property('service.safeModeStatus')
});