github.com/anth0d/nomad@v0.0.0-20221214183521-ae3a0a2cad06/ui/mirage/factories/agent.js (about)

     1  import { Factory, trait } from 'ember-cli-mirage';
     2  import faker from 'nomad-ui/mirage/faker';
     3  import { provide } from '../utils';
     4  import { DATACENTERS } from '../common';
     5  
     6  const UUIDS = provide(100, faker.random.uuid.bind(faker.random));
     7  const AGENT_STATUSES = ['alive', 'leaving', 'left', 'failed'];
     8  const AGENT_BUILDS = ['1.1.0-beta', '1.0.2-alpha+ent', ...provide(5, faker.system.semver)];
     9  
    10  export default Factory.extend({
    11    id: i => (i / 100 >= 1 ? `${UUIDS[i]}-${i}` : UUIDS[i]),
    12  
    13    name: () => generateName(),
    14  
    15    config: {
    16      UI: {
    17        Enabled: true,
    18      },
    19      ACL: {
    20        Enabled: true
    21      },
    22      Version: {
    23        Version: '1.1.0',
    24        VersionMetadata: 'ent',
    25        VersionPrerelease: 'dev',
    26      },
    27    },
    28  
    29    member() {
    30      const serfPort = faker.random.number({ min: 4000, max: 4999 });
    31      return {
    32        Name: this.name,
    33        Port: serfPort,
    34        Status: faker.helpers.randomize(AGENT_STATUSES),
    35        Address: generateAddress(this.name),
    36        Tags: generateTags(serfPort),
    37      };
    38    },
    39  
    40    version() {
    41      return this.member.Tags?.build || '';
    42    },
    43  
    44    withConsulLink: trait({
    45      afterCreate(agent) {
    46        agent.config.UI.Consul = {
    47          BaseUIURL: 'http://localhost:8500/ui',
    48        };
    49      },
    50    }),
    51  
    52    withVaultLink: trait({
    53      afterCreate(agent) {
    54        agent.config.UI.Vault = {
    55          BaseUIURL: 'http://localhost:8200/ui',
    56        };
    57      },
    58    }),
    59  });
    60  
    61  function generateName() {
    62    return `nomad@${faker.random.boolean() ? faker.internet.ip() : faker.internet.ipv6()}`;
    63  }
    64  
    65  function generateAddress(name) {
    66    return name.split('@')[1];
    67  }
    68  
    69  function generateTags(serfPort) {
    70    const rpcPortCandidate = faker.random.number({ min: 4000, max: 4999 });
    71    return {
    72      port: rpcPortCandidate === serfPort ? rpcPortCandidate + 1 : rpcPortCandidate,
    73      dc: faker.helpers.randomize(DATACENTERS),
    74      build: faker.helpers.randomize(AGENT_BUILDS),
    75    };
    76  }