blob: ef44f198c388c417c7ffe2bef3af7d353573813d [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 objectUtils = require('utils/object_utils');
App.YARNService = App.Service.extend({
resourceManager: DS.belongsTo('App.HostComponent'),
isRMHaEnabled: function() {
return this.get('hostComponents').filterProperty('componentName', 'RESOURCEMANAGER').length > 1;
}.property('hostComponents'),
activeResourceManager: DS.belongsTo('App.HostComponent'),
appTimelineServer: DS.belongsTo('App.HostComponent'),
nodeManagersStarted: DS.attr('number'),
nodeManagersInstalled: DS.attr('number'),
nodeManagersTotal: DS.attr('number'),
nodeManagersCountActive: DS.attr('number'),
nodeManagersCountLost: DS.attr('number'),
nodeManagersCountUnhealthy: DS.attr('number'),
nodeManagersCountRebooted: DS.attr('number'),
nodeManagersCountDecommissioned: DS.attr('number'),
containersAllocated: DS.attr('number'),
containersPending: DS.attr('number'),
containersReserved: DS.attr('number'),
appsSubmitted: DS.attr('number'),
appsRunning: DS.attr('number'),
appsPending: DS.attr('number'),
appsCompleted: DS.attr('number'),
appsKilled: DS.attr('number'),
appsFailed: DS.attr('number'),
ahsWebPort: function() {
var yarnConf = App.db.getConfigs().findProperty('type', 'yarn-site');
if(yarnConf){
return yarnConf.properties['yarn.timeline-service.webapp.address'].match(/:(\d+)/)[1];
}
return "8188";
}.property(),
resourceManagerStartTime: DS.attr('number'),
jvmMemoryHeapUsed: DS.attr('number'),
jvmMemoryHeapMax: DS.attr('number'),
allocatedMemory: DS.attr('number'),
reservedMemory: DS.attr('number'),
availableMemory: DS.attr('number'),
queue: DS.attr('string'),
queueFormatted: function() {
var queue = JSON.parse(this.get('queue'));
return objectUtils.recursiveTree(queue);
}.property('queue'),
queuesCount: function() {
var queue = JSON.parse(this.get('queue'));
return objectUtils.recursiveKeysCount(queue);
}.property('queue'),
allQueueNames: [],
childQueueNames: [],
maxMemory: Em.computed.sumProperties('allocatedMemory', 'availableMemory'),
/**
* Provides a flat array of queue names.
* Example: root, root/default
*/
queueNames: function () {
var queueString = this.get('queue');
var allQueueNames = [];
var childQueueNames = [];
if (queueString != null) {
var queues = JSON.parse(queueString);
var addQueues = function (queuesObj, path){
var names = [];
for ( var subQueue in queuesObj) {
if (queuesObj[subQueue] instanceof Object) {
var qFN = path=='' ? subQueue : path+'/'+subQueue;
names.push(qFN);
var subNames = addQueues(queuesObj[subQueue], qFN);
names = names.concat(subNames);
if (!subNames || subNames.length < 1) {
childQueueNames.push(qFN);
}
}
}
return names;
};
allQueueNames = addQueues(queues, '');
}
this.set('allQueueNames', allQueueNames);
this.set('childQueueNames', childQueueNames);
}.observes('queue')
/**
* ResourceManager's lost count is not accurate once RM is rebooted. Since
* Ambari knows the total number of nodes and the counts of nodes in other
* states, we calculate the lost count.
*
nodeManagersCountLost: function () {
var totalCount = this.get('nodeManagersTotal');
var activeCount = this.get('nodeManagersCountActive');
var rebootedCount = this.get('nodeManagersCountRebooted');
var unhealthyCount = this.get('nodeManagersCountUnhealthy');
var decomCount = this.get('nodeManagersCountDecommissioned');
var nonLostHostsCount = activeCount + rebootedCount + decomCount + unhealthyCount;
return totalCount >= nonLostHostsCount ? totalCount - nonLostHostsCount : 0;
}.property('nodeManagersTotal', 'nodeManagersCountActive', 'nodeManagersCountRebooted', 'nodeManagersCountUnhealthy', 'nodeManagersCountDecommissioned')*/
});
App.YARNService.FIXTURES = [];