blob: a1ca74266845e6d4c4c1f9a1cd3f1e8e52d20ec9 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
import React from 'react'
import PropTypes from 'prop-types'
import { useSelector } from 'react-redux'
import RackFillBar from './elements/RackFillBar'
function RackSpaceFillContainer({ rackId, ...props }) {
const fillFraction = useSelector((state) => {
const rack = state.topology.racks[rackId]
if (!rack) {
return 0
}
const { machines, cpus, gpus, memories, storages } = state.topology
let energyConsumptionTotal = 0
for (const machineId of rack.machines) {
if (!machineId) {
continue
}
const machine = machines[machineId]
machine.cpus.forEach((id) => (energyConsumptionTotal += cpus[id].energyConsumptionW))
machine.gpus.forEach((id) => (energyConsumptionTotal += gpus[id].energyConsumptionW))
machine.memories.forEach((id) => (energyConsumptionTotal += memories[id].energyConsumptionW))
machine.storages.forEach((id) => (energyConsumptionTotal += storages[id].energyConsumptionW))
}
return Math.min(1, energyConsumptionTotal / rack.powerCapacityW)
})
return <RackFillBar {...props} type="energy" fillFraction={fillFraction} />
}
RackSpaceFillContainer.propTypes = {
rackId: PropTypes.string.isRequired,
}
export default RackSpaceFillContainer
|