@nsshunt/stsconfig 1.9.0 → 1.11.0

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.
Files changed (2) hide show
  1. package/package.json +3 -3
  2. package/stsconfig.js +87 -20
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nsshunt/stsconfig",
3
- "version": "1.9.0",
3
+ "version": "1.11.0",
4
4
  "description": "",
5
5
  "main": "stsconfig.js",
6
6
  "dependencies": {
@@ -13,11 +13,11 @@
13
13
  "parser": "@babel/eslint-parser"
14
14
  },
15
15
  "devDependencies": {
16
- "@babel/core": "^7.17.2",
16
+ "@babel/core": "^7.17.5",
17
17
  "@babel/eslint-parser": "^7.17.0",
18
18
  "@babel/plugin-proposal-class-properties": "^7.16.7",
19
19
  "@babel/plugin-proposal-private-methods": "^7.16.11",
20
- "eslint": "^8.8.0",
20
+ "eslint": "^8.10.0",
21
21
  "jest": "^27.5.1"
22
22
  },
23
23
  "scripts": {
package/stsconfig.js CHANGED
@@ -3,6 +3,12 @@ const { accessSync, constants, readFileSync } = require('fs');
3
3
  const debug = require('debug')(`proc:${process.pid}`);
4
4
  require('colors');
5
5
 
6
+ // Order for config settings
7
+ // -------------------------
8
+ // Passwords;
9
+ // Use password specified within a database password file (if present)
10
+ // Fall back to use a password from an environment variable
11
+
6
12
  // Add tthe STSENVFILE to script run commands in order to use the require .env file for configuration
7
13
  let envfile = (process.env.STSENVFILE === undefined ? '../stsglobalresources/.env' : process.env.STSENVFILE);
8
14
  let yamlfile = (process.env.STSYAMLFILE === undefined ? '../stsglobalresources/config.yml' : process.env.STSYAMLFILE);
@@ -21,32 +27,30 @@ try {
21
27
  const defconfig =
22
28
  {
23
29
  // Node runtime environment
24
- isProduction: process.env.NODE_ENV === 'production'
30
+ isProduction: (process.env.NODE_ENV === 'production')
25
31
  // Log error messages to the console within the microservice
26
32
  ,consoleLogErrors: (process.env.CONSOLE_LOG_ERRORS === undefined ? false : (process.env.CONSOLE_LOG_ERRORS === "true" ? true : false ))
27
33
  // Database username.
28
- ,dbuser: process.env.DB_USER
34
+ ,dbuser: (process.env.DB_USER === undefined ? 'postgres' : process.env.DB_USER)
29
35
  // Database password.
30
- ,dbpassword: process.env.DB_PASSWORD
36
+ ,dbpassword: (process.env.DB_PASSWORD === undefined ? 'password' : process.env.DB_PASSWORD)
37
+ // Database password file.
38
+ ,dbpasswordfile: process.env.DB_PASSWORD_FILE
31
39
  // Database host.
32
- ,dbhost: process.env.DB_HOST
40
+ ,dbhost: (process.env.DB_HOST === undefined ? 'localhost' : process.env.DB_HOST)
33
41
  // Database port.
34
- ,dbport: process.env.DB_PORT
42
+ ,dbport: (process.env.DB_PORT === undefined ? '5432' : process.env.DB_PORT)
35
43
  // Database name.
36
- ,database: process.env.DB_DATABASE
44
+ ,database: (process.env.DB_DATABASE === undefined ? 'stsrestmsdb01' : process.env.DB_DATABASE) // STS REST MicroService Database 01
37
45
  // Database connection string to be used in production mode.
38
46
  ,databaseUrl: process.env.DATABASE_URL
39
- // Computed connection string to be used in development mode.
40
- ,connectionString: `postgresql://${process.env.DB_USER}:${process.env.DB_PASSWORD}@${process.env.DB_HOST}:${process.env.DB_PORT}/${process.env.DB_DATABASE}`
41
- // Default computed connection string for postgres. Database name = postgres.
42
- ,defaultDatabaseConnectionString: `postgresql://${process.env.DB_USER}:${process.env.DB_PASSWORD}@${process.env.DB_HOST}:${process.env.DB_PORT}/postgres`
43
47
  // Database script(s) folder
44
48
  ,databasescriptfolder: (process.env.DB_SCRIPT_FOLDER === undefined ? "/var/lib/sts/stsglobalresources/db-scripts" : process.env.DB_SCRIPT_FOLDER)
45
49
 
46
50
  // Use the on-screen UI for the server. Set to false for head-less mode (i.e. inside cluster etc.)
47
51
  ,useui: (process.env.USEUI === undefined ? true : (process.env.USEUI === "true" ? true : false ))
48
52
  // The maximum pool size for pg. There will be one pool per thread.
49
- ,poolSize: (process.env.POOL_SIZE === undefined ? 20 : parseInt(process.env.POOL_SIZE))
53
+ ,poolSize: (process.env.POOL_SIZE === undefined ? 500 : parseInt(process.env.POOL_SIZE))
50
54
  // Maximum number of CPUs (incl. logical processors) to use within the Microservice.
51
55
  // Use -1 to use all available within the runtime container. Each CPU will spawn a node work thread.
52
56
  ,useCPUs: (process.env.MAX_CPU === undefined ? -1 : parseFloat(process.env.MAX_CPU))
@@ -113,23 +117,51 @@ const defconfig =
113
117
  */
114
118
 
115
119
  // STSREST01 Server endpoint
116
- ,rest01endpoint: (process.env.REST01_ENDPOINT === undefined ? "http://localhost" : process.env.REST01_ENDPOINT)
120
+ ,rest01endpoint: (process.env.REST01_ENDPOINT === undefined ?
121
+ (process.env.ENDPOINT === undefined ? "http://localhost" : process.env.ENDPOINT)
122
+ : process.env.REST01_ENDPOINT)
117
123
  // STSREST01 Server port (listen port for the service)
118
- ,rest01hostport: (process.env.REST01_HOST_PORT === undefined ? "3000" : process.env.REST01_HOST_PORT)
124
+ ,rest01hostport: (process.env.REST01_HOST_PORT === undefined ?
125
+ (process.env.HOST_PORT === undefined ? "3000" : process.env.HOST_PORT)
126
+ : process.env.REST01_HOST_PORT)
119
127
  // STSREST01 Server port (client port to access the service)
120
- ,rest01port: (process.env.REST01_PORT === undefined ? "3000" : process.env.REST01_PORT)
128
+ ,rest01port: (process.env.REST01_PORT === undefined ?
129
+ (process.env.PORT === undefined ? "3000" : process.env.PORT)
130
+ : process.env.REST01_PORT)
121
131
  // STSREST01 Server endpoint
122
- ,rest01apiroot: (process.env.REST01_APIROOT === undefined ? "/stsrest01/v1/im" : process.env.REST01_APIROOT)
132
+ ,rest01apiroot: (process.env.REST01_APIROOT === undefined ?
133
+ (process.env.APIROOT === undefined ? "/stsrest01/v1/im" : process.env.APIROOT)
134
+ : process.env.REST01_APIROOT)
135
+ // STSREST01 Prometheus metric support
136
+ ,rest01prometheussupport: (process.env.REST01_PROM_SUPPORT === undefined ?
137
+ (process.env.PROM_SUPPORT === undefined ? true : (process.env.PROM_SUPPORT === "true" ? true : false))
138
+ : (process.env.REST01_PROM_SUPPORT === "true" ? true : false))
139
+ // STSREST01 Cluster Server port (port used for cluster prometheus scrapes). Service will listen on this port at mount point /metrics
140
+ ,rest01prometheusclusterport: (process.env.REST01_PROM_CLUSTER_PORT === undefined ?
141
+ (process.env.PROM_CLUSTER_PORT === undefined ? "3010" : process.env.PROM_CLUSTER_PORT)
142
+ : process.env.REST01_PROM_CLUSTER_PORT)
123
143
  // STSREST01 Service Name
124
- ,rest01servicename: (process.env.REST01_SERVICE_NAME === undefined ? "STSRest01" : process.env.REST01_SERVICE_NAME)
144
+ ,rest01servicename: (process.env.REST01_SERVICE_NAME === undefined ?
145
+ (process.env.SERVICE_NAME === undefined ? "STSRest01" : process.env.SERVICE_NAME)
146
+ : process.env.REST01_SERVICE_NAME)
125
147
  // STSREST01 Service Version
126
- ,rest01serviceversion: (process.env.REST01_SERVICE_VERSION === undefined ? "1.0.0" : process.env.REST01_SERVICE_VERSION)
148
+ ,rest01serviceversion: (process.env.REST01_SERVICE_VERSION === undefined ?
149
+ (process.env.SERVICE_VERSION === undefined ? "1.0.0" : process.env.SERVICE_VERSION)
150
+ : process.env.REST01_SERVICE_VERSION)
127
151
  // STSREST01 Service Credentials
128
152
  // -----------------------------
129
153
  // STSREST01 Server username email
130
- ,rest01email: (process.env.REST01_EMAIL === undefined ? "K6TestUser@sts" : process.env.REST01_EMAIL)
154
+ ,rest01email: (process.env.REST01_EMAIL === undefined ?
155
+ (process.env.EMAIL === undefined ? "K6TestUser@sts" : process.env.EMAIL)
156
+ : process.env.REST01_EMAIL)
131
157
  // STSREST01 Server username password
132
- ,rest01password: (process.env.REST01_PASSWORD === undefined ? "K6TestUserPassword" : process.env.REST01_PASSWORD)
158
+ ,rest01password: (process.env.REST01_PASSWORD === undefined ?
159
+ (process.env.PASSWORD === undefined ? "K6TestUserPassword" : process.env.PASSWORD)
160
+ : process.env.REST01_PASSWORD)
161
+ // STSREST01 Server username password file
162
+ ,rest01passwordfile: (process.env.REST01_PASSWORD_FILE === undefined ?
163
+ ( process.env.PASSWORD_FILE === undefined ? "rest01passwordfile" : process.env.PASSWORD_FILE)
164
+ : process.env.REST01_PASSWORD_FILE)
133
165
 
134
166
 
135
167
  // STS Instrument Manager Service endpoint
@@ -140,6 +172,10 @@ const defconfig =
140
172
  ,import: (process.env.IM_PORT === undefined ? "3001" : process.env.IM_PORT)
141
173
  // STS Instrument Manager Service endpoint
142
174
  ,imapiroot: (process.env.IM_APIROOT === undefined ? "/stsinstrumentmanager/v1" : process.env.IM_APIROOT)
175
+ // STS Instrument Manager Prometheus metric support
176
+ ,imprometheussupport: (process.env.IM_PROM_SUPPORT === undefined ? true : (process.env.IM_PROM_SUPPORT === "true" ? true : false ))
177
+ // STS Instrument Manager Cluster Server port (port used for cluster prometheus scrapes)
178
+ ,imprometheusclusterport: (process.env.IM_PROM_CLUSTER_PORT === undefined ? "3010" : process.env.IM_PROM_CLUSTER_PORT)
143
179
  // STS Instrument Manager Service Name
144
180
  ,imservicename: (process.env.IM_SERVICE_NAME === undefined ? "STSInstrumentManager" : process.env.IM_SERVICE_NAME)
145
181
  // STS Instrument Manager Service Version
@@ -159,6 +195,10 @@ const defconfig =
159
195
  ,toport: (process.env.TO_PORT === undefined ? "3004" : process.env.TO_PORT)
160
196
  // STS Test Orchestrator Service endpoint
161
197
  ,toapiroot: (process.env.TO_APIROOT === undefined ? "/ststestorchestrator/v1" : process.env.TO_APIROOT)
198
+ // STS Test Orchestrator Prometheus metric support
199
+ ,toprometheussupport: (process.env.TO_PROM_SUPPORT === undefined ? true : (process.env.TO_PROM_SUPPORT === "true" ? true : false ))
200
+ // STS Test Orchestrator Cluster Server port (port used for cluster prometheus scrapes)
201
+ ,toprometheusclusterport: (process.env.TO_PROM_CLUSTER_PORT === undefined ? "3010" : process.env.TO_PROM_CLUSTER_PORT)
162
202
  // STS Test Orchestrator Service Name
163
203
  ,toservicename: (process.env.TO_SERVICE_NAME === undefined ? "STSTestOrchestrator" : process.env.TO_SERVICE_NAME)
164
204
  // STS Test Orchestrator Service Version
@@ -178,6 +218,10 @@ const defconfig =
178
218
  ,asport: (process.env.AS_PORT === undefined ? "3002" : process.env.AS_PORT)
179
219
  // Auth Server endpoint
180
220
  ,asapiroot: (process.env.AS_APIROOT === undefined ? "/stsauth/v1" : process.env.AS_APIROOT)
221
+ // Auth Server Prometheus metric support
222
+ ,asprometheussupport: (process.env.AS_PROM_SUPPORT === undefined ? true : (process.env.AS_PROM_SUPPORT === "true" ? true : false ))
223
+ // Auth Prometheus Cluster Server port (port used for cluster prometheus scrapes)
224
+ ,asprometheusclusterport: (process.env.AS_PROM_CLUSTER_PORT === undefined ? "3012" : process.env.AS_PROM_CLUSTER_PORT)
181
225
  // STSAuth Service Name
182
226
  ,asservicename: (process.env.AS_SERVICE_NAME === undefined ? "STSAuth" : process.env.AS_SERVICE_NAME)
183
227
  // STSAuth Service Version
@@ -189,6 +233,10 @@ const defconfig =
189
233
  // Auth Server username password
190
234
  ,aspassword: (process.env.AS_PASSWORD === undefined ? "K6TestUserPassword" : process.env.AS_PASSWORD)
191
235
 
236
+ // STS Test Runner Prometheus metric support
237
+ ,trprometheussupport: (process.env.TR_PROM_SUPPORT === undefined ? true : (process.env.TR_PROM_SUPPORT === "true" ? true : false ))
238
+ // STS Test Runner Cluster Server port (port used for cluster prometheus scrapes)
239
+ ,trprometheusclusterport: (process.env.TR_PROM_CLUSTER_PORT === undefined ? "3010" : process.env.TR_PROM_CLUSTER_PORT)
192
240
  // STS Test Runner Service Name
193
241
  ,trservicename: (process.env.TR_SERVICE_NAME === undefined ? "STSRestRunner" : process.env.TR_SERVICE_NAME)
194
242
  // STS Test Runner Service Version
@@ -265,7 +313,26 @@ const defconfig =
265
313
  // timeout <number> Socket timeout in milliseconds. This will set the timeout when the socket is created.
266
314
  }
267
315
 
316
+ if (defconfig.dbpasswordfile !== undefined)
317
+ {
318
+ try {
319
+ accessSync(defconfig.dbpasswordfile, constants.R_OK);
320
+ const data = readFileSync(defconfig.dbpasswordfile, 'utf8');
321
+ defconfig.dbpassword = data;
322
+ debug(`Successfully loaded database password file: [${defconfig.dbpasswordfile}]`.green);
323
+ } catch (err) {
324
+ debug(`Problem loading database password file: [${defconfig.dbpasswordfile}], Error: [${err}]`.red);
325
+ }
326
+ }
327
+
268
328
  // Preference order is YAML file then .env file
269
- const $options = {...deffileconfig, ...defconfig};
329
+ const $options = {
330
+ ...deffileconfig,
331
+ ...defconfig
332
+ // Computed connection string to be used in development mode.
333
+ ,connectionString: `postgresql://${defconfig.dbuser}:${defconfig.dbpassword}@${defconfig.dbhost}:${defconfig.dbport}/${defconfig.database}`
334
+ // Default computed connection string for postgres. Database name = postgres. Used by utilites that create and/or update the STS database(s).
335
+ ,defaultDatabaseConnectionString: `postgresql://${defconfig.dbuser}:${defconfig.dbpassword}@${defconfig.dbhost}:${defconfig.dbport}/postgres`
336
+ }
270
337
 
271
338
  module.exports = { $options }