From 93fc3391fe7c91666252854e4f6bc95f9fb35109 Mon Sep 17 00:00:00 2001 From: Antti Rasinen Date: Wed, 3 Jul 2013 14:52:23 +0300 Subject: [PATCH] Fix service enable on FreeBSD Some services have a knob (i.e. rc.conf setting) whose name differs from that of the script. For example, lockd process is controlled with a script called lockd, but the rc.conf value is rpc_lockd_enable. Fixes issue #3382. --- library/system/service | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/library/system/service b/library/system/service index e83bd19982c..f0b330bffd2 100644 --- a/library/system/service +++ b/library/system/service @@ -694,7 +694,14 @@ class FreeBsdService(Service): if os.path.isfile(rcfile): self.rcconf_file = rcfile - self.rcconf_key = "%s_enable" % self.name + rc, stdout, stderr = self.execute_command("%s %s %s %s" % (self.svc_cmd, self.name, 'rcvar', self.arguments)) + rcvars = shlex.split(stdout, comments=True) + if not rcvars: + self.module.fail_json(msg="unable to determine rcvar") + + # In rare cases, i.e. sendmail, rcvar can return several key=value pairs + # Usually there is just one, however. + self.rcconf_key = rcvars[0].split('=')[0] return self.service_enable_rcconf()