[pve-devel] [PATCH container v4] api: record CT ID as used after a container is destroyed
Fabian Grünbichler
f.gruenbichler at proxmox.com
Mon Jan 27 13:16:30 CET 2025
> Severen Redwood via pve-devel <pve-devel at lists.proxmox.com> hat am 08.11.2024 02:46 CET geschrieben:
> After a container is destroyed, record that its ID has been used via the
> `PVE::UsedVmidList` module so that the `/cluster/nextids` endpoint can
> later optionally avoid suggesting previously used IDs.
>
> Co-authored-by: Daniel Krambrock <krambrock at hrz.uni-marburg.de>
> Signed-off-by: Severen Redwood <severen.redwood at sitehost.co.nz>
> Tested-by: Aaron Lauterer <a.lauterer at proxmox.com>
> Reviewed-by: Aaron Lauterer <a.lauterer at proxmox.com>
> ---
> Changed since v3 is removing an unnecessary `qw(add_vmid)` after
> `use PVE::UsedVmidList`.
>
> src/PVE/API2/LXC.pm | 5 ++++-
> 1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/src/PVE/API2/LXC.pm b/src/PVE/API2/LXC.pm
> index 213e518..e35b26d 100644
> --- a/src/PVE/API2/LXC.pm
> +++ b/src/PVE/API2/LXC.pm
> @@ -28,6 +28,7 @@ use PVE::API2::LXC::Config;
> use PVE::API2::LXC::Status;
> use PVE::API2::LXC::Snapshot;
> use PVE::JSONSchema qw(get_standard_option);
> +use PVE::UsedVmidList;
> use base qw(PVE::RESTHandler);
>
> BEGIN {
> @@ -794,7 +795,9 @@ __PACKAGE__->register_method({
> }
> }
>
> - # only now remove the zombie config, else we can have reuse race
> + # only now mark the CT ID as previously used and remove the zombie
> + # config, else we can have reuse race
> + PVE::UsedVmidList::add_vmid($vmid);
if we only add it when the VM is removed via the API, we might miss those where an admin just does "rm /etc/pve/../XXX.conf" (which might happen if something is blocking regular removal)? wouldn't it be safer to add them when creating the VM? or potentially in both cases to increase the likelihood of a VM being registered?
alternatively, a call to nextid already has both lists and could warn if there is a mismatch or even fix it up? i.e., if we don't only add on removal, but upon creation, then the intersection of currently used VMIDs and previously used VMIDs should be identical to the currently used VMIDs. if not, then any missing ones can be added/registered?
all of this obviously applies to containers and VMs..
> PVE::LXC::Config->destroy_config($vmid);
> };
>
> --
> 2.47.0
More information about the pve-devel
mailing list