all lists on lists.proxmox.com
 help / color / mirror / Atom feed
From: "Fabian Grünbichler" <f.gruenbichler@proxmox.com>
To: Proxmox VE development discussion <pve-devel@lists.proxmox.com>
Subject: [pve-devel] applied-series: [PATCH container v2 1/2] restore: clean up config when invalid source archive is given
Date: Thu, 22 Dec 2022 13:54:12 +0100	[thread overview]
Message-ID: <1671713625.f22m9tmm1x.astroid@yuna.none> (raw)
In-Reply-To: <20221129140019.203126-1-d.tschlatscher@proxmox.com>

thanks!

On November 29, 2022 3:00 pm, Daniel Tschlatscher wrote:
> Before, if a non-existent source archive parameter was passed when
> restoring a container, the task would fail but leave an empty config
> file behind. The same with invalid mount point configurations.
> In both cases, the empty config will now be removed.
> 
> Signed-off-by: Daniel Tschlatscher <d.tschlatscher@proxmox.com>
> ---
> Changes from v1:
> * According to Thomas' suggestion I revised the code so that all
>   errors are now handled centrally in the lower clean up handler which
>   before was only used for the case when the config was unrecoverable
>   and merged the two consecutive eval blocks into one.
>   For this, I repurposed the $remove_lock variable and renamed it to
>   better reflect its new usage.
> 
>  src/PVE/API2/LXC.pm | 19 +++++++++----------
>  1 file changed, 9 insertions(+), 10 deletions(-)
> 
> diff --git a/src/PVE/API2/LXC.pm b/src/PVE/API2/LXC.pm
> index 03d7ea0..f2113de 100644
> --- a/src/PVE/API2/LXC.pm
> +++ b/src/PVE/API2/LXC.pm
> @@ -372,12 +372,13 @@ __PACKAGE__->register_method({
>  	eval { PVE::LXC::Config->create_and_lock_config($vmid, $force) };
>  	die "$emsg $@" if $@;
>  
> -	my $remove_lock = 1;
> +	my $destroy_config_on_error = !$same_container_exists;
>  
>  	my $code = sub {
>  	    my $old_conf = PVE::LXC::Config->load_config($vmid);
>  	    my $was_template;
>  
> +	    my $vollist = [];
>  	    eval {
>  		my $orig_mp_param; # only used if $restore
>  		if ($restore) {
> @@ -444,14 +445,10 @@ __PACKAGE__->register_method({
>  			$mp_param->{rootfs} = "$storage:4"; # defaults to 4GB
>  		    }
>  		}
> -	    };
> -	    die "$emsg $@" if $@;
>  
> -	    # up until here we did not modify the container, besides the lock
> -	    $remove_lock = 0;
> +		# up until here we did not modify the container, besides the lock
> +		$destroy_config_on_error = 1;
>  
> -	    my $vollist = [];
> -	    eval {
>  		$vollist = PVE::LXC::create_disks($storage_cfg, $vmid, $mp_param, $conf);
>  
>  		# we always have the 'create' lock so check for more than 1 entry
> @@ -499,8 +496,10 @@ __PACKAGE__->register_method({
>  	    };
>  	    if (my $err = $@) {
>  		PVE::LXC::destroy_disks($storage_cfg, $vollist);
> -		eval { PVE::LXC::Config->destroy_config($vmid) };
> -		warn $@ if $@;
> +		if ($destroy_config_on_error) {
> +		    eval { PVE::LXC::Config->destroy_config($vmid) };
> +		    warn $@ if $@;
> +		}
>  		die "$emsg $err";
>  	    }
>  	    PVE::AccessControl::add_vm_to_pool($vmid, $pool) if $pool;
> @@ -516,7 +515,7 @@ __PACKAGE__->register_method({
>  	    };
>  	    if (my $err = $@) {
>  		# if we aborted before changing the container, we must remove the create lock
> -		if ($remove_lock) {
> +		if (!$destroy_config_on_error) {
>  		    PVE::LXC::Config->remove_lock($vmid, 'create');
>  		}
>  		die $err;
> -- 
> 2.30.2
> 
> 
> 
> _______________________________________________
> pve-devel mailing list
> pve-devel@lists.proxmox.com
> https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
> 
> 
> 




      parent reply	other threads:[~2022-12-22 12:54 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-11-29 14:00 [pve-devel] " Daniel Tschlatscher
2022-11-29 14:00 ` [pve-devel] [PATCH container v2 2/2] restore: also remove firewall config after failed restore Daniel Tschlatscher
2022-12-22 12:54 ` Fabian Grünbichler [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1671713625.f22m9tmm1x.astroid@yuna.none \
    --to=f.gruenbichler@proxmox.com \
    --cc=pve-devel@lists.proxmox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal