github.com/manicqin/nomad@v0.9.5/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 everyFeature, 15 emptyCluster, 16 }; 17 18 const scenario = getConfigValue('mirageScenario', 'emptyCluster'); 19 20 export default function(server) { 21 const activeScenario = allScenarios[scenario]; 22 if (!activeScenario) { 23 throw new Error( 24 `Selected Mirage scenario does not exist.\n\n${scenario} not in list: \n\n\t${Object.keys( 25 allScenarios 26 ).join('\n\t')}` 27 ); 28 } 29 30 if (withNamespaces) createNamespaces(server); 31 if (withTokens) createTokens(server); 32 if (withRegions) createRegions(server); 33 activeScenario(server); 34 } 35 36 // Scenarios 37 38 function smallCluster(server) { 39 server.createList('agent', 3); 40 server.createList('node', 5); 41 server.createList('job', 5); 42 server.createList('allocFile', 5); 43 server.create('allocFile', 'dir', { depth: 2 }); 44 } 45 46 function mediumCluster(server) { 47 server.createList('agent', 3); 48 server.createList('node', 50); 49 server.createList('job', 25); 50 } 51 52 // Due to Mirage performance, large cluster scenarios will be slow 53 function largeCluster(server) { 54 server.createList('agent', 5); 55 server.createList('node', 1000); 56 server.createList('job', 100); 57 } 58 59 function massiveCluster(server) { 60 server.createList('agent', 7); 61 server.createList('node', 5000); 62 server.createList('job', 2000); 63 } 64 65 function allJobTypes(server) { 66 server.createList('agent', 3); 67 server.createList('node', 5); 68 69 server.create('job', { type: 'service' }); 70 server.create('job', { type: 'batch' }); 71 server.create('job', { type: 'system' }); 72 server.create('job', 'periodic'); 73 server.create('job', 'parameterized'); 74 server.create('job', { failedPlacements: true }); 75 } 76 77 function allNodeTypes(server) { 78 server.createList('agent', 3); 79 80 server.create('node'); 81 server.create('node', 'forceIPv4'); 82 server.create('node', 'draining'); 83 server.create('node', 'forcedDraining'); 84 server.create('node', 'noDeadlineDraining'); 85 server.create('node', 'withMeta'); 86 87 server.createList('job', 3); 88 } 89 90 function everyFeature(server) { 91 server.createList('agent', 3); 92 93 server.create('node', 'forceIPv4'); 94 server.create('node', 'draining'); 95 server.create('node', 'forcedDraining'); 96 server.create('node', 'noDeadlineDraining'); 97 server.create('node', 'withMeta'); 98 99 const job1 = server.create('job', { 100 type: 'service', 101 activeDeployment: true, 102 namespaceId: 'default', 103 createAllocations: false, 104 }); 105 server.create('job', { type: 'batch', failedPlacements: true, namespaceId: 'default' }); 106 server.create('job', { type: 'system', namespaceId: 'default' }); 107 server.create('job', 'periodic', { namespaceId: 'default' }); 108 server.create('job', 'parameterized', { namespaceId: 'default' }); 109 110 server.create('allocation', 'rescheduled', { jobId: job1.id }); 111 server.create('allocation', 'preempter', { jobId: job1.id }); 112 server.create('allocation', 'preempted', { jobId: job1.id }); 113 } 114 115 function emptyCluster(server) { 116 server.create('agent'); 117 server.create('node'); 118 } 119 120 // Behaviors 121 122 function createTokens(server) { 123 server.createList('token', 3); 124 logTokens(server); 125 } 126 127 function createNamespaces(server) { 128 server.createList('namespace', 3); 129 } 130 131 function createRegions(server) { 132 ['americas', 'europe', 'asia', 'some-long-name-just-to-test'].forEach(id => { 133 server.create('region', { id }); 134 }); 135 } 136 137 /* eslint-disable */ 138 function logTokens(server) { 139 console.log('TOKENS:'); 140 server.db.tokens.forEach(token => { 141 console.log(` 142 Name: ${token.name} 143 Secret: ${token.secretId} 144 Accessor: ${token.accessorId} 145 146 `); 147 }); 148 } 149 150 function getConfigValue(variableName, defaultValue) { 151 const value = config.APP[variableName]; 152 if (value !== undefined) return value; 153 154 console.warn( 155 `No ENV.APP value set for "${variableName}". Defaulting to "${defaultValue}". To set a custom value, modify config/environment.js` 156 ); 157 return defaultValue; 158 } 159 /* eslint-enable */