missing commit from nms auto-addition fixes, RT#15536
authorivan <ivan>
Mon, 19 Dec 2011 01:26:13 +0000 (01:26 +0000)
committerivan <ivan>
Mon, 19 Dec 2011 01:26:13 +0000 (01:26 +0000)
FS/FS/NetworkMonitoringSystem/Torrus_Internal.pm
FS/FS/svc_acct.pm
FS/FS/svc_dsl.pm

index 04a6b29..28bc8a7 100644 (file)
@@ -5,6 +5,7 @@ use strict;
 use Fcntl qw(:flock);
 use IO::File;
 use File::Slurp qw(slurp);
+use IPC::Run qw(run);
 use Date::Format;
 use XML::Simple;
 use FS::Record qw(qsearch qsearchs dbh);
@@ -154,11 +155,18 @@ sub report {
 
 }
 
+sub queued_add_router {
+  my $self = shift;
+  my $error = $self->add_router(@_);
+  die $error if $error;
+}
+
 sub add_router {
   my($self, $ip, $community) = @_;
 
-  $community = qq!<param name="snmp-community" value="$community"/>\n !
-    if length($community) > 1;
+  $community = (defined($community) && length($community) > 1)
+                 ? qq!<param name="snmp-community" value="$community"/>\n !
+                 : '';
 
   my $newhost = 
     qq(  <host>\n).
@@ -257,23 +265,31 @@ sub _torrus_newddx {
   close $new;
 
   my $tmpname = $ddxfile . Date::Format::time2str('%Y%m%d%H%M%S',time);
-  rename("$ddxfile", $tmpname) or die $!;
+  rename($ddxfile, $tmpname) or die $!;
   rename("$ddxfile.new", $ddxfile) or die $!;
 
-  $self->_torrus_reload;
+  my $error = $self->_torrus_reload;
+  if ( $error ) { #revert routers.ddx
+    rename($ddxfile, "$tmpname.FAILED") or die $!;
+    rename($tmpname, $ddxfile) or die $!;
+  }
+  
+  $self->_torrus_unlock;
+
+  return $error;
 }
 
 sub _torrus_reload {
   my($self) = @_;
 
-  #i should use IPC::Run and have better error checking (commands are silent
-  # for success, or output errors)
-
-  system('torrus', 'devdiscover', "--in=$ddxfile");
+  my $stderr = '';
+  run( ['torrus', 'devdiscover', "--in=$ddxfile"], '2>'=>\$stderr );
+  return $stderr if $stderr;
 
-  system('torrus', 'compile', '--tree=main'); # , '--verbose'
+  run( ['torrus', 'compile', '--tree=main'] ); # , '--verbose'
+  #typically the errors happen at the discover stage...
 
-  $self->_torrus_unlock;
+  '';
 
 }
 
index 73f9132..64f2c35 100644 (file)
@@ -254,6 +254,7 @@ sub table_info {
     'sorts' => [ 'username', 'uid', 'seconds', 'last_login' ],
     'display_weight' => 10,
     'cancel_weight'  => 50, 
+    'ip_field' => 'slipip',
     'fields' => {
         'dir'       => 'Home directory',
         'uid'       => {
index 5e6a149..8c47f88 100644 (file)
@@ -137,6 +137,7 @@ sub table_info {
         'sorts' => [ 'phonenum' ],
         'display_weight' => 55,
         'cancel_weight' => 75,
+        'ip_field' => 'staticips',
         'fields' => {
             'pushed'                => { label => 'Pushed', 
                                          type  => 'disabled' },