Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
73 changes: 38 additions & 35 deletions lib/Config.js
Original file line number Diff line number Diff line change
Expand Up @@ -655,6 +655,43 @@ class Config extends EventEmitter {
this.mongodb = {};
}

if (config.redis) {
if (config.redis.sentinels) {
this.redis = { sentinels: [], name: null };

assert(typeof config.redis.name === 'string',
'bad config: redis sentinel name must be a string');
this.redis.name = config.redis.name;

assert(Array.isArray(config.redis.sentinels),
'bad config: redis sentinels must be an array');
config.redis.sentinels.forEach(item => {
const { host, port } = item;
assert(typeof host === 'string',
'bad config: redis sentinel host must be a string');
assert(typeof port === 'number',
'bad config: redis sentinel port must be a number');
this.redis.sentinels.push({ host, port });
});
} else {
// check for standalone configuration
this.redis = {};
assert(typeof config.redis.host === 'string',
'bad config: redis.host must be a string');
assert(typeof config.redis.port === 'number',
'bad config: redis.port must be a number');
this.redis.host = config.redis.host;
this.redis.port = config.redis.port;
}
if (config.redis.password !== undefined) {
assert(
this._verifyRedisPassword(config.redis.password),
'bad config: invalid password for redis. password must ' +
'be a string');
this.redis.password = config.redis.password;
}
}

if (config.utapi) {
this.utapi = { component: 's3' };
if (config.utapi.port) {
Expand All @@ -674,42 +711,8 @@ class Config extends EventEmitter {
assert(config.localCache, 'missing required property of utapi ' +
'configuration: localCache');
this.utapi.localCache = config.localCache;
assert(config.utapi.redis, 'missing required property of utapi ' +
assert(config.redis, 'missing required property of utapi ' +
'configuration: redis');
if (config.utapi.redis.sentinels) {
this.utapi.redis = { sentinels: [], name: null };

assert(typeof config.utapi.redis.name === 'string',
'bad config: redis sentinel name must be a string');
this.utapi.redis.name = config.utapi.redis.name;

assert(Array.isArray(config.utapi.redis.sentinels),
'bad config: redis sentinels must be an array');
config.utapi.redis.sentinels.forEach(item => {
const { host, port } = item;
assert(typeof host === 'string',
'bad config: redis sentinel host must be a string');
assert(typeof port === 'number',
'bad config: redis sentinel port must be a number');
this.utapi.redis.sentinels.push({ host, port });
});
} else {
// check for standalone configuration
this.utapi.redis = {};
assert(typeof config.utapi.redis.host === 'string',
'bad config: redis.host must be a string');
assert(typeof config.utapi.redis.port === 'number',
'bad config: redis.port must be a number');
this.utapi.redis.host = config.utapi.redis.host;
this.utapi.redis.port = config.utapi.redis.port;
}
if (config.utapi.redis.password !== undefined) {
assert(
this._verifyRedisPassword(config.utapi.redis.password),
'config: invalid password for utapi redis. password' +
' must be a string');
this.utapi.redis.password = config.utapi.redis.password;
}
if (config.utapi.metrics) {
this.utapi.metrics = config.utapi.metrics;
}
Expand Down
3 changes: 2 additions & 1 deletion lib/utapi/utapi.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@ const _config = require('../Config').config;

// start utapi server
if (_config.utapi) {
const fullConfig = Object.assign({}, _config.utapi);
const fullConfig = Object.assign({}, _config.utapi,
{ redis: _config.redis });
if (_config.vaultd) {
Object.assign(fullConfig, { vaultd: _config.vaultd });
}
Expand Down
5 changes: 3 additions & 2 deletions lib/utapi/utapiReplay.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
const UtapiReplay = require('utapi').UtapiReplay;
const _config = require('../Config').config;

// start utapi server
const replay = new UtapiReplay(_config.utapi);
const utapiConfig = _config.utapi &&
Object.assign({}, _config.utapi, { redis: _config.redis });
const replay = new UtapiReplay(utapiConfig); // start utapi server
replay.start();
7 changes: 5 additions & 2 deletions lib/utapi/utilities.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,11 @@ const { auth } = require('arsenal');
const { UtapiClient } = require('utapi');
const logger = require('../utilities/logger');
const _config = require('../Config').config;
// setup utapi client
const utapi = new UtapiClient(_config.utapi);

const utapiConfig = _config.utapi &&
Object.assign({}, _config.utapi, { redis: _config.redis });

const utapi = new UtapiClient(utapiConfig); // setup utapi client

function _listMetrics(host,
port,
Expand Down