don't abort upgrade if a RADIUS server is unreachable
[freeside.git] / FS / FS / part_export / sqlradius.pm
index 752bf12..57bbdb4 100644 (file)
@@ -1154,8 +1154,13 @@ sub _upgrade_exporttype {
 
 sub import_attrs {
   my $self = shift;
-  my $dbh = sqlradius_connect( map $self->option($_),
+  my $dbh =  DBI->connect( map $self->option($_),
                                    qw( datasrc username password ) );
+  unless ( $dbh ) {
+    warn "Error connecting to RADIUS server: $DBI::errstr\n";
+    return;
+  }
+
   my $usergroup = $self->option('usergroup') || 'usergroup';
   my $error;
   warn "Importing RADIUS groups and attributes from ".$self->option('datasrc').
@@ -1185,7 +1190,10 @@ SELECT groupname, attribute, op, value, \'R\' FROM radgroupreply';
         'priority'  => 1,
       };
       $error = $radius_group->insert;
-      return "error inserting group $groupname: $error" if $error;
+      if ( $error ) {
+        warn "error inserting group $groupname: $error";
+        next;#don't continue trying to insert the attribute
+      }
       $attrs_of{$groupname} = {};
       $groupnum_of{$groupname} = $radius_group->groupnum;
     }
@@ -1202,7 +1210,10 @@ SELECT groupname, attribute, op, value, \'R\' FROM radgroupreply';
         'value' => $value,
       };
       $error = $new->replace($old);
-      return "error modifying attr $attrname: $error" if $error;
+      if ( $error ) {
+        warn "error modifying attr $attrname: $error";
+        next;
+      }
     }
     else {
       $new = new FS::radius_attr {
@@ -1213,7 +1224,10 @@ SELECT groupname, attribute, op, value, \'R\' FROM radgroupreply';
         'value'    => $value,
       };
       $error = $new->insert;
-      return "error inserting attr $attrname: $error" if $error;
+      if ( $error ) {
+        warn "error inserting attr $attrname: $error" if $error;
+        next;
+      }
     }
     $attrs_of{$groupname}->{$attrname} = $new;
   } #foreach $row