requires 'Data::Structure::Util';
requires 'XML::Simple';
requires 'File::Slurp';
+requires 'YAML';
features(
'ssh' => [
system "sudo debootstrap --arch i386 lenny $debootstrap $debian_mirror";
- file::append "$debootstrap/etc/kernel-img.conf", "do_initrd = Yes\n" &&
- in_chroot $debootstrap => 'apt-get install -y --force-yes atl2-modules-2.6-686';
+ file::append "$debootstrap/etc/apt/sources.list.d/non-free.list", "deb $debian_mirror lenny non-free\n";
+ in_chroot $debootstrap => 'apt-get update';
+
+ file::append "$debootstrap/etc/kernel-img.conf", "do_initrd = Yes\n";
+ in_chroot $debootstrap => 'apt-get install -y --force-yes atl2-modules-2.6-686 firmware-bnx2';
in_chroot $debootstrap => 'apt-get -f install -y --force-yes locales'; # linux-image-2.6-686
file::append "$debootstrap/etc/initramfs-tools/modules", "atl2\n";
config::for_ip( $ip );
- my $server;
- map { $server->{ $_ } = eval '$server::' . $_ } ( 'ip', 'netmask', 'bcast', 'domain' );
-
- if ( my $force = client::conf( $ip => 'dhcpd.pl' ) ) {
- eval $force;
- die "$force\n$@" if $@;
- warn "force server ", dump $server;
- }
+ my $server = server::as_hash_for $ip;
my $packet = {
Op => BOOTREPLY(),
use warnings;
use strict;
+use Data::Dump qw(dump);
+use YAML qw();
+
our $base_dir = '/srv/pxelator';
use ties;
sub debug { shared('debug', @_) || 0 }
+sub as_hash_for {
+ my $ip = shift;
+
+ my $server;
+ map { $server->{ $_ } = eval '$server::' . $_ } ( 'ip', 'netmask', 'bcast', 'domain' );
+
+ my $server_path = "$server::conf/ip/$ip/server.yaml";
+ $server = YAML::LoadFile $server_path if -e $server_path;
+
+ return $server;
+}
+
warn "loaded";
1;
use strict;
use autodie;
-use Test::More tests => 4;
+use Test::More tests => 5;
use Data::Dump qw/dump/;
use_ok 'server';
cmp_ok( $test, '==', server::conf_default( 'test' ), 'get conf_default' );
+ok( my $server = server::as_hash_for( '10.60.0.200' ), 'as_hash_for' );
+diag dump $server;