]> git.proxmox.com Git - pve-guest-common.git/blame - PVE/VZDump/Plugin.pm
vzdump: add common log sub-method
[pve-guest-common.git] / PVE / VZDump / Plugin.pm
CommitLineData
a19d93a2
FG
1package PVE::VZDump::Plugin;
2
3use strict;
4use warnings;
047ee481
TL
5
6use POSIX qw(strftime);
7
8use PVE::Tools;
9use PVE::SafeSyslog;
10
11my $log_level = {
12 err => 'ERROR:',
13 info => 'INFO:',
14 warn => 'WARN:',
15};
16
17sub debugmsg {
18 my ($mtype, $msg, $logfd, $syslog) = @_;
19
20 chomp $msg;
21
22 return if !$msg;
23
8044127d
TL
24 my $level = $log_level->{$mtype} ? $mtype : 'err';
25 my $pre = $log_level->{$level};
047ee481
TL
26
27 my $timestr = strftime ("%F %H:%M:%S", CORE::localtime);
28
8044127d 29 syslog ($level, "$pre $msg") if $syslog;
047ee481
TL
30
31 foreach my $line (split (/\n/, $msg)) {
32 print STDERR "$pre $line\n";
33 print $logfd "$timestr $pre $line\n" if $logfd;
34 }
35}
a19d93a2
FG
36
37sub set_logfd {
38 my ($self, $logfd) = @_;
39
40 $self->{logfd} = $logfd;
41}
42
43sub cmd {
44 my ($self, $cmdstr, %param) = @_;
45
047ee481
TL
46 my $logfunc = sub {
47 my $line = shift;
48 debugmsg ('info', $line, $self->{logfd});
49 };
50
51 PVE::Tools::run_command($cmdstr, %param, logfunc => $logfunc);
a19d93a2
FG
52}
53
54sub cmd_noerr {
55 my ($self, $cmdstr, %param) = @_;
56
57 my $res;
58 eval { $res = $self->cmd($cmdstr, %param); };
59 $self->logerr ($@) if $@;
60 return $res;
61}
62
c8a71da5
TL
63sub log {
64 my ($self, $level, $msg, $to_syslog) = @_;
65
66 debugmsg($level, $msg, $self->{logfd}, $to_syslog);
67}
68
a19d93a2
FG
69sub loginfo {
70 my ($self, $msg) = @_;
71
047ee481 72 debugmsg('info', $msg, $self->{logfd}, 0);
a19d93a2
FG
73}
74
75sub logerr {
76 my ($self, $msg) = @_;
77
047ee481 78 debugmsg('err', $msg, $self->{logfd}, 0);
a19d93a2
FG
79}
80
81sub type {
82 return 'unknown';
83};
84
85sub vmlist {
86 my ($self) = @_;
87
88 return [ keys %{$self->{vmlist}} ] if $self->{vmlist};
89
90 return [];
91}
92
93sub vm_status {
94 my ($self, $vmid) = @_;
95
96 die "internal error"; # implement in subclass
97}
98
99sub prepare {
100 my ($self, $task, $vmid, $mode) = @_;
101
102 die "internal error"; # implement in subclass
103}
104
105sub lock_vm {
106 my ($self, $vmid) = @_;
107
108 die "internal error"; # implement in subclass
109}
110
111sub unlock_vm {
112 my ($self, $vmid) = @_;
113
114 die "internal error"; # implement in subclass
115}
116
117sub stop_vm {
118 my ($self, $task, $vmid) = @_;
119
120 die "internal error"; # implement in subclass
121}
122
123sub start_vm {
124 my ($self, $task, $vmid) = @_;
125
126 die "internal error"; # implement in subclass
127}
128
129sub suspend_vm {
130 my ($self, $task, $vmid) = @_;
131
132 die "internal error"; # implement in subclass
133}
134
135sub resume_vm {
136 my ($self, $task, $vmid) = @_;
137
138 die "internal error"; # implement in subclass
139}
140
141sub snapshot {
142 my ($self, $task, $vmid) = @_;
143
144 die "internal error"; # implement in subclass
145}
146
147sub copy_data_phase2 {
148 my ($self, $task, $vmid) = @_;
149
150 die "internal error"; # implement in subclass
151}
152
153sub assemble {
154 my ($self, $task, $vmid) = @_;
155
156 die "internal error"; # implement in subclass
157}
158
159sub archive {
160 my ($self, $task, $vmid, $filename, $comp) = @_;
161
162 die "internal error"; # implement in subclass
163}
164
165sub cleanup {
166 my ($self, $task, $vmid) = @_;
167
168 die "internal error"; # implement in subclass
169}
170
1711;