]> git.proxmox.com Git - pve-manager-legacy.git/blob - PVE/API2Tools.pm
bump version to 3.0-31
[pve-manager-legacy.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 my $d;
44
45 if ($d = $rrd->{"pve2-vm/$vmid"}) {
46
47 $entry->{uptime} = ($d->[0] || 0) + 0;
48 $entry->{name} = $d->[1];
49 $entry->{status} = $entry->{uptime} ? 'running' : 'stopped';
50 $entry->{maxcpu} = ($d->[3] || 0) + 0;
51 $entry->{cpu} = ($d->[4] || 0) + 0;
52 $entry->{maxmem} = ($d->[5] || 0) + 0;
53 $entry->{mem} = ($d->[6] || 0) + 0;
54 $entry->{maxdisk} = ($d->[7] || 0) + 0;
55 $entry->{disk} = ($d->[8] || 0) + 0;
56 $entry->{netin} = ($d->[9] || 0) + 0;
57 $entry->{netout} = ($d->[10] || 0) + 0;
58 $entry->{diskread} = ($d->[11] || 0) + 0;
59 $entry->{diskwrite} = ($d->[12] || 0) + 0;
60
61 } elsif ($d = $rrd->{"pve2.3-vm/$vmid"}) {
62
63 $entry->{uptime} = ($d->[0] || 0) + 0;
64 $entry->{name} = $d->[1];
65 $entry->{status} = $d->[2];
66 $entry->{template} = $d->[3] + 0;
67
68 $entry->{maxcpu} = ($d->[5] || 0) + 0;
69 $entry->{cpu} = ($d->[6] || 0) + 0;
70 $entry->{maxmem} = ($d->[7] || 0) + 0;
71 $entry->{mem} = ($d->[8] || 0) + 0;
72 $entry->{maxdisk} = ($d->[9] || 0) + 0;
73 $entry->{disk} = ($d->[10] || 0) + 0;
74 $entry->{netin} = ($d->[11] || 0) + 0;
75 $entry->{netout} = ($d->[12] || 0) + 0;
76 $entry->{diskread} = ($d->[13] || 0) + 0;
77 $entry->{diskwrite} = ($d->[14] || 0) + 0;
78 };
79
80 return $entry;
81 };
82
83 sub extract_storage_stats {
84 my ($storeid, $scfg, $node, $rrd) = @_;
85
86 my $entry = {
87 id => "storage/$node/$storeid",
88 storage => $storeid,
89 node => $node,
90 type => 'storage',
91 };
92
93 if (my $d = $rrd->{"pve2-storage/$node/$storeid"}) {
94 $entry->{maxdisk} = ($d->[1] || 0) + 0;
95 $entry->{disk} = ($d->[2] || 0) + 0;
96 }
97
98 return $entry;
99 };
100
101 1;