]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
gpo: Initialize gp_ext variables in constructor
authorDavid Mulder <dmulder@suse.com>
Wed, 16 May 2018 16:58:29 +0000 (10:58 -0600)
committerAurélien Aptel <aaptel@samba.org>
Mon, 8 Oct 2018 16:17:15 +0000 (18:17 +0200)
Initialize variables for the gp_ext in the
constructor instead of passing them via the parse
function.
This is a dependency of the "gpo: Implement
process_group_policy() gp_ext func" patch, since
the parse() function is now called by the ext,
instead of by gpupdate within apply_gp(). The
parse() function should only take the path
variable, to simplify writing Client Side
Extensions.

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
source4/scripting/bin/samba-gpupdate

index 048b25b410540c831f56d178ac459076dd9fa89d..2de11e7730ed661a2f17547cc95f2b1e8cc3894b 100644 (file)
@@ -298,8 +298,11 @@ class GPOStorage:
 class gp_ext(object):
     __metaclass__ = ABCMeta
 
-    def __init__(self, logger):
+    def __init__(self, logger, lp, creds, store):
         self.logger = logger
+        self.lp = lp
+        self.creds = creds
+        self.gp_db = store.get_gplog(creds.get_username())
 
     @abstractmethod
     def list(self, rootpath):
@@ -313,11 +316,7 @@ class gp_ext(object):
     def read(self, policy):
         pass
 
-    def parse(self, afile, gp_db, lp, creds):
-        self.gp_db = gp_db
-        self.lp = lp
-        self.creds = creds
-
+    def parse(self, afile):
         local_path = self.lp.cache_path('gpo_cache')
         data_file = os.path.join(local_path, check_safe_path(afile).upper())
         if os.path.exists(data_file):
@@ -483,7 +482,7 @@ def apply_gp(lp, creds, logger, store, gp_extensions):
         store.start()
         for ext in gp_extensions:
             try:
-                ext.parse(ext.list(path), gp_db, lp, creds)
+                ext.parse(ext.list(path))
             except Exception as e:
                 logger.error('Failed to parse gpo %s for extension %s' %
                              (guid, str(ext)))
index 648d1886cda7f85ff6f94d9d8c1937d7f4dc2dbe..e69492dab8efb0e762041ebdb1521f0e904205b5 100755 (executable)
@@ -77,12 +77,12 @@ if __name__ == "__main__":
                                                             lp.configfile)
     gp_extensions = []
     if opts.target == 'Computer':
-        gp_extensions.append(gp_sec_ext(logger))
+        gp_extensions.append(gp_sec_ext(logger, lp, creds, store))
         for ext in machine_exts:
-            gp_extensions.append(ext(logger))
+            gp_extensions.append(ext(logger, lp, creds, store))
     elif opts.target == 'User':
         for ext in user_exts:
-            gp_extensions.append(ext(logger))
+            gp_extensions.append(ext(logger, lp, creds, store))
 
     if not opts.unapply:
         apply_gp(lp, creds, logger, store, gp_extensions)