mirror of
https://github.com/kemko/nomad.git
synced 2026-01-01 16:05:42 +03:00
Codify common mirage scenarios and make it easy to switch between
This commit is contained in:
@@ -20,6 +20,9 @@ module.exports = function(environment) {
|
||||
|
||||
APP: {
|
||||
blockingQueries: true,
|
||||
mirageScenario: 'smallCluster',
|
||||
mirageWithNamespaces: false,
|
||||
mirageWithTokens: true,
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
@@ -1,16 +1,103 @@
|
||||
import config from 'nomad-ui/config/environment';
|
||||
|
||||
const withNamespaces = getConfigValue('mirageWithNamespaces', false);
|
||||
const withTokens = getConfigValue('mirageWithTokens', true);
|
||||
|
||||
const allScenarios = {
|
||||
smallCluster,
|
||||
mediumCluster,
|
||||
largeCluster,
|
||||
massiveCluster,
|
||||
allJobTypes,
|
||||
allNodeTypes,
|
||||
emptyCluster,
|
||||
};
|
||||
|
||||
const scenario = getConfigValue('mirageScenario', 'emptyCluster');
|
||||
|
||||
export default function(server) {
|
||||
const activeScenario = allScenarios[scenario];
|
||||
if (!activeScenario) {
|
||||
throw new Error(
|
||||
`Selected Mirage scenario does not exist.\n\n${scenario} not in list: \n\n\t${Object.keys(
|
||||
allScenarios
|
||||
).join('\n\t')}`
|
||||
);
|
||||
}
|
||||
|
||||
if (withNamespaces) createNamespaces(server);
|
||||
if (withTokens) createTokens(server);
|
||||
activeScenario(server);
|
||||
}
|
||||
|
||||
// Scenarios
|
||||
|
||||
function smallCluster(server) {
|
||||
server.createList('agent', 3);
|
||||
server.createList('node', 5);
|
||||
server.createList('job', 5);
|
||||
}
|
||||
|
||||
function mediumCluster(server) {
|
||||
server.createList('agent', 3);
|
||||
server.createList('node', 50);
|
||||
server.createList('job', 25);
|
||||
}
|
||||
|
||||
server.createList('namespace', 3);
|
||||
// Due to Mirage performance, large cluster scenarios will be slow
|
||||
function largeCluster(server) {
|
||||
server.createList('agent', 5);
|
||||
server.createList('node', 1000);
|
||||
server.createList('job', 100);
|
||||
}
|
||||
|
||||
server.createList('job', 10);
|
||||
server.createList('job', 5, { failedPlacements: true });
|
||||
function massiveCluster(server) {
|
||||
server.createList('agent', 7);
|
||||
server.createList('node', 5000);
|
||||
server.createList('job', 2000);
|
||||
}
|
||||
|
||||
function allJobTypes(server) {
|
||||
server.createList('agent', 3);
|
||||
server.createList('node', 5);
|
||||
|
||||
server.create('job', { type: 'service' });
|
||||
server.create('job', { type: 'batch' });
|
||||
server.create('job', { type: 'system' });
|
||||
server.create('job', 'periodic');
|
||||
server.create('job', 'parameterized');
|
||||
server.create('job', { failedPlacements: true });
|
||||
}
|
||||
|
||||
function allNodeTypes(server) {
|
||||
server.createList('agent', 3);
|
||||
|
||||
server.create('node');
|
||||
server.create('node', 'forceIPv4');
|
||||
server.create('node', 'draining');
|
||||
server.create('node', 'forcedDraining');
|
||||
server.create('node', 'noDeadlineDraining');
|
||||
server.create('node', 'withMeta');
|
||||
|
||||
server.createList('job', 3);
|
||||
}
|
||||
|
||||
function emptyCluster(server) {
|
||||
server.create('agent');
|
||||
server.create('node');
|
||||
}
|
||||
|
||||
// Behaviors
|
||||
|
||||
function createTokens(server) {
|
||||
server.createList('token', 3);
|
||||
logTokens(server);
|
||||
}
|
||||
|
||||
function createNamespaces(server) {
|
||||
server.createList('namespace', 3);
|
||||
}
|
||||
|
||||
/* eslint-disable */
|
||||
function logTokens(server) {
|
||||
console.log('TOKENS:');
|
||||
@@ -23,4 +110,14 @@ Accessor: ${token.accessorId}
|
||||
`);
|
||||
});
|
||||
}
|
||||
|
||||
function getConfigValue(variableName, defaultValue) {
|
||||
const value = config.APP[variableName];
|
||||
if (value !== undefined) return value;
|
||||
|
||||
console.warn(
|
||||
`No ENV.APP value set for "${variableName}". Defaulting to "${defaultValue}". To set a custom value, modify config/environment.js`
|
||||
);
|
||||
return defaultValue;
|
||||
}
|
||||
/* eslint-enable */
|
||||
|
||||
Reference in New Issue
Block a user