UNPKG

4.54 kBJavaScriptView Raw
1'use strict';
2Object.defineProperty(exports, "__esModule", { value: true });
3/**
4 * Class representing a node
5 */
6class Node {
7 /**
8 * Create a node
9 * @param {Modem} modem Modem to connect to the remote service
10 * @param {string} id Id of the node (optional)
11 */
12 constructor(modem, id) {
13 this.data = {};
14 this.modem = modem;
15 this.id = id;
16 }
17 /**
18 * Update a node
19 * https://docs.docker.com/engine/reference/api/docker_remote_api_v1.24/#/update-a-node
20 * @param {Object} opts Query params in the request (optional)
21 * @return {Promise} Promise return the new node
22 */
23 update(opts) {
24 const call = {
25 path: `/nodes/${this.id}/update?`,
26 method: 'POST',
27 options: opts,
28 statusCodes: {
29 200: true,
30 404: 'no such node',
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 node = new Node(this.modem, this.id);
39 node.data = conf;
40 resolve(node);
41 });
42 });
43 }
44 /**
45 * Get low-level information on a node
46 * https://docs.docker.com/engine/reference/api/docker_remote_api_v1.24/#/inspect-a-node
47 * The reason why this module isn't called inspect is because that interferes with the inspect utility of node.
48 * @param {Object} opts Query params in the request (optional)
49 * @return {Promise} Promise return the node
50 */
51 status(opts) {
52 const call = {
53 path: `/nodes/${this.id}?`,
54 method: 'GET',
55 options: opts,
56 statusCodes: {
57 200: true,
58 404: 'no such node',
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 node = new Node(this.modem, this.id);
67 node.data = conf;
68 resolve(node);
69 });
70 });
71 }
72 /**
73 * Remove a node
74 * https://docs.docker.com/engine/reference/api/docker_remote_api_v1.24/#/remove-a-node
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: `/nodes/${this.id}?`,
81 method: 'DELETE',
82 options: opts,
83 statusCodes: {
84 204: true,
85 404: 'no such node',
86 500: 'server error'
87 }
88 };
89 return new Promise((resolve, reject) => {
90 this.modem.dial(call, (err) => {
91 if (err)
92 return reject(err);
93 resolve();
94 });
95 });
96 }
97}
98exports.Node = Node;
99class default_1 {
100 /**
101 * Create a node
102 * @param {Modem} modem Modem to connect to the remote service
103 */
104 constructor(modem) {
105 this.modem = modem;
106 }
107 /**
108 * Get a Node object
109 * @param {id} string ID of the secret
110 * @return {Node}
111 */
112 get(id) {
113 return new Node(this.modem, id);
114 }
115 /**
116 * Get the list of nodes
117 * https://docs.docker.com/engine/reference/api/docker_remote_api_v1.24/#/list-nodes
118 * @param {Object} opts Query params in the request (optional)
119 * @return {Promise} Promise returning the result as a list of nodes
120 */
121 list(opts) {
122 const call = {
123 path: '/nodes?',
124 method: 'GET',
125 options: opts,
126 statusCodes: {
127 200: true,
128 500: 'server error'
129 }
130 };
131 return new Promise((resolve, reject) => {
132 this.modem.dial(call, (err, result) => {
133 if (err)
134 return reject(err);
135 if (!result || !result.length)
136 return resolve([]);
137 resolve(result.map((conf) => {
138 const node = new Node(this.modem, conf.ID);
139 node.data = conf;
140 return node;
141 }));
142 });
143 });
144 }
145}
146exports.default = default_1;
147//# sourceMappingURL=node.js.map
\No newline at end of file