[pve-devel] [PATCH] implement node netstat call to get current tap network counters
Stefan Priebe
s.priebe at profihost.ag
Thu Apr 18 08:30:38 CEST 2013
Signed-off-by: Stefan Priebe <s.priebe at profihost.ag>
---
API2/Nodes.pm | 40 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 40 insertions(+)
diff --git a/API2/Nodes.pm b/API2/Nodes.pm
index 0dac6af..8aebae0 100644
--- a/API2/Nodes.pm
+++ b/API2/Nodes.pm
@@ -123,6 +123,7 @@ __PACKAGE__->register_method ({
{ name => 'aplinfo' },
{ name => 'startall' },
{ name => 'stopall' },
+ { name => 'netstat' },
];
return $result;
@@ -273,6 +274,45 @@ __PACKAGE__->register_method({
}});
__PACKAGE__->register_method({
+ name => 'netstat',
+ path => 'netstat',
+ method => 'GET',
+ permissions => {
+ check => ['perm', '/nodes/{node}', [ 'Sys.Audit' ]],
+ },
+ description => "Read tap/vm network device interface counters",
+ proxyto => 'node',
+ parameters => {
+ additionalProperties => 0,
+ properties => {
+ node => get_standard_option('pve-node'),
+ },
+ },
+ returns => {
+ type => "object",
+ properties => {
+
+ },
+ },
+ code => sub {
+ my ($param) = @_;
+
+ my $res = { };
+
+ my $netdev = PVE::ProcFSTools::read_proc_net_dev();
+ foreach my $dev (keys %$netdev) {
+ next if $dev !~ m/^tap([1-9]\d*)i(\d+)$/;
+ my $vmid = $1;
+ my $netid = $2;
+
+ $res->{$vmid}{'net'.$netid}{out} = $netdev->{$dev}->{receive};
+ $res->{$vmid}{'net'.$netid}{in} = $netdev->{$dev}->{transmit};
+ }
+
+ return $res;
+ }});
+
+__PACKAGE__->register_method({
name => 'node_cmd',
path => 'status',
method => 'POST',
--
1.7.10.4
More information about the pve-devel
mailing list