mirror of
https://github.com/jambonz/sbc-inbound.git
synced 2025-12-19 04:37:43 +00:00
* K8S changes * k8s: test explicit dns lookup of service * bugfix prev commit * typo * k8s: more dns * k8s: more dns * k8s: more dns fun * k8s cleanup * k8s: user service for rtpengine location * k8s cleanup * typo * change env name for fs in k8s * change k8s service name for feature server * add support for outbound connection mode * k8s change for outbound * minor * bugfix: drachtio connection was dropped after successful connect * drop drachtio connection on call end * Dockerfile * k8s pre-stop hook * actual hook committed * make hjook executable * dockerfile change * time series fix * bugfix: teams transfer using replaces
34 lines
1023 B
JavaScript
34 lines
1023 B
JavaScript
const setName = `${(process.env.JAMBONES_CLUSTER_ID || 'default')}:active-fs`;
|
|
const assert = require('assert');
|
|
|
|
assert.ok(!process.env.K8S || process.env.K8S_FEATURE_SERVER_SERVICE_NAME,
|
|
'when running in Kubernetes, an env var K8S_FEATURE_SERVER_SERVICE_NAME is required');
|
|
|
|
module.exports = (srf, logger) => {
|
|
const {retrieveSet, createSet} = srf.locals.realtimeDbHelpers;
|
|
let idx = 0;
|
|
|
|
if ('test' === process.env.NODE_ENV) {
|
|
createSet(setName, [process.env.JAMBONES_FEATURE_SERVERS]);
|
|
}
|
|
|
|
return async() => {
|
|
try {
|
|
if (process.env.K8S) {
|
|
return process.env.K8S_FEATURE_SERVER_SERVICE_NAME;
|
|
}
|
|
else {
|
|
const fs = await retrieveSet(setName);
|
|
if (0 === fs.length) {
|
|
logger.info('No available feature servers to handle incoming call');
|
|
return;
|
|
}
|
|
logger.debug({fs}, `retrieved ${setName}`);
|
|
return fs[idx++ % fs.length];
|
|
}
|
|
} catch (err) {
|
|
logger.error({err}, `Error retrieving ${setName}`);
|
|
}
|
|
};
|
|
};
|