]> git.proxmox.com Git - pve-manager.git/blob - PVE/API2Tools.pm
add diskread, diskwrite, netin, netout to ResourceStore grid stats
[pve-manager.git] / PVE / API2Tools.pm
1 package PVE::API2Tools;
2
3 use strict;
4 use warnings;
5
6 sub extract_node_stats {
7 my ($node, $members, $rrd) = @_;
8
9 my $entry = {
10 id => "node/$node",
11 node => $node,
12 type => "node",
13 };
14
15 if (my $d = $rrd->{"pve2-node/$node"}) {
16
17 if (!$members || # no cluster
18 ($members->{$node} && $members->{$node}->{online})) {
19 $entry->{uptime} = ($d->[0] || 0) + 0;
20 $entry->{cpu} = ($d->[5] || 0) + 0;
21 $entry->{mem} = ($d->[8] || 0) + 0;
22 $entry->{disk} = ($d->[12] || 0) + 0;
23 }
24 $entry->{level} = $d->[1];
25 $entry->{maxcpu} = ($d->[4] || 0) + 0;
26 $entry->{maxmem} = ($d->[7] || 0) + 0;
27 $entry->{maxdisk} = ($d->[11] || 0) + 0;
28 }
29
30 return $entry;
31 }
32
33 sub extract_vm_stats {
34 my ($vmid, $data, $rrd) = @_;
35
36 my $entry = {
37 id => "$data->{type}/$vmid",
38 vmid => $vmid + 0,
39 node => $data->{node},
40 type => $data->{type},
41 };
42
43 if (my $d = $rrd->{"pve2-vm/$vmid"}) {
44
45 $entry->{uptime} = ($d->[0] || 0) + 0;
46 $entry->{name} = $d->[1];
47
48 $entry->{maxcpu} = ($d->[3] || 0) + 0;
49 $entry->{cpu} = ($d->[4] || 0) + 0;
50 $entry->{maxmem} = ($d->[5] || 0) + 0;
51 $entry->{mem} = ($d->[6] || 0) + 0;
52 $entry->{maxdisk} = ($d->[7] || 0) + 0;
53 $entry->{disk} = ($d->[8] || 0) + 0;
54 $entry->{netin} = ($d->[9] || 0) + 0;
55 $entry->{netout} = ($d->[10] || 0) + 0;
56 $entry->{diskread} = ($d->[11] || 0) + 0;
57 $entry->{diskwrite} = ($d->[12] || 0) + 0;
58 };
59
60 return $entry;
61 };
62
63 sub extract_storage_stats {
64 my ($storeid, $scfg, $node, $rrd) = @_;
65
66 my $entry = {
67 id => "storage/$node/$storeid",
68 storage => $storeid,
69 node => $node,
70 type => 'storage',
71 };
72
73 if (my $d = $rrd->{"pve2-storage/$node/$storeid"}) {
74 $entry->{maxdisk} = ($d->[1] || 0) + 0;
75 $entry->{disk} = ($d->[2] || 0) + 0;
76 }
77
78 return $entry;
79 };
80
81 1;