Univention Bugzilla – Attachment 10403 Details for
Bug 34003
Committing slapd.conf is slow due to 25univention-ldap-server_local-schema
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
patch
34003.patch (text/plain), 3.05 KB, created by
Florian Best
on 2020-06-22 17:44:00 CEST
(
hide
)
Description:
patch
Filename:
MIME Type:
Creator:
Florian Best
Created:
2020-06-22 17:44:00 CEST
Size:
3.05 KB
patch
obsolete
>diff --git management/univention-ldap/conffiles/etc/ldap/slapd.conf.d/25univention-ldap-server_local-schema management/univention-ldap/conffiles/etc/ldap/slapd.conf.d/25univention-ldap-server_local-schema >index df71d806fb..d628098f79 100644 >--- management/univention-ldap/conffiles/etc/ldap/slapd.conf.d/25univention-ldap-server_local-schema >+++ management/univention-ldap/conffiles/etc/ldap/slapd.conf.d/25univention-ldap-server_local-schema >@@ -1,8 +1,9 @@ >-@!@ > >+@!@ > import os >+import os.path > import re >-import subprocess >+from univention.config_registry.handler import run_filter > > > def getRegisteredFiles(): >@@ -11,18 +12,21 @@ def getRegisteredFiles(): > for f in os.listdir(registeredDirectory): > for line in open(os.path.join(registeredDirectory, f), 'r').readlines(): > if line.startswith('File: '): >- files.append(line.replace('File: ', '').strip()) >+ fn = line.replace('File: ', '').strip() >+ if fn.startswith('etc/ldap/slapd.conf.d'): >+ files.append(fn) > elif line.startswith('Subfile: '): >- files.append(line.replace('Subfile: ', '').strip()) >+ fn = line.replace('Subfile: ', '').strip() >+ if fn.startswith('etc/ldap/slapd.conf.d'): >+ files.append(fn) > > return files > > >-def isSchemaFileIncluded(schemaFile): >+def ucr_filter_files(registeredFiles): > directoryPath = '/etc/univention/templates/files/etc/ldap/slapd.conf.d/' > >- registeredFiles = getRegisteredFiles() >- >+ checklist = [] > for f in os.listdir(directoryPath): > if f == '25univention-ldap-server_local-schema' or f.startswith('.'): > continue >@@ -31,21 +35,27 @@ def isSchemaFileIncluded(schemaFile): > if not 'etc/ldap/slapd.conf.d/%s' % f in registeredFiles: > continue > >- p1 = subprocess.Popen(["cat", "/etc/univention/templates/files/etc/ldap/slapd.conf.d/%s" % f], stdout=subprocess.PIPE) >- p2 = subprocess.Popen(["ucr", "filter"], stdin=p1.stdout, stdout=subprocess.PIPE) >- p1.stdout.close() >- output = p2.communicate()[0].decode('utf-8', 'replace') >- pattern = re.compile('include.*%s' % schemaFile) >- for line in output.split('\n'): >- if line and pattern.match(line): >- return True >+ checklist.append(f) >+ >+ output = "" >+ if checklist: >+ for fn in checklist: >+ with open('/etc/univention/templates/files/etc/ldap/slapd.conf.d/%s' % (fn,), 'r') as f: >+ output += run_filter(f.read(), configRegistry) >+ return output > >- return False >+ >+def isSchemaFileIncluded(schemaFile, ucr_filtered_output): >+ return re.search('\ninclude.*%s\n' % schemaFile, ucr_filtered_output) is not None > > > if configRegistry.get('ldap/server/type', 'slave') == 'master': > if os.path.exists('/var/lib/univention-ldap/local-schema'): >- for schemaFile in sorted(os.listdir('/var/lib/univention-ldap/local-schema')): >- if not isSchemaFileIncluded(schemaFile): >+ >+ registeredFiles = getRegisteredFiles() >+ ucr_filtered_output = ucr_filter_files(registeredFiles) >+ >+ for schemaFile in os.listdir('/var/lib/univention-ldap/local-schema'): >+ if not isSchemaFileIncluded(schemaFile, ucr_filtered_output): > print('include /var/lib/univention-ldap/local-schema/%s' % schemaFile) > @!@
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 34003
:
5758
| 10403