open-nomad/ui/mirage/factories/csi-volume.js
Phil Renaud 311a6d82c9
Importing string methods directly from @ember/string (#12499)
* Capitalize methods

* Let ESLint yell at us again

* Dasherize
2022-04-07 15:51:41 -04:00

67 lines
1.8 KiB
JavaScript

import { Factory } from 'ember-cli-mirage';
import faker from 'nomad-ui/mirage/faker';
import { pickOne } from '../utils';
import { STORAGE_PROVIDERS } from '../common';
import { dasherize } from '@ember/string';
const ACCESS_MODES = ['multi-node-single-writer'];
const ATTACHMENT_MODES = ['file-system'];
export default Factory.extend({
id: (i) => `${dasherize(faker.hacker.noun())}-${i}`.toLowerCase(),
name() {
return this.id;
},
externalId: () => `vol-${faker.random.uuid().split('-')[0]}`,
// Topologies is currently unused by the UI. This should
// eventually become dynamic.
topologies: () => [{ foo: 'bar' }],
accessMode: faker.helpers.randomize(ACCESS_MODES),
attachmentMode: faker.helpers.randomize(ATTACHMENT_MODES),
schedulable: faker.random.boolean,
provider: faker.helpers.randomize(STORAGE_PROVIDERS),
version: '1.0.1',
controllerRequired: faker.random.boolean,
controllersHealthy: () => faker.random.number(10),
controllersExpected() {
return this.controllersHealthy + faker.random.number(10);
},
nodesHealthy: () => faker.random.number(10),
nodesExpected() {
return this.nodesHealthy + faker.random.number(10);
},
afterCreate(volume, server) {
if (!volume.namespaceId) {
const namespace = server.db.namespaces.length
? pickOne(server.db.namespaces).id
: null;
volume.update({
namespace,
namespaceId: namespace,
});
} else {
volume.update({
namespace: volume.namespaceId,
});
}
if (!volume.plugin) {
const plugin = server.db.csiPlugins.length
? pickOne(server.db.csiPlugins)
: null;
volume.update({
PluginId: plugin && plugin.id,
});
} else {
volume.update({
PluginId: volume.plugin.id,
});
}
},
});