mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2025-02-25 18:55:28 -06:00
LDAP disable service
This patch allows to disable service in LDAP (ipactl will not start it) Reviewed-By: Jan Cholasta <jcholast@redhat.com>
This commit is contained in:
parent
29ba9d9d26
commit
66ce71f17a
@ -392,6 +392,32 @@ class Service(object):
|
|||||||
self.ldap_connect()
|
self.ldap_connect()
|
||||||
|
|
||||||
entry_name = DN(('cn', name), ('cn', fqdn), ('cn', 'masters'), ('cn', 'ipa'), ('cn', 'etc'), ldap_suffix)
|
entry_name = DN(('cn', name), ('cn', fqdn), ('cn', 'masters'), ('cn', 'ipa'), ('cn', 'etc'), ldap_suffix)
|
||||||
|
|
||||||
|
# enable disabled service
|
||||||
|
try:
|
||||||
|
entry = self.admin_conn.get_entry(entry_name, ['ipaConfigString'])
|
||||||
|
except errors.NotFound:
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
if any(u'enabledservice' == val.lower()
|
||||||
|
for val in entry.get('ipaConfigString', [])):
|
||||||
|
root_logger.debug("service %s startup entry already enabled", name)
|
||||||
|
return
|
||||||
|
|
||||||
|
entry.setdefault('ipaConfigString', []).append(u'enabledService')
|
||||||
|
|
||||||
|
try:
|
||||||
|
self.admin_conn.update_entry(entry)
|
||||||
|
except errors.EmptyModlist:
|
||||||
|
root_logger.debug("service %s startup entry already enabled", name)
|
||||||
|
return
|
||||||
|
except:
|
||||||
|
root_logger.debug("failed to enable service %s startup entry", name)
|
||||||
|
raise
|
||||||
|
|
||||||
|
root_logger.debug("service %s startup entry enabled", name)
|
||||||
|
return
|
||||||
|
|
||||||
order = SERVICE_LIST[name][1]
|
order = SERVICE_LIST[name][1]
|
||||||
entry = self.admin_conn.make_entry(
|
entry = self.admin_conn.make_entry(
|
||||||
entry_name,
|
entry_name,
|
||||||
@ -404,9 +430,48 @@ class Service(object):
|
|||||||
try:
|
try:
|
||||||
self.admin_conn.add_entry(entry)
|
self.admin_conn.add_entry(entry)
|
||||||
except (errors.DuplicateEntry), e:
|
except (errors.DuplicateEntry), e:
|
||||||
root_logger.debug("failed to add %s Service startup entry" % name)
|
root_logger.debug("failed to add service %s startup entry", name)
|
||||||
raise e
|
raise e
|
||||||
|
|
||||||
|
def ldap_disable(self, name, fqdn, ldap_suffix):
|
||||||
|
assert isinstance(ldap_suffix, DN)
|
||||||
|
if not self.admin_conn:
|
||||||
|
self.ldap_connect()
|
||||||
|
|
||||||
|
entry_dn = DN(('cn', name), ('cn', fqdn), ('cn', 'masters'),
|
||||||
|
('cn', 'ipa'), ('cn', 'etc'), ldap_suffix)
|
||||||
|
search_kw = {'ipaConfigString': u'enabledService'}
|
||||||
|
filter = self.admin_conn.make_filter(search_kw)
|
||||||
|
try:
|
||||||
|
entries, truncated = self.admin_conn.find_entries(
|
||||||
|
filter=filter,
|
||||||
|
attrs_list=['ipaConfigString'],
|
||||||
|
base_dn=entry_dn,
|
||||||
|
scope=self.admin_conn.SCOPE_BASE)
|
||||||
|
except errors.NotFound:
|
||||||
|
root_logger.debug("service %s startup entry already disabled", name)
|
||||||
|
return
|
||||||
|
|
||||||
|
assert len(entries) == 1 # only one entry is expected
|
||||||
|
entry = entries[0]
|
||||||
|
|
||||||
|
# case insensitive
|
||||||
|
for value in entry.get('ipaConfigString', []):
|
||||||
|
if value.lower() == u'enabledservice':
|
||||||
|
entry['ipaConfigString'].remove(value)
|
||||||
|
break
|
||||||
|
|
||||||
|
try:
|
||||||
|
self.admin_conn.update_entry(entry)
|
||||||
|
except errors.EmptyModlist:
|
||||||
|
pass
|
||||||
|
except:
|
||||||
|
root_logger.debug("failed to disable service %s startup entry", name)
|
||||||
|
raise
|
||||||
|
|
||||||
|
root_logger.debug("service %s startup entry disabled", name)
|
||||||
|
|
||||||
|
|
||||||
class SimpleServiceInstance(Service):
|
class SimpleServiceInstance(Service):
|
||||||
def create_instance(self, gensvc_name=None, fqdn=None, dm_password=None, ldap_suffix=None, realm=None):
|
def create_instance(self, gensvc_name=None, fqdn=None, dm_password=None, ldap_suffix=None, realm=None):
|
||||||
self.gensvc_name = gensvc_name
|
self.gensvc_name = gensvc_name
|
||||||
|
Loading…
Reference in New Issue
Block a user