github.com/zoomfoo/nomad@v0.8.5-0.20180907175415-f28fd3a1a056/ui/mirage/scenarios/default.js (about) 1 import config from 'nomad-ui/config/environment'; 2 3 const withNamespaces = getConfigValue('mirageWithNamespaces', false); 4 const withTokens = getConfigValue('mirageWithTokens', true); 5 const withRegions = getConfigValue('mirageWithRegions', false); 6 7 const allScenarios = { 8 smallCluster, 9 mediumCluster, 10 largeCluster, 11 massiveCluster, 12 allJobTypes, 13 allNodeTypes, 14 emptyCluster, 15 }; 16 17 const scenario = getConfigValue('mirageScenario', 'emptyCluster'); 18 19 export default function(server) { 20 const activeScenario = allScenarios[scenario]; 21 if (!activeScenario) { 22 throw new Error( 23 `Selected Mirage scenario does not exist.\n\n${scenario} not in list: \n\n\t${Object.keys( 24 allScenarios 25 ).join('\n\t')}` 26 ); 27 } 28 29 if (withNamespaces) createNamespaces(server); 30 if (withTokens) createTokens(server); 31 if (withRegions) createRegions(server); 32 activeScenario(server); 33 } 34 35 // Scenarios 36 37 function smallCluster(server) { 38 server.createList('agent', 3); 39 server.createList('node', 5); 40 server.createList('job', 5); 41 } 42 43 function mediumCluster(server) { 44 server.createList('agent', 3); 45 server.createList('node', 50); 46 server.createList('job', 25); 47 } 48 49 // Due to Mirage performance, large cluster scenarios will be slow 50 function largeCluster(server) { 51 server.createList('agent', 5); 52 server.createList('node', 1000); 53 server.createList('job', 100); 54 } 55 56 function massiveCluster(server) { 57 server.createList('agent', 7); 58 server.createList('node', 5000); 59 server.createList('job', 2000); 60 } 61 62 function allJobTypes(server) { 63 server.createList('agent', 3); 64 server.createList('node', 5); 65 66 server.create('job', { type: 'service' }); 67 server.create('job', { type: 'batch' }); 68 server.create('job', { type: 'system' }); 69 server.create('job', 'periodic'); 70 server.create('job', 'parameterized'); 71 server.create('job', { failedPlacements: true }); 72 } 73 74 function allNodeTypes(server) { 75 server.createList('agent', 3); 76 77 server.create('node'); 78 server.create('node', 'forceIPv4'); 79 server.create('node', 'draining'); 80 server.create('node', 'forcedDraining'); 81 server.create('node', 'noDeadlineDraining'); 82 server.create('node', 'withMeta'); 83 84 server.createList('job', 3); 85 } 86 87 function emptyCluster(server) { 88 server.create('agent'); 89 server.create('node'); 90 } 91 92 // Behaviors 93 94 function createTokens(server) { 95 server.createList('token', 3); 96 logTokens(server); 97 } 98 99 function createNamespaces(server) { 100 server.createList('namespace', 3); 101 } 102 103 function createRegions(server) { 104 ['americas', 'europe', 'asia', 'some-long-name-just-to-test'].forEach(id => { 105 server.create('region', { id }); 106 }); 107 } 108 109 /* eslint-disable */ 110 function logTokens(server) { 111 console.log('TOKENS:'); 112 server.db.tokens.forEach(token => { 113 console.log(` 114 Name: ${token.name} 115 Secret: ${token.secretId} 116 Accessor: ${token.accessorId} 117 118 `); 119 }); 120 } 121 122 function getConfigValue(variableName, defaultValue) { 123 const value = config.APP[variableName]; 124 if (value !== undefined) return value; 125 126 console.warn( 127 `No ENV.APP value set for "${variableName}". Defaulting to "${defaultValue}". To set a custom value, modify config/environment.js` 128 ); 129 return defaultValue; 130 } 131 /* eslint-enable */