@alertlogic/al-collector-js 3.0.7 → 3.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Makefile +1 -0
- package/al_log.js +1 -1
- package/al_servicec.js +1 -1
- package/al_util.js +41 -30
- package/package.json +13 -14
- package/test/al_mock.js +1 -1
- package/test/al_util_test.js +1 -1
- package/test/parse_test.js +4 -4
- package/test/request_retry_test.js +7 -6
package/Makefile
CHANGED
package/al_log.js
CHANGED
|
@@ -185,7 +185,7 @@ function buildHostmeta({hostId, hostmetaElems}, callback) {
|
|
|
185
185
|
let meta = {
|
|
186
186
|
hostUuid : hostId,
|
|
187
187
|
data : hostmetaData,
|
|
188
|
-
dataChecksum :
|
|
188
|
+
dataChecksum : Buffer.from('')
|
|
189
189
|
};
|
|
190
190
|
let sha = crypto.createHash('sha1');
|
|
191
191
|
let hashPayload = hostmetaType.encode(meta).finish();
|
package/al_servicec.js
CHANGED
|
@@ -34,7 +34,7 @@ class AimsC extends m_alUtil.RestServiceClient {
|
|
|
34
34
|
super(apiEndpoint, retryOptions);
|
|
35
35
|
this._cid = cid;
|
|
36
36
|
this._aimsAuth = {
|
|
37
|
-
|
|
37
|
+
username: aimsCreds.access_key_id,
|
|
38
38
|
password: aimsCreds.secret_key
|
|
39
39
|
};
|
|
40
40
|
var cache = cacheDir ? cacheDir : DEFAULT_CACHE_DIR;
|
package/al_util.js
CHANGED
|
@@ -7,15 +7,15 @@
|
|
|
7
7
|
* @end
|
|
8
8
|
* -----------------------------------------------------------------------------
|
|
9
9
|
*/
|
|
10
|
-
|
|
11
|
-
const rp = require('request-promise-native');
|
|
10
|
+
const axios = require('axios');
|
|
12
11
|
const retry = require('retry');
|
|
12
|
+
const http = require('http');
|
|
13
|
+
const https = require('https');
|
|
13
14
|
|
|
14
15
|
let MAX_CONNS_PER_SERVICE = 128;
|
|
15
16
|
|
|
16
17
|
/**
|
|
17
18
|
* @default Refer to https://www.npmjs.com/package/retry
|
|
18
|
-
* set maxRetryTime to 180seconds(3min) to avoid lambda timeout.
|
|
19
19
|
*/
|
|
20
20
|
let DEFAULT_RETRY = {
|
|
21
21
|
// Default values
|
|
@@ -24,18 +24,25 @@ let DEFAULT_RETRY = {
|
|
|
24
24
|
minTimeout: 300,
|
|
25
25
|
retries: 2,
|
|
26
26
|
maxTimeout: 10000,
|
|
27
|
-
maxRetryTime: 180000
|
|
27
|
+
maxRetryTime: 180000
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* @default Refer to httpAgent and httpAgents axios
|
|
32
|
+
*/
|
|
33
|
+
let DEFAULT_HTTP_HTTPS_AGENT_CONFIG = {
|
|
34
|
+
keepAlive: true,
|
|
35
|
+
maxSockets: MAX_CONNS_PER_SERVICE, // Maximum number of sockets to open
|
|
28
36
|
};
|
|
29
37
|
|
|
38
|
+
|
|
30
39
|
/**
|
|
31
|
-
* @function Default retry callback.
|
|
32
|
-
* It doesn't retry 2XX, 3XX and 4XX.
|
|
40
|
+
* @function Default retry callback.
|
|
41
|
+
* It doesn't retry 2XX, 3XX, and 4XX.
|
|
33
42
|
* Keeps retrying 5XX HTTP responses and any system level errors
|
|
34
43
|
**/
|
|
35
|
-
var defaultRetryCb = function(err){
|
|
36
|
-
if (err &&
|
|
37
|
-
(err.statusCode >= 500 ||
|
|
38
|
-
(err.error && err.error.errno))) {
|
|
44
|
+
var defaultRetryCb = function (err) {
|
|
45
|
+
if (err && (err.status >= 500) || (err.response && err.response.status >= 500) || (err.errno)) {
|
|
39
46
|
return true;
|
|
40
47
|
} else {
|
|
41
48
|
return false;
|
|
@@ -47,8 +54,7 @@ var defaultRetryCb = function(err){
|
|
|
47
54
|
* Rest client.
|
|
48
55
|
*
|
|
49
56
|
* @constructor
|
|
50
|
-
* @param {string} endpoint - hostname/address to sent HTTPS
|
|
51
|
-
* requests to.
|
|
57
|
+
* @param {string} endpoint - hostname/address to sent HTTPS requests to.
|
|
52
58
|
*
|
|
53
59
|
*/
|
|
54
60
|
class RestServiceClient {
|
|
@@ -56,9 +62,6 @@ class RestServiceClient {
|
|
|
56
62
|
'use strict';
|
|
57
63
|
this._host = endpoint;
|
|
58
64
|
this._url = 'https://' + endpoint;
|
|
59
|
-
this._pool = {
|
|
60
|
-
maxSockets: MAX_CONNS_PER_SERVICE
|
|
61
|
-
};
|
|
62
65
|
if (retryOptions) {
|
|
63
66
|
this._retryCb = retryOptions.retryCb ? retryOptions.retryCb : defaultRetryCb;
|
|
64
67
|
delete retryOptions.retryCb;
|
|
@@ -74,40 +77,43 @@ class RestServiceClient {
|
|
|
74
77
|
const defaultOptions = {
|
|
75
78
|
method: method,
|
|
76
79
|
url: this._url + path,
|
|
77
|
-
json: true,
|
|
78
80
|
headers: {},
|
|
79
|
-
|
|
81
|
+
json: true,
|
|
82
|
+
httpAgent: new http.Agent(DEFAULT_HTTP_HTTPS_AGENT_CONFIG),
|
|
83
|
+
httpsAgent: new https.Agent(DEFAULT_HTTP_HTTPS_AGENT_CONFIG)
|
|
80
84
|
};
|
|
81
85
|
const options = Object.assign({}, defaultOptions, extra);
|
|
82
86
|
const defaultHeaders = {
|
|
83
87
|
'Accept': 'application/json'
|
|
84
88
|
};
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
89
|
+
if (!options.data || options.body) {
|
|
90
|
+
options.data = options.body;
|
|
91
|
+
}
|
|
92
|
+
Object.assign(options.headers, defaultHeaders, extra.headers ? extra.headers : {});
|
|
88
93
|
return options;
|
|
89
94
|
}
|
|
95
|
+
|
|
90
96
|
request(method, path, extraOptions) {
|
|
91
97
|
'use strict';
|
|
92
98
|
const options = this._initRequestOptions(method, path, extraOptions);
|
|
93
99
|
const retryOptions = this._retryOptions;
|
|
94
100
|
var retryCb = this._retryCb;
|
|
95
|
-
|
|
101
|
+
|
|
96
102
|
var operation = retry.operation(retryOptions);
|
|
97
|
-
|
|
98
|
-
return new Promise(function(resolve, reject) {
|
|
99
|
-
operation.attempt(function(currentAttempt) {
|
|
100
|
-
|
|
101
|
-
.then(
|
|
102
|
-
// We need
|
|
103
|
+
|
|
104
|
+
return new Promise(function (resolve, reject) {
|
|
105
|
+
operation.attempt(function (currentAttempt) {
|
|
106
|
+
axios(options)
|
|
107
|
+
.then(resp => {
|
|
108
|
+
// We need operation.retry here as we want to check if
|
|
103
109
|
// the maximum amount of retries has been reached
|
|
104
110
|
if (retryCb(resp) && operation.retry('retry')) {
|
|
105
111
|
return;
|
|
106
112
|
} else {
|
|
107
|
-
return resolve(resp);
|
|
113
|
+
return resolve(resp.data);
|
|
108
114
|
}
|
|
109
115
|
})
|
|
110
|
-
.catch(
|
|
116
|
+
.catch(err => {
|
|
111
117
|
if (retryCb(err) && operation.retry(err)) {
|
|
112
118
|
return;
|
|
113
119
|
} else {
|
|
@@ -117,21 +123,27 @@ class RestServiceClient {
|
|
|
117
123
|
});
|
|
118
124
|
});
|
|
119
125
|
}
|
|
126
|
+
|
|
120
127
|
post(path, extraOptions) {
|
|
121
128
|
return this.request('POST', path, extraOptions);
|
|
122
129
|
}
|
|
130
|
+
|
|
123
131
|
get(path, extraOptions) {
|
|
124
132
|
return this.request('GET', path, extraOptions);
|
|
125
133
|
}
|
|
134
|
+
|
|
126
135
|
deleteRequest(path, extraOptions) {
|
|
127
136
|
return this.request('DELETE', path, extraOptions);
|
|
128
137
|
}
|
|
138
|
+
|
|
129
139
|
put(path, extraOptions) {
|
|
130
140
|
return this.request('PUT', path, extraOptions);
|
|
131
141
|
}
|
|
142
|
+
|
|
132
143
|
get host() {
|
|
133
144
|
return this._host;
|
|
134
145
|
}
|
|
146
|
+
|
|
135
147
|
get url() {
|
|
136
148
|
return this._url;
|
|
137
149
|
}
|
|
@@ -140,4 +152,3 @@ class RestServiceClient {
|
|
|
140
152
|
module.exports = {
|
|
141
153
|
RestServiceClient: RestServiceClient
|
|
142
154
|
};
|
|
143
|
-
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@alertlogic/al-collector-js",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.8",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "Alert Logic Collector Common Library",
|
|
6
6
|
"repository": {
|
|
@@ -20,26 +20,25 @@
|
|
|
20
20
|
}
|
|
21
21
|
],
|
|
22
22
|
"devDependencies": {
|
|
23
|
-
"jshint": "^2.
|
|
23
|
+
"jshint": "^2.13.6",
|
|
24
24
|
"mocha": "^10.2.0",
|
|
25
|
-
"mocha-jenkins-reporter": "^0.4.
|
|
26
|
-
"nock": "^13.2
|
|
25
|
+
"mocha-jenkins-reporter": "^0.4.8",
|
|
26
|
+
"nock": "^13.3.2",
|
|
27
27
|
"nyc": "^15.1.0",
|
|
28
|
-
"rewire": "^
|
|
29
|
-
"sinon": "^15.0
|
|
30
|
-
"timekeeper": "^2.
|
|
28
|
+
"rewire": "^6.0.0",
|
|
29
|
+
"sinon": "^15.2.0",
|
|
30
|
+
"timekeeper": "^2.3.1"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"async": "
|
|
34
|
-
"
|
|
33
|
+
"async": "3.2.4",
|
|
34
|
+
"axios": "^1.4.0",
|
|
35
|
+
"debug": "4.3.4",
|
|
35
36
|
"lodash.clonedeep": "^4.5.0",
|
|
36
37
|
"lodash.filter": "^4.6.0",
|
|
37
38
|
"lodash.remove": "^4.7.0",
|
|
38
|
-
"moment": "
|
|
39
|
-
"protobufjs": "^7.
|
|
40
|
-
"
|
|
41
|
-
"request-promise-native": "^1.0.9",
|
|
42
|
-
"retry": "^0.13.1"
|
|
39
|
+
"moment": "2.29.4",
|
|
40
|
+
"protobufjs": "^7.2.4",
|
|
41
|
+
"retry": "0.13.1"
|
|
43
42
|
},
|
|
44
43
|
"author": "Alert Logic Inc."
|
|
45
44
|
}
|
package/test/al_mock.js
CHANGED
package/test/al_util_test.js
CHANGED
package/test/parse_test.js
CHANGED
|
@@ -129,10 +129,10 @@ describe('Common parse functions unit tests.', function() {
|
|
|
129
129
|
done();
|
|
130
130
|
});
|
|
131
131
|
|
|
132
|
-
it('Wrong timestamp input', function(done) {
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
132
|
+
it('Wrong timestamp input', function (done) {
|
|
133
|
+
let parseWire1 = rewire('../parse');
|
|
134
|
+
var privParseTs = parseWire1.__get__('parseTs');
|
|
135
|
+
assert.deepEqual(privParseTs('foo'), { sec: 1234567, usec: null });
|
|
136
136
|
done();
|
|
137
137
|
});
|
|
138
138
|
|
|
@@ -80,7 +80,7 @@ describe('HTTP request retry tests', function() {
|
|
|
80
80
|
var endpointsC = new EndpointsC(m_alMock.AL_API, aimsc, 'cwe');
|
|
81
81
|
|
|
82
82
|
endpointsC.getEndpoint('azcollect', 'default').then( resp => {
|
|
83
|
-
assert.equal(resp,
|
|
83
|
+
assert.equal(resp, '');
|
|
84
84
|
done();
|
|
85
85
|
});
|
|
86
86
|
});
|
|
@@ -135,7 +135,8 @@ describe('HTTP request retry tests', function() {
|
|
|
135
135
|
return done();
|
|
136
136
|
})
|
|
137
137
|
.catch(err => {
|
|
138
|
-
assert.equal(err.
|
|
138
|
+
assert.equal(err.code , 'ERR_BAD_REQUEST');
|
|
139
|
+
assert.equal(err.response.status , 401);
|
|
139
140
|
return done();
|
|
140
141
|
});
|
|
141
142
|
});
|
|
@@ -148,7 +149,7 @@ describe('HTTP request retry tests', function() {
|
|
|
148
149
|
.post('/aims/v1/authenticate')
|
|
149
150
|
.reply(201, m_alMock.AIMS_RESPONSE_200);
|
|
150
151
|
var customRetry = function(resp) {
|
|
151
|
-
if (resp.retryCode === customRetryCode) {
|
|
152
|
+
if (resp.data.retryCode === customRetryCode) {
|
|
152
153
|
return true;
|
|
153
154
|
} else {
|
|
154
155
|
return false;
|
|
@@ -178,7 +179,7 @@ describe('HTTP request retry tests', function() {
|
|
|
178
179
|
.post('/aims/v1/authenticate')
|
|
179
180
|
.reply(201, m_alMock.AIMS_RESPONSE_200);
|
|
180
181
|
var customRetry = function(resp) {
|
|
181
|
-
if (resp.
|
|
182
|
+
if (resp.customError === customRetryCode) {
|
|
182
183
|
return false;
|
|
183
184
|
} else {
|
|
184
185
|
return true;
|
|
@@ -199,7 +200,7 @@ describe('HTTP request retry tests', function() {
|
|
|
199
200
|
return done();
|
|
200
201
|
})
|
|
201
202
|
.catch(err =>{
|
|
202
|
-
assert.equal(err.
|
|
203
|
+
assert.equal(err.customError, customRetryCode);
|
|
203
204
|
return done();
|
|
204
205
|
});
|
|
205
206
|
});
|
|
@@ -222,7 +223,7 @@ describe('HTTP request retry tests', function() {
|
|
|
222
223
|
m_alMock.AL_API, m_alMock.AIMS_CREDS, '/tmp', retryOptions);
|
|
223
224
|
aimsc.authenticate()
|
|
224
225
|
.catch(err => {
|
|
225
|
-
assert.equal(err.
|
|
226
|
+
assert.equal(err.response.status, 500);
|
|
226
227
|
var nowMoment = moment();
|
|
227
228
|
const elapsedTime = nowMoment.diff(startTime, 'milliseconds');
|
|
228
229
|
assert.ok(
|