UNPKG

7.35 kBJavaScriptView Raw
1'use strict';
2Object.defineProperty(exports, "__esModule", { value: true });
3/**
4 * Class reprensenting a network
5 */
6class Network {
7 /**
8 * Creates a new network
9 * @param {Modem} modem Modem to connect to the remote service
10 * @param {string} id Id of the network (optional)
11 */
12 constructor(modem, id) {
13 this.data = {};
14 this.modem = modem;
15 this.id = id;
16 }
17 /**
18 * Get low-level information on a network
19 * https://docs.docker.com/engine/reference/api/docker_remote_api_v1.24/#/inspect-network
20 * The reason why this module isn't called inspect is because that interferes with the inspect utility of node.
21 * @param {Object} opts Query params in the request (optional)
22 * @return {Promise} Promise return the network
23 */
24 status(opts) {
25 const call = {
26 path: `/networks/${this.id}?`,
27 method: 'GET',
28 options: opts,
29 statusCodes: {
30 200: true,
31 404: 'no such network',
32 500: 'server error'
33 }
34 };
35 return new Promise((resolve, reject) => {
36 this.modem.dial(call, (err, conf) => {
37 if (err)
38 return reject(err);
39 const network = new Network(this.modem, this.id);
40 network.data = conf;
41 resolve(network);
42 });
43 });
44 }
45 /**
46 * Remove a network
47 * https://docs.docker.com/engine/reference/api/docker_remote_api_v1.24/#/remove-a-network
48 * @param {Object} opts Query params in the request (optional)
49 * @return {Promise} Promise return the result
50 */
51 remove(opts) {
52 const call = {
53 path: `/networks/${this.id}?`,
54 method: 'DELETE',
55 options: opts,
56 statusCodes: {
57 204: true,
58 404: 'no such network',
59 500: 'server error'
60 }
61 };
62 return new Promise((resolve, reject) => {
63 this.modem.dial(call, (err) => {
64 if (err)
65 return reject(err);
66 resolve();
67 });
68 });
69 }
70 /**
71 * Connect a container into the network
72 * https://docs.docker.com/engine/reference/api/docker_remote_api_v1.24/#/connect-a-container-to-a-network
73 * @param {Object} opts Query params in the request (optional)
74 * @return {Promise} Promise return the network
75 */
76 connect(opts) {
77 const call = {
78 path: `/networks/${this.id}/connect?`,
79 method: 'POST',
80 options: opts,
81 statusCodes: {
82 200: true,
83 403: 'operation not supported for swarm scoped network',
84 404: 'network or container not found',
85 500: 'server error'
86 }
87 };
88 return new Promise((resolve, reject) => {
89 this.modem.dial(call, (err, conf) => {
90 if (err)
91 return reject(err);
92 const network = new Network(this.modem, this.id);
93 network.data = conf;
94 resolve(network);
95 });
96 });
97 }
98 /**
99 * Disonnect a container into the network
100 * https://docs.docker.com/engine/reference/api/docker_remote_api_v1.24/#/disconnect-a-container-from-a-network
101 * @param {Object} opts Query params in the request (optional)
102 * @return {Promise} Promise return the network
103 */
104 disconnect(opts) {
105 const call = {
106 path: `/networks/${this.id}/disconnect?`,
107 method: 'POST',
108 options: opts,
109 statusCodes: {
110 200: true,
111 403: 'operation not supported for swarm scoped network',
112 404: 'network or container not found',
113 500: 'server error'
114 }
115 };
116 return new Promise((resolve, reject) => {
117 this.modem.dial(call, (err, conf) => {
118 if (err)
119 return reject(err);
120 const network = new Network(this.modem, this.id);
121 network.data = conf;
122 resolve(network);
123 });
124 });
125 }
126}
127exports.Network = Network;
128class default_1 {
129 constructor(modem) {
130 this.modem = modem;
131 }
132 /**
133 * Get a Network object
134 * @param {id} string ID of the secret
135 * @return {Network}
136 */
137 get(id) {
138 return new Network(this.modem, id);
139 }
140 /**
141 * Get the list of networks
142 * https://docs.docker.com/engine/reference/api/docker_remote_api_v1.24/#/list-networks
143 * @param {Object} opts Query params in the request (optional)
144 * @return {Promise} Promise returning the result as a list of networks
145 */
146 list(opts) {
147 const call = {
148 path: '/networks?',
149 method: 'GET',
150 options: opts,
151 statusCodes: {
152 200: true,
153 500: 'server error'
154 }
155 };
156 return new Promise((resolve, reject) => {
157 this.modem.dial(call, (err, networks) => {
158 if (err)
159 return reject(err);
160 if (!networks || !networks.length)
161 return resolve([]);
162 resolve(networks.map((conf) => {
163 const network = new Network(this.modem, conf.Id);
164 network.data = conf;
165 return network;
166 }));
167 });
168 });
169 }
170 /**
171 * Create a network
172 * https://docs.docker.com/engine/reference/api/docker_remote_api_v1.24/#/create-a-network
173 * @param {Object} opts Query params in the request (optional)
174 * @return {Promise} Promise return the new network
175 */
176 create(opts) {
177 const call = {
178 path: '/networks/create?',
179 method: 'POST',
180 options: opts,
181 statusCodes: {
182 201: true,
183 404: 'plugin not found',
184 500: 'server error'
185 }
186 };
187 return new Promise((resolve, reject) => {
188 this.modem.dial(call, (err, conf) => {
189 if (err)
190 return reject(err);
191 const network = new Network(this.modem, conf.Id);
192 network.data = conf;
193 resolve(network);
194 });
195 });
196 }
197 /**
198 * Prune network
199 * https://docs.docker.com/engine/api/v1.25/#operation/NetworkPrune
200 * @param {Object} opts Query params in the request (optional)
201 * @return {Promise} Promise returning the container
202 */
203 prune(opts) {
204 const call = {
205 path: `/networks/prune`,
206 method: 'POST',
207 options: opts,
208 statusCodes: {
209 200: true,
210 500: 'server error'
211 }
212 };
213 return new Promise((resolve, reject) => {
214 this.modem.dial(call, (err, res) => {
215 if (err)
216 return reject(err);
217 resolve(res);
218 });
219 });
220 }
221}
222exports.default = default_1;
223//# sourceMappingURL=network.js.map
\No newline at end of file