--- lib/PXElator/client.pm 2009/09/07 21:53:45 391 +++ lib/PXElator/client.pm 2009/09/09 09:04:04 406 @@ -6,11 +6,13 @@ use File::Slurp; use Data::Dump qw/dump/; +use File::Path; use server; use format; use ip; use ping; +use kvm; our $debug = $server::debug; @@ -83,8 +85,8 @@ my $mac = shift; $mac = format::mac($mac); - if ( my $clients_left = server::shared( 'new_clients' ) ) { - server::shared( 'new_clients', $clients_left - 1 ); + if ( $server::new_clients-- ) { + warn "# clients left: $server::new_clients\n"; } else { warn "W: no new clients accepted"; return '0.0.0.0'; @@ -164,6 +166,7 @@ map { my $ip = $_; $ip =~ s{^.+/ip/}{}; + autocreate_params( $ip ); $ip; } glob("$server::conf/ip/*") } @@ -174,7 +177,7 @@ if ( my $mac = mac_from_ip $ip ) { unlink "$server::conf/mac/$mac"; } - rmdir "$server::conf/ip/$ip"; + rmtree "$server::conf/ip/$ip"; } sub arp_mac_dev { @@ -193,4 +196,25 @@ return $arp; } +sub rebuild_mac_links { + warn "# rebuild mac links"; + foreach my $ip ( all_ips ) { + my $mac = ip_path $ip, 'mac'; + if ( -e $mac ) { + $mac = read_file $mac; + save_ip_mac( $ip, $mac ); + warn "## $ip $mac\n"; + } + } +} + +sub autocreate_params { + my $ip = shift; + my $mac = mac_from_ip $ip; + if ( $mac =~ m{^AC:DE:48:00:00} && ! defined conf( $ip, 'kvm' ) ) { + conf( $ip, 'kvm', default => kvm::nr_from_mac( $mac ) ); + warn "# create kvm for $ip"; + } +} + 1;