1 | 'use strict'
|
2 |
|
3 | import Modem = require('docker-modem')
|
4 |
|
5 |
|
6 |
|
7 |
|
8 | export class Network {
|
9 | modem: Modem
|
10 | id: String
|
11 | data: Object = {}
|
12 |
|
13 | |
14 |
|
15 |
|
16 |
|
17 |
|
18 | constructor (modem: Modem, id: String) {
|
19 | this.modem = modem
|
20 | this.id = id
|
21 | }
|
22 |
|
23 | |
24 |
|
25 |
|
26 |
|
27 |
|
28 |
|
29 |
|
30 | status (opts?: Object) {
|
31 | const call = {
|
32 | path: `/networks/${this.id}?`,
|
33 | method: 'GET',
|
34 | options: opts,
|
35 | statusCodes: {
|
36 | 200: true,
|
37 | 404: 'no such network',
|
38 | 500: 'server error'
|
39 | }
|
40 | }
|
41 |
|
42 | return new Promise((resolve, reject) => {
|
43 | this.modem.dial(call, (err, conf) => {
|
44 | if (err) return reject(err)
|
45 | const network = new Network(this.modem, this.id)
|
46 | network.data = conf
|
47 | resolve(network)
|
48 | })
|
49 | })
|
50 | }
|
51 |
|
52 | |
53 |
|
54 |
|
55 |
|
56 |
|
57 |
|
58 | remove (opts?: Object): Promise<{}> {
|
59 | const call = {
|
60 | path: `/networks/${this.id}?`,
|
61 | method: 'DELETE',
|
62 | options: opts,
|
63 | statusCodes: {
|
64 | 204: true,
|
65 | 404: 'no such network',
|
66 | 500: 'server error'
|
67 | }
|
68 | }
|
69 |
|
70 | return new Promise((resolve, reject) => {
|
71 | this.modem.dial(call, (err) => {
|
72 | if (err) return reject(err)
|
73 | resolve()
|
74 | })
|
75 | })
|
76 | }
|
77 |
|
78 | |
79 |
|
80 |
|
81 |
|
82 |
|
83 |
|
84 | connect (opts?: Object) {
|
85 | const call = {
|
86 | path: `/networks/${this.id}/connect?`,
|
87 | method: 'POST',
|
88 | options: opts,
|
89 | statusCodes: {
|
90 | 200: true,
|
91 | 403: 'operation not supported for swarm scoped network',
|
92 | 404: 'network or container not found',
|
93 | 500: 'server error'
|
94 | }
|
95 | }
|
96 |
|
97 | return new Promise((resolve, reject) => {
|
98 | this.modem.dial(call, (err, conf) => {
|
99 | if (err) return reject(err)
|
100 | const network = new Network(this.modem, this.id)
|
101 | network.data = conf
|
102 | resolve(network)
|
103 | })
|
104 | })
|
105 | }
|
106 |
|
107 | |
108 |
|
109 |
|
110 |
|
111 |
|
112 |
|
113 | disconnect (opts?: Object): Promise<Network> {
|
114 | const call = {
|
115 | path: `/networks/${this.id}/disconnect?`,
|
116 | method: 'POST',
|
117 | options: opts,
|
118 | statusCodes: {
|
119 | 200: true,
|
120 | 403: 'operation not supported for swarm scoped network',
|
121 | 404: 'network or container not found',
|
122 | 500: 'server error'
|
123 | }
|
124 | }
|
125 |
|
126 | return new Promise((resolve, reject) => {
|
127 | this.modem.dial(call, (err, conf) => {
|
128 | if (err) return reject(err)
|
129 | const network = new Network(this.modem, this.id)
|
130 | network.data = conf
|
131 | resolve(network)
|
132 | })
|
133 | })
|
134 | }
|
135 | }
|
136 |
|
137 | export default class {
|
138 | modem: Modem
|
139 |
|
140 | constructor (modem: Modem) {
|
141 | this.modem = modem
|
142 | }
|
143 |
|
144 | |
145 |
|
146 |
|
147 |
|
148 |
|
149 | get (id: String): Network {
|
150 | return new Network(this.modem, id)
|
151 | }
|
152 |
|
153 | |
154 |
|
155 |
|
156 |
|
157 |
|
158 |
|
159 | list (opts?: Object): Promise<Array<Network>> {
|
160 | const call = {
|
161 | path: '/networks?',
|
162 | method: 'GET',
|
163 | options: opts,
|
164 | statusCodes: {
|
165 | 200: true,
|
166 | 500: 'server error'
|
167 | }
|
168 | }
|
169 |
|
170 | return new Promise((resolve, reject) => {
|
171 | this.modem.dial(call, (err, networks) => {
|
172 | if (err) return reject(err)
|
173 | if (!networks || !networks.length) return resolve([])
|
174 | resolve(networks.map((conf) => {
|
175 | const network = new Network(this.modem, conf.Id)
|
176 | network.data = conf
|
177 | return network
|
178 | }))
|
179 | })
|
180 | })
|
181 | }
|
182 |
|
183 | |
184 |
|
185 |
|
186 |
|
187 |
|
188 |
|
189 | create (opts?: Object): Promise<Network> {
|
190 | const call = {
|
191 | path: '/networks/create?',
|
192 | method: 'POST',
|
193 | options: opts,
|
194 | statusCodes: {
|
195 | 201: true,
|
196 | 404: 'plugin not found',
|
197 | 500: 'server error'
|
198 | }
|
199 | }
|
200 |
|
201 | return new Promise((resolve, reject) => {
|
202 | this.modem.dial(call, (err, conf) => {
|
203 | if (err) return reject(err)
|
204 | const network = new Network(this.modem, conf.Id)
|
205 | network.data = conf
|
206 | resolve(network)
|
207 | })
|
208 | })
|
209 | }
|
210 |
|
211 | |
212 |
|
213 |
|
214 |
|
215 |
|
216 |
|
217 | prune (opts?: Object): Promise<Object> {
|
218 | const call = {
|
219 | path: `/networks/prune`,
|
220 | method: 'POST',
|
221 | options: opts,
|
222 | statusCodes: {
|
223 | 200: true,
|
224 | 500: 'server error'
|
225 | }
|
226 | }
|
227 |
|
228 | return new Promise((resolve, reject) => {
|
229 | this.modem.dial(call, (err, res: Object) => {
|
230 | if (err) return reject(err)
|
231 | resolve(res)
|
232 | })
|
233 | })
|
234 | }
|
235 | }
|