UNPKG

node-docker-api

Version:
205 lines 6.63 kB
'use strict'; /** * Class representing a service */ class Service { /** * Create a service * @param {Modem} modem Modem to connect to the remote service * @param {string} id Id of the service (optional) */ constructor(modem, id) { this.data = {}; this.modem = modem; this.id = id; } /** * Update a service * https://docs.docker.com/engine/reference/api/docker_remote_api_v1.24/#/update-a-service * @param {Object} opts Query params in the request (optional) * @param {Object} auth Authentication (optional) * @return {Promise} Promise return the new service */ update(opts, auth) { const call = { path: `/services/${this.id}/update?`, method: 'POST', options: opts, authconfig: auth, statusCodes: { 200: true, 404: 'no such service', 500: 'server error' } }; return new Promise((resolve, reject) => { this.modem.dial(call, (err, conf) => { if (err) return reject(err); const service = new Service(this.modem, this.id); service.data = conf; resolve(service); }); }); } /** * Get low-level information on a service * https://docs.docker.com/engine/reference/api/docker_remote_api_v1.24/#/inspect-one-or-more-services * The reason why this module isn't called inspect is because that interferes with the inspect utility of service. * @param {Object} opts Query params in the request (optional) * @return {Promise} Promise return the service */ status(opts) { const call = { path: `/services/${this.id}?`, method: 'GET', options: opts, statusCodes: { 200: true, 404: 'no such service', 500: 'server error' } }; return new Promise((resolve, reject) => { this.modem.dial(call, (err, conf) => { if (err) return reject(err); const service = new Service(this.modem, this.id); service.data = conf; resolve(service); }); }); } /** * Remove a service * https://docs.docker.com/engine/reference/api/docker_remote_api_v1.24/#/remove-a-service * @param {Object} opts Query params in the request (optional) * @return {Promise} Promise return the result */ remove(opts) { const call = { path: `/services/${this.id}?`, method: 'DELETE', options: opts, statusCodes: { 200: true, 404: 'no such service', 500: 'server error' } }; return new Promise((resolve, reject) => { this.modem.dial(call, (err, res) => { if (err) return reject(err); resolve(res); }); }); } /** * Logs of a service * https://docs.docker.com/engine/api/v1.27/#operation/ServiceLogs * @param {Object} opts Query params in the request (optional) * @return {Promise} Promise return the result */ logs(opts) { const call = { path: `/services/${this.id}/logs?`, method: 'GET', options: opts, isStream: true, statusCodes: { 101: true, 200: true, 404: 'no such service', 500: 'server error', 501: 'use --experimental to see this', 503: 'node is not part of a swarm' } }; return new Promise((resolve, reject) => { this.modem.dial(call, (err, logs) => { if (err) return reject(err); resolve(logs); }); }); } } exports.Service = Service; class default_1 { /** * Create a service * @param {Modem} modem Modem to connect to the remote service */ constructor(modem) { this.modem = modem; } /** * Get a Service Object * @param {id} string ID of the secret * @return {Network} */ get(id) { return new Service(this.modem, id); } /** * Create a service * https://docs.docker.com/engine/reference/api/docker_remote_api_v1.24/#/create-a-service * @param {Object} opts Query params in the request (optional) * @param {Object} auth Authentication (optional) * @return {Promise} Promise return the new service */ create(opts, auth) { const call = { path: '/services/create?', method: 'POST', options: opts, authconfig: auth, statusCodes: { 201: true, 406: 'node is not part of a swarm', 409: 'name conflicts' } }; return new Promise((resolve, reject) => { this.modem.dial(call, (err, conf) => { if (err) return reject(err); const service = new Service(this.modem, conf.ID); service.data = conf; resolve(service); }); }); } /** * Get the list of services * https://docs.docker.com/engine/reference/api/docker_remote_api_v1.24/#/list-services * @param {Object} opts Query params in the request (optional) * @return {Promise} Promise returning the result as a list of services */ list(opts) { const call = { path: '/services?', method: 'GET', options: opts, statusCodes: { 200: true, 500: 'server error' } }; return new Promise((resolve, reject) => { this.modem.dial(call, (err, result) => { if (err) return reject(err); resolve(result.map((conf) => { const service = new Service(this.modem, conf.ID); service.data = conf; return service; })); }); }); } } Object.defineProperty(exports, "__esModule", { value: true }); exports.default = default_1; //# sourceMappingURL=service.js.map