[pve-devel] [PATCH] implement node netstat call to get current tap network counters
Stefan Priebe
s.priebe at profihost.ag
Fri Apr 19 08:38:02 CEST 2013
Changes since V2:
- swap in / out / transmit / receive again
Changes since V1:
- new return format (use an arrayref instead of a hash to be JS compatible)
- swap in / out / transmit / receive
Signed-off-by: Stefan Priebe <s.priebe at profihost.ag>
---
PVE/API2/Nodes.pm | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 48 insertions(+)
diff --git a/PVE/API2/Nodes.pm b/PVE/API2/Nodes.pm
index 0dac6af..ee351c3 100644
--- a/PVE/API2/Nodes.pm
+++ b/PVE/API2/Nodes.pm
@@ -123,6 +123,7 @@ __PACKAGE__->register_method ({
{ name => 'aplinfo' },
{ name => 'startall' },
{ name => 'stopall' },
+ { name => 'netstat' },
];
return $result;
@@ -273,6 +274,53 @@ __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 => "array",
+ items => {
+ 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;
+
+ push(
+ @$res,
+ {
+ vmid => $vmid,
+ dev => "net$netid",
+ in => $netdev->{$dev}->{transmit},
+ out => $netdev->{$dev}->{receive},
+ }
+ );
+ }
+
+ return $res;
+ }});
+
+__PACKAGE__->register_method({
name => 'node_cmd',
path => 'status',
method => 'POST',
--
1.7.10.4
More information about the pve-devel
mailing list