blob: c1459b8ac806870808c365fe363db021fff89cb4 [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.
*/
import DS from 'ember-data';
export default DS.Model.extend({
appsSubmitted: DS.attr('number'),
appsCompleted: DS.attr('number'),
appsPending: DS.attr('number'),
appsRunning: DS.attr('number'),
appsFailed: DS.attr('number'),
appsKilled: DS.attr('number'),
reservedMB: DS.attr('number'),
availableMB: DS.attr('number'),
allocatedMB: DS.attr('number'),
reservedVirtualCores: DS.attr('number'),
availableVirtualCores: DS.attr('number'),
allocatedVirtualCores: DS.attr('number'),
containersAllocated: DS.attr('number'),
containersReserved: DS.attr('number'),
containersPending: DS.attr('number'),
totalMB: DS.attr('number'),
totalVirtualCores: DS.attr('number'),
totalNodes: DS.attr('number'),
lostNodes: DS.attr('number'),
unhealthyNodes: DS.attr('number'),
decommissioningNodes: DS.attr('number'),
decommissionedNodes: DS.attr('number'),
rebootedNodes: DS.attr('number'),
activeNodes: DS.attr('number'),
totalUsedResourcesAcrossPartition: DS.attr('object'),
totalClusterResourcesAcrossPartition: DS.attr('object'),
getFinishedAppsDataForDonutChart: function() {
var arr = [];
arr.push({
label: "Completed",
value: this.get("appsCompleted")
});
arr.push({
label: "Killed",
value: this.get("appsKilled")
});
arr.push({
label: "Failed",
value: this.get("appsFailed")
});
return arr;
}.property("appsCompleted", "appsKilled", "appsFailed"),
getRunningAppsDataForDonutChart: function() {
var arr = [];
arr.push({
label: "Pending",
value: this.get("appsPending")
});
arr.push({
label: "Running",
value: this.get("appsRunning")
});
return arr;
}.property("appsPending", "appsRunning"),
getNodesDataForDonutChart: function() {
var arr = [];
arr.push({
label: "Active",
value: this.get("activeNodes")
});
arr.push({
label: "Unhealthy",
value: this.get("unhealthyNodes")
});
arr.push({
label: "Decommissioning",
value: this.get("decommissioningNodes") || 0
});
arr.push({
label: "Decommissioned",
value: this.get("decommissionedNodes")
});
arr.push({
label: "Lost",
value: this.get("lostNodes")
});
return arr;
}.property("activeNodes", "unhealthyNodes", "decommissioningNodes", "decommissionedNodes", "lostNodes"),
getMemoryDataForDonutChart: function() {
var type = "MB";
var arr = [];
arr.push({
label: "Allocated",
value: this.get("allocated" + type)
});
arr.push({
label: "Reserved",
value: this.get("reserved" + type)
});
arr.push({
label: "Available",
value: this.get("available" + type)
});
return arr;
}.property("allocatedMB", "reservedMB", "availableMB"),
getVCoreDataForDonutChart: function() {
var type = "VirtualCores";
var arr = [];
arr.push({
label: "Allocated",
value: this.get("allocated" + type)
});
arr.push({
label: "Reserved",
value: this.get("reserved" + type)
});
arr.push({
label: "Available",
value: Math.max(this.get("available" + type), 0)
});
return arr;
}.property("allocatedVirtualCores", "reservedVirtualCores", "availableVirtualCores"),
getResourceTypes: function() {
var types = [];
if (this.get("totalClusterResourcesAcrossPartition")) {
console.log(types);
}
}.property("totalClusterResourcesAcrossPartition"),
/*
* Returned format
* [
* {
* name: <resource-name>
* unit: <resource-unit>
* [
* {
* label: <label>
* value: <value>
* },
* {
* }
* ...
* ],
* }
* ]
*/
getAllResourceTypesDonutChart: function() {
if (this.get("totalClusterResourcesAcrossPartition")
&& this.get("totalUsedResourcesAcrossPartition")) {
var usages = [];
var clusterResourceInformations = this.get("totalClusterResourcesAcrossPartition").resourceInformations.resourceInformation;
var usedResourceInformations = this.get("totalUsedResourcesAcrossPartition").resourceInformations.resourceInformation;
clusterResourceInformations.forEach(function(cluster) {
var perResourceTypeUsage = {
name: cluster.name,
unit: cluster.units,
data: []
};
usedResourceInformations.forEach(function (used) {
if (used.name === perResourceTypeUsage.name) {
var usedValue = used.value;
perResourceTypeUsage.data.push({
label: "Used",
value: usedValue
}, {
label: "Available",
value: cluster.value - usedValue
});
}
});
usages.push(perResourceTypeUsage);
// Make sure id is a valid w3c ID
perResourceTypeUsage.id = perResourceTypeUsage.name.replace('/', '-');
perResourceTypeUsage.id = perResourceTypeUsage.id.replace('.', '-');
});
console.log(usages);
return usages;
}
return null;
}.property()
});