@@ -30,30 +30,31 @@ export default function CpuMetricsTab() {
30
30
path : { instance } ,
31
31
query : { project } ,
32
32
} )
33
+
33
34
const { startTime, endTime, dateTimeRangePicker } = useMetricsContext ( )
34
35
35
36
type CpuChartType = OxqlVcpuState | 'all'
36
37
38
+ const queryBase = {
39
+ metricName : 'virtual_machine:vcpu_usage' as const ,
40
+ startTime,
41
+ endTime,
42
+ groupBy : { cols : [ 'vcpu_id' ] , op : 'sum' } as const ,
43
+ }
44
+
37
45
const stateItems : { label : string ; value : CpuChartType } [ ] = [
38
46
{ label : 'State: Running' , value : 'run' } ,
39
47
{ label : 'State: Emulating' , value : 'emulation' } ,
40
48
{ label : 'State: Idling' , value : 'idle' } ,
41
49
{ label : 'State: Waiting' , value : 'waiting' } ,
42
50
{ label : 'All states' , value : 'all' } ,
43
51
]
44
- const [ selectedState , setSelectedState ] = useState ( stateItems [ 0 ] . value )
45
52
46
- const CpuStateMetric = ( { state } : { state : CpuChartType } ) => (
47
- < OxqlMetric
48
- title = { `CPU Utilization: ${ stateItems . find ( ( i ) => i . value === state ) ?. label . replace ( 'State: ' , '' ) } ` }
49
- eqFilters = { { instance_id : instanceData . id , state } }
50
- metricName = { 'virtual_machine:vcpu_usage' as const }
51
- startTime = { startTime }
52
- endTime = { endTime }
53
- groupBy = { { cols : [ 'vcpu_id' ] , op : 'sum' } as const }
54
- />
55
- )
53
+ const [ selectedState , setSelectedState ] = useState ( stateItems [ 0 ] . value )
56
54
55
+ const title = `CPU Utilization: ${ stateItems
56
+ . find ( ( i ) => i . value === selectedState )
57
+ ?. label . replace ( 'State: ' , '' ) } `
57
58
return (
58
59
< >
59
60
< MetricHeader >
@@ -73,18 +74,38 @@ export default function CpuMetricsTab() {
73
74
{ selectedState === 'all' ? (
74
75
< >
75
76
< MetricRow >
76
- < CpuStateMetric state = "run" />
77
- < CpuStateMetric state = "emulation" />
77
+ < OxqlMetric
78
+ title = "CPU Utilization: Running"
79
+ eqFilters = { { instance_id : instanceData . id , state : 'run' } }
80
+ { ...queryBase }
81
+ />
82
+ < OxqlMetric
83
+ title = "CPU Utilization: Emulation"
84
+ eqFilters = { { instance_id : instanceData . id , state : 'emulation' } }
85
+ { ...queryBase }
86
+ />
78
87
</ MetricRow >
79
88
80
89
< MetricRow >
81
- < CpuStateMetric state = "idle" />
82
- < CpuStateMetric state = "waiting" />
90
+ < OxqlMetric
91
+ title = "CPU Utilization: Idling"
92
+ eqFilters = { { instance_id : instanceData . id , state : 'idle' } }
93
+ { ...queryBase }
94
+ />
95
+ < OxqlMetric
96
+ title = "CPU Utilization: Waiting"
97
+ eqFilters = { { instance_id : instanceData . id , state : 'waiting' } }
98
+ { ...queryBase }
99
+ /> { ' ' }
83
100
</ MetricRow >
84
101
</ >
85
102
) : (
86
103
< MetricRow >
87
- < CpuStateMetric state = { selectedState } />
104
+ < OxqlMetric
105
+ title = { title }
106
+ eqFilters = { { instance_id : instanceData . id , state : selectedState } }
107
+ { ...queryBase }
108
+ />
88
109
</ MetricRow >
89
110
) }
90
111
</ MetricCollection >
0 commit comments