From 3f64b852f84198e72b9848ea89e7b6dd3e3f869b Mon Sep 17 00:00:00 2001 From: Timo Makinen Date: Fri, 20 Nov 2015 15:32:35 +0200 Subject: [PATCH] Prevent OpenBSD service provider crashing if rc.conf.local file does not exist. --- puppet/lib/puppet/provider/service/openbsd.rb | 34 ++++++++++++------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/puppet/lib/puppet/provider/service/openbsd.rb b/puppet/lib/puppet/provider/service/openbsd.rb index 4cbae15..f2fcd62 100644 --- a/puppet/lib/puppet/provider/service/openbsd.rb +++ b/puppet/lib/puppet/provider/service/openbsd.rb @@ -28,10 +28,12 @@ Puppet::Type.type(:service).provide :openbsd, :parent => :base do def rcvar_local name = @resource[:name] - File.open(rcconf_local).each do |line| - if line =~ /^#{name}(_flags)?=/ - line = line.sub(/#.*/, "") - return line.strip.split("=", 2) + if File.file?(rcconf_local) + File.open(rcconf_local).each do |line| + if line =~ /^#{name}(_flags)?=/ + line = line.sub(/#.*/, "") + return line.strip.split("=", 2) + end end end nil @@ -52,9 +54,11 @@ Puppet::Type.type(:service).provide :openbsd, :parent => :base do end def pkg_scripts - File.open(rcconf_local).each do |line| - if line =~ /^pkg_scripts=/ - return line.strip.gsub(/pkg_scripts="?([^"]*)"?/, '\1').split + if File.file?(rcconf_local) + File.open(rcconf_local).each do |line| + if line =~ /^pkg_scripts=/ + return line.strip.gsub(/pkg_scripts="?([^"]*)"?/, '\1').split + end end end Array.new @@ -84,9 +88,11 @@ Puppet::Type.type(:service).provide :openbsd, :parent => :base do start = @resource[:start] binary = @resource[:binary] s = "" - File.open(rcconf_local).each do |line| - next if line =~ /^(#{rcvar_name}|pkg_scripts)=/ - s += line + if File.file?(rcconf_local) + File.open(rcconf_local).each do |line| + next if line =~ /^(#{rcvar_name}|pkg_scripts)=/ + s += line + end end unless start.nil? if binary.nil? @@ -111,9 +117,11 @@ Puppet::Type.type(:service).provide :openbsd, :parent => :base do rcvar_name = self.rcvar_name pkg_scripts = self.pkg_scripts s = "" - File.open(rcconf_local).each do |line| - next if line =~ /^(#{rcvar_name}|pkg_scripts)=/ - s += line + if File.file?(rcconf_local) + File.open(rcconf_local).each do |line| + next if line =~ /^(#{rcvar_name}|pkg_scripts)=/ + s += line + end end s += "%s=NO\n" % rcvar_name unless rcvar.nil? pkg_scripts.delete(name)