Skip to content

Commit

Permalink
factor out row rendering for reusing in podspane
Browse files Browse the repository at this point in the history
  • Loading branch information
matt-deboer committed Oct 30, 2017
1 parent e20820e commit 98b6fc5
Show file tree
Hide file tree
Showing 4 changed files with 537 additions and 228 deletions.
231 changes: 3 additions & 228 deletions pkg/ui/src/components/WorkloadsPage.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,11 @@ import { withRouter } from 'react-router-dom'
import IconAdd from 'material-ui/svg-icons/content/add'
import IconDelete from 'material-ui/svg-icons/action/delete'
import IconSuspend from 'material-ui/svg-icons/content/block'
import IconMore from 'material-ui/svg-icons/navigation/more-horiz'
import Paper from 'material-ui/Paper'

import { arraysEqual } from '../comparators'
import { toHumanizedAge, convertUnits } from '../converters'
import { resourceStatus as resourceStatusIcons } from './icons'
import { compareStatuses, kindsByResourceGroup } from '../utils/resource-utils'
import { getResourceCellValue, renderResourceCell } from '../utils/resource-column-utils'

import FilterBox from './FilterBox'
import ConfirmationDialog from './ConfirmationDialog'
Expand Down Expand Up @@ -523,234 +521,11 @@ class WorkloadsPage extends React.Component {
}

renderCell = (column, row) => {
let { podMetrics } = this.props
switch(column) {
case 'name':
return row.metadata.name
case 'namespace':
return row.metadata.namespace
case 'kind':
return row.kind
case 'actions':
return <IconMore color={'rgba(0,0,0,0.4)'} hoverColor={'rgba(0,0,0,0.87)'} data-rh="Actions..."/>
case 'age':
let age = Date.now() - Date.parse(row.metadata.creationTimestamp)
return toHumanizedAge(age)
case 'status':
return <div style={styles.statusIcon}>{resourceStatusIcons[row.statusSummary]}</div>
case 'pods':
if (row.kind === 'Deployment' || row.kind === 'ReplicaSet' || row.kind === 'ReplicationController') {
return `${(row.status.readyReplicas || 0)} / ${row.spec.replicas}`
} else if (row.kind === 'StatefulSet') {
return `${(row.status.replicas || 0)} / ${row.spec.replicas}`
} else {
return ''
}
case 'cpu_utilized':
if (podMetrics) {
if (row.kind === 'Pod') {
let podKey = `${row.metadata.namespace}/${row.metadata.name}`
let podStats = podMetrics[podKey]
if (!!podStats) {
return convertUnits(podStats.cpu.usage, 'millicores', 'cores', 2)
}
} else if (row.owned) {
let total = 0
let count = 0
let owned = Object.values(row.owned)
while (owned.length) {
let r = owned.shift()
if (r.owned) {
owned.push(...Object.values(r.owned))
} else {
let podKey = `${r.metadata.namespace}/${r.metadata.name}`
let podStats = podMetrics[podKey]
if (!!podStats) {
total += convertUnits(podStats.cpu.usage, 'millicores', 'cores')
count++
}
}
}
return (total / count).toFixed(2)
}
}
return ''
case 'mem_utilized':
if (podMetrics) {
if (row.kind === 'Pod') {
let podKey = `${row.metadata.namespace}/${row.metadata.name}`
let podStats = podMetrics[podKey]
if (!!podStats) {
return convertUnits(podStats.memory.usage, 'bytes', 'gibibytes', 1)
}
} else if (row.owned) {
let total = 0
let count = 0
let owned = Object.values(row.owned)
while (owned.length) {
let r = owned.shift()
if (r.owned) {
owned.push(...Object.values(r.owned))
} else {
let podKey = `${r.metadata.namespace}/${r.metadata.name}`
let podStats = podMetrics[podKey]
if (!!podStats) {
total += convertUnits(podStats.memory.usage, 'bytes', 'gibibytes')
count++
}
}
}
return (total / count).toFixed(1)
}
}
return ''
case 'disk_utilized':
if (podMetrics) {
if (row.kind === 'Pod') {
let podKey = `${row.metadata.namespace}/${row.metadata.name}`
let podStats = podMetrics[podKey]
if (!!podStats) {
return convertUnits(podStats.disk.usage, 'bytes', 'gibibytes', 1)
}
} else if (row.owned) {
let total = 0
let count = 0
let owned = Object.values(row.owned)
while (owned.length) {
let r = owned.shift()
if (r.owned) {
owned.push(...Object.values(r.owned))
} else {
let podKey = `${r.metadata.namespace}/${r.metadata.name}`
let podStats = podMetrics[podKey]
if (!!podStats) {
total += convertUnits(podStats.disk.usage, 'bytes', 'gibibytes')
count++
}
}
}
return (total / count).toFixed(1)
}
}
return ''
default:
return ''
}
return renderResourceCell(column, row, this.props.podMetrics)
}

