Skip to content

Commit 58f59cc

Browse files
committed
fix(secrets): store server address on fs
1 parent 1e24d5b commit 58f59cc

File tree

6 files changed

+80
-64
lines changed

6 files changed

+80
-64
lines changed

lib/addNewMask.js

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,25 @@
1-
const { secretsServerAddress } = require('./logger');
1+
const { getServerAddress } = require('./helpers');
22

33
async function updateMasks(secret) {
44
try {
5-
const serverAddress = await secretsServerAddress;
6-
console.log(`server address: ${serverAddress}`);
5+
const serverAddress = await getServerAddress();
6+
console.debug(`server address: ${serverAddress}`);
7+
const url = new URL('secrets', serverAddress);
78

8-
const { default: got } = await import('got');
9-
/** @type {import('got').Got} */
10-
const httpClient = got.extend({
11-
prefixUrl: serverAddress,
9+
const { default: httpClient } = await import('got');
10+
const response = await httpClient.post(url, {
11+
json: secret,
1212
responseType: 'json',
13-
throwHttpErrors: false,
1413
});
15-
const response = await httpClient.post(
16-
'secrets',
17-
{ json: secret },
18-
);
1914

20-
if (!response.ok) {
15+
if (response.statusCode !== 201) {
2116
console.error(`could not create mask for secret: ${secret.key}, because server responded with: ${response.statusCode}\n\n${JSON.stringify(response.body)}`);
2217
process.exit(1);
2318
}
2419
console.log(`successfully updated masks with secret: ${secret.key}`);
2520
process.exit(0);
2621
} catch (error) {
27-
console.log(`could not create mask for secret: ${secret.key}, due to error: ${error}`);
22+
console.error(`could not create mask for secret: ${secret.key}, due to error: ${error}`);
2823
process.exit(1);
2924
}
3025
}

lib/const.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
const serverAddressPath = '/root/cf-runtime/SERVER_ADDRESS';
2+
3+
module.exports = {
4+
serverAddressPath,
5+
};

lib/helpers.js

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1-
const { stat } = require('fs/promises');
1+
const { stat, writeFile, readFile } = require('fs/promises');
22
const path = require('path');
33
const logger = require('cf-logs').Logger('codefresh:containerLogger');
44
const getPromiseWithResolvers = require('core-js-pure/es/promise/with-resolvers');
55
const { BuildFinishedSignalFilename } = require('./enums');
6+
const { serverAddressPath } = require('./const');
67

78
const checkFileInterval = 1000;
89

@@ -34,11 +35,32 @@ function watchForBuildFinishedSignal() {
3435
return deferred.promise;
3536
}
3637

38+
const persistServerAddress = async (serverAddress) => {
39+
try {
40+
await writeFile(serverAddressPath, serverAddress, { encoding: 'utf8' });
41+
} catch (error) {
42+
logger.error(`Failed to persist server address: ${error}`);
43+
throw error;
44+
}
45+
};
46+
47+
const getServerAddress = async () => {
48+
try {
49+
const serverAddress = await readFile(serverAddressPath, { encoding: 'utf8' });
50+
return serverAddress;
51+
} catch (error) {
52+
logger.error(`Failed to read server address: ${error}`);
53+
throw error;
54+
}
55+
};
56+
3757
module.exports = {
3858
/**
3959
* Polyfill of `Promise.withResolvers`, TC39 Stage 4 proposal.
4060
* @see https://github.com/tc39/proposal-promise-with-resolvers
4161
*/
4262
getPromiseWithResolvers,
4363
watchForBuildFinishedSignal,
64+
persistServerAddress,
65+
getServerAddress,
4466
};

lib/index.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const path = require('path');
1+
const path = require('node:path');
22
const cflogs = require('cf-logs');
33

44
const loggerOptions = {
@@ -12,7 +12,7 @@ const loggerOptions = {
1212
};
1313
cflogs.init(loggerOptions);
1414

15-
const { Logger } = require('./logger');
15+
const Logger = require('./logger');
1616
const { watchForBuildFinishedSignal } = require('./helpers');
1717

1818
const taskLoggerConfig = JSON.parse(process.env.TASK_LOGGER_CONFIG);

lib/logger.js

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,12 @@ const { ContainerStatus } = require('./enums');
1111
const { LoggerStrategy } = require('./enums');
1212
const { ContainerHandlingStatus } = require('./enums');
1313
const ContainerLogger = require('./ContainerLogger');
14-
const { getPromiseWithResolvers } = require('./helpers');
14+
const { getPromiseWithResolvers, persistServerAddress } = require('./helpers');
1515

1616
const initialState = {
1717
pid: process.pid, status: 'init', lastLogsDate: new Date(), failedHealthChecks: [], restartCounter: 0, containers: {}
1818
};
1919

20-
const deferredServerAddress = getPromiseWithResolvers();
21-
2220
class Logger {
2321

2422
constructor({
@@ -384,11 +382,10 @@ class Logger {
384382
});
385383

386384
const address = await server.listen({ host, port });
387-
deferredServerAddress.resolve(address);
385+
await persistServerAddress(address);
388386
logger.info(`listening for engine updates on ${address}`);
389387
} catch (error) {
390388
logger.error(`could not start server for engine updates due to error: ${error}`);
391-
deferredServerAddress.reject(error);
392389
throw error;
393390
}
394391
}
@@ -432,7 +429,4 @@ class Logger {
432429
}
433430
}
434431

435-
module.exports = {
436-
Logger,
437-
secretsServerAddress: deferredServerAddress.promise,
438-
};
432+
module.exports = Logger;

0 commit comments

Comments
 (0)