b9f462fdc1
This is the first step in #10268. If a maximum is not specified, the task group sum uses the memory number instead. The maximum is only shown when it’s higher than the memory sum.
102 lines
3.3 KiB
JavaScript
102 lines
3.3 KiB
JavaScript
import faker from 'nomad-ui/mirage/faker';
|
|
import { provide } from './utils';
|
|
|
|
// Realistically, resource reservations have a low cardinality
|
|
const CPU_RESERVATIONS = [250, 500, 1000, 2000, 2500, 4000];
|
|
const MEMORY_RESERVATIONS = [256, 512, 1024, 2048, 4096, 8192];
|
|
const DISK_RESERVATIONS = [200, 500, 1000, 2000, 5000, 10000, 100000];
|
|
|
|
// There is also a good chance that certain resource restrictions are unbounded
|
|
DISK_RESERVATIONS.push(...Array(500).fill(0));
|
|
|
|
const NETWORK_MODES = ['bridge', 'host'];
|
|
|
|
export const DATACENTERS = provide(
|
|
15,
|
|
(n, i) => `${faker.address.countryCode().toLowerCase()}${i}`
|
|
);
|
|
|
|
export const HOSTS = provide(100, () => {
|
|
const ip = faker.random.boolean() ? faker.internet.ip() : `[${faker.internet.ipv6()}]`;
|
|
return `${ip}:${faker.random.number({ min: 4000, max: 4999 })}`;
|
|
});
|
|
|
|
export const STORAGE_PROVIDERS = ['ebs', 'zfs', 'nfs', 'cow', 'moo'];
|
|
|
|
export function generateResources(options = {}) {
|
|
const resources = {
|
|
Cpu: {
|
|
CpuShares: options.CPU || faker.helpers.randomize(CPU_RESERVATIONS),
|
|
},
|
|
Memory: {
|
|
MemoryMB: options.MemoryMB || faker.helpers.randomize(MEMORY_RESERVATIONS),
|
|
},
|
|
Disk: {
|
|
DiskMB: options.DiskMB || faker.helpers.randomize(DISK_RESERVATIONS),
|
|
},
|
|
Networks: generateNetworks(options.networks),
|
|
Ports: generatePorts(options.networks),
|
|
};
|
|
|
|
if (faker.random.boolean()) {
|
|
const higherMemoryReservations = MEMORY_RESERVATIONS.filter(mb => mb > resources.Memory.MemoryMB);
|
|
resources.Memory.MemoryMaxMB = faker.helpers.randomize(higherMemoryReservations) || resources.Memory.MemoryMB + 1;
|
|
} else {
|
|
resources.Memory.MemoryMaxMB = 0;
|
|
}
|
|
|
|
return resources;
|
|
}
|
|
|
|
export function generateNetworks(options = {}) {
|
|
return Array(faker.random.number({ min: 1, max: 3 }))
|
|
.fill(null)
|
|
.map(() => ({
|
|
Device: `eth${faker.random.number({ max: 5 })}`,
|
|
CIDR: '',
|
|
IP: faker.internet.ip(),
|
|
MBits: 10,
|
|
Mode: faker.helpers.randomize(NETWORK_MODES),
|
|
ReservedPorts: Array(
|
|
faker.random.number({
|
|
min: options.minPorts != null ? options.minPorts : 0,
|
|
max: options.maxPorts != null ? options.maxPorts : 2,
|
|
})
|
|
)
|
|
.fill(null)
|
|
.map(() => ({
|
|
Label: faker.hacker.noun(),
|
|
Value: faker.random.number({ min: 5000, max: 60000 }),
|
|
To: faker.random.number({ min: 5000, max: 60000 }),
|
|
})),
|
|
DynamicPorts: Array(
|
|
faker.random.number({
|
|
min: options.minPorts != null ? options.minPorts : 0,
|
|
max: options.maxPorts != null ? options.maxPorts : 2,
|
|
})
|
|
)
|
|
.fill(null)
|
|
.map(() => ({
|
|
Label: faker.hacker.noun(),
|
|
Value: faker.random.number({ min: 5000, max: 60000 }),
|
|
To: faker.random.number({ min: 5000, max: 60000 }),
|
|
})),
|
|
}));
|
|
}
|
|
|
|
export function generatePorts(options = {}) {
|
|
return Array(
|
|
faker.random.number({
|
|
min: options.minPorts != null ? options.minPorts : 0,
|
|
max: options.maxPorts != null ? options.maxPorts : 2,
|
|
})
|
|
)
|
|
.fill(null)
|
|
.map(() => ({
|
|
Label: faker.hacker.noun(),
|
|
Value: faker.random.number({ min: 5000, max: 60000 }),
|
|
To: faker.random.number({ min: 5000, max: 60000 }),
|
|
HostIP: faker.random.boolean() ? faker.internet.ip() : faker.internet.ipv6(),
|
|
}));
|
|
}
|