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