blob: f0d6a72d9d89b5b7b0bb4d6aa6f8afc37ce52fe1 [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 Converter from 'yarn-ui/utils/converter';
import DS from 'ember-data';
export default DS.Model.extend({
appName: DS.attr("string"),
user: DS.attr("string"),
queue: DS.attr("string"),
state: DS.attr("string"),
startTime: DS.attr("number"),
elapsedTime: DS.attr("string"),
finalStatus: DS.attr("string"),
finishedTime: DS.attr("number"),
progress: DS.attr("number"),
diagnostics: DS.attr("string"),
amHostHttpAddress: DS.attr("string"),
masterNodeId: DS.attr("string"),
logAggregationStatus: DS.attr("string"),
unmanagedApplication: DS.attr("boolean"),
amNodeLabelExpression: DS.attr("string"),
applicationTags: DS.attr("string"),
applicationType: DS.attr("string"),
priority: DS.attr("string"),
allocatedMB: DS.attr("number"),
allocatedVCores: DS.attr("number"),
runningContainers: DS.attr("number"),
memorySeconds: DS.attr("number"),
vcoreSeconds: DS.attr("number"),
preemptedResourceMB: DS.attr("number"),
preemptedResourceVCores: DS.attr("number"),
numNonAMContainerPreempted: DS.attr("number"),
numAMContainerPreempted: DS.attr("number"),
clusterUsagePercentage: DS.attr("number"),
queueUsagePercentage: DS.attr("number"),
currentAppAttemptId: DS.attr("string"),
remainingTimeoutInSeconds: DS.attr("number"),
applicationExpiryTime: DS.attr("string"),
resourceRequests: DS.attr("array"),
trackingUI: DS.attr("string"),
trackingUrl: DS.attr("string"),
isFailed: function() {
return this.get("finalStatus") === "FAILED";
}.property("finalStatus"),
validatedFinishedTs: function() {
if (this.get("finishedTime") < this.get("startTime")) {
return "N/A";
}
return this.get("finishedTime");
}.property("finishedTime"),
hasFinishedTime: function() {
return this.get("finishedTime") >= this.get("startTime");
}.property("hasFinishedTime"),
formattedStartTime: function() {
return Converter.timeStampToDate(this.get('startTime'));
}.property('startTime'),
formattedFinishedTime: function() {
if (this.get("finishedTime") < this.get("startTime")) {
return "N/A";
}
return Converter.timeStampToDate(this.get("finishedTime"));
}.property('finishedTime'),
formattedElapsedTime: function() {
return Converter.msToElapsedTimeUnit(this.get("elapsedTime"));
}.property("elapsedTime"),
allocatedResource: function() {
return Converter.resourceToString(
this.get("allocatedMB"),
this.get("allocatedVCores")
);
}.property("allocatedMB", "allocatedVCores"),
preemptedResource: function() {
return Converter.resourceToString(
this.get("preemptedResourceMB"),
this.get("preemptedResourceVCores")
);
}.property("preemptedResourceMB", "preemptedResourceVCores"),
aggregatedResourceUsage: function() {
return (
Converter.resourceToString(
this.get("memorySeconds"),
this.get("vcoreSeconds")
) + " (× Secs)"
);
}.property("memorySeconds", "vcoreSeconds"),
progressStyle: function() {
return "width: " + this.get("progress") + "%";
}.property("progress"),
runningContainersNumber: function() {
if (this.get("runningContainers") < 0) {
return 0;
}
return this.get("runningContainers");
}.property("progress"),
finalStatusStyle: function() {
var finalStatus = this.get("finalStatus");
var style = "";
if (finalStatus === "KILLED") {
style = "warning";
} else if (finalStatus === "FAILED") {
style = "danger";
} else if (finalStatus === "SUCCEEDED") {
style = "success";
} else {
style = "default";
}
return "label label-" + style;
}.property("finalStatus"),
logAggregationStatusStyle: function() {
const logAggregationStatus = this.get("logAggregationStatus");
var style = "";
if (logAggregationStatus === "FAILED" ||
logAggregationStatus === "TIME_OUT") {
style = "danger";
} else if (logAggregationStatus === "RUNNING_WITH_FAILURE") {
style = "warning";
} else if (logAggregationStatus === "SUCCEEDED") {
style = "success";
} else {
style = "default";
}
return "label label-" + style;
}.property("logAggregationStatus")
});