From 5028848d42f90535a0c8a1e60a488cf7b8986b62 Mon Sep 17 00:00:00 2001 From: Dominik Csapak Date: Tue, 17 Jan 2023 12:46:52 +0100 Subject: [PATCH] section config: add helper for deleting keys from a entry This is a pattern that can be found often in Proxmox VE's API stack, so implement it centrally here for re-use. Signed-off-by: Dominik Csapak Signed-off-by: Thomas Lamprecht --- src/PVE/SectionConfig.pm | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/PVE/SectionConfig.pm b/src/PVE/SectionConfig.pm index 0a9f1cd..e354655 100644 --- a/src/PVE/SectionConfig.pm +++ b/src/PVE/SectionConfig.pm @@ -543,4 +543,19 @@ sub assert_if_modified { PVE::Tools::assert_if_modified($cfg->{digest}, $digest); } +sub delete_from_config { + my ($config, $option_schema, $new_options, $to_delete) = @_; + + for my $k ($to_delete->@*) { + my $d = $option_schema->{$k} || die "no such option '$k'\n"; + die "unable to delete required option '$k'\n" if !$d->{optional}; + die "unable to delete fixed option '$k'\n" if $d->{fixed}; + die "cannot set and delete property '$k' at the same time!\n" + if defined($new_options->{$k}); + delete $config->{$k}; + } + + return $config; +} + 1;