diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-app.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-app.js index 8b5474f..13a3029 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-app.js +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/models/yarn-app.js @@ -50,6 +50,8 @@ export default DS.Model.extend({ clusterUsagePercentage: DS.attr('number'), queueUsagePercentage: DS.attr('number'), currentAppAttemptId: DS.attr('string'), + remainingTimeoutInSeconds: DS.attr('number'), + applicationExpiryTime: DS.attr('string'), isFailed: function() { return this.get('finalStatus') == "FAILED" @@ -100,5 +102,38 @@ export default DS.Model.extend({ } return "label label-" + style; - }.property("finalStatus") + }.property("finalStatus"), + + applicationTimeoutValue: function() { + var timeoutValueInSecs = this.get("remainingTimeoutInSeconds"); + if (timeoutValueInSecs > -1) { + return Converter.msToElapsedTime(timeoutValueInSecs * 1000); + } else { + return timeoutValueInSecs; + } + }.property("remainingTimeoutInSeconds"), + + isAppTimeoutConfigured: function() { + if (this.get("remainingTimeoutInSeconds") > -1) { + return true; + } else { + return false; + } + }.property("remainingTimeoutInSeconds"), + + applicationRunDurationStyle: function() { + var remainingInSecs = this.get("remainingTimeoutInSeconds"); + var expiryTimestamp = Converter.dateToTimeStamp(this.get("applicationExpiryTime")); + var expiryInSecs = expiryTimestamp / 1000; + var startTimestamp = Converter.dateToTimeStamp(this.get("startTime")); + var startInSecs = startTimestamp / 1000; + var currentInSecs = Date.now() / 1000; + var width = 0; + if (remainingInSecs > 0) { + var totalRunInSecs = expiryInSecs - startInSecs; + var appRunDurationInSecs = totalRunInSecs - remainingInSecs; + width = appRunDurationInSecs / totalRunInSecs * 100; + } + return "width: " + width + "%"; + }.property("remainingTimeoutInSeconds", "applicationExpiryTime", "startTime") }); diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-app.js b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-app.js index 427c3d8..fdba04a 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-app.js +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/serializers/yarn-app.js @@ -23,9 +23,18 @@ export default DS.JSONAPISerializer.extend({ internalNormalizeSingleResponse(store, primaryModelClass, payload, id, requestType) { if (payload.app) { - payload = payload.app; + payload = payload.app; } - + + var timeoutInSecs = -1; + var appExpiryTime = Converter.timeStampToDate(payload.finishedTime); + if (payload.timeouts && payload.timeouts.timeout && payload.timeouts.timeout[0]) { + timeoutInSecs = payload.timeouts.timeout[0].remainingTimeInSeconds; + if (timeoutInSecs > -1) { + appExpiryTime = Converter.isoDateToDate(payload.timeouts.timeout[0].expiryTime); + } + } + var fixedPayload = { id: id, type: primaryModelClass.modelName, // yarn-app @@ -58,7 +67,9 @@ export default DS.JSONAPISerializer.extend({ numAMContainerPreempted: payload.numAMContainerPreempted, clusterUsagePercentage: payload.clusterUsagePercentage, queueUsagePercentage: payload.queueUsagePercentage, - currentAppAttemptId: payload.currentAppAttemptId + currentAppAttemptId: payload.currentAppAttemptId, + remainingTimeoutInSeconds: timeoutInSecs, + applicationExpiryTime: appExpiryTime } }; @@ -67,7 +78,7 @@ export default DS.JSONAPISerializer.extend({ normalizeSingleResponse(store, primaryModelClass, payload, id, requestType) { - var p = this.internalNormalizeSingleResponse(store, + var p = this.internalNormalizeSingleResponse(store, primaryModelClass, payload, id, requestType); return { data: p }; }, @@ -90,4 +101,4 @@ export default DS.JSONAPISerializer.extend({ return normalizedArrayResponse; } -}); \ No newline at end of file +}); diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app.hbs b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app.hbs index acf00d1..99a79a2 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app.hbs +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-ui/src/main/webapp/app/templates/yarn-app.hbs @@ -45,6 +45,44 @@