From 1564067fbc8490bcef5523db1d7e997dca00f0bf Mon Sep 17 00:00:00 2001 From: "Endi S. Dewata" Date: Thu, 5 Nov 2009 18:49:37 -0600 Subject: [PATCH] s4:provision - Added setup() method in LDAPBackend. --- source4/scripting/python/samba/provision.py | 2 +- .../python/samba/provisionbackend.py | 56 ++++++++++--------- 2 files changed, 32 insertions(+), 26 deletions(-) diff --git a/source4/scripting/python/samba/provision.py b/source4/scripting/python/samba/provision.py index e40603a0b0c..f803f588eb2 100644 --- a/source4/scripting/python/samba/provision.py +++ b/source4/scripting/python/samba/provision.py @@ -1278,7 +1278,7 @@ def provision(setup_dir, message, session_info, else: raise ProvisioningError("Unknown LDAP backend type selected") - provision_backend.provision() + provision_backend.setup() provision_backend.start() # only install a new shares config db if there is none diff --git a/source4/scripting/python/samba/provisionbackend.py b/source4/scripting/python/samba/provisionbackend.py index b4239ef92d8..da17cbf05c1 100644 --- a/source4/scripting/python/samba/provisionbackend.py +++ b/source4/scripting/python/samba/provisionbackend.py @@ -115,7 +115,22 @@ class ProvisionBackend(object): self.ldap_backend_type = "openldap" #For now, assume existing backends at least emulate OpenLDAP return - + + def setup(self): + pass + + def start(self): + pass + + def shutdown(self): + pass + + def post_setup(self): + pass + + +class LDAPBackend(ProvisionBackend): + def setup(self): # we will shortly start slapd with ldapi for final provisioning. first check with ldapsearch -> rootDSE via self.ldapi_uri # if another instance of slapd is already running try: @@ -123,10 +138,10 @@ class ProvisionBackend(object): search_ol_rootdse = ldapi_db.search(base="", scope=SCOPE_BASE, expression="(objectClass=OpenLDAProotDSE)"); try: - f = open(paths.slapdpid, "r") + f = open(self.paths.slapdpid, "r") p = f.read() f.close() - message("Check for slapd Process with PID: " + str(p) + " and terminate it manually.") + self.message("Check for slapd Process with PID: " + str(p) + " and terminate it manually.") except: pass @@ -136,54 +151,45 @@ class ProvisionBackend(object): pass # Try to print helpful messages when the user has not specified the path to slapd - if slapd_path is None: + if self.slapd_path is None: raise ProvisioningError("Warning: LDAP-Backend must be setup with path to slapd, e.g. --slapd-path=\"/usr/local/libexec/slapd\"!") - if not os.path.exists(slapd_path): - message (slapd_path) + if not os.path.exists(self.slapd_path): + self.message (self.slapd_path) raise ProvisioningError("Warning: Given Path to slapd does not exist!") - if not os.path.isdir(paths.ldapdir): - os.makedirs(paths.ldapdir, 0700) + if not os.path.isdir(self.paths.ldapdir): + os.makedirs(self.paths.ldapdir, 0700) # Put the LDIF of the schema into a database so we can search on # it to generate schema-dependent configurations in Fedora DS and # OpenLDAP - schemadb_path = os.path.join(paths.ldapdir, "schema-tmp.ldb") + schemadb_path = os.path.join(self.paths.ldapdir, "schema-tmp.ldb") try: os.unlink(schemadb_path) except OSError: pass - schema.write_to_tmp_ldb(schemadb_path); + self.schema.write_to_tmp_ldb(schemadb_path); self.credentials = Credentials() - self.credentials.guess(lp) + self.credentials.guess(self.lp) #Kerberos to an ldapi:// backend makes no sense self.credentials.set_kerberos_state(DONT_USE_KERBEROS) - self.credentials.set_password(ldapadminpass) + self.credentials.set_password(self.ldapadminpass) self.secrets_credentials = Credentials() - self.secrets_credentials.guess(lp) + self.secrets_credentials.guess(self.lp) #Kerberos to an ldapi:// backend makes no sense self.secrets_credentials.set_kerberos_state(DONT_USE_KERBEROS) self.secrets_credentials.set_username("samba-admin") - self.secrets_credentials.set_password(ldapadminpass) + self.secrets_credentials.set_password(self.ldapadminpass) - def provision(self): - pass + self.provision() - def start(self): - pass - - def shutdown(self): - pass - - def post_setup(self): + def provision(self): pass - -class LDAPBackend(ProvisionBackend): def start(self): self.slapd_command_escaped = "\'" + "\' \'".join(self.slapd_command) + "\'" setup_file(self.setup_path("ldap_backend_startup.sh"), self.paths.ldapdir + "/ldap_backend_startup.sh", { -- 2.34.1