github.com/anth0d/nomad@v0.0.0-20221214183521-ae3a0a2cad06/ui/mirage/factories/csi-volume.js (about) 1 import { Factory } from 'ember-cli-mirage'; 2 import faker from 'nomad-ui/mirage/faker'; 3 import { pickOne } from '../utils'; 4 import { STORAGE_PROVIDERS } from '../common'; 5 import { dasherize } from '@ember/string'; 6 7 const ACCESS_MODES = ['multi-node-single-writer']; 8 const ATTACHMENT_MODES = ['file-system']; 9 10 export default Factory.extend({ 11 id: (i) => `${dasherize(faker.hacker.noun())}-${i}`.toLowerCase(), 12 name() { 13 return this.id; 14 }, 15 16 externalId: () => `vol-${faker.random.uuid().split('-')[0]}`, 17 18 // Topologies is currently unused by the UI. This should 19 // eventually become dynamic. 20 topologies: () => [{ foo: 'bar' }], 21 22 accessMode: faker.helpers.randomize(ACCESS_MODES), 23 attachmentMode: faker.helpers.randomize(ATTACHMENT_MODES), 24 25 schedulable: faker.random.boolean, 26 provider: faker.helpers.randomize(STORAGE_PROVIDERS), 27 version: '1.0.1', 28 controllerRequired: faker.random.boolean, 29 controllersHealthy: () => faker.random.number(10), 30 controllersExpected() { 31 return this.controllersHealthy + faker.random.number(10); 32 }, 33 nodesHealthy: () => faker.random.number(10), 34 nodesExpected() { 35 return this.nodesHealthy + faker.random.number(10); 36 }, 37 38 afterCreate(volume, server) { 39 if (!volume.namespaceId) { 40 const namespace = server.db.namespaces.length 41 ? pickOne(server.db.namespaces).id 42 : null; 43 volume.update({ 44 namespace, 45 namespaceId: namespace, 46 }); 47 } else { 48 volume.update({ 49 namespace: volume.namespaceId, 50 }); 51 } 52 53 if (!volume.plugin) { 54 const plugin = server.db.csiPlugins.length 55 ? pickOne(server.db.csiPlugins) 56 : null; 57 volume.update({ 58 PluginId: plugin && plugin.id, 59 }); 60 } else { 61 volume.update({ 62 PluginId: volume.plugin.id, 63 }); 64 } 65 }, 66 });