-
Notifications
You must be signed in to change notification settings - Fork 19
/
get-pool-config.js
89 lines (81 loc) · 2.4 KB
/
get-pool-config.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
'use strict';
const coinstacComputationRegistry = require('coinstac-computation-registry');
const config = require('./config');
const common = require('coinstac-common');
const DBRegistry = require('coinstac-common').services.dbRegistry.DBRegistry;
DBRegistry.Pouchy.plugin(require('pouchdb-adapter-memory'));
const path = require('path');
const pouchDBServerConfig = config['pouch-db-server'];
/**
* Get pool configuration.
* @private
*
* @description utility to generate PipelineRunnerPool inputs, used by local and
* remote processes.
*
* @param {Object} params
* @param {string} params.computationPath
* @param {boolean} [params.isLocal=true]
* @returns {Promise} Resolves to a PipelineRunnerPool
*/
module.exports = function getPoolConfig(params) {
const computationPath = params.computationPath;
const isLocal = ('isLocal' in params && typeof params.isLocal === 'boolean') ?
params.isLocal :
true;
const computationDir = path.dirname(computationPath);
const dbRegistry = common.services.dbRegistry({
isLocal,
isRemote: !isLocal,
local: {
pouchConfig: {
adapter: 'memory',
},
},
noURLPrefix: true, // disable db pre-fixing (e.g. no `up/`, `down/`)
path: path.join(__dirname, '..', '.tmp'),
remote: {
db: {
hostname: 'localhost',
port: pouchDBServerConfig.port,
protocol: 'http',
},
pouchConfig: {
adapter: 'memory',
},
},
});
return Promise.all([
computationDir,
dbRegistry,
coinstacComputationRegistry.factory({
dbRegistry,
isLocal,
registry: [],
}),
]).then(([computationDir, dbRegistry, computationRegistry]) => {
/* eslint-disable global-require, import/no-dynamic-require */
const computation = require(computationPath);
/* eslint-enable global-require, import/no-dynamic-require */
const { name, version } = computation;
const url = `https://github.com/MRN-Code/${name}`;
computationRegistry._getComputationPath = () => computationDir;
computationRegistry.registry.push({
name,
tags: [version],
url,
});
computationRegistry._doAdd({
cwd: path.dirname(require.resolve(computationPath)),
definition: computation,
meta: {
description: `Description for ${name}`,
name,
},
name,
url,
version,
});
return { computationRegistry, dbRegistry };
});
};