Code

Updated servergeneric
[gosa.git] / gosa-si / gosa-si-server
index 657f40e37e5b477aa50c6f57906038eef61049d1..b93f07cc7a58c9c717e13303941b4b720f0f92a0 100755 (executable)
@@ -241,7 +241,7 @@ EOF
 #===============================================================================
 sub read_configfile {
     my $cfg;
-    if( defined( $cfg_file) && ( length($cfg_file) > 0 )) {
+    if( defined( $cfg_file) && ( (-s $cfg_file) > 0 )) {
         if( -r $cfg_file ) {
             $cfg = Config::IniFiles->new( -file => $cfg_file );
         } else {
@@ -968,6 +968,7 @@ sub _start {
        $kernel->yield('create_fai_server_db', $fai_server_tn );
        $kernel->yield('create_fai_release_db', $fai_release_tn );
        $kernel->sig(USR1 => "sig_handler");
+       $kernel->sig(USR2 => "create_packages_list_db");
 }
 
 sub sig_handler {
@@ -1283,17 +1284,27 @@ sub watch_for_new_jobs {
                        }
                }
        }
-       
+
        # Commit deletion
        $job_db->exec_statementlist(\@drops);
 
        # Look for new jobs that could be executed
        foreach my $macaddress (keys %{$hits}) {
+
+               # Look if there is an executing job
+               my $sql_statement = "SELECT * FROM $job_queue_tn WHERE macaddress LIKE '$macaddress' AND status='processing'";
+               my $res = $job_db->exec_statement( $sql_statement );
+
+               # Skip new jobs for host if there is a processing job
+               if(defined($res) and defined @{$res}[0]) {
+                       next;
+               }
+
                foreach my $jobdb_headertag (keys %{$hits->{$macaddress}}) {
                        my $jobdb_id = @{$hits->{$macaddress}->{$jobdb_headertag}}[0];
                        my $job_msg = @{$hits->{$macaddress}->{$jobdb_headertag}}[7];
 
-                       daemon_log("J DEBUG: its time to execute $job_msg", 7); 
+                       daemon_log("J DEBUG: its time to execute $job_msg", 7);
                        my $sql_statement = "SELECT * FROM known_clients WHERE macaddress LIKE '$macaddress'";
                        my $res_hash = $known_clients_db->select_dbentry( $sql_statement );
 
@@ -1303,7 +1314,7 @@ sub watch_for_new_jobs {
                        # change header
                        $job_msg =~ s/<header>job_/<header>gosa_/;
 
-                       # add sqlite_id 
+                       # add sqlite_id
                        $job_msg =~ s/<\/xml>$/<jobdb_id>$jobdb_id<\/jobdb_id><\/xml>/;
 
                        $job_msg =~ /<header>(\S+)<\/header>/;
@@ -1313,6 +1324,9 @@ sub watch_for_new_jobs {
                        # update status in job queue to 'processing'
                        $sql_statement = "UPDATE $job_queue_tn SET status='processing' WHERE id='$jobdb_id'";
                        my $res = $job_db->update_dbentry($sql_statement);
+
+                       # We don't want parallel processing
+                       last;
                }
        }
 
@@ -1875,11 +1889,13 @@ sub create_sources_list {
                                );
                if($mesg->count) {
                        foreach my $entry(@{$mesg->{'entries'}}) {
-                               my ($server, $tag, $release, $sections)= split /\|/, $entry->get_value('FAIrepository');
-                               my $line = "deb $server $release";
-                               $sections =~ s/,/ /g;
-                               $line.= " $sections";
-                               print $fh $line."\n";
+                               foreach my $value(@{$entry->get_value('FAIrepository', asref => 1)}) {
+                                       my ($server, $tag, $release, $sections)= split /\|/, $value;
+                                       my $line = "deb $server $release";
+                                       $sections =~ s/,/ /g;
+                                       $line.= " $sections";
+                                       print $fh $line."\n";
+                               }
                        }
                }
        }
@@ -1891,10 +1907,15 @@ sub create_sources_list {
 sub create_packages_list_db {
     my ($ldap_handle, $sources_file) = @_ ;
 
-    if (not defined $ldap_handle) { 
-        daemon_log("0 ERROR: no ldap_handle available to create_packages_list_db", 1);
-        return;
-    }
+       if (not defined $ldap_handle) { 
+               $ldap_handle= &get_ldap_handle();
+
+               if (not defined $ldap_handle) {
+                       daemon_log("0 ERROR: no ldap_handle available to create_packages_list_db", 1);
+                       return;
+               }
+       }
+
     if (not defined $sources_file) { 
         $sources_file = &create_sources_list($ldap_handle);
     }
@@ -2170,6 +2191,7 @@ $login_users_db = GOSA::DBsqlite->new($login_users_file_name);
 $login_users_db->create_table($login_users_tn, \@login_users_col_names);
 
 # connect to fai_server_db and fai_release_db
+unlink($fai_server_file_name);
 $fai_server_db = GOSA::DBsqlite->new($fai_server_file_name);
 $fai_server_db->create_table($fai_server_tn, \@fai_server_col_names);
 $fai_server_db->create_table($fai_release_tn, \@fai_release_col_names);