blob: 701c1d2afd759ca4d1fd0d7cfa0520959f21bb35 [file] [log] [blame]
/*global more*/
/**
* 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 DAGInfoSerializer from './dag-info';
var MoreObject = more.Object;
function getStatus(source) {
var status = Ember.get(source, 'otherinfo.status') || Ember.get(source, 'primaryfilters.status.0'),
event = source.events;
if(!status && event) {
if(event.findBy('eventtype', 'DAG_STARTED')) {
status = 'RUNNING';
}
}
return status;
}
function getStartTime(source) {
var time = Ember.get(source, 'otherinfo.startTime'),
event = source.events;
if(!time && event) {
event = event.findBy('eventtype', 'DAG_STARTED');
if(event) {
time = event.timestamp;
}
}
return time;
}
function getEndTime(source) {
var time = Ember.get(source, 'otherinfo.endTime'),
event = source.events;
if(!time && event) {
event = event.findBy('eventtype', 'DAG_FINISHED');
if(event) {
time = event.timestamp;
}
}
return time;
}
function getContainerLogs(source) {
var containerLogs = [],
otherinfo = Ember.get(source, 'otherinfo');
if(!otherinfo) {
return undefined;
}
for (var key in otherinfo) {
if (key.indexOf('inProgressLogsURL_') === 0) {
let logs = Ember.get(source, 'otherinfo.' + key);
if (logs.indexOf("://") === -1) {
let yarnProtocol = this.get('env.app.yarnProtocol');
logs = yarnProtocol + '://' + logs;
}
let attemptID = key.substring(18);
containerLogs.push({
text : attemptID,
href: logs
});
}
}
return containerLogs;
}
function getIdNameMap(source) {
var nameIdMap = Ember.get(source, 'otherinfo.vertexNameIdMapping'),
idNameMap = {};
if(nameIdMap) {
MoreObject.forEach(nameIdMap, function (name, id) {
idNameMap[id] = name;
});
}
return idNameMap;
}
export default DAGInfoSerializer.extend({
maps: {
name: 'primaryfilters.dagName.0',
submitter: 'primaryfilters.user.0',
callerID: 'primaryfilters.callerId.0',
atsStatus: getStatus,
// progress
startTime: getStartTime,
endTime: getEndTime,
// duration
// appID
domain: 'domain',
queueName: 'otherinfo.queueName',
containerLogs: getContainerLogs,
vertexIdNameMap: getIdNameMap,
vertexNameIdMap: 'otherinfo.vertexNameIdMapping',
amWsVersion: 'otherinfo.amWebServiceVersion',
failedTaskAttempts: 'otherinfo.numFailedTaskAttempts',
}
});