UNPKG

4.63 kBJavaScriptView Raw
1'use strict';
2Object.defineProperty(exports, "__esModule", { value: true });
3const node_1 = require("./node");
4/**
5 * Class reprensenting a swarm
6 */
7class Swarm {
8 /**
9 * Creates a new swarm
10 * @param {Modem} modem Modem to connect to the remote service
11 */
12 constructor(modem) {
13 this.data = {};
14 this.modem = modem;
15 }
16 /**
17 * Initialize a new swarm
18 * https://docs.docker.com/engine/reference/api/docker_remote_api_v1.24/#/initialize-a-new-swarm
19 * @param {Object} opts Query params in the request (optional)
20 * @return {Promise} Promise return the new node
21 */
22 init(opts) {
23 const call = {
24 path: '/swarm/init?',
25 method: 'POST',
26 options: opts,
27 statusCodes: {
28 200: true,
29 400: 'bad parameter',
30 406: 'node is already part of a swarm'
31 }
32 };
33 return new Promise((resolve, reject) => {
34 this.modem.dial(call, (err, nodeId) => {
35 if (err)
36 return reject(err);
37 const node = new node_1.Node(this.modem, nodeId);
38 resolve(node);
39 });
40 });
41 }
42 /**
43 * Get low-level information on a swarm
44 * https://docs.docker.com/engine/reference/api/docker_remote_api_v1.24/#/inspect-swarm
45 * The reason why this module isn't called inspect is because that interferes with the inspect utility of node.
46 * @param {Object} opts Query params in the request (optional)
47 * @return {Promise} Promise return the swarm
48 */
49 status(opts) {
50 const call = {
51 path: `/swarm?`,
52 method: 'GET',
53 options: opts,
54 statusCodes: {
55 200: true,
56 404: 'no such swarm',
57 500: 'server error'
58 }
59 };
60 return new Promise((resolve, reject) => {
61 this.modem.dial(call, (err, conf) => {
62 if (err)
63 return reject(err);
64 const swarm = new Swarm(this.modem);
65 swarm.data = conf;
66 resolve(swarm);
67 });
68 });
69 }
70 /**
71 * Join a swarm
72 * https://docs.docker.com/engine/reference/api/docker_remote_api_v1.24/#/join-an-existing-swarm
73 * @param {Object} opts Query params in the request (optional)
74 * @return {Promise} Promise return the result
75 */
76 join(opts) {
77 const call = {
78 path: `/swarm/join?`,
79 method: 'POST',
80 options: opts,
81 statusCodes: {
82 200: true,
83 400: 'bad parameter',
84 406: 'node is already part of a swarm'
85 }
86 };
87 return new Promise((resolve, reject) => {
88 this.modem.dial(call, (err, id) => {
89 if (err)
90 return reject(err);
91 resolve(id);
92 });
93 });
94 }
95 /**
96 * Leave a swarm
97 * https://docs.docker.com/engine/reference/api/docker_remote_api_v1.24/#/leave-a-swarm
98 * @param {Object} opts Query params in the request (optional)
99 * @return {Promise} Promise return the swarm
100 */
101 leave(opts) {
102 const call = {
103 path: `/swarm/leave?`,
104 method: 'POST',
105 options: opts,
106 statusCodes: {
107 200: true,
108 406: 'node is not part of a swarm'
109 }
110 };
111 return new Promise((resolve, reject) => {
112 this.modem.dial(call, (err, res) => {
113 if (err)
114 return reject(err);
115 resolve(res);
116 });
117 });
118 }
119 /**
120 * Update a swarm
121 * https://docs.docker.com/engine/reference/api/docker_remote_api_v1.24/#/update-a-swarm
122 * @param {Object} opts Query params in the request (optional)
123 * @return {Promise} Promise return the swarm
124 */
125 update(opts) {
126 const call = {
127 path: `/swarm/update?`,
128 method: 'POST',
129 options: opts,
130 statusCodes: {
131 200: true,
132 400: 'bad parameter',
133 406: 'node is already part of a swarm'
134 }
135 };
136 return new Promise((resolve, reject) => {
137 this.modem.dial(call, (err, res) => {
138 if (err)
139 return reject(err);
140 resolve(res);
141 });
142 });
143 }
144}
145exports.default = Swarm;
146//# sourceMappingURL=swarm.js.map
\No newline at end of file