From dd183895a0104bd250757415e5e2df9b7eeee3ca Mon Sep 17 00:00:00 2001 From: Mark Reynolds Date: Jul 19 2018 17:02:16 +0000 Subject: Ticket 49854 - ns-slapd should create run_dir and lock_dir directories at startup Description: dscreate was not creating its config file in /etc/tmpfiles.d/ like setup-ds.pl used to do. The absence of this config file prevented the server from being started after a reboot. https://pagure.io/389-ds-base/issue/49854 Reviewed by: vashirov(Thanks!) --- diff --git a/ldap/admin/src/defaults.inf.in b/ldap/admin/src/defaults.inf.in index bdc4081..ae847e9 100644 --- a/ldap/admin/src/defaults.inf.in +++ b/ldap/admin/src/defaults.inf.in @@ -40,6 +40,7 @@ pid_file = @localstatedir@/run/dirsrv/slapd-{instance_name}.pid inst_dir = @serverdir@/slapd-{instance_name} plugin_dir = @serverplugindir@ system_schema_dir = @systemschemadir@ +tmpfiles_d = @with_tmpfiles_d@ ; These values can be altered in an installation of ds user = dirsrv diff --git a/src/lib389/doc/source/paths.rst b/src/lib389/doc/source/paths.rst index 39680c6..16be4d7 100644 --- a/src/lib389/doc/source/paths.rst +++ b/src/lib389/doc/source/paths.rst @@ -7,7 +7,7 @@ Usage example # You can get any variable from the list bellow. Like this: product = standalone.ds_paths.product - + variables = [ 'product', 'version', @@ -33,6 +33,7 @@ Usage example 'backup_dir', 'ldif_dir', 'initconfig_dir', + 'tmpfiles_d', ] Module documentation diff --git a/src/lib389/lib389/instance/remove.py b/src/lib389/lib389/instance/remove.py index 7fa68c0..c628b9e 100644 --- a/src/lib389/lib389/instance/remove.py +++ b/src/lib389/lib389/instance/remove.py @@ -35,6 +35,7 @@ def remove_ds_instance(dirsrv): remove_paths['lock_dir'] = dirsrv.ds_paths.lock_dir remove_paths['log_dir'] = dirsrv.ds_paths.log_dir # remove_paths['run_dir'] = dirsrv.ds_paths.run_dir + remove_paths['tmpfiles_d'] = dirsrv.ds_paths.tmpfiles_d + "/dirsrv-" + dirsrv.serverid + ".conf" marker_path = "%s/sysconfig/dirsrv-%s" % (dirsrv.ds_paths.sysconf_dir, dirsrv.serverid) diff --git a/src/lib389/lib389/instance/setup.py b/src/lib389/lib389/instance/setup.py index 23c76db..9818e1c 100644 --- a/src/lib389/lib389/instance/setup.py +++ b/src/lib389/lib389/instance/setup.py @@ -636,6 +636,14 @@ class SetupDs(object): "enable", "dirsrv@%s" % slapd['instance_name']]) + # Setup tmpfiles_d + tmpfile_d = ds_paths.tmpfiles_d + "/dirsrv-" + slapd['instance_name'] + ".conf" + with open(tmpfile_d, "w") as TMPFILE_D: + TMPFILE_D.write("d {} 0770 {} {}\n".format(slapd['run_dir'], slapd['user'], slapd['group'])) + TMPFILE_D.write("d {} 0770 {} {}\n".format(slapd['lock_dir'].replace("slapd-" + slapd['instance_name'], ""), + slapd['user'], slapd['group'])) + TMPFILE_D.write("d {} 0770 {} {}\n".format(slapd['lock_dir'], slapd['user'], slapd['group'])) + # Else we need to detect other init scripts? # Bind sockets to our type? diff --git a/src/lib389/lib389/paths.py b/src/lib389/lib389/paths.py index 4f643d7..5479831 100644 --- a/src/lib389/lib389/paths.py +++ b/src/lib389/lib389/paths.py @@ -60,6 +60,7 @@ MUST = [ 'backup_dir', 'ldif_dir', 'initconfig_dir', + 'tmpfiles_d', ] # will need to add the access, error, audit log later.