getCellValue = (column, row) => {
let { podMetrics } = this.props
switch(column) {
case 'id':
return row.key
case 'name':
return row.metadata.name
case 'namespace':
return row.metadata.namespace
case 'kind':
return row.kind
case 'age':
return row.metadata.creationTimestamp
case 'status':
return row.statusSummary
case 'pods':
if (row.kind === 'Deployment' || row.kind === 'ReplicaSet' || row.kind === 'ReplicationController') {
return (row.status.readyReplicas || 0)
} else if (row.kind === 'StatefulSet') {
return (row.status.replicas || 0)
} else {
return -1
}
case 'cpu_utilized':
if (podMetrics) {
if (row.kind === 'Pod') {
let podKey = `${row.metadata.namespace}/${row.metadata.name}`
let podStats = podMetrics[podKey]
if (!!podStats) {
return convertUnits(podStats.cpu.usage, 'millicores', 'cores', 2)
}
} else if (row.owned) {
let total = 0
let count = 0
let owned = Object.values(row.owned)
while (owned.length) {
let r = owned.shift()
if (r.owned) {
owned.push(...Object.values(r.owned))
} else {
let podKey = `${r.metadata.namespace}/${r.metadata.name}`
let podStats = podMetrics[podKey]
if (!!podStats) {
total += convertUnits(podStats.cpu.usage, 'millicores', 'cores')
count++
}
}
}
return (total / count).toFixed(2)
}
}
return -1
case 'mem_utilized':
if (podMetrics) {
if (row.kind === 'Pod') {
let podKey = `${row.metadata.namespace}/${row.metadata.name}`
let podStats = podMetrics[podKey]
if (!!podStats) {
return convertUnits(podStats.memory.usage, 'bytes', 'gibibytes', 1)
}
} else if (row.owned) {
let total = 0
let count = 0
let owned = Object.values(row.owned)
while (owned.length) {
let r = owned.shift()
if (r.owned) {
owned.push(...Object.values(r.owned))
} else {
let podKey = `${r.metadata.namespace}/${r.metadata.name}`
let podStats = podMetrics[podKey]
if (!!podStats) {
total += convertUnits(podStats.memory.usage, 'bytes', 'gibibytes')
count++
}
}
}
return (total / count).toFixed(1)
}
}
return -1
case 'disk_utilized':
if (podMetrics) {
if (row.kind === 'Pod') {
let podKey = `${row.metadata.namespace}/${row.metadata.name}`
let podStats = podMetrics[podKey]
if (!!podStats) {
return convertUnits(podStats.disk.usage, 'bytes', 'gibibytes', 1)
}
} else if (row.owned) {
let total = 0
let count = 0
let owned = Object.values(row.owned)
while (owned.length) {
let r = owned.shift()
if (r.owned) {
owned.push(...Object.values(r.owned))
} else {
let podKey = `${r.metadata.namespace}/${r.metadata.name}`
let podStats = podMetrics[podKey]
if (!!podStats) {
total += convertUnits(podStats.disk.usage, 'bytes', 'gibibytes')
count++
}
}
}
return (total / count).toFixed(1)
}
}
return -1
default:
return ''
}
return getResourceCellValue(column, row, this.props.podMetrics)
}

render() {
Expand Down
Loading

0 comments on commit 98b6fc5

Please sign in to comment.