open-nomad/ui/mirage/factories/task-group.js

57 lines
1.6 KiB
JavaScript
Raw Normal View History

2017-09-19 14:47:10 +00:00
import { Factory, faker } from 'ember-cli-mirage';
const DISK_RESERVATIONS = [200, 500, 1000, 2000, 5000, 10000, 100000];
export default Factory.extend({
name: id => `${faker.hacker.noun().dasherize()}-g-${id}`,
2017-09-19 14:47:10 +00:00
count: () => faker.random.number({ min: 1, max: 4 }),
ephemeralDisk: () => ({
Sticky: faker.random.boolean(),
SizeMB: faker.random.arrayElement(DISK_RESERVATIONS),
Migrate: faker.random.boolean(),
}),
// Directive used to control whether or not allocations are automatically
// created.
createAllocations: true,
2018-05-04 20:08:30 +00:00
// Directived used to control whether or not the allocation should fail
// and reschedule, creating reschedule events.
withRescheduling: false,
2017-09-19 14:47:10 +00:00
afterCreate(group, server) {
const tasks = server.createList('task', group.count, {
taskGroup: group,
});
group.update({
taskIds: tasks.mapBy('id'),
task_ids: tasks.mapBy('id'),
});
if (group.createAllocations) {
Array(group.count)
.fill(null)
.forEach((_, i) => {
2018-05-04 20:08:30 +00:00
const props = {
2017-09-19 14:47:10 +00:00
jobId: group.job.id,
2018-02-16 02:55:59 +00:00
namespace: group.job.namespace,
2017-09-19 14:47:10 +00:00
taskGroup: group.name,
name: `${group.name}.[${i}]`,
2018-05-04 20:08:30 +00:00
rescheduleSuccess: group.withRescheduling ? faker.random.boolean() : null,
rescheduleAttempts: group.withRescheduling
? faker.random.number({ min: 1, max: 5 })
: 0,
};
if (group.withRescheduling) {
server.create('allocation', 'rescheduled', props);
} else {
server.create('allocation', props);
}
2017-09-19 14:47:10 +00:00
});
}
},
});