diff --git a/gosa-si/gosa-si-server b/gosa-si/gosa-si-server
index 657f40e37e5b477aa50c6f57906038eef61049d1..b93f07cc7a58c9c717e13303941b4b720f0f92a0 100755 (executable)
--- a/gosa-si/gosa-si-server
+++ b/gosa-si/gosa-si-server
#===============================================================================
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 {
$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 {
}
}
}
-
+
# 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 );
# 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>/;
# 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;
}
}
);
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";
+ }
}
}
}
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);
}
$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);