Code

Fix LHM #8687
[gosa.git] / trunk / gosa-si / server / events / gosaTriggered.pm
index 8742aec166f18e1ee7ba6854a05dda85dcde8924..f72d5798b68e3aa4ee9dda053a0c627c0ec97421 100644 (file)
@@ -162,12 +162,14 @@ sub recreate_fai_server_db {
         my $res = $main::job_db->exec_statement($sql_statement);
     }
 
-    $main::fai_server_db->create_table("new_fai_server", \@main::fai_server_col_names);
+    my $res = $main::fai_server_db->create_table("new_fai_server", \@main::fai_server_col_names);
+    if ($res) {
+        return ( $out_msg );
+    }
     &main::create_fai_server_db("new_fai_server",undef,"dont", $session_id);
     $main::fai_server_db->move_table("new_fai_server", $main::fai_server_tn);
-    
-    my @out_msg_l = ( $out_msg );
-    return @out_msg_l;
+
+    return ( $out_msg );
 }
 
 
@@ -182,12 +184,14 @@ sub recreate_fai_release_db {
         my $res = $main::job_db->exec_statement($sql_statement);
     }
 
-    $main::fai_release_db->create_table("new_fai_release", \@main::fai_release_col_names);
+    my $res = $main::fai_release_db->create_table("new_fai_release", \@main::fai_release_col_names);
+    if ($res) {
+        return ( $out_msg );
+    }
     &main::create_fai_release_db("new_fai_release", $session_id);
     $main::fai_release_db->move_table("new_fai_release", $main::fai_release_tn);
 
-    my @out_msg_l = ( $out_msg );
-    return @out_msg_l;
+    return ( $out_msg );
 }
 
 
@@ -202,7 +206,7 @@ sub recreate_packages_list_db {
                my $res = $main::job_db->exec_statement($sql_statement);
        }
 
-       &main::create_packages_list_db;
+       &main::create_packages_list_db(undef, undef, $session_id);
 
        my @out_msg_l = ( $out_msg );
        return @out_msg_l;
@@ -641,13 +645,16 @@ sub trigger_action_reinstall {
     $msg =~ s/<header>gosa_trigger_action_reinstall<\/header>/<header>trigger_action_reinstall<\/header>/;
 
     &main::change_fai_state('reinstall', \@{$msg_hash->{macaddress}}, $session_id);
+    &main::change_goto_state('active', \@{$msg_hash->{macaddress}}, $session_id);
+    my @out_msg_l = &set_activated_for_installation($msg, $msg_hash, $session_id);
 
     my %data = ( 'macaddress'  => \@{$msg_hash->{macaddress}} );
     my $wake_msg = &build_msg("trigger_wake", "GOSA", "KNOWN_SERVER", \%data);
     # invoke trigger wake for this gosa-si-server
     &main::server_server_com::trigger_wake($msg, $msg_hash, $session_id);
 
-    my @out_msg_l = ($wake_msg, $msg);  
+    push(@out_msg_l, $wake_msg);
+    push(@out_msg_l, $msg);
     return @out_msg_l;
 }
 
@@ -851,13 +858,11 @@ sub trigger_activate_new {
         &main::daemon_log("$session_id DEBUG: A GosaGroupOfNames with cn '$ogroup' was found in base '".$main::ldap_base."'!", 5);
       } elsif ($ldap_mesg->count == 0) {
         &main::daemon_log("$session_id ERROR: A GosaGroupOfNames with cn '$ogroup' was not found in base '".$main::ldap_base."'!", 1);
-        $main::job_db->exec_statement("UPDATE ".$main::job_queue_tn." SET status = 'waiting' WHERE id = $jobdb_id");
-        $main::job_db->exec_statement("UPDATE ".$main::job_queue_tn." SET timestamp = '".(&calc_timestamp(&get_time(), 'plus', 10))."' WHERE id = $jobdb_id");
+        $main::job_db->exec_statement("UPDATE ".$main::job_queue_tn." SET status = 'waiting', timestamp = '".(&calc_timestamp(&get_time(), 'plus', 60))."' WHERE id = $jobdb_id");
         return undef;
       } else {
         &main::daemon_log("$session_id ERROR: More than one ObjectGroups with cn '$ogroup' was found in base '".$main::ldap_base."'!", 1);
-        $main::job_db->exec_statement("UPDATE ".$main::job_queue_tn." SET status = 'waiting' WHERE id = $jobdb_id");
-        $main::job_db->exec_statement("UPDATE ".$main::job_queue_tn." SET timestamp = '".(&calc_timestamp(&get_time(), 'plus', 10))."' WHERE id = $jobdb_id");
+        $main::job_db->exec_statement("UPDATE ".$main::job_queue_tn." SET status = 'waiting', timestamp = '".(&calc_timestamp(&get_time(), 'plus', 60))."' WHERE id = $jobdb_id");
         return undef;
       }
 
@@ -1035,6 +1040,11 @@ sub trigger_activate_new {
 
         # Set job to done
         $main::job_db->exec_statement("UPDATE jobs SET status = 'done' WHERE id = $jobdb_id");
+    
+        # If a client gets a 'set_activated_for_installation' msg, always deliver a fresh 'new_ldap_config'
+        # just for backup and robustness purposes
+        my $ldap_out_msg = &ClientPackages::new_ldap_config($mac, $session_id);
+        push(@out_msg_l, $ldap_out_msg);
 
         # create set_activated_for_installation message for delivery
         my $out_hash = &create_xml_hash("set_activated_for_installation", $source, $target);