On Wed, Jan 23, 2019 at 03:34:56PM +0100, Dominik Csapak wrote:
> On 1/23/19 3:27 PM, Fabian Grünbichler wrote:
> > On Mon, Jan 21, 2019 at 09:44:35AM +0100, Dominik Csapak wrote:
> > > this adds a new config option for it, and executes it on four
> > > points in time:
> > > 
> > > 'pre-start'
> > > 'post-start'
> > > 'pre-stop'
> > > 'post-stop'
> > > 
> > > on pre-start we abort if the script fails
> > > and pre-stop will not be called if the vm crashes or if
> > > the vm gets powered off from inside the guest
> > > 
> > > Signed-off-by: Dominik Csapak <d.csa...@proxmox.com>
> > > ---
> > >   PVE/API2/Qemu.pm  |  8 ++++++++
> > >   PVE/CLI/qm.pm     |  2 ++
> > >   PVE/QemuServer.pm | 12 ++++++++++++
> > >   3 files changed, 22 insertions(+)
> > > 
> > > diff --git a/PVE/API2/Qemu.pm b/PVE/API2/Qemu.pm
> > > index b55fd13..13aa021 100644
> > > --- a/PVE/API2/Qemu.pm
> > > +++ b/PVE/API2/Qemu.pm
> > > @@ -1101,6 +1101,14 @@ my $update_vm_api  = sub {
> > >               if ($param->{$opt} eq '1') {
> > >                   $param->{$opt} = PVE::QemuServer::generate_uuid();
> > >               }
> > > + } elsif ($opt eq 'hookscript') {
> > > +     my ($path, undef, $type) = PVE::Storage::path($storecfg, 
> > > $param->{$opt});
> > 
> > IMHO this should be limited to root@pam here as well (just because an
> > admin put an executable in some scripts directory does not mean they
> > want every user that can modify their VM config to execute that script
> > as root - potentially that script then decides stuff based on VM config
> > content as well, etc. pp.). once we establish a ACL scheme for this
> > scripts we might relax this here, but for now let's keep it simple &
> > safe by default.
> 
> any new config option is by default root@pam only
> (see PVE/API2/Qemu.pm:335)
> 
> so this is already done?

fair enough - as discussed off-disk ;)

> > > +     raise_param_exc({ $opt => "is not in the scripts directory" })
> > > +         if $type ne 'scripts';
> > > +
> > > +     warn "script '$path' not found, setting anyway\n"
> > > +         if ! -f $path;
> > 
> > does this make sense?
> 
> what exactly? i did not want the user to be able to set anything
> (e.g. 'local:5' which is a valid volume-id but nonsense in this
> context), but i did not want the user to be restricted
> to first put the script in the storage and then set it

sorry - not failing if the hook script does not exist. we don't allow
adding non-existing volumes as disks either, and IMHO the usual
assumption would be that referencing a hook script to be executed which
does not exist is an error (e.g., a typo, or something like that).

_______________________________________________
pve-devel mailing list
pve-devel@pve.proxmox.com
https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to