[pve-devel] [PATCH common v3 1/1] SectionConfig: add helper to delete keys from a section config entry

Dominik Csapak d.csapak at proxmox.com
Tue Jan 17 12:46:52 CET 2023


this is a pattern we have very often, so we can implement that here and
reuse it

Signed-off-by: Dominik Csapak <d.csapak at proxmox.com>
---
 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;
-- 
2.30.2






More information about the pve-devel mailing list