X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=gosa-si%2Fmodules%2FSIPackages.pm;h=4f7bd8611dedec2cd1dae64768424fa369a409f7;hb=1bf6d6303fb62f5b51b9ebff12524f7631a02bc7;hp=1790f9990318ac1e4bec13487a76599c3e43f429;hpb=f418da54b61c9439c2f71f76c50d53620229c703;p=gosa.git diff --git a/gosa-si/modules/SIPackages.pm b/gosa-si/modules/SIPackages.pm index 1790f9990..4f7bd8611 100644 --- a/gosa-si/modules/SIPackages.pm +++ b/gosa-si/modules/SIPackages.pm @@ -70,11 +70,12 @@ $main::server_mac_address= &get_mac($network_interface); # Unit tag can be defined in config if((not defined($main::gosa_unit_tag)) || length($main::gosa_unit_tag) == 0) { # Read gosaUnitTag from LDAP - &main::refresh_ldap_handle(); - if( defined($main::ldap_handle) ) { + + my $ldap_handle = &main::get_ldap_handle(); + if( defined($ldap_handle) ) { &main::daemon_log("INFO: Searching for servers gosaUnitTag with mac address $main::server_mac_address",5); # Perform search for Unit Tag - $mesg = $main::ldap_handle->search( + $mesg = $ldap_handle->search( base => $ldap_base, scope => 'sub', attrs => ['gosaUnitTag'], @@ -94,7 +95,7 @@ if((not defined($main::gosa_unit_tag)) || length($main::gosa_unit_tag) == 0) { my $hostname= `hostname -f`; chomp($hostname); &main::daemon_log("INFO: Searching for servers gosaUnitTag with hostname $hostname",5); - $mesg = $main::ldap_handle->search( + $mesg = $ldap_handle->search( base => $ldap_base, scope => 'sub', attrs => ['gosaUnitTag'], @@ -113,7 +114,7 @@ if((not defined($main::gosa_unit_tag)) || length($main::gosa_unit_tag) == 0) { $hostname= `hostname -s`; chomp($hostname); &main::daemon_log("INFO: Searching for servers gosaUnitTag with hostname $hostname",5); - $mesg = $main::ldap_handle->search( + $mesg = $ldap_handle->search( base => $ldap_base, scope => 'sub', attrs => ['gosaUnitTag'], @@ -689,14 +690,14 @@ sub new_ldap_config { } # Build LDAP connection - &main::refresh_ldap_handle(); - if( not defined $main::ldap_handle ) { + my $ldap_handle = &main::get_ldap_handle($session_id); + if( not defined $ldap_handle ) { &main::daemon_log("$session_id ERROR: cannot connect to ldap: $ldap_uri", 1); return; } # Perform search - $mesg = $main::ldap_handle->search( base => $ldap_base, + $mesg = $ldap_handle->search( base => $ldap_base, scope => 'sub', attrs => ['dn', 'gotoLdapServer', 'gosaUnitTag', 'FAIclass'], filter => "(&(objectClass=GOhard)(macaddress=$macaddress)(gotoLdapServer=*))"); @@ -733,7 +734,7 @@ sub new_ldap_config { # Do we need to look at an object class? if (length(@servers) < 1){ - $mesg = $main::ldap_handle->search( base => $ldap_base, + $mesg = $ldap_handle->search( base => $ldap_base, scope => 'sub', attrs => ['dn', 'gotoLdapServer', 'FAIclass'], filter => "(&(objectClass=gosaGroupOfNames)(member=$dn))"); @@ -796,7 +797,7 @@ sub new_ldap_config { if (defined $unit_tag){ # Find admin base and department name - $mesg = $main::ldap_handle->search( base => $ldap_base, + $mesg = $ldap_handle->search( base => $ldap_base, scope => 'sub', attrs => ['dn', 'ou'], filter => "(&(objectClass=gosaAdministrativeUnit)(gosaUnitTag=$unit_tag))"); @@ -843,25 +844,25 @@ sub hardware_config { # check hit my $hit_counter = keys %{$res}; if( not $hit_counter == 1 ) { - &main::daemon_log("ERROR: more or no hit found in known_clients_db by query by '$address'", 1); + &main::daemon_log("$session_id ERROR: more or no hit found in known_clients_db by query by '$address'", 1); } my $macaddress = $res->{1}->{macaddress}; my $hostkey = $res->{1}->{hostkey}; if (not defined $macaddress) { - &main::daemon_log("ERROR: no mac address found for client $address", 1); + &main::daemon_log("$session_id ERROR: no mac address found for client $address", 1); return; } # Build LDAP connection - &main::refresh_ldap_handle(); - if( not defined $main::ldap_handle ) { - &main::daemon_log("ERROR: cannot connect to ldap: $ldap_uri", 1); + my $ldap_handle = &main::get_ldap_handle($session_id); + if( not defined $ldap_handle ) { + &main::daemon_log("$session_id ERROR: cannot connect to ldap: $ldap_uri", 1); return; } # Perform search - $mesg = $main::ldap_handle->search( + $mesg = $ldap_handle->search( base => $ldap_base, scope => 'sub', filter => "(&(objectClass=GOhard)(|(macAddress=$macaddress)(dhcpHWaddress=ethernet $macaddress)))" @@ -869,22 +870,36 @@ sub hardware_config { if($mesg->count() == 0) { &main::daemon_log("Host was not found in LDAP!", 1); + + # set status = hardware_detection at jobqueue if entry exists + my $func_dic = {table=>$main::job_queue_tn, + primkey=>['id'], + timestamp=>&get_time, + status=>'processing', + result=>'none', + progress=>'hardware-detection', + headertag=>'trigger_action_reinstall', + targettag=>$address, + xmlmessage=>'none', + macaddress=>$macaddress, + }; + my $hd_res = $main::job_db->add_dbentry($func_dic); + &main::daemon_log("$session_id INFO: add '$macaddress' to job queue as an installing job", 5); + } else { my $entry= $mesg->entry(0); my $dn= $entry->dn; if (defined($entry->get_value("gotoHardwareChecksum"))) { if (! $entry->get_value("gotoHardwareChecksum") eq $gotoHardwareChecksum) { $entry->replace(gotoHardwareChecksum => $gotoHardwareChecksum); - if($entry->update($main::ldap_handle)) { + if($entry->update($ldap_handle)) { &main::daemon_log("$session_id INFO: Hardware changed! Detection triggered.", 5); } } else { # Nothing to do return; } - } else { - &main::daemon_log("$session_id WARNING: there is no 'gotoHardwareChecksum' found in LDAP for host '$macaddress'", 3); - } + } } # Assemble data package @@ -896,25 +911,7 @@ sub hardware_config { $data{'goto_secret'}= $goto_secret; } - # set status = hardware_detection at jobqueue if entry exists - my $func_dic = {table=>$main::job_queue_tn, - primkey=>['id'], - timestamp=>&get_time, - status=>'processing', - result=>'none', - progress=>'hardware-detection', - headertag=>'trigger_action_reinstall', - targettag=>$address, - xmlmessage=>'none', - macaddress=>$macaddress, - }; - my $hd_res = $main::job_db->add_dbentry($func_dic); - &main::daemon_log("$session_id INFO: add '$macaddress' to job queue as an installing job", 5); - # Send information - - # log info not needed - #&main::daemon_log("$session_id INFO: Send detect_hardware message to $address", 5); return &build_msg("detect_hardware", $server_address, $address, \%data); }