/[smecontribs]/rpms/smeserver-arkeia/contribs7/smeserver-arkeia-1.0-configdb.patch
ViewVC logotype

Annotation of /rpms/smeserver-arkeia/contribs7/smeserver-arkeia-1.0-configdb.patch

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.3 - (hide annotations) (download)
Tue Nov 25 16:20:18 2008 UTC (15 years, 6 months ago) by slords
Branch: MAIN
CVS Tags: smeserver-arkeia-1_0-22_el4_sme, smeserver-arkeia-1_0-21_el4_sme, smeserver-arkeia-1_0-26_el4_sme, smeserver-arkeia-1_0-29_el4_sme, smeserver-arkeia-1_0-20_el4_sme, smeserver-arkeia-1_0-18_el4_sme, smeserver-arkeia-1_0-27_el4_sme, smeserver-arkeia-1_0-19_el4_sme, HEAD
Changes since 1.2: +0 -0 lines
Restore

1 slords 1.1 diff -Nur -x '*.orig' -x '*.rej' smeserver-arkeia-1.0/root/etc/e-smith/db/configuration/defaults/arkeia/Drive mezzanine_patched_smeserver-arkeia-1.0/root/etc/e-smith/db/configuration/defaults/arkeia/Drive
2     --- smeserver-arkeia-1.0/root/etc/e-smith/db/configuration/defaults/arkeia/Drive 1969-12-31 17:00:00.000000000 -0700
3     +++ mezzanine_patched_smeserver-arkeia-1.0/root/etc/e-smith/db/configuration/defaults/arkeia/Drive 2007-01-24 22:45:02.000000000 -0700
4     @@ -0,0 +1 @@
5     +none
6     diff -Nur -x '*.orig' -x '*.rej' smeserver-arkeia-1.0/root/etc/e-smith/db/configuration/defaults/arkeia/Label mezzanine_patched_smeserver-arkeia-1.0/root/etc/e-smith/db/configuration/defaults/arkeia/Label
7     --- smeserver-arkeia-1.0/root/etc/e-smith/db/configuration/defaults/arkeia/Label 1969-12-31 17:00:00.000000000 -0700
8     +++ mezzanine_patched_smeserver-arkeia-1.0/root/etc/e-smith/db/configuration/defaults/arkeia/Label 2007-01-24 22:45:02.000000000 -0700
9     @@ -0,0 +1 @@
10     +Tape #
11     diff -Nur -x '*.orig' -x '*.rej' smeserver-arkeia-1.0/root/etc/e-smith/db/configuration/defaults/arkeia/status mezzanine_patched_smeserver-arkeia-1.0/root/etc/e-smith/db/configuration/defaults/arkeia/status
12     --- smeserver-arkeia-1.0/root/etc/e-smith/db/configuration/defaults/arkeia/status 1969-12-31 17:00:00.000000000 -0700
13     +++ mezzanine_patched_smeserver-arkeia-1.0/root/etc/e-smith/db/configuration/defaults/arkeia/status 2007-01-24 22:45:02.000000000 -0700
14     @@ -0,0 +1 @@
15     +enabled
16     diff -Nur -x '*.orig' -x '*.rej' smeserver-arkeia-1.0/root/etc/e-smith/db/configuration/defaults/arkeia/Tape mezzanine_patched_smeserver-arkeia-1.0/root/etc/e-smith/db/configuration/defaults/arkeia/Tape
17     --- smeserver-arkeia-1.0/root/etc/e-smith/db/configuration/defaults/arkeia/Tape 1969-12-31 17:00:00.000000000 -0700
18     +++ mezzanine_patched_smeserver-arkeia-1.0/root/etc/e-smith/db/configuration/defaults/arkeia/Tape 2007-01-24 22:45:02.000000000 -0700
19     @@ -0,0 +1 @@
20     +none
21     diff -Nur -x '*.orig' -x '*.rej' smeserver-arkeia-1.0/root/etc/e-smith/db/configuration/defaults/arkeia/type mezzanine_patched_smeserver-arkeia-1.0/root/etc/e-smith/db/configuration/defaults/arkeia/type
22     --- smeserver-arkeia-1.0/root/etc/e-smith/db/configuration/defaults/arkeia/type 1969-12-31 17:00:00.000000000 -0700
23     +++ mezzanine_patched_smeserver-arkeia-1.0/root/etc/e-smith/db/configuration/defaults/arkeia/type 2007-01-24 22:45:02.000000000 -0700
24     @@ -0,0 +1 @@
25     +backupservice
26     diff -Nur -x '*.orig' -x '*.rej' smeserver-arkeia-1.0/root/etc/e-smith/events/actions/arkeia-delete-dumped-catalog mezzanine_patched_smeserver-arkeia-1.0/root/etc/e-smith/events/actions/arkeia-delete-dumped-catalog
27     --- smeserver-arkeia-1.0/root/etc/e-smith/events/actions/arkeia-delete-dumped-catalog 2004-07-26 10:30:48.000000000 -0600
28     +++ mezzanine_patched_smeserver-arkeia-1.0/root/etc/e-smith/events/actions/arkeia-delete-dumped-catalog 2007-01-24 22:45:02.000000000 -0700
29     @@ -3,31 +3,25 @@
30     package esmith;
31    
32     use strict;
33     -use Errno;
34     -use esmith::config;
35     -use esmith::db;
36     -use esmith::util;
37     -
38     -tie my %conf, 'esmith::config';
39     -
40     -my $program=db_get_prop(\%conf, 'backup', 'Program') || 'flexbackup';
41     -my $status=db_get_prop(\%conf, 'backup', 'status') || 'disabled';
42     -my $tapetype=db_get_prop(\%conf, 'arkeia', 'Tape') || 'none';
43     +use esmith::ConfigDB;
44     +
45     +my $cdb = esmith::ConfigDB->open_ro;
46     +my $backup = $cdb->get('backup') or die "No backup db entry found\n";
47     +
48     +my $program = $backup->prop('Program') || 'flexbackup';
49     +my $status = $backup->prop('status') || 'disabled';
50    
51     if ($status eq 'enabled' && $program eq 'arkeia')
52     {
53     open(BACKUP, '/usr/bin/arkc -backup -running -noinfo 2>&1 |');
54     - while (<BACKUP>) {
55     - if (m#tag=(.*)#) {
56     - die("Another arkeia backup is already running ($1).");
57     - }
58     - }
59     + my %backup = map { chomp; /(.*)=(.*)/; $1 => $2; } <BACKUP>;
60     close BACKUP;
61     + die("Another arkeia backup is already running ($backup{tag}.") if $backup{tag};
62     }
63    
64     # Always remove the dumped tables.
65    
66     -system qw(/bin/rm -rf /home/e-smith/db/arkeia);
67     +system(qw(/bin/rm -rf /home/e-smith/db/arkeia));
68    
69     # Recreate the directories.
70    
71     diff -Nur -x '*.orig' -x '*.rej' smeserver-arkeia-1.0/root/etc/e-smith/events/actions/arkeia-dump-catalog mezzanine_patched_smeserver-arkeia-1.0/root/etc/e-smith/events/actions/arkeia-dump-catalog
72     --- smeserver-arkeia-1.0/root/etc/e-smith/events/actions/arkeia-dump-catalog 2004-07-26 10:30:57.000000000 -0600
73     +++ mezzanine_patched_smeserver-arkeia-1.0/root/etc/e-smith/events/actions/arkeia-dump-catalog 2007-01-24 22:45:02.000000000 -0700
74     @@ -3,26 +3,20 @@
75     package esmith;
76    
77     use strict;
78     -use Errno;
79     -use esmith::config;
80     -use esmith::db;
81     -use esmith::util;
82     -
83     -tie my %conf, 'esmith::config';
84     -
85     -my $program=db_get_prop(\%conf, 'backup', 'Program') || 'flexbackup';
86     -my $status=db_get_prop(\%conf, 'backup', 'status') || 'disabled';
87     -my $tapetype=db_get_prop(\%conf, 'arkeia', 'Tape') || 'none';
88     +use esmith::ConfigDB;
89     +
90     +my $cdb = esmith::ConfigDB->open_ro;
91     +my $backup = $cdb->get('backup') or die "No backup db entry found\n";
92     +
93     +my $program = $backup->prop('Program') || 'flexbackup';
94     +my $status = $backup->prop('status') || 'disabled';
95    
96     if ($status eq 'enabled' && $program eq 'arkeia')
97     {
98     open(BACKUP, '/usr/bin/arkc -backup -running -noinfo 2>&1 |');
99     - while (<BACKUP>) {
100     - if (m#tag=(.*)#) {
101     - die("Another arkeia backup is already running ($1).");
102     - }
103     - }
104     + my %backup = map { chomp; /(.*)=(.*)/; $1 => $2; } <BACKUP>;
105     close BACKUP;
106     + die("Another arkeia backup is already running ($backup{tag}.") if $backup{tag};
107    
108     #----------------------------------------------------------
109     # Check that the dump directory exists. This should have been
110     diff -Nur -x '*.orig' -x '*.rej' smeserver-arkeia-1.0/root/etc/e-smith/events/actions/arkeia-readtape mezzanine_patched_smeserver-arkeia-1.0/root/etc/e-smith/events/actions/arkeia-readtape
111     --- smeserver-arkeia-1.0/root/etc/e-smith/events/actions/arkeia-readtape 1969-12-31 17:00:00.000000000 -0700
112     +++ mezzanine_patched_smeserver-arkeia-1.0/root/etc/e-smith/events/actions/arkeia-readtape 2007-01-24 22:45:02.000000000 -0700
113     @@ -0,0 +1,45 @@
114     +#!/usr/bin/perl -w
115     +
116     +package esmith;
117     +
118     +use strict;
119     +use esmith::ConfigDB;
120     +use esmith::lockfile;
121     +
122     +my $cdb = esmith::ConfigDB->open_ro;
123     +my $backup = $cdb->get('backup') or die "No backup db entry found\n";
124     +my $arkeia = $cdb->get('arkeia') or die "No arkeia db entry found\n";
125     +
126     +my $program = $backup->prop('Program') || 'flexbackup';
127     +my $status = $backup->prop('status') || 'disabled';
128     +my $device = $backup->prop('Device') || '/dev/st0';
129     +my $drive = $arkeia->prop('Drive') || 'none';
130     +my $tape = $arkeia->prop('Tape') || 'none';
131     +
132     +if ($status eq 'enabled' && $program eq 'arkeia')
133     +{
134     + open(BACKUP, '/usr/bin/arkc -backup -running -noinfo 2>&1 |');
135     + my %backup = map { chomp; /(.*)=(.*)/; $1 => $2; } <BACKUP>;
136     + close BACKUP;
137     + die("Another arkeia backup is already running ($backup{tag}.") if $backup{tag};
138     +}
139     +
140     +open(DRIVETYPE, '/usr/bin/arkc -drive -type -noinfo 2>&1 |');
141     +my %drivetype = map { chomp; /name=(.*)/; $1 => 1 } <DRIVETYPE>;
142     +close DRIVETYPE;
143     +exit(0) unless $drivetype{$drive};
144     +
145     +open(TAPETYPE, '/usr/bin/arkc -tape -type -noinfo 2>&1 |');
146     +my %tapetype = map { chomp; /name=(.*)/; $1 => 1 } <TAPETYPE>;
147     +close TAPETYPE;
148     +exit(0) unless $tapetype{$tape};
149     +
150     +my $lock_file = "/var/lock/subsys/arkeia-recover";
151     +my $file_handle = &esmith::lockfile::LockFileOrReturn($lock_file);
152     +
153     +if ($file_handle) {
154     + $ENV{'PATH'} = "/bin:/usr/bin:/sbin:/opt/arkeia/bin";
155     + system(qw(/opt/arkeia/bin/arkrstdb), "-d$device", "-t$tape", "-r$drive", "-pTape Pool");
156     + &esmith::lockfile::UnlockFile($file_handle);
157     + `/bin/rm -f $lock_file`;
158     +}
159     diff -Nur -x '*.orig' -x '*.rej' smeserver-arkeia-1.0/root/etc/e-smith/events/actions/arkeia-recycle-tape mezzanine_patched_smeserver-arkeia-1.0/root/etc/e-smith/events/actions/arkeia-recycle-tape
160     --- smeserver-arkeia-1.0/root/etc/e-smith/events/actions/arkeia-recycle-tape 2006-05-14 16:19:44.000000000 -0600
161     +++ mezzanine_patched_smeserver-arkeia-1.0/root/etc/e-smith/events/actions/arkeia-recycle-tape 2007-01-24 22:45:02.000000000 -0700
162     @@ -3,105 +3,81 @@
163     package esmith;
164    
165     use strict;
166     -use Errno;
167     -use esmith::config;
168     -use esmith::db;
169     -use esmith::util;
170     -
171     -tie my %conf, 'esmith::config';
172     -
173     -my $program=db_get_prop(\%conf, 'backup', 'Program') || 'flexbackup';
174     -my $status=db_get_prop(\%conf, 'backup', 'status') || 'disabled';
175     -my $tapetype=db_get_prop(\%conf, 'arkeia', 'Tape') || 'none';
176     -my $device = db_get_prop(\%conf, 'backup', 'Device') || '/dev/st0';
177     -my $label = db_get_prop(\%conf, 'arkeia', 'Label') || 'Tape #';
178     +use esmith::ConfigDB;
179     +
180     +my $cdb = esmith::ConfigDB->open_ro;
181     +my $backup = $cdb->get('backup') or die "No backup db entry found\n";
182     +my $arkeia = $cdb->get('arkeia') or die "No arkeia db entry found\n";
183     +
184     +my $program = $backup->prop('Program') || 'flexbackup';
185     +my $status = $backup->prop('status') || 'disabled';
186     +my $device = $backup->prop('Device') || '/dev/st0';
187     +my $tape = $arkeia->prop('Tape') || 'none';
188     +my $label = $arkeia->prop('Label') || 'Tape #';
189    
190     if ($status eq 'enabled' && $program eq 'arkeia')
191     {
192     open(BACKUP, '/usr/bin/arkc -backup -running -noinfo 2>&1 |');
193     - while (<BACKUP>) {
194     - die("Backup aborted: Another arkeia backup is already running ($_)") if (m/tag=(.*)/);
195     - }
196     + my %backup = map { chomp; /(.*)=(.*)/; $1 => $2; } <BACKUP>;
197     close BACKUP;
198     + die("Another arkeia backup is already running ($backup{tag}.") if $backup{tag};
199     +}
200    
201     - my $foundtape=0;
202     - open(TAPELOADED, "/bin/mt -f $device status 2>&1 |");
203     - while (<TAPELOADED>) {
204     - $foundtape=1 if (m/ONLINE/);
205     - }
206     - close TAPELOADED;
207     - die("Backup aborded: No tape loaded in drive") unless $foundtape;
208     +die('Invalid Tape property for arkeia') if ($tape eq 'none');
209    
210     - die('Backup aborted: Invalid Tape property for arkeia') if ($tapetype eq 'none');
211     +my $foundtape=0;
212     +open(TAPELOADED, "/bin/mt -f $device status 2>&1 |");
213     +while (<TAPELOADED>) {
214     + $foundtape=1 if (m/ONLINE/);
215     +}
216     +close TAPELOADED;
217     +die("No tape loaded in drive") unless $foundtape;
218    
219     - my $tapecount = {$label => 0};
220     - open(TAPES, '/usr/bin/arkc -tape -list -noinfo 2>&1 |');
221     - while (<TAPES>) {
222     - if (m/^name=(.*[^\d])(\d+)$/) {
223     - $tapecount->{$1} = $2 unless defined $tapecount->{$1};
224     - $tapecount->{$1} = $2 if $tapecount->{$1} < $2;
225     - }
226     +my $tapecount = {$label => 0};
227     +open(TAPES, '/usr/bin/arkc -tape -list -noinfo 2>&1 |');
228     +while (<TAPES>) {
229     + if (m/^name=(.*[^\d])(\d+)$/) {
230     + $tapecount->{$1} = $2 unless defined $tapecount->{$1};
231     + $tapecount->{$1} = $2 if $tapecount->{$1} < $2;
232     }
233     - close TAPES;
234     +}
235     +close TAPES;
236    
237     - my $tapename='';
238     - my $tapefound=0;
239     - open(TAPE, '/usr/bin/arkc -drive -read -noinfo -D name=[Tape Drive] 2>&1 |');
240     - while (<TAPE>) {
241     - if (m/tpname=(.*)/) {
242     - $tapename=$1;
243     - ++$tapefound;
244     - last;
245     - }
246     - }
247     - close TAPE;
248     +open(TAPEDRIVE, '/usr/bin/arkc -drive -read -noinfo -D name=[Tape Drive] 2>&1 |');
249     +my %tapedrive = map { chomp; /(.*)=(.*)/; $1 => $2; } <TAPEDRIVE>;
250     +close TAPEDRIVE;
251     +
252     +unless ($tapedrive{tpname}) {
253     + ++$tapecount->{$label};
254     + my $tapename="$label$tapecount->{$label}";
255     + print "Unrecognized tape. Creating new tape [$tapename]\n";
256     +
257     + system(qw(/usr/bin/arkc -tape -create -noinfo -D), "name=[$tapename]", "type=[$tape]", "plname=[Tape Pool]");
258     + system(qw(/usr/bin/arkc -drive -write -noinfo -D), 'name=[Tape Drive]', "tpname=[$tapename]", 'overwrite=YES');
259     +
260     + open(TAPEDRIVE, '/usr/bin/arkc -drive -read -noinfo -D name=[Tape Drive] 2>&1 |');
261     + %tapedrive = map { chomp; /(.*)=(.*)/; $1 => $2; } <TAPEDRIVE>;
262     + close TAPEDRIVE;
263     +
264     + if ($tapedrive{tpname} eq $tapename) {
265     + system ("/usr/bin/printf \"%b\" \"".
266     + "An unrecognized tape was found in the tape drive [Tape Drive].\n\n" .
267     + "A new tape [$tapename] of type [$tape] was created\n" .
268     + "in arkeia and added to the pool [Tape Pool].\n\n" .
269     + "If you find the same tape continuously being relabeled, this is\n" .
270     + "probably in indication that the tape is bad or failing." .
271     + "\" | mail -s \"New tape [$tapename] created\" admin");
272     + } else {
273     + system ("/usr/bin/printf \"%b\" \"".
274     + "An unrecognized tape was found in the tape drive [Tape Drive].\n\n" .
275     + "An attempt to label the tape FAILED.\n\n" .
276     + "Please check both the tape drive and the tape for problems.\n\n" .
277     + "If you find the same tape continuously being relabeled, this is\n" .
278     + "probably in indication that the tape is bad or failing." .
279     + "\" | mail -s \"Create new tape FAILED!\" admin");
280    
281     - unless ($tapefound) {
282     - ++$tapecount->{$label};
283     - $tapename="$label$tapecount->{$label}";
284     - print "Unrecognized tape. Creating new tape [$tapename]\n";
285     -
286     - system('/usr/bin/arkc','-tape','-create','-noinfo','-D',
287     - "name=[$tapename]",
288     - "type=[$tapetype]",
289     - "plname=[Tape Pool]");
290     - system('/usr/bin/arkc','-drive','-write','-noinfo','-D',
291     - 'name=[Tape Drive]',
292     - "tpname=[$tapename]",
293     - 'overwrite=YES');
294     -
295     - $tapefound=0;
296     - open(TAPE, '/usr/bin/arkc -drive -read -noinfo -D name=[Tape Drive] 2>&1 |');
297     - while (<TAPE>) {
298     - if (m/tpname=(.*)/ && $1 eq $tapename) {
299     - ++$tapefound;
300     - last;
301     - }
302     - }
303     - close TAPE;
304     -
305     - if ($tapefound) {
306     - system ("/usr/bin/printf \"%b\" \"".
307     - "An unrecognized tape was found in the tape drive [Tape Drive].\n\n" .
308     - "A new tape [$tapename] of type [$tapetype] was created\n" .
309     - "in arkeia and added to the pool [Tape Pool].\n\n" .
310     - "If you find the same tape continuously being relabeled, this is\n" .
311     - "probably in indication that the tape is bad or failing." .
312     - "\" | mail -s \"New tape [$tapename] created\" admin");
313     - } else {
314     - system ("/usr/bin/printf \"%b\" \"".
315     - "An unrecognized tape was found in the tape drive [Tape Drive].\n\n" .
316     - "An attempt to label the tape FAILED.\n\n" .
317     - "Please check both the tape drive and the tape for problems.\n\n" .
318     - "If you find the same tape continuously being relabeled, this is\n" .
319     - "probably in indication that the tape is bad or failing." .
320     - "\" | mail -s \"Create new tape FAILED!\" admin");
321     -
322     - system('/usr/bin/arkc','-tape','-delete','-noinfo','-D', "name=[$tapename]");
323     - die('Backup aborted: Creation of new tape FAILED');
324     - }
325     + system(qw(/usr/bin/arkc -tape -delete -noinfo -D), "name=[$tapename]");
326     + die('Creation of new tape FAILED');
327     }
328     -
329     - system('/usr/bin/arkc','-tape','-recycle','-noinfo','-D',
330     - "name=[$tapename]");
331     }
332     +system(qw(/usr/bin/arkc -tape -recycle -noinfo -D), "name=[$tapedrive{tpname}]") if $tapedrive{tpname};
333     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
334     --- smeserver-arkeia-1.0/root/etc/e-smith/events/actions/conf-arkeia 2005-11-17 11:24:53.000000000 -0700
335     +++ mezzanine_patched_smeserver-arkeia-1.0/root/etc/e-smith/events/actions/conf-arkeia 2007-01-24 22:45:02.000000000 -0700
336     @@ -3,198 +3,88 @@
337     package esmith;
338    
339     use strict;
340     -use Errno;
341     -use esmith::config;
342     -use esmith::util;
343     -use esmith::db;
344     +use esmith::ConfigDB;
345     +use esmith::templates;
346     +use Data::Dumper;
347     +
348     +sub check_arkc {
349     + my $object = shift;
350     + my $name = shift;
351     + my @params = @_;
352     +
353     + open(ARKC, "/usr/bin/arkc -$object -list -noinfo 2>&1 |");
354     + my %list = map { chomp; /name=(.*)/; $1 => 1 } <ARKC>;
355     + close ARKC;
356    
357     -my %conf;
358     -tie %conf, 'esmith::config';
359     -
360     -my $machinename = $conf{'SystemName'} . '.' . $conf{'DomainName'};
361     -
362     -my $type = db_get_type(\%conf, 'arkeia');
363     -
364     -
365     -unless (defined $type && $type eq 'backupservice') {
366     - my $model = 'none';
367     - my $device = '/dev/st0';
368     -
369     - open(DETECTHARDWARE, '/opt/arkeia/bin/arkdetect 2>&1 |');
370     - while (<DETECTHARDWARE>) {
371     - $model = $1 if (m#PROP : 'ARK_MODEL 'VAL : '(.*)'#);
372     - $device = $1 if (m#PROP : 'DEVICE 'VAL : '(.*)'#);
373     - }
374     - close DETECTHARDWARE;
375     -
376     - db_delete(\%conf, 'arkeia') if (defined $type && $type ne 'backupservice');
377     - db_set(\%conf, 'arkeia', 'backupservice', { Drive => "$model", Tape => 'none', status => 'enabled', });
378     - db_set_prop(\%conf, 'backup', 'Device', $device);
379     + system(qw(/usr/bin/arkc -create), "-$object", qw(-noinfo -D), "name=[$name]", @params) unless $list{$name}
380     }
381    
382     -my $ip = '';
383     -my $hostfound = 0;
384     -open(HOSTFILE, 'cat /etc/hosts 2>&1 |');
385     -while (<HOSTFILE>) {
386     - if (m#^[ ]*([0-9.]+)[ ]+.*$machinename#) {
387     - $ip = $1;
388     - ++$hostfound;
389     - last;
390     - }
391     +my $cdb = esmith::ConfigDB->open;
392     +my $backup = $cdb->get('backup') or die "No backup db entry found\n";
393     +my $arkeia = $cdb->get('arkeia') or die "No arkeia db entry found\n";
394     +my $machinename = $cdb->get('SystemName')->value.".".$cdb->get('DomainName')->value;
395     +
396     +open(DETECTHARDWARE, '/opt/arkeia/bin/arkdetect 2>&1 |');
397     +while (<DETECTHARDWARE>) {
398     + $arkeia->set_prop('Drive', $1) if m#PROP : 'ARK_MODEL 'VAL : '(.*)'#;
399     + $backup->set_prop('Device', $1) if m#PROP : 'DEVICE 'VAL : '(.*)'#;
400     }
401     -close HOSTFILE;
402     -
403     -die("$machinename not found in hosts file.") unless ($hostfound);
404     +close DETECTHARDWARE;
405    
406     my $networkfound = 0;
407     open(NETWORK, '/sbin/ifconfig 2>&1 |');
408     while (<NETWORK>) {
409     - ++$networkfound if (m#$ip#);
410     + ++$networkfound if (m#inet addr:\s*\d+\.#);
411     }
412     close NETWORK;
413     +exit(0) unless $networkfound;
414    
415     -if ($networkfound) {
416     - esmith::templates::processTemplate({
417     - TEMPLATE_PATH => '/opt/arkeia/arkc/arkc.param',
418     - PERMS => 0640,
419     - UID => 'root',
420     - GID => 'root'
421     - });
422     -
423     - my $userfound = 0;
424     - open(USERLIST, '/usr/bin/arkc -user -list -noinfo 2>&1 |');
425     - while (<USERLIST>) {
426     - if (m#name=admin#) {
427     - ++$userfound;
428     - last;
429     - }
430     - }
431     - close USERLIST;
432     -
433     - unless ($userfound) {
434     - my $password = esmith::util::LdapPassword();
435     - system('/usr/bin/arkc','-user','-create','-noinfo','-D',
436     - 'name=admin',
437     - 'role=ADMINISTRATOR',
438     - "email=[admin\@$conf{'DomainName'}]",
439     - "node=$machinename",
440     - "passwd=[$password]",
441     - "vpasswd=[$password]");
442     -
443     - esmith::templates::processTemplate({
444     - TEMPLATE_PATH => '/opt/arkeia/arkc/arkc.param',
445     - PERMS => 0640,
446     - UID => 'root',
447     - GID => 'root'
448     - });
449     - }
450     -
451     - my $drivetype = db_get_prop(\%conf, 'arkeia', 'Drive') || 'none';
452     - my $drivetypefound = 0;
453     - open(DRIVETYPE, '/usr/bin/arkc -drive -type -noinfo 2>&1 |');
454     - while (<DRIVETYPE>) {
455     - if (m#$drivetype#) {
456     - ++$drivetypefound;
457     - last;
458     - }
459     - }
460     - close DRIVETYPE;
461     -
462     - my $devicetype = db_get_prop(\%conf, 'backup', 'Device') || 'none';
463     - if ($drivetypefound) {
464     - my $drivefound = 0;
465     - my $devicefound = 0;
466     - open(DRIVE, '/usr/bin/arkc -drive -list -noinfo -D name=[Tape Drive] 2>&1 |');
467     - while (<DRIVE>) {
468     - ++$drivefound if (m#$drivetype#);
469     - ++$devicefound if (m#$devicetype#);
470     - }
471     - close DRIVE;
472     -
473     - unless ($drivefound && $devicefound) {
474     - system('/usr/bin/arkc','-drivepack','-delete','-noinfo','-D',
475     - 'name=[Drive Pack]');
476     - system('/usr/bin/arkc','-drive','-delete','-noinfo','-D',
477     - 'name=[Tape Drive]');
478     - system('/usr/bin/arkc','-drive','-create','-noinfo','-D',
479     - 'name=[Tape Drive]',
480     - "type=[$drivetype]",
481     - "rewind_dev=[$devicetype]");
482     - }
483     - }
484     -
485     - my $drivepackfound = 0;
486     - open(DRIVEPACK, '/usr/bin/arkc -drivepack -list -noinfo 2>&1 |');
487     - while (<DRIVEPACK>) {
488     - if (m#Drive Pack#) {
489     - ++$drivepackfound;
490     - last;
491     - }
492     - }
493     - close DRIVEPACK;
494     -
495     - unless ($drivepackfound) {
496     - system('/usr/bin/arkc','-drivepack','-create','-noinfo','-D',
497     - 'name=[Drive Pack]',
498     - 'drvname=[Tape Drive]');
499     - ++$drivepackfound;
500     - }
501     -
502     - my $poolfound = 0;
503     - open(POOL, '/usr/bin/arkc -pool -list -noinfo 2>&1 |');
504     - while (<POOL>) {
505     - if (m#Tape Pool#) {
506     - ++$poolfound;
507     - last;
508     - }
509     - }
510     - close POOL;
511     -
512     - unless ($poolfound) {
513     - system('/usr/bin/arkc','-pool','-create','-noinfo','-D',
514     - 'name=[Tape Pool]');
515     - ++$poolfound;
516     - }
517     -
518     - my $savepackfound = 0;
519     - open(SAVEPACK, '/usr/bin/arkc -savepack -list -noinfo 2>&1 |');
520     - while (<SAVEPACK>) {
521     - if (m#Save Pack#) {
522     - ++$savepackfound;
523     - last;
524     - }
525     - }
526     - close SAVEPACK;
527     -
528     - if ($savepackfound) {
529     - my $savepackmachine = 0;
530     - open(SAVEPACK, '/usr/bin/arkc -savepack -list -noinfo -D name=[Save Pack] 2>&1 |');
531     - while (<SAVEPACK>) {
532     - if (m#=$machinename#) {
533     - ++$savepackmachine;
534     - last;
535     - }
536     - }
537     - close SAVEPACK;
538     -
539     - unless ($savepackmachine) {
540     - system('/usr/bin/arkc','-savepack','-delete','-noinfo','-D',
541     - 'name=[Save Pack]');
542     - system('/usr/bin/arkc','-savepack','-create','-noinfo','-D',
543     - 'name=[Save Pack]');
544     - system('/usr/bin/arkc','-savepack','-modify','-noinfo','-D',
545     - 'name=[Save Pack]',
546     - "tree_name=$machinename");
547     - }
548     - ++$savepackfound;
549     - } else {
550     - system('/usr/bin/arkc','-savepack','-create','-noinfo','-D',
551     - 'name=[Save Pack]');
552     - system('/usr/bin/arkc','-savepack','-modify','-noinfo','-D',
553     - 'name=[Save Pack]',
554     - "tree_name=$machinename");
555     - ++$savepackfound;
556     - }
557     +processTemplate ({TEMPLATE_PATH => "/opt/arkeia/arkc/arkc.param"});
558     +
559     +open(USERLIST, '/usr/bin/arkc -user -list -noinfo 2>&1 |');
560     +my %userlist = map { chomp; /name=(.*)/; $1 => 1; } <USERLIST>;
561     +close USERLIST;
562     +
563     +unless ($userlist{admin}) {
564     + my $password = esmith::util::LdapPassword();
565     + system(qw(/usr/bin/arkc -user -create -noinfo -D name=admin role=ADMINISTRATOR),
566     + "email=[admin\@".$cdb->get('DomainName')->value."]", "node=$machinename", "passwd=[$password]", "vpasswd=[$password]");
567     +
568     + processTemplate ({TEMPLATE_PATH => "/opt/arkeia/arkc/arkc.param"});
569     }
570    
571     -exit (0);
572     +open(USERLIST, '/usr/bin/arkc -user -list -noinfo 2>&1 |');
573     +%userlist = map { chomp; /name=(.*)/; $1 => 1; } <USERLIST>;
574     +close USERLIST;
575     +exit(0) unless $userlist{admin};
576     +
577     +my $device = $backup->prop('Device') || '/dev/st0';
578     +my $drive = $arkeia->prop('Drive') || 'none';
579     +
580     +open(DRIVETYPE, '/usr/bin/arkc -drive -type -noinfo 2>&1 |');
581     +my %drivetype = map { chomp; /name=(.*)/; $1 => 1 } <DRIVETYPE>;
582     +close DRIVETYPE;
583     +exit(0) unless $drivetype{$drive};
584     +
585     +open(DRIVE, '/usr/bin/arkc -drive -list -noinfo -D name=[Tape Drive] 2>&1 |');
586     +my %driveinfo = map { chomp; /(.*)=(.*)/; $1 => $2 } <DRIVE>;
587     +close DRIVE;
588     +
589     +unless (($driveinfo{DRV_TYPE} || '') eq $drive && ($driveinfo{REWIND_DEV} || '') eq $device) {
590     + system(qw(/usr/bin/arkc -drivepack -delete -noinfo -D), "name=[Drive Pack]");
591     + system(qw(/usr/bin/arkc -drive -delete -noinfo -D), "name=[Tape Drive]");
592     + system(qw(/usr/bin/arkc -drive -create -noinfo -D), "name=[Tape Drive]", "type=[$drive]", "rewind_dev=[$device]");
593     +}
594     +
595     +check_arkc('drivepack', 'Drive Pack', 'drvname=[Tape Drive]');
596     +check_arkc('pool', 'Tape Pool');
597     +
598     +open(SAVEPACK, '/usr/bin/arkc -savepack -list -noinfo -D name=[Save Pack] 2>&1 |');
599     +my %savepack = map { chomp; /(.*)=(.*)/; $1 => $2 } grep /=/, <SAVEPACK>;
600     +close SAVEPACK;
601     +
602     +unless (($savepack{FULLNAME} || '') eq $machinename) {
603     + system(qw(/usr/bin/arkc -savepack -delete -noinfo -D), "name=[Save Pack]");
604     + system(qw(/usr/bin/arkc -savepack -create -noinfo -D), "name=[Save Pack]");
605     + system(qw(/usr/bin/arkc -savepack -modify -noinfo -D), "name=[Save Pack]", "tree_name=$machinename");
606     +}
607     diff -Nur -x '*.orig' -x '*.rej' smeserver-arkeia-1.0/root/etc/e-smith/events/actions/tape-restore-arkeia mezzanine_patched_smeserver-arkeia-1.0/root/etc/e-smith/events/actions/tape-restore-arkeia
608     --- smeserver-arkeia-1.0/root/etc/e-smith/events/actions/tape-restore-arkeia 2004-07-29 11:14:30.000000000 -0600
609     +++ mezzanine_patched_smeserver-arkeia-1.0/root/etc/e-smith/events/actions/tape-restore-arkeia 2007-01-24 22:54:40.000000000 -0700
610     @@ -1,49 +1,52 @@
611     #!/usr/bin/perl -w
612    
613     -use strict;
614     package esmith;
615     -use esmith::config;
616     -use esmith::db;
617     +
618     +use strict;
619     +use esmith::ConfigDB;
620     use esmith::Backup;
621     use English;
622    
623     -my %conf;
624     -tie %conf, 'esmith::config';
625     +my $cdb = esmith::ConfigDB->open_ro;
626     +my $backup = $cdb->get('backup') or die "No backup db entry found\n";
627    
628     -my $backup_program = db_get_prop(\%conf, 'backup', 'Program');
629     -exit(0) unless (defined $backup_program && $backup_program eq 'arkeia');
630     -
631     -my $tapename;
632     -open(TAPE, '/usr/bin/arkc -drive -read -noinfo -D name=[Tape Drive] 2>&1 |');
633     -while (<TAPE>) {
634     - if (m#tpname=(.*)#) {
635     - $tapename=$1;
636     - last;
637     - }
638     +my $program = $backup->prop('Program') || 'flexbackup';
639     +my $status = $backup->prop('status') || 'disabled';
640     +exit(0) unless $program eq 'arkeia';
641     +
642     +if ($status eq 'enabled' && $program eq 'arkeia')
643     +{
644     + open(BACKUP, '/usr/bin/arkc -backup -running -noinfo 2>&1 |');
645     + my %backup = map { chomp; /(.*)=(.*)/; $1 => $2; } <BACKUP>;
646     + close BACKUP;
647     + die("Another arkeia backup is already running ($backup{tag}.") if $backup{tag};
648     }
649     -close TAPE;
650     -die 'Unrecognized tape. Has it been added to the catalog?' unless defined($tapename);
651    
652     -my $hostfound=0;
653     -my $host;
654     +open(TAPEDRIVE, '/usr/bin/arkc -drive -read -noinfo -D name=[Tape Drive] 2>&1 |');
655     +my %tapedrive = map { chomp; /(.*)=(.*)/; $1 => $2; } <TAPEDRIVE>;
656     +close TAPEDRIVE;
657     +die 'Unrecognized tape. Has it been added to the catalog?' unless $tapedrive{tpname};
658     +
659     +my ($host, $found);
660     open(HOSTS, '/bin/ls /opt/arkeia/server/dbase/o3dbtree 2>&1 |');
661     while (<HOSTS>) {
662     chomp;
663     - next if (m#o3_cpnt#);
664     + next if (m#^o3_cpnt#);
665     + next if (m#\.(lck|lst)$#);
666    
667     $host=$_;
668     - open (FINDHOST, "/usr/bin/arkc -file -where -noinfo -D \"file=[$host!file:/etc/passwd]\" \"tpname=[$tapename]\" 2>&1 |");
669     + open (FINDHOST, "/usr/bin/arkc -file -where -noinfo -D \"file=[$host!file:/etc/passwd]\" \"tpname=[$tapedrive{tpname}]\" 2>&1 |");
670     while (<FINDHOST>) {
671     - if (m#$tapename#) {
672     - ++$hostfound;
673     + if (m#$tapedrive{tpname}#) {
674     + $found++;
675     last;
676     }
677     }
678     close FINDHOST;
679     - last if ($hostfound);
680     + last if $found;
681     }
682     close HOSTS;
683     -die 'Can\'t do automated restore from this tape.' unless ($hostfound);
684     +die 'Can\'t do automated restore from this tape.' unless $found;
685    
686     my ($bksid,$tempid);
687     open(BACKUP, '/usr/bin/arkc -backup -done 2>&1 |');
688     @@ -52,12 +55,9 @@
689     $tempid = $1;
690     open(WHICHTAPE, "/usr/bin/arkc -file -where -noinfo -D \"file=[$host!file:/etc/passwd]\" start_bksid=$tempid end_bksid=$tempid 2>&1 |");
691     while (<WHICHTAPE>) {
692     - if (m#tpname=$tapename#) {
693     - if (defined($bksid)) {
694     - die 'Tape contains more than one backup. Can\'t do automated restore from this tape.';
695     - } else {
696     - $bksid=$tempid;
697     - }
698     + if (m#tpname=$tapedrive{tpname}#) {
699     + die 'Tape contains more than one backup. Can\'t do automated restore from this tape.' if (defined($bksid));
700     + $bksid=$tempid;
701     }
702     }
703     close WHICHTAPE;
704     @@ -67,12 +67,12 @@
705     die 'Tape doesn\'t contain any parts necessary for restore.' unless defined($bksid);
706    
707     my @restore;
708     -my $backup = new esmith::Backup or die 'Couldn\'t create Backup object';
709     -foreach my $file ($backup->restore_list) {
710     +my $bobj = new esmith::Backup or die 'Couldn\'t create Backup object';
711     +foreach my $file ($bobj->restore_list) {
712     open (FINDFILE, "/usr/bin/arkc -file -where -noinfo -D \"file=[$host!file:/$file]\" start_bksid=$bksid end_bksid=$bksid 2>&1 |");
713     while (<FINDFILE>) {
714     if (m#tpname=(.*)#) {
715     - die 'Restore will require more than one tape. Can\'t do automated restore.' unless ($tapename eq $1);
716     + die 'Restore will require more than one tape. Can\'t do automated restore.' unless ($tapedrive{tpname} eq $1);
717     push @restore, "file=[$host!file:/$file]";
718     last;
719     }
720     @@ -81,16 +81,10 @@
721     }
722    
723     if ($#restore >= 0) {
724     - my $machinename = $conf{'SystemName'} . '.' . $conf{'DomainName'};
725     - system('/usr/bin/arkc','-restore','-start','-noinfo','-D',
726     - @restore,
727     - 'drvname=[Tape Drive]',
728     - "start_bksid=$bksid",
729     - "end_bksid=$bksid",
730     - "from=[$host!file:/]",
731     - "to=[$machinename!file:/]",
732     - 'rstopt=[RST_TIMES RST_PERMS RST_BYID ~RST_CHKTIME]',
733     - 'wait=YES');
734     + my $machinename = $cdb->get('SystemName')->value . '.' . $cdb->get('DomainName')->value;
735     + system(qw(/usr/bin/arkc -restore -start -noinfo -D), @restore, 'drvname=[Tape Drive]',
736     + "start_bksid=$bksid", "end_bksid=$bksid", "from=[$host!file:/]", "to=[$machinename!file:/]",
737     + 'rstopt=[RST_TIMES RST_PERMS RST_BYNAME ~RST_CHKTIME]', 'wait=YES');
738    
739     die 'Tape restore failed: arkeia error.' if ($CHILD_ERROR)
740     } else {
741     diff -Nur -x '*.orig' -x '*.rej' smeserver-arkeia-1.0/root/etc/e-smith/templates/opt/arkeia/arkc/arkc.param/20user mezzanine_patched_smeserver-arkeia-1.0/root/etc/e-smith/templates/opt/arkeia/arkc/arkc.param/20user
742     --- smeserver-arkeia-1.0/root/etc/e-smith/templates/opt/arkeia/arkc/arkc.param/20user 2004-07-23 13:10:02.000000000 -0600
743     +++ mezzanine_patched_smeserver-arkeia-1.0/root/etc/e-smith/templates/opt/arkeia/arkc/arkc.param/20user 2007-01-24 22:45:02.000000000 -0700
744     @@ -1,16 +1,9 @@
745     {
746     - local $found = 0;
747     -
748     - open(USERLIST, "/usr/bin/arkc -user -list 2>&1 |");
749     - while (<USERLIST>) {
750     - if (m#name=admin#) {
751     - ++$found;
752     - last;
753     - }
754     - }
755     + open(USERLIST, '/usr/bin/arkc -user -list -noinfo 2>&1 |');
756     + local %userlist = map { chomp; /name=(.*)/; $1 => 1; } <USERLIST>;
757     close USERLIST;
758    
759     - if ($found) {
760     + if ($userlist{admin}) {
761     local $password = esmith::util::LdapPassword();
762    
763     $OUT .= "LOGIN \"admin\"\n";
764     diff -Nur -x '*.orig' -x '*.rej' smeserver-arkeia-1.0/root/etc/e-smith/templates.metadata/opt/arkeia/arkc/arkc.param mezzanine_patched_smeserver-arkeia-1.0/root/etc/e-smith/templates.metadata/opt/arkeia/arkc/arkc.param
765     --- smeserver-arkeia-1.0/root/etc/e-smith/templates.metadata/opt/arkeia/arkc/arkc.param 1969-12-31 17:00:00.000000000 -0700
766     +++ mezzanine_patched_smeserver-arkeia-1.0/root/etc/e-smith/templates.metadata/opt/arkeia/arkc/arkc.param 2007-01-24 22:45:02.000000000 -0700
767     @@ -0,0 +1,3 @@
768     +PERMS=640
769     +UID="root"
770     +GID="root"

admin@koozali.org
ViewVC Help
Powered by ViewVC 1.2.1 RSS 2.0 feed