UNPKG

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