UNPKG

1.94 kBJavaScriptView Raw
1var util = require('./util');
2
3/**
4 * Represents an Task
5 * @param {Object} modem docker-modem
6 * @param {String} id Task's ID
7 */
8var Task = function(modem, id) {
9 this.modem = modem;
10 this.id = id;
11
12 this.defaultOptions = {
13 log: {}
14 };
15};
16
17Task.prototype[require('util').inspect.custom] = function() { return this; };
18
19/**
20 * Query Docker for Task details.
21 *
22 * @param {function} callback
23 */
24Task.prototype.inspect = function(callback) {
25 var self = this;
26
27 var optsf = {
28 path: '/tasks/' + this.id,
29 method: 'GET',
30 statusCodes: {
31 200: true,
32 404: 'unknown task',
33 500: 'server error'
34 }
35 };
36
37 if(callback === undefined) {
38 return new this.modem.Promise(function(resolve, reject) {
39 self.modem.dial(optsf, function(err, data) {
40 if (err) {
41 return reject(err);
42 }
43 resolve(data);
44 });
45 });
46 } else {
47 this.modem.dial(optsf, function(err, data) {
48 callback(err, data);
49 });
50 }
51};
52
53/**
54 * Task logs
55 * @param {Object} opts Logs options. (optional)
56 * @param {Function} callback Callback with data
57 */
58Task.prototype.logs = function(opts, callback) {
59 var self = this;
60 var args = util.processArgs(opts, callback, this.defaultOptions.log);
61
62 var optsf = {
63 path: '/tasks/' + this.id + '/logs?',
64 method: 'GET',
65 isStream: args.opts.follow || false,
66 statusCodes: {
67 101: true,
68 200: true,
69 404: 'no such container',
70 500: 'server error',
71 503: 'node is not part of a swarm'
72 },
73 options: args.opts
74 };
75
76 if(args.callback === undefined) {
77 return new this.modem.Promise(function(resolve, reject) {
78 self.modem.dial(optsf, function(err, data) {
79 if (err) {
80 return reject(err);
81 }
82 resolve(data);
83 });
84 });
85 } else {
86 this.modem.dial(optsf, function(err, data) {
87 args.callback(err, data);
88 });
89 }
90};
91
92
93module.exports = Task;