From 96c8abba57bea957b5dfa944a95f339a970ccad7 Mon Sep 17 00:00:00 2001 From: Mark Reynolds Date: Mar 25 2020 18:23:30 +0000 Subject: Issue 49731 - set and use db_home_directory by default Description: New instances will automatically create and use db_home_dir /dev/shm/dirsrv/slapd-INSTANCE. relates: https://pagure.io/389-ds-base/issue/49731 Reviewed by: tbordaz & firstyear(Thanks!) --- diff --git a/ldap/admin/src/defaults.inf.in b/ldap/admin/src/defaults.inf.in index 42fc09f..23ea09d 100644 --- a/ldap/admin/src/defaults.inf.in +++ b/ldap/admin/src/defaults.inf.in @@ -58,6 +58,7 @@ access_log = @localstatedir@/log/dirsrv/slapd-{instance_name}/access audit_log = @localstatedir@/log/dirsrv/slapd-{instance_name}/audit error_log = @localstatedir@/log/dirsrv/slapd-{instance_name}/errors db_dir = @localstatedir@/lib/dirsrv/slapd-{instance_name}/db +db_home_dir = /dev/shm/dirsrv/slapd-{instance_name} backup_dir = @localstatedir@/lib/dirsrv/slapd-{instance_name}/bak ldif_dir = @localstatedir@/lib/dirsrv/slapd-{instance_name}/ldif diff --git a/ldap/ldif/template-dse.ldif.in b/ldap/ldif/template-dse.ldif.in index 9efff58..19abcf8 100644 --- a/ldap/ldif/template-dse.ldif.in +++ b/ldap/ldif/template-dse.ldif.in @@ -905,6 +905,7 @@ objectclass: extensibleObject cn: config nsslapd-mode: 600 nsslapd-directory: %db_dir% +nsslapd-db-home-directory: %db_home_dir% nsslapd-subtree-rename-switch: on dn: cn=default indexes, cn=config,cn=ldbm database,cn=plugins,cn=config diff --git a/rpm/389-ds-base.spec.in b/rpm/389-ds-base.spec.in index 9a1d139..60bcee9 100644 --- a/rpm/389-ds-base.spec.in +++ b/rpm/389-ds-base.spec.in @@ -430,6 +430,7 @@ popd mkdir -p $RPM_BUILD_ROOT/var/log/%{pkgname} mkdir -p $RPM_BUILD_ROOT/var/lib/%{pkgname} mkdir -p $RPM_BUILD_ROOT/var/lock/%{pkgname} +mkdir -p $RPM_BUILD_ROOT/dev/shm/%{pkgname} # for systemd mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/systemd/system/%{groupname}.wants @@ -635,6 +636,7 @@ exit 0 %{_prefix}/lib/sysctl.d/* %dir %{_localstatedir}/lib/%{pkgname} %dir %{_localstatedir}/log/%{pkgname} +%dir /dev/shm/%{pkgname} %ghost %dir %{_localstatedir}/lock/%{pkgname} %exclude %{_sbindir}/ldap-agent* %exclude %{_mandir}/man1/ldap-agent.1.gz diff --git a/src/lib389/lib389/instance/remove.py b/src/lib389/lib389/instance/remove.py index e48b294..bf2c6cf 100644 --- a/src/lib389/lib389/instance/remove.py +++ b/src/lib389/lib389/instance/remove.py @@ -44,6 +44,7 @@ def remove_ds_instance(dirsrv, force=False): remove_paths['cert_dir'] = dirsrv.ds_paths.cert_dir remove_paths['config_dir'] = dirsrv.ds_paths.config_dir remove_paths['db_dir'] = dirsrv.ds_paths.db_dir + remove_paths['db_home_dir'] = dirsrv.ds_paths.db_home_dir remove_paths['db_dir_parent'] = dirsrv.ds_paths.db_dir + "/../" ### WARNING: The changelogdb isn't removed. we assume it's in: # db_dir ../changelogdb. So remove that too! diff --git a/src/lib389/lib389/instance/setup.py b/src/lib389/lib389/instance/setup.py index 0a3daed..0cb8f4f 100644 --- a/src/lib389/lib389/instance/setup.py +++ b/src/lib389/lib389/instance/setup.py @@ -281,6 +281,7 @@ class SetupDs(object): 'inst_dir': ds_paths.inst_dir, 'backup_dir': ds_paths.backup_dir, 'db_dir': ds_paths.db_dir, + 'db_home_dir': ds_paths.db_home_dir, 'ldif_dir': ds_paths.ldif_dir, 'lock_dir': ds_paths.lock_dir, 'log_dir': ds_paths.log_dir, @@ -740,11 +741,12 @@ class SetupDs(object): ds_suffix=ds_suffix, config_dir=slapd['config_dir'], db_dir=slapd['db_dir'], + db_home_dir=slapd['db_home_dir'] )) # Create all the needed paths # we should only need to make bak_dir, cert_dir, config_dir, db_dir, ldif_dir, lock_dir, log_dir, run_dir? - for path in ('backup_dir', 'cert_dir', 'db_dir', 'ldif_dir', 'lock_dir', 'log_dir', 'run_dir'): + for path in ('backup_dir', 'cert_dir', 'db_dir', 'db_home_dir', 'ldif_dir', 'lock_dir', 'log_dir', 'run_dir'): self.log.debug("ACTION: creating %s", slapd[path]) try: os.umask(0o007) # For parent dirs that get created -> sets 770 for perms @@ -864,8 +866,9 @@ class SetupDs(object): # Do selinux fixups if general['selinux']: - selinux_paths = ('backup_dir', 'cert_dir', 'config_dir', 'db_dir', 'ldif_dir', - 'lock_dir', 'log_dir', 'run_dir', 'schema_dir', 'tmp_dir') + selinux_paths = ('backup_dir', 'cert_dir', 'config_dir', 'db_dir', + 'db_home_dir', 'ldif_dir', 'lock_dir', 'log_dir', + 'run_dir', 'schema_dir', 'tmp_dir') for path in selinux_paths: selinux_restorecon(slapd[path]) diff --git a/src/lib389/lib389/paths.py b/src/lib389/lib389/paths.py index 869df1f..8dccead 100644 --- a/src/lib389/lib389/paths.py +++ b/src/lib389/lib389/paths.py @@ -57,6 +57,7 @@ MUST = [ 'log_dir', 'inst_dir', 'db_dir', + 'db_home_dir', 'backup_dir', 'ldif_dir', 'initconfig_dir', @@ -76,6 +77,7 @@ CONFIG_MAP = { 'lock_dir' : ('cn=config','nsslapd-lockdir'), 'inst_dir' : ('cn=config','nsslapd-instancedir'), 'db_dir' : ('cn=config,cn=ldbm database,cn=plugins,cn=config', 'nsslapd-directory'), + 'db_home_dir' : ('cn=bdb,cn=config,cn=ldbm database,cn=plugins,cn=config', 'nsslapd-db-home-directory'), 'backup_dir': ('cn=config','nsslapd-bakdir'), 'ldif_dir': ('cn=config','nsslapd-ldifdir'), 'error_log' : ('cn=config', 'nsslapd-errorlog'), @@ -128,7 +130,7 @@ class Paths(object): for spath in search_paths: if os.path.isfile(spath): return spath - raise IOError('defaults.inf not found in any wellknown location!') + raise IOError('defaults.inf not found in any well known location!') def _read_defaults(self): spath = self._get_defaults_loc(DEFAULTS_PATH)