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 }