/
stage.js
48 lines (37 loc) · 1.19 KB
/
stage.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
var removeKeyDots = require("../utils/objs").removeKeyDots;
var utils = require("../utils/utils");
var StageAttempt = require('./stage-attempt').StageAttempt;
var Task = require('./task').Task;
var mixinMongoMethods = require("../mongo/record").mixinMongoMethods;
var RUNNING = utils.RUNNING;
var FAILED = utils.FAILED;
var SUCCEEDED = utils.SUCCEEDED;
function Stage(app, id) {
this.app = app;
this.appId = app.id;
this.id = id;
this.init([ 'appId', 'id' ]);
this.attempts = {};
}
mixinMongoMethods(Stage, "Stage", "Stages");
Stage.prototype.fromStageInfo = function(si) {
return this.set({
name: si['Stage Name'],
'taskCounts.num': si['Number of Tasks'],
rddIDs: si['RDD Info'].map(function (ri) {
return ri['RDD ID'];
}),
parents: si['Parent IDs'],
details: si['Details']
}).set('accumulables', removeKeyDots(si['Accumulables']), true);
};
Stage.prototype.getAttempt = function(attemptId) {
if (typeof attemptId == 'object') {
attemptId = attemptId['Stage Attempt ID'];
}
if (!(attemptId in this.attempts)) {
this.attempts[attemptId] = new StageAttempt(this, attemptId);
}
return this.attempts[attemptId];
};
module.exports.Stage = Stage;