1
0
mirror of https://github.com/samba-team/samba.git synced 2025-07-31 20:22:15 +03:00

gpo: Initialize SamDB in the gp_sec_ext

The SamDB is only used by the gp_sec_ext, and
isn't needed elsewhere, so initialize it where
we need it and avoid passing it around
everywhere.
It makes the most sense to put this in the setter
class that uses it, so pass our creds down so we
have access to it, then initialize it there.

Signed-off-by: David Mulder <dmulder@suse.com>
Reviewed-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
Reviewed-by: Aurelien Aptel <aaptel@suse.com>
This commit is contained in:
David Mulder
2018-07-13 14:45:06 -06:00
committed by Aurélien Aptel
parent f5c6bd5c84
commit 5dddb784f8

View File

@ -313,10 +313,10 @@ class gp_ext(object):
def read(self, policy):
pass
def parse(self, afile, ldb, gp_db, lp):
self.ldb = ldb
def parse(self, afile, gp_db, lp, creds):
self.gp_db = gp_db
self.lp = lp
self.creds = creds
local_path = self.lp.cache_path('gpo_cache')
data_file = os.path.join(local_path, check_safe_path(afile).upper())
@ -329,15 +329,15 @@ class gp_ext(object):
pass
class gp_ext_setter():
class gp_ext_setter(object):
__metaclass__ = ABCMeta
def __init__(self, logger, ldb, gp_db, lp, attribute, val):
def __init__(self, logger, gp_db, lp, creds, attribute, val):
self.logger = logger
self.ldb = ldb
self.attribute = attribute
self.val = val
self.lp = lp
self.creds = creds
self.gp_db = gp_db
def explicit(self):
@ -385,8 +385,8 @@ class gp_inf_ext(gp_ext):
(att, setter) = current_section.get(key)
value = value.encode('ascii', 'ignore')
ret = True
setter(self.logger, self.ldb, self.gp_db, self.lp, att,
value).update_samba()
setter(self.logger, self.gp_db, self.lp,
self.creds, att, value).update_samba()
self.gp_db.commit()
return ret
@ -457,7 +457,7 @@ def gpo_version(lp, path):
return int(gpo.gpo_get_sysvol_gpt_version(gpt_path)[1])
def apply_gp(lp, creds, test_ldb, logger, store, gp_extensions):
def apply_gp(lp, creds, logger, store, gp_extensions):
gp_db = store.get_gplog(creds.get_username())
dc_hostname = get_dc_hostname(creds, lp)
gpos = get_gpo_list(dc_hostname, creds, lp)
@ -483,7 +483,7 @@ def apply_gp(lp, creds, test_ldb, logger, store, gp_extensions):
store.start()
for ext in gp_extensions:
try:
ext.parse(ext.list(path), test_ldb, gp_db, lp)
ext.parse(ext.list(path), gp_db, lp, creds)
except Exception as e:
logger.error('Failed to parse gpo %s for extension %s' %
(guid, str(ext)))
@ -503,14 +503,14 @@ def unapply_log(gp_db):
break
def unapply_gp(lp, creds, test_ldb, logger, store, gp_extensions):
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, test_ldb, gp_db, lp, attr[0], attr[1])
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()