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