-
Notifications
You must be signed in to change notification settings - Fork 5
/
shutdown.js
102 lines (90 loc) · 3.95 KB
/
shutdown.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
/*
----------------------------------------------------------------------------
| QEWD HIT Platform: Quick Single-Platform Installer |
| |
| Copyright (c) 2019 M/Gateway Developments Ltd, |
| Redhill, Surrey UK. |
| All rights reserved. |
| |
| http://www.mgateway.com |
| Email: rtweed@mgateway.com |
| |
| |
| Licensed under the Apache License, Version 2.0 (the "License"); |
| you may not use this file except in compliance with the License. |
| You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
----------------------------------------------------------------------------
11 November 2019
*/
module.exports = function() {
var fs = this.fs;
var requestSync = this.requestSync;
var oidc_params;
var oidc_params_path = '/node/oidc-client/configuration/oidc.json';
if (!fs.existsSync(oidc_params_path)) {
console.log('Error: unable to find ' + oidc_params_path);
console.log('*** Unable to continue shutting down the QEWD Containers');
return;
}
try {
oidc_params = require(oidc_params_path);
}
catch(err) {
console.log('Error: unable to load ' + oidc_params_path);
console.log(err);
console.log('*** Unable to continue shutting down the QEWD Containers');
return;
}
var client_id = 'qewd-monitor-ms';
var client_secret = oidc_params.oidc_provider.clients['qewd-monitor-ms'].client_secret;
var auth = 'Basic ' + Buffer.from(client_id + ':' + client_secret).toString('base64');
var oidc_provider = oidc_params.oidc_provider.host;
var orchestrator = oidc_params.orchestrator.host;
var options = {
url: oidc_provider + '/openid/token',
method: 'POST',
headers: {
Authorization: auth,
'Content-type': 'application/x-www-form-urlencoded'
},
data: 'grant_type=client_credentials'
};
var result = this.requestSync.send(options);
if (!result.content || result.content === '') {
console.log('Error: No body returned by OpenId Connect Provider');
console.log('*** Unable to continue shutting down the QEWD Containers');
return;
}
console.log(result);
try {
var body = JSON.parse(result.content);
access_token = body.access_token;
options = {
url: orchestrator + '/qewd/shutdown_all',
headers: {
Authorization: 'Bearer ' + access_token,
'Content-type': 'application/json',
'x-requested-with': 'XMLHttpRequest',
'x-authorization': auth
},
method: 'GET'
};
var response = this.requestSync.send(options);
console.log(response);
console.log('All QEWD Containers have been signalled to shut down');
}
catch(err) {
console.log('Error: Unable to parse response from OpenId Connect Provider');
console.log(err);
console.log('*** Unable to continue shutting down the QEWD Containers');
return;
}
};