1 | ;
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | /**
|
4 | * Class representing a node
|
5 | */
|
6 | class 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 | }
|
98 | exports.Node = Node;
|
99 | class 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 | }
|
146 | exports.default = default_1;
|
147 | //# sourceMappingURL=node.js.map |
\ | No newline at end of file |