Implement a more generic method.

This commit is contained in:
Julien Fontanet 2016-01-26 15:38:03 +01:00
parent ccb508705b
commit 56f99b2129

View File

@ -35,7 +35,6 @@ function computeCpuMean (cpus) {
}
function computeMax (values) {
// TODO
let max = -Infinity
for (let i = 0; i < values.length; i++) {
if (values > max) {
@ -50,7 +49,6 @@ function computeCpuMax (cpus) {
}
function computeMin (values) {
// TODO
let min = +Infinity
for (let i = 0; i < values.length; i++) {
if (values < min) {
@ -60,21 +58,8 @@ function computeMin (values) {
return min
}
// TODO
function computeCpuMin (cpus) {
return computeMin(cpus.map(computeMin))
// TODO: rebase on top of computeMin()
// let min = +Infinity
// for (let i = 0; i < cpus.length; i++) {
// const valuesByDay = cpus[i]
// for (let j = 0; j < valuesByDay.length; j++) {
// const value = valuesByDay[j]
// if (value < min) {
// min = value
// }
// }
// }
// return min
}
// ===================================================================
@ -82,68 +67,50 @@ function computeCpuMin (cpus) {
class UsageReportPlugin {
constructor (xo) {
this._xo = xo
this._unset = null
this._unsets = []
}
configure ({emails}) {
this.mailsReceivers = emails
}
load () {
let parsedHostDaysLab1 = require('/home/thannos/xo-server/lab1_days.json')
let parsedHostHoursLab1 = require('/home/thannos/xo-server/lab1_hours.json')
let parsedHostDaysLab2 = require('/home/thannos/xo-server/lab2_days.json')
let parsedHostHoursLab2 = require('/home/thannos/xo-server/lab2_hours.json')
let parsedVmDaysNfs = require('/home/thannos/xo-server/nfs_days.json')
let parsedVmHoursNfs = require('/home/thannos/xo-server/nfs_hours.json')
let parsedVmHoursSalt = require('/home/thannos/xo-server/salt_hours.json')
let parsedVmDaysSalt = require('/home/thannos/xo-server/salt_days.json')
const stats = {}
stats['lab1_days'] = require('/home/thannos/xo-server/lab1_days.json')
stats['lab1_hours'] = require('/home/thannos/xo-server/lab1_hours.json')
stats['lab2_days'] = require('/home/thannos/xo-server/lab2_days.json')
stats['lab2_hours'] = require('/home/thannos/xo-server/lab2_hours.json')
stats['nfs_days'] = require('/home/thannos/xo-server/nfs_days.json')
stats['nfs_hours'] = require('/home/thannos/xo-server/nfs_hours.json')
stats['salt_hours'] = require('/home/thannos/xo-server/salt_hours.json')
stats['salt_days'] = require('/home/thannos/xo-server/salt_days.json')
// ===================================================================
this._unset = this._xo.api.addMethod('generateUsageReport', () => {
return 'heracles'
})
this._unset = this._xo.api.addMethod('generateCpuMeanL1Days', () => {
return computeCpuMean(parsedHostDaysLab1.stats.cpus)
})
this._unset = this._xo.api.addMethod('generateCpuMaxL1Days', () => {
return computeCpuMax(parsedHostDaysLab1.stats.cpus)
})
this._unset = this._xo.api.addMethod('generateCpuMinL1Days', () => {
return computeCpuMin(parsedHostDaysLab1.stats.cpus)
})
this._unset = this._xo.api.addMethod('generateLoadMeanL1Days', () => {
// xo-cli generateCpuReport machine=lab1
this._unsets.push(this._xo.api.addMethod('generateCpuReport', ({ machine }) => {
// TODO: compute and returns CPU mean, min & max.
}))
this._unsets.push(this._xo.api.addMethod('generateLoadMeanL1Days', () => {
return computeMean(parsedHostDaysLab1.stats.load)
})
}))
this._unset = this._xo.api.addMethod('generateLoadMaxL1Days', () => {
this._unsets.push(this._xo.api.addMethod('generateLoadMaxL1Days', () => {
return computeMax(parsedHostDaysLab1.stats.load)
})
}))
this._unset = this._xo.api.addMethod('generateLoadMinL1Days', () => {
this._unsets.push(this._xo.api.addMethod('generateLoadMinL1Days', () => {
return computeMin(parsedHostDaysLab1.stats.load)
})
this._unset = this._xo.api.addMethod('generateCpuMeanL2Days', () => {
return computeCpuMean(parsedHostDaysLab2.stats.cpus)
})
this._unset = this._xo.api.addMethod('generateCpuMaxL2Days', () => {
return computeCpuMax(parsedHostDaysLab2.stats.cpus)
})
this._unset = this._xo.api.addMethod('generateCpuMinL2Days', () => {
return computeCpuMin(parsedHostDaysLab2.stats.cpus)
})
this._unset = this._xo.api.addMethod('generateCpuMeanNfsDays', () => {
return computeCpuMean(parsedVmDaysNfs.stats.cpus)
})
this._unset = this._xo.api.addMethod('generateCpuMeanSaltDays', () => {
return computeCpuMean(parsedVmDaysSalt.stats.cpus)
})
// CONCATENATION
// totalMean = `${MeanenneCpuLab1}${MeanenneCpuLab2}`
}))
}
unload () {
this._unset()
for (let i = 0; i < this._unsets; ++i) {
this._unsets[i]()
}
this._unsets.length = 0
}
}
/* if (this._xo.sendEmail) {
@ -165,7 +132,7 @@ fs.readdirSync(dir).forEach(function (file) {
data[file.replace(/\.json$/, '')] = require(dir + file)
}) */
// ===================================================================
// ===================================================================
export default ({ xo }) => new UsageReportPlugin(xo)