UNPKG

3.68 kBJavaScriptView Raw
1var util = require('./util');
2
3/**
4 * Represents an network
5 * @param {Object} modem docker-modem
6 * @param {String} id Network's id
7 */
8var Network = function(modem, id) {
9 this.modem = modem;
10 this.id = id;
11};
12
13Network.prototype[require('util').inspect.custom] = function() { return this; };
14
15/**
16 * Inspect
17 * @param {Function} callback Callback, if specified Docker will be queried.
18 * @return {Object} Id only if callback isn't specified.
19 */
20Network.prototype.inspect = function(callback) {
21 var self = this;
22
23 var opts = {
24 path: '/networks/' + this.id,
25 method: 'GET',
26 statusCodes: {
27 200: true,
28 404: 'no such network',
29 500: 'server error'
30 }
31 };
32
33
34 if(callback === undefined) {
35 return new this.modem.Promise(function(resolve, reject) {
36 self.modem.dial(opts, function(err, data) {
37 if (err) {
38 return reject(err);
39 }
40 resolve(data);
41 });
42 });
43 } else {
44 this.modem.dial(opts, function(err, data) {
45 callback(err, data);
46 });
47 }
48};
49
50/**
51 * Removes the network
52 * @param {[Object]} opts Remove options (optional)
53 * @param {Function} callback Callback
54 */
55Network.prototype.remove = function(opts, callback) {
56 var self = this;
57 var args = util.processArgs(opts, callback);
58
59 var optsf = {
60 path: '/networks/' + this.id,
61 method: 'DELETE',
62 statusCodes: {
63 200: true,
64 204: true,
65 404: 'no such network',
66 409: 'conflict',
67 500: 'server error'
68 },
69 options: args.opts
70 };
71
72
73 if(args.callback === undefined) {
74 return new this.modem.Promise(function(resolve, reject) {
75 self.modem.dial(optsf, function(err, data) {
76 if (err) {
77 return reject(err);
78 }
79 resolve(data);
80 });
81 });
82 } else {
83 this.modem.dial(optsf, function(err, data) {
84 args.callback(err, data);
85 });
86 }
87};
88
89/**
90 * Connects a container to a network
91 * @param {[Object]} opts Connect options (optional)
92 * @param {Function} callback Callback
93 */
94Network.prototype.connect = function(opts, callback) {
95 var self = this;
96 var args = util.processArgs(opts, callback);
97
98 var optsf = {
99 path: '/networks/' + this.id + '/connect',
100 method: 'POST',
101 statusCodes: {
102 200: true,
103 201: true,
104 404: 'network or container is not found',
105 500: 'server error'
106 },
107 options: args.opts
108 };
109
110 if(args.callback === undefined) {
111 return new this.modem.Promise(function(resolve, reject) {
112 self.modem.dial(optsf, function(err, data) {
113 if (err) {
114 return reject(err);
115 }
116 resolve(data);
117 });
118 });
119 } else {
120 this.modem.dial(optsf, function(err, data) {
121 args.callback(err, data);
122 });
123 }
124};
125
126
127/**
128 * Disconnects a container from a network
129 * @param {[Object]} opts Disconnect options (optional)
130 * @param {Function} callback Callback
131 */
132Network.prototype.disconnect = function(opts, callback) {
133 var self = this;
134 var args = util.processArgs(opts, callback);
135
136 var optsf = {
137 path: '/networks/' + this.id + '/disconnect',
138 method: 'POST',
139 statusCodes: {
140 200: true,
141 201: true,
142 404: 'network or container is not found',
143 500: 'server error'
144 },
145 options: args.opts
146 };
147
148 if(args.callback === undefined) {
149 return new this.modem.Promise(function(resolve, reject) {
150 self.modem.dial(optsf, function(err, data) {
151 if (err) {
152 return reject(err);
153 }
154 resolve(data);
155 });
156 });
157 } else {
158 this.modem.dial(optsf, function(err, data) {
159 args.callback(err, data);
160 });
161 }
162};
163
164
165
166
167module.exports = Network;