Prevent OpenBSD service provider crashing if rc.conf.local file does not exist.

This commit is contained in:
Timo Makinen 2015-11-20 15:32:35 +02:00
parent 75e8924611
commit 3f64b852f8

View file

@ -28,12 +28,14 @@ Puppet::Type.type(:service).provide :openbsd, :parent => :base do
def rcvar_local def rcvar_local
name = @resource[:name] name = @resource[:name]
if File.file?(rcconf_local)
File.open(rcconf_local).each do |line| File.open(rcconf_local).each do |line|
if line =~ /^#{name}(_flags)?=/ if line =~ /^#{name}(_flags)?=/
line = line.sub(/#.*/, "") line = line.sub(/#.*/, "")
return line.strip.split("=", 2) return line.strip.split("=", 2)
end end
end end
end
nil nil
end end
@ -52,11 +54,13 @@ Puppet::Type.type(:service).provide :openbsd, :parent => :base do
end end
def pkg_scripts def pkg_scripts
if File.file?(rcconf_local)
File.open(rcconf_local).each do |line| File.open(rcconf_local).each do |line|
if line =~ /^pkg_scripts=/ if line =~ /^pkg_scripts=/
return line.strip.gsub(/pkg_scripts="?([^"]*)"?/, '\1').split return line.strip.gsub(/pkg_scripts="?([^"]*)"?/, '\1').split
end end
end end
end
Array.new Array.new
end end
@ -84,10 +88,12 @@ Puppet::Type.type(:service).provide :openbsd, :parent => :base do
start = @resource[:start] start = @resource[:start]
binary = @resource[:binary] binary = @resource[:binary]
s = "" s = ""
if File.file?(rcconf_local)
File.open(rcconf_local).each do |line| File.open(rcconf_local).each do |line|
next if line =~ /^(#{rcvar_name}|pkg_scripts)=/ next if line =~ /^(#{rcvar_name}|pkg_scripts)=/
s += line s += line
end end
end
unless start.nil? unless start.nil?
if binary.nil? if binary.nil?
rcvar_value = start[/^\S+\s*(.*)/, 1] rcvar_value = start[/^\S+\s*(.*)/, 1]
@ -111,10 +117,12 @@ Puppet::Type.type(:service).provide :openbsd, :parent => :base do
rcvar_name = self.rcvar_name rcvar_name = self.rcvar_name
pkg_scripts = self.pkg_scripts pkg_scripts = self.pkg_scripts
s = "" s = ""
if File.file?(rcconf_local)
File.open(rcconf_local).each do |line| File.open(rcconf_local).each do |line|
next if line =~ /^(#{rcvar_name}|pkg_scripts)=/ next if line =~ /^(#{rcvar_name}|pkg_scripts)=/
s += line s += line
end end
end
s += "%s=NO\n" % rcvar_name unless rcvar.nil? s += "%s=NO\n" % rcvar_name unless rcvar.nil?
pkg_scripts.delete(name) pkg_scripts.delete(name)
s += "pkg_scripts=\"%s\"\n" % pkg_scripts.join(" ") s += "pkg_scripts=\"%s\"\n" % pkg_scripts.join(" ")