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 */