open-nomad/ui/mirage/factories/csi-volume.js

62 lines
1.7 KiB
JavaScript
Raw Normal View History

import { Factory } from 'ember-cli-mirage';
import faker from 'nomad-ui/mirage/faker';
import { pickOne } from '../utils';
import { STORAGE_PROVIDERS } from '../common';
const ACCESS_MODES = ['multi-node-single-writer'];
const ATTACHMENT_MODES = ['file-system'];
export default Factory.extend({
id: i => `${faker.hacker.noun().dasherize()}-${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,
});
}
},
});