diff --git a/ui/mirage/factories/node-event.js b/ui/mirage/factories/node-event.js new file mode 100644 index 000000000..a00435d56 --- /dev/null +++ b/ui/mirage/factories/node-event.js @@ -0,0 +1,12 @@ +import { Factory, faker } from 'ember-cli-mirage'; +import { provide } from '../utils'; + +const REF_TIME = new Date(); +const STATES = provide(10, faker.system.fileExt.bind(faker.system)); + +export default Factory.extend({ + subsystem: faker.list.random(...STATES), + message: () => faker.lorem.sentence(), + time: () => faker.date.past(2 / 365, REF_TIME), + details: null, +}); diff --git a/ui/mirage/factories/node.js b/ui/mirage/factories/node.js index ba4bd569e..3097ac19f 100644 --- a/ui/mirage/factories/node.js +++ b/ui/mirage/factories/node.js @@ -4,6 +4,7 @@ import { DATACENTERS, HOSTS } from '../common'; const UUIDS = provide(100, faker.random.uuid.bind(faker.random)); const NODE_STATUSES = ['initializing', 'ready', 'down']; +const REF_DATE = new Date(); export default Factory.extend({ id: i => (i / 100 >= 1 ? `${UUIDS[i]}-${i}` : UUIDS[i]), @@ -28,6 +29,8 @@ export default Factory.extend({ }, }), + drivers: makeDrivers, + attributes() { // TODO add variability to these return { @@ -72,5 +75,42 @@ export default Factory.extend({ server.create('client-stats', { id: node.httpAddr, }); + + const events = server.createList('node-event', faker.random.number({ min: 1, max: 10 }), { + nodeId: node.id, + }); + + node.update({ + eventIds: events.mapBy('id'), + }); }, }); + +function makeDrivers() { + const generate = () => { + const detected = Math.random() > 0.3; + const healthy = detected && Math.random() > 0.3; + const attributes = { + 'driver.name.version': '1.0.0', + 'driver.name.status': 'awesome', + 'driver.name.more.details': 'yeah', + 'driver.name.more.again': 'we got that', + }; + return { + Detected: detected, + Healthy: healthy, + HealthDescription: healthy ? 'Driver is healthy' : 'Uh oh', + UpdateTime: faker.date.past(5 / 365, REF_DATE), + Attributes: Math.random() > 0.3 && detected ? attributes : null, + }; + }; + + return { + docker: generate(), + rkt: generate(), + qemu: generate(), + exec: generate(), + raw_exec: generate(), + java: generate(), + }; +} diff --git a/ui/mirage/factories/task-event.js b/ui/mirage/factories/task-event.js index ab161cdb2..72397110c 100644 --- a/ui/mirage/factories/task-event.js +++ b/ui/mirage/factories/task-event.js @@ -1,4 +1,4 @@ -import { Factory, faker, trait } from 'ember-cli-mirage'; +import { Factory, faker } from 'ember-cli-mirage'; import { provide } from '../utils'; const REF_TIME = new Date(); diff --git a/ui/mirage/factories/task.js b/ui/mirage/factories/task.js index 47afe3bbd..49733e938 100644 --- a/ui/mirage/factories/task.js +++ b/ui/mirage/factories/task.js @@ -1,6 +1,8 @@ import { Factory, faker } from 'ember-cli-mirage'; import { generateResources } from '../common'; +const DRIVERS = ['docker', 'java', 'rkt', 'qemu', 'exec', 'raw_exec']; + export default Factory.extend({ // Hidden property used to compute the Summary hash groupNames: [], @@ -8,6 +10,7 @@ export default Factory.extend({ JobID: '', name: id => `task-${faker.hacker.noun()}-${id}`, + driver: faker.list.random(...DRIVERS), Resources: generateResources, }); diff --git a/ui/mirage/models/node.js b/ui/mirage/models/node.js new file mode 100644 index 000000000..e42622483 --- /dev/null +++ b/ui/mirage/models/node.js @@ -0,0 +1,5 @@ +import { Model, hasMany } from 'ember-cli-mirage'; + +export default Model.extend({ + events: hasMany('node-event'), +}); diff --git a/ui/mirage/serializers/node.js b/ui/mirage/serializers/node.js new file mode 100644 index 000000000..506c19038 --- /dev/null +++ b/ui/mirage/serializers/node.js @@ -0,0 +1,6 @@ +import ApplicationSerializer from './application'; + +export default ApplicationSerializer.extend({ + embed: true, + include: ['events'], +});