Imported Upstream version 3.3.3
[debian/amanda] / perl / Amanda / Script.pm
1 # vim:ft=perl
2 # Copyright (c) 2008-2012 Zmanda, Inc.  All Rights Reserved.
3 #
4 # This program is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU General Public License
6 # as published by the Free Software Foundation; either version 2
7 # of the License, or (at your option) any later version.
8 #
9 # This program is distributed in the hope that it will be useful, but
10 # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
11 # or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
12 # for more details.
13 #
14 # You should have received a copy of the GNU General Public License along
15 # with this program; if not, write to the Free Software Foundation, Inc.,
16 # 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
17 #
18 # Contact information: Zmanda Inc., 465 S. Mathilda Ave., Suite 300
19 # Sunnyvale, CA 94085, USA, or: http://www.zmanda.com
20
21 package Amanda::Script;
22 use base qw(Amanda::Script_App);
23
24 use strict;
25 use warnings;
26
27 =head1 NAME
28
29 Amanda::Script - perl utility functions for Scripts.
30
31 =head1 SYNOPSIS
32
33   package Amanda::Script::my_script;
34   use base qw(Amanda::Script);
35
36   sub new {
37     my $class = shift;
38     my ($execute_where, $foo, $bar) = @_;
39     my $self = $class->SUPER::new($execute_where);
40     $self->{'execute_where'} = $execute_where;
41     $self->{'foo'} = $foo;
42     $self->{'bar'} = $bar;
43
44     return $self;
45   }
46
47   # Define all command_* subs that you need, e.g.,
48   sub command_pre_dle_amcheck {
49     my $self = shift;
50     # ...
51   }
52
53   package main;
54
55   # .. parse arguments ..
56   my $script = Amanda::Script::my_script->new($opt_execute_where, $opt_foo, $opt_bar);
57   $script->do($cmd);
58
59 =cut
60
61 sub new {
62     my $class = shift;
63     my ($execute_where, $config_name) = @_;
64
65     my $self = Amanda::Script_App::new($class, $execute_where, "script", $config_name);
66
67     $self->{known_commands} = {
68         support             => 1,
69         pre_amcheck         => 1,
70         pre_dle_amcheck     => 1,
71         pre_host_amcheck    => 1,
72         post_amcheck        => 1,
73         post_dle_amcheck    => 1,
74         post_host_amcheck   => 1,
75         pre_dle_estimate    => 1,
76         pre_estimate        => 1,
77         pre_host_estimate   => 1,
78         post_estimate       => 1,
79         post_dle_estimate   => 1,
80         post_host_estimate  => 1,
81         pre_backup          => 1,
82         pre_dle_backup      => 1,
83         pre_host_backup     => 1,
84         post_dle_backup     => 1,
85         post_backup         => 1,
86         post_host_backup    => 1,
87         pre_recover         => 1,
88         post_recover        => 1,
89         pre_level_recover   => 1,
90         post_level_recover  => 1,
91         inter_level_recover => 1,
92     };
93     return $self;
94 }
95
96 sub _set_mesgout {
97     my $self = shift;
98
99     my $mesgout_fd;
100     open ($mesgout_fd, '>&=1') || die("Can't open mesgout_fd: $!");
101     $self->{mesgout} = $mesgout_fd;
102 }
103
104 1;