diff -Nur -x '*.orig' -x '*.rej' smeserver-arkeia-1.0/root/etc/e-smith/events/actions/conf-arkeia mezzanine_patched_smeserver-arkeia-1.0/root/etc/e-smith/events/actions/conf-arkeia --- smeserver-arkeia-1.0/root/etc/e-smith/events/actions/conf-arkeia 2007-07-10 10:04:23.000000000 -0600 +++ mezzanine_patched_smeserver-arkeia-1.0/root/etc/e-smith/events/actions/conf-arkeia 2007-07-10 10:03:33.000000000 -0600 @@ -5,18 +5,17 @@ use strict; use esmith::ConfigDB; use esmith::templates; -use Data::Dumper; sub check_arkc { - my $object = shift; - my $name = shift; - my @params = @_; - - open(ARKC, "/usr/bin/arkc -$object -list -noinfo 2>&1 |"); - my %list = map { chomp; /name=(.*)/; $1 => 1 } ; - close ARKC; + my $object = shift; + my $name = shift; + my @params = @_; + + open(ARKC, "/usr/bin/arkc -$object -list -noinfo 2>&1 |"); + my %list = map { chomp; /name=(.*)/; $1 => 1 } ; + close ARKC; - system(qw(/usr/bin/arkc -create), "-$object", qw(-noinfo -D), "name=[$name]", @params) unless $list{$name} + system(qw(/usr/bin/arkc -create), "-$object", qw(-noinfo -D), "name=[$name]", @params) unless $list{$name} } my $cdb = esmith::ConfigDB->open; @@ -24,17 +23,20 @@ my $arkeia = $cdb->get('arkeia') or die "No arkeia db entry found\n"; my $machinename = $cdb->get('SystemName')->value.".".$cdb->get('DomainName')->value; +my $drv = 'unknown'; +my $dev = 'unknown'; open(DETECTHARDWARE, '/opt/arkeia/bin/arkdetect 2>&1 |'); while () { - $arkeia->set_prop('Drive', $1) if m#PROP : 'ARK_MODEL 'VAL : '(.*)'#; - $backup->set_prop('Device', $1) if m#PROP : 'DEVICE 'VAL : '(.*)'#; + $drv = $1 if m#PROP : 'ARK_MODEL 'VAL : '(.*)'#; + $dev = $1 if m#PROP : 'DEVICE 'VAL : '(.*)'#; + last if m#LIBRARIES#; } close DETECTHARDWARE; my $networkfound = 0; open(NETWORK, '/sbin/ifconfig 2>&1 |'); while () { - ++$networkfound if (m#inet addr:\s*\d+\.#); + ++$networkfound if (m#inet addr:\s*\d+\.#); } close NETWORK; exit(0) unless $networkfound; @@ -46,11 +48,11 @@ close USERLIST; unless ($userlist{admin}) { - my $password = esmith::util::LdapPassword(); - system(qw(/usr/bin/arkc -user -create -noinfo -D name=admin role=ADMINISTRATOR), - "email=[admin\@".$cdb->get('DomainName')->value."]", "node=$machinename", "passwd=[$password]", "vpasswd=[$password]"); + my $password = esmith::util::LdapPassword(); + system(qw(/usr/bin/arkc -user -create -noinfo -D name=admin role=ADMINISTRATOR), + "email=[admin\@".$cdb->get('DomainName')->value."]", "node=$machinename", "passwd=[$password]", "vpasswd=[$password]"); - processTemplate ({TEMPLATE_PATH => "/opt/arkeia/arkc/arkc.param"}); + processTemplate ({TEMPLATE_PATH => "/opt/arkeia/arkc/arkc.param"}); } open(USERLIST, '/usr/bin/arkc -user -list -noinfo 2>&1 |'); @@ -58,22 +60,38 @@ close USERLIST; exit(0) unless $userlist{admin}; -my $device = $backup->prop('Device') || '/dev/st0'; -my $drive = $arkeia->prop('Drive') || 'none'; +my $device = $backup->prop('Device') || 'unknown'; +my $drive = $arkeia->prop('Drive') || 'unknown'; +if ($drive eq 'unknown' && $drv ne 'unknown') { + $arkeia->set_prop('Drive', $drv); + $backup->set_prop('Device', $dev); + $drive = $drv; + $device = $dev; +} elsif ($device eq 'unknown' && $dev ne 'unknown') { + $backup->set_prop('Device', $dev); + $device = $dev; +} open(DRIVETYPE, '/usr/bin/arkc -drive -type -noinfo 2>&1 |'); my %drivetype = map { chomp; /name=(.*)/; $1 => 1 } ; close DRIVETYPE; -exit(0) unless $drivetype{$drive}; +unless ($drivetype{$drive}) { + exit 0 unless $drivetype{$drv}; + + $arkeia->set_prop('Drive', $drv); + $backup->set_prop('Device', $dev); + $drive = $drv; + $device = $dev; +} open(DRIVE, '/usr/bin/arkc -drive -list -noinfo -D name=[Tape Drive] 2>&1 |'); my %driveinfo = map { chomp; /(.*)=(.*)/; $1 => $2 } ; close DRIVE; unless (($driveinfo{DRV_TYPE} || '') eq $drive && ($driveinfo{REWIND_DEV} || '') eq $device) { - system(qw(/usr/bin/arkc -drivepack -delete -noinfo -D), "name=[Drive Pack]"); - system(qw(/usr/bin/arkc -drive -delete -noinfo -D), "name=[Tape Drive]"); - system(qw(/usr/bin/arkc -drive -create -noinfo -D), "name=[Tape Drive]", "type=[$drive]", "rewind_dev=[$device]"); + system(qw(/usr/bin/arkc -drivepack -delete -noinfo -D), "name=[Drive Pack]"); + system(qw(/usr/bin/arkc -drive -delete -noinfo -D), "name=[Tape Drive]"); + system(qw(/usr/bin/arkc -drive -create -noinfo -D), "name=[Tape Drive]", "type=[$drive]", "rewind_dev=[$device]"); } check_arkc('drivepack', 'Drive Pack', 'drvname=[Tape Drive]'); @@ -84,7 +102,7 @@ close SAVEPACK; unless (($savepack{FULLNAME} || '') eq $machinename) { - system(qw(/usr/bin/arkc -savepack -delete -noinfo -D), "name=[Save Pack]"); - system(qw(/usr/bin/arkc -savepack -create -noinfo -D), "name=[Save Pack]"); - system(qw(/usr/bin/arkc -savepack -modify -noinfo -D), "name=[Save Pack]", "tree_name=$machinename"); + system(qw(/usr/bin/arkc -savepack -delete -noinfo -D), "name=[Save Pack]"); + system(qw(/usr/bin/arkc -savepack -create -noinfo -D), "name=[Save Pack]"); + system(qw(/usr/bin/arkc -savepack -modify -noinfo -D), "name=[Save Pack]", "tree_name=$machinename"); }