gpo: Use the new process_group_policy() for unapply
authorDavid Mulder <dmulder@suse.com>
Thu, 17 May 2018 22:48:47 +0000 (16:48 -0600)
committerAurélien Aptel <aaptel@samba.org>
Mon, 8 Oct 2018 16:17:15 +0000 (18:17 +0200)
Signed-off-by: David Mulder <dmulder@suse.com>
Reviewed-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
Reviewed-by: Aurelien Aptel <aaptel@suse.com>
python/samba/gpclass.py

index 748411f7aba639075fce92fef0ca1e6bdc0a9b4f..0aeeba42362aa2e333ecf0ef088389d7d315a210 100644 (file)
@@ -507,26 +507,20 @@ def apply_gp(lp, creds, logger, store, gp_extensions):
     store.commit()
 
 
-def unapply_log(gp_db):
-    while True:
-        item = gp_db.apply_log_pop()
-        if item:
-            yield item
-        else:
-            break
-
-
 def unapply_gp(lp, creds, logger, store, gp_extensions):
     gp_db = store.get_gplog(creds.get_username())
     gp_db.state(GPOSTATE.UNAPPLY)
-    for gpo_guid in unapply_log(gp_db):
-        gp_db.set_guid(gpo_guid)
-        unapply_attributes = gp_db.list(gp_extensions)
-        for attr in unapply_attributes:
-            attr_obj = attr[-1](logger, gp_db, lp, attr[0], attr[1])
-            attr_obj.mapper()[attr[0]][0](attr[1])  # Set the old value
-            gp_db.delete(str(attr_obj), attr[0])
-        gp_db.commit()
+    # Treat all applied gpos as deleted
+    del_gpos = gp_db.get_applied_settings(gp_db.get_applied_guids())
+    store.start()
+    for ext in gp_extensions:
+        try:
+            ext.process_group_policy(del_gpos, [])
+        except Exception as e:
+            logger.error('Failed to unapply extension  %s' % str(ext))
+            logger.error('Message was: ' + str(e))
+            continue
+    store.commit()
 
 
 def parse_gpext_conf(smb_conf):