summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Sulfrian <asulfrian@zedat.fu-berlin.de>2022-01-30 05:00:21 +0100
committerAlexander Sulfrian <asulfrian@zedat.fu-berlin.de>2022-01-30 05:03:22 +0100
commita4bd3e3b55cc842b50075e9cae912f7dc9e9cfa2 (patch)
tree00bd82df6d2c0ce96577030af0df9f6f3ca24184
parent49cf4482ea952de6bcf3c023c017309cd7926c15 (diff)
downloadbcfg2-a4bd3e3b55cc842b50075e9cae912f7dc9e9cfa2.tar.gz
bcfg2-a4bd3e3b55cc842b50075e9cae912f7dc9e9cfa2.tar.bz2
bcfg2-a4bd3e3b55cc842b50075e9cae912f7dc9e9cfa2.zip
debconf: Support removing of conf entries
-rw-r--r--src/lib/Bcfg2/Client/Tools/Debconf.py12
-rw-r--r--src/lib/Bcfg2/Client/__init__.py5
2 files changed, 15 insertions, 2 deletions
diff --git a/src/lib/Bcfg2/Client/Tools/Debconf.py b/src/lib/Bcfg2/Client/Tools/Debconf.py
index 706f7a8dc..2dc88e748 100644
--- a/src/lib/Bcfg2/Client/Tools/Debconf.py
+++ b/src/lib/Bcfg2/Client/Tools/Debconf.py
@@ -96,7 +96,17 @@ class Debconf(Bcfg2.Client.Tools.Tool):
return result
Install.__doc__ = Bcfg2.Client.Tools.Tool.Install.__doc__
-
+
+ def Remove(self, entries):
+ try:
+ for entry in entries:
+ self.debconf_reset(entry.get('name'))
+ self.modified += entry
+ finally:
+ self._stop_debconf()
+ self.extra = self.FindExtra()
+ Remove.__doc__ = Bcfg2.Client.Tools.Tool.Remove.__doc__
+
def FindExtra(self):
specified = [entry.get('name')
for entry in self.getSupportedEntries()]
diff --git a/src/lib/Bcfg2/Client/__init__.py b/src/lib/Bcfg2/Client/__init__.py
index 157cc7f65..a7e0dade5 100644
--- a/src/lib/Bcfg2/Client/__init__.py
+++ b/src/lib/Bcfg2/Client/__init__.py
@@ -110,7 +110,7 @@ class Client(object):
help='Only verify the given bundle(s)'),
Bcfg2.Options.Option(
'-r', '--remove',
- choices=['all', 'services', 'packages', 'users'],
+ choices=['all', 'services', 'packages', 'users', 'conf'],
help='Force removal of additional configuration items')),
Bcfg2.Options.ExclusiveOptionGroup(
Bcfg2.Options.PathOption(
@@ -640,6 +640,9 @@ class Client(object):
elif Bcfg2.Options.setup.remove == 'users':
self.removal = [entry for entry in self.extra
if entry.tag in ['POSIXUser', 'POSIXGroup']]
+ elif Bcfg2.Options.setup.remove == 'conf':
+ self.removal = [entry for entry in self.extra
+ if entry.tag == 'Conf']
candidates = [entry for entry in self.states
if not self.states[entry]]