diff options
| author | Markus Roberts <Markus@reality.com> | 2010-07-09 18:05:04 -0700 |
|---|---|---|
| committer | Markus Roberts <Markus@reality.com> | 2010-07-09 18:05:04 -0700 |
| commit | 9ee56f2e67be973da49b1d3f21de1bf87de35e6f (patch) | |
| tree | ddab8c01509f47664c52c8a6b165bb5a974f138f /lib/puppet/provider | |
| parent | 051bd98751d9d4bc97f93f66723d9b7a00c0cfb4 (diff) | |
Code smell: Inconsistent indentation and related formatting issues
* Replaced 163 occurances of
defined\? +([@a-zA-Z_.0-9?=]+)
with
defined?(\1)
This makes detecting subsequent patterns easier.
3 Examples:
The code:
if ! defined? @parse_config
becomes:
if ! defined?(@parse_config)
The code:
return @option_parser if defined? @option_parser
becomes:
return @option_parser if defined?(@option_parser)
The code:
if defined? @local and @local
becomes:
if defined?(@local) and @local
* Eliminate trailing spaces.
Replaced 428 occurances of ^(.*?) +$ with \1
1 file was skipped.
test/ral/providers/host/parsed.rb because 0
* Replace leading tabs with an appropriate number of spaces.
Replaced 306 occurances of ^(\t+)(.*) with
Tabs are not consistently expanded in all environments.
* Don't arbitrarily wrap on sprintf (%) operator.
Replaced 143 occurances of
(.*['"] *%)
+(.*)
with
Splitting the line does nothing to aid clarity and hinders further refactorings.
3 Examples:
The code:
raise Puppet::Error, "Cannot create %s: basedir %s is a file" %
[dir, File.join(path)]
becomes:
raise Puppet::Error, "Cannot create %s: basedir %s is a file" % [dir, File.join(path)]
The code:
Puppet.err "Will not start without authorization file %s" %
Puppet[:authconfig]
becomes:
Puppet.err "Will not start without authorization file %s" % Puppet[:authconfig]
The code:
$stderr.puts "Could not find host for PID %s with status %s" %
[pid, $?.exitstatus]
becomes:
$stderr.puts "Could not find host for PID %s with status %s" % [pid, $?.exitstatus]
* Don't break short arrays/parameter list in two.
Replaced 228 occurances of
(.*)
+(.*)
with
3 Examples:
The code:
puts @format.wrap(type.provider(prov).doc,
:indent => 4, :scrub => true)
becomes:
puts @format.wrap(type.provider(prov).doc, :indent => 4, :scrub => true)
The code:
assert(FileTest.exists?(daily),
"Did not make daily graph for %s" % type)
becomes:
assert(FileTest.exists?(daily), "Did not make daily graph for %s" % type)
The code:
assert(prov.target_object(:first).read !~ /^notdisk/,
"Did not remove thing from disk")
becomes:
assert(prov.target_object(:first).read !~ /^notdisk/, "Did not remove thing from disk")
* If arguments must wrap, treat them all equally
Replaced 510 occurances of
lines ending in things like ...(foo, or ...(bar(1,3),
with
\1
\2
3 Examples:
The code:
midscope.to_hash(false),
becomes:
assert_equal(
The code:
botscope.to_hash(true),
becomes:
# bottomscope, then checking that we see the right stuff.
The code:
:path => link,
becomes:
* Replaced 4516 occurances of ^( *)(.*) with
The present code base is supposed to use four-space indentation. In some places we failed
to maintain that standard. These should be fixed regardless of the 2 vs. 4 space question.
15 Examples:
The code:
def run_comp(cmd)
puts cmd
results = []
old_sync = $stdout.sync
$stdout.sync = true
line = []
begin
open("| #{cmd}", "r") do |f|
until f.eof? do
c = f.getc
becomes:
def run_comp(cmd)
puts cmd
results = []
old_sync = $stdout.sync
$stdout.sync = true
line = []
begin
open("| #{cmd}", "r") do |f|
until f.eof? do
c = f.getc
The code:
s.gsub!(/.{4}/n, '\\\\u\&')
}
string.force_encoding(Encoding::UTF_8)
string
rescue Iconv::Failure => e
raise GeneratorError, "Caught #{e.class}: #{e}"
end
else
def utf8_to_pson(string) # :nodoc:
string = string.gsub(/["\\\x0-\x1f]/) { MAP[$&] }
string.gsub!(/(
becomes:
s.gsub!(/.{4}/n, '\\\\u\&')
}
string.force_encoding(Encoding::UTF_8)
string
rescue Iconv::Failure => e
raise GeneratorError, "Caught #{e.class}: #{e}"
end
else
def utf8_to_pson(string) # :nodoc:
string = string.gsub(/["\\\x0-\x1f]/) { MAP[$&] }
string.gsub!(/(
The code:
end
}
rvalues: rvalue
| rvalues comma rvalue {
if val[0].instance_of?(AST::ASTArray)
result = val[0].push(val[2])
else
result = ast AST::ASTArray, :children => [val[0],val[2]]
end
}
becomes:
end
}
rvalues: rvalue
| rvalues comma rvalue {
if val[0].instance_of?(AST::ASTArray)
result = val[0].push(val[2])
else
result = ast AST::ASTArray, :children => [val[0],val[2]]
end
}
The code:
#passwdproc = proc { @password }
keytext = @key.export(
OpenSSL::Cipher::DES.new(:EDE3, :CBC),
@password
)
File.open(@keyfile, "w", 0400) { |f|
f << keytext
}
becomes:
# passwdproc = proc { @password }
keytext = @key.export(
OpenSSL::Cipher::DES.new(:EDE3, :CBC),
@password
)
File.open(@keyfile, "w", 0400) { |f|
f << keytext
}
The code:
end
def to_manifest
"%s { '%s':\n%s\n}" % [self.type.to_s, self.name,
@params.collect { |p, v|
if v.is_a? Array
" #{p} => [\'#{v.join("','")}\']"
else
" #{p} => \'#{v}\'"
end
}.join(",\n")
becomes:
end
def to_manifest
"%s { '%s':\n%s\n}" % [self.type.to_s, self.name,
@params.collect { |p, v|
if v.is_a? Array
" #{p} => [\'#{v.join("','")}\']"
else
" #{p} => \'#{v}\'"
end
}.join(",\n")
The code:
via the augeas tool.
Requires:
- augeas to be installed (http://www.augeas.net)
- ruby-augeas bindings
Sample usage with a string::
augeas{\"test1\" :
context => \"/files/etc/sysconfig/firstboot\",
changes => \"set RUN_FIRSTBOOT YES\",
becomes:
via the augeas tool.
Requires:
- augeas to be installed (http://www.augeas.net)
- ruby-augeas bindings
Sample usage with a string::
augeas{\"test1\" :
context => \"/files/etc/sysconfig/firstboot\",
changes => \"set RUN_FIRSTBOOT YES\",
The code:
names.should_not be_include("root")
end
describe "when generating a purgeable resource" do
it "should be included in the generated resources" do
Puppet::Type.type(:host).stubs(:instances).returns [@purgeable_resource]
@resources.generate.collect { |r| r.ref }.should include(@purgeable_resource.ref)
end
end
describe "when the instance's do not have an ensure property" do
becomes:
names.should_not be_include("root")
end
describe "when generating a purgeable resource" do
it "should be included in the generated resources" do
Puppet::Type.type(:host).stubs(:instances).returns [@purgeable_resource]
@resources.generate.collect { |r| r.ref }.should include(@purgeable_resource.ref)
end
end
describe "when the instance's do not have an ensure property" do
The code:
describe "when the instance's do not have an ensure property" do
it "should not be included in the generated resources" do
@no_ensure_resource = Puppet::Type.type(:exec).new(:name => '/usr/bin/env echo')
Puppet::Type.type(:host).stubs(:instances).returns [@no_ensure_resource]
@resources.generate.collect { |r| r.ref }.should_not include(@no_ensure_resource.ref)
end
end
describe "when the instance's ensure property does not accept absent" do
it "should not be included in the generated resources" do
@no_absent_resource = Puppet::Type.type(:service).new(:name => 'foobar')
becomes:
describe "when the instance's do not have an ensure property" do
it "should not be included in the generated resources" do
@no_ensure_resource = Puppet::Type.type(:exec).new(:name => '/usr/bin/env echo')
Puppet::Type.type(:host).stubs(:instances).returns [@no_ensure_resource]
@resources.generate.collect { |r| r.ref }.should_not include(@no_ensure_resource.ref)
end
end
describe "when the instance's ensure property does not accept absent" do
it "should not be included in the generated resources" do
@no_absent_resource = Puppet::Type.type(:service).new(:name => 'foobar')
The code:
func = nil
assert_nothing_raised do
func = Puppet::Parser::AST::Function.new(
:name => "template",
:ftype => :rvalue,
:arguments => AST::ASTArray.new(
:children => [stringobj(template)]
)
becomes:
func = nil
assert_nothing_raised do
func = Puppet::Parser::AST::Function.new(
:name => "template",
:ftype => :rvalue,
:arguments => AST::ASTArray.new(
:children => [stringobj(template)]
)
The code:
assert(
@store.allowed?("hostname.madstop.com", "192.168.1.50"),
"hostname not allowed")
assert(
! @store.allowed?("name.sub.madstop.com", "192.168.0.50"),
"subname name allowed")
becomes:
assert(
@store.allowed?("hostname.madstop.com", "192.168.1.50"),
"hostname not allowed")
assert(
! @store.allowed?("name.sub.madstop.com", "192.168.0.50"),
"subname name allowed")
The code:
assert_nothing_raised {
server = Puppet::Network::Handler.fileserver.new(
:Local => true,
:Config => false
)
}
becomes:
assert_nothing_raised {
server = Puppet::Network::Handler.fileserver.new(
:Local => true,
:Config => false
)
}
The code:
'yay',
{ :failonfail => false,
:uid => @user.uid,
:gid => @user.gid }
).returns('output')
output = Puppet::Util::SUIDManager.run_and_capture 'yay',
@user.uid,
@user.gid
becomes:
'yay',
{ :failonfail => false,
:uid => @user.uid,
:gid => @user.gid }
).returns('output')
output = Puppet::Util::SUIDManager.run_and_capture 'yay',
@user.uid,
@user.gid
The code:
).times(1)
pkg.provider.expects(
:aptget
).with(
'-y',
'-q',
'remove',
'faff'
becomes:
).times(1)
pkg.provider.expects(
:aptget
).with(
'-y',
'-q',
'remove',
'faff'
The code:
johnny one two
billy three four\n"
# Just parse and generate, to make sure it's isomorphic.
assert_nothing_raised do
assert_equal(text, @parser.to_file(@parser.parse(text)),
"parsing was not isomorphic")
end
end
def test_valid_attrs
becomes:
johnny one two
billy three four\n"
# Just parse and generate, to make sure it's isomorphic.
assert_nothing_raised do
assert_equal(text, @parser.to_file(@parser.parse(text)),
"parsing was not isomorphic")
end
end
def test_valid_attrs
The code:
"testing",
:onboolean => [true, "An on bool"],
:string => ["a string", "A string arg"]
)
result = []
should = []
assert_nothing_raised("Add args failed") do
@config.addargs(result)
end
@config.each do |name, element|
becomes:
"testing",
:onboolean => [true, "An on bool"],
:string => ["a string", "A string arg"]
)
result = []
should = []
assert_nothing_raised("Add args failed") do
@config.addargs(result)
end
@config.each do |name, element|
Diffstat (limited to 'lib/puppet/provider')
49 files changed, 678 insertions, 660 deletions
diff --git a/lib/puppet/provider/augeas/augeas.rb b/lib/puppet/provider/augeas/augeas.rb index 3a35c3241..163c864fa 100644 --- a/lib/puppet/provider/augeas/augeas.rb +++ b/lib/puppet/provider/augeas/augeas.rb @@ -31,17 +31,17 @@ Puppet::Type.type(:augeas).provide(:augeas) do SAVE_OVERWRITE = "overwrite" COMMANDS = { - "set" => [ :path, :string ], - "rm" => [ :path ], - "clear" => [ :path ], - "insert" => [ :string, :string, :path ], - "get" => [ :path, :comparator, :string ], - "match" => [ :path, :glob ], - "size" => [:comparator, :int], - "include" => [:string], - "not_include" => [:string], - "==" => [:glob], - "!=" => [:glob] + "set" => [ :path, :string ], + "rm" => [ :path ], + "clear" => [ :path ], + "insert" => [ :string, :string, :path ], + "get" => [ :path, :comparator, :string ], + "match" => [ :path, :glob ], + "size" => [:comparator, :int], + "include" => [:string], + "not_include" => [:string], + "==" => [:glob], + "!=" => [:glob] } COMMANDS["ins"] = COMMANDS["insert"] diff --git a/lib/puppet/provider/cron/crontab.rb b/lib/puppet/provider/cron/crontab.rb index 6dee2e515..c7ccd190f 100755 --- a/lib/puppet/provider/cron/crontab.rb +++ b/lib/puppet/provider/cron/crontab.rb @@ -10,9 +10,12 @@ tab = case Facter.value(:operatingsystem) end -Puppet::Type.type(:cron).provide(:crontab, + + Puppet::Type.type(:cron).provide( + :crontab, :parent => Puppet::Provider::ParsedFile, :default_target => ENV["USER"] || "root", + :filetype => tab ) do commands :crontab => "crontab" diff --git a/lib/puppet/provider/file/posix.rb b/lib/puppet/provider/file/posix.rb index 43b745d37..63d80ead1 100644 --- a/lib/puppet/provider/file/posix.rb +++ b/lib/puppet/provider/file/posix.rb @@ -64,7 +64,7 @@ Puppet::Type.type(:file).provide :posix do return false end end - + def retrieve(resource) unless stat = resource.stat(false) return :absent @@ -82,7 +82,7 @@ Puppet::Type.type(:file).provide :posix do return currentvalue end - + def sync(path, links, should) # Set our method appropriately, depending on links. if links == :manage diff --git a/lib/puppet/provider/file/win32.rb b/lib/puppet/provider/file/win32.rb index 21cc2deff..da6db1e8c 100644 --- a/lib/puppet/provider/file/win32.rb +++ b/lib/puppet/provider/file/win32.rb @@ -6,7 +6,7 @@ Puppet::Type.type(:file).provide :microsoft_windows do include Puppet::Util::Warnings require 'sys/admin' if Puppet.features.microsoft_windows? - + def id2name(id) return id.to_s if id.is_a?(Symbol) return nil if id > Puppet[:maximum_uid].to_i diff --git a/lib/puppet/provider/host/parsed.rb b/lib/puppet/provider/host/parsed.rb index d69dcbec4..f4282c5a6 100644 --- a/lib/puppet/provider/host/parsed.rb +++ b/lib/puppet/provider/host/parsed.rb @@ -7,9 +7,12 @@ else hosts = "/etc/hosts" end -Puppet::Type.type(:host).provide(:parsed, + + Puppet::Type.type(:host).provide( + :parsed, :parent => Puppet::Provider::ParsedFile, :default_target => hosts, + :filetype => :flat ) do confine :exists => hosts diff --git a/lib/puppet/provider/macauthorization/macauthorization.rb b/lib/puppet/provider/macauthorization/macauthorization.rb index d1e2b229f..696b5bb82 100644 --- a/lib/puppet/provider/macauthorization/macauthorization.rb +++ b/lib/puppet/provider/macauthorization/macauthorization.rb @@ -37,10 +37,10 @@ Puppet::Type.type(:macauthorization).provide :macauthorization, :parent => Puppe # This map exists due to the use of hyphens and reserved words in # the authorization schema. PuppetToNativeAttributeMap = { :allow_root => "allow-root", - :authenticate_user => "authenticate-user", - :auth_class => "class", - :k_of_n => "k-of-n", - :session_owner => "session-owner", } + :authenticate_user => "authenticate-user", + :auth_class => "class", + :k_of_n => "k-of-n", + :session_owner => "session-owner", } class << self attr_accessor :parsed_auth_db @@ -196,8 +196,11 @@ Puppet::Type.type(:macauthorization).provide :macauthorization, :parent => Puppe Plist::Emit.save_plist(values, tmp.path) cmds = [] cmds << :security << "authorizationdb" << "write" << name - output = execute(cmds, :combine => false, - :stdinfile => tmp.path.to_s) + + output = execute( + cmds, :combine => false, + + :stdinfile => tmp.path.to_s) rescue Errno::EACCES => e raise Puppet::Error.new("Cannot save right to #{tmp.path}: #{e}") ensure @@ -285,8 +288,8 @@ Puppet::Type.type(:macauthorization).provide :macauthorization, :parent => Puppe # case due to not being in the actual authorization db schema. properties = [ :allow_root, :authenticate_user, :auth_class, :comment, - :group, :k_of_n, :mechanisms, :rule, :session_owner, - :shared, :timeout, :tries ] + :group, :k_of_n, :mechanisms, :rule, :session_owner, + :shared, :timeout, :tries ] properties.each do |field| define_method(field.to_s) do diff --git a/lib/puppet/provider/mailalias/aliases.rb b/lib/puppet/provider/mailalias/aliases.rb index f880ccea1..5b7f0e2ec 100755 --- a/lib/puppet/provider/mailalias/aliases.rb +++ b/lib/puppet/provider/mailalias/aliases.rb @@ -1,8 +1,11 @@ require 'puppet/provider/parsedfile' -Puppet::Type.type(:mailalias).provide(:aliases, + + Puppet::Type.type(:mailalias).provide( + :aliases, :parent => Puppet::Provider::ParsedFile, :default_target => "/etc/aliases", + :filetype => :flat ) do text_line :comment, :match => /^#/ @@ -18,11 +21,11 @@ Puppet::Type.type(:mailalias).provide(:aliases, end def process(line) - ret = {} - records = line.split(':',2) - ret[:name] = records[0].strip() - ret[:recipient] = records[1].strip() - ret + ret = {} + records = line.split(':',2) + ret[:name] = records[0].strip() + ret[:recipient] = records[1].strip() + ret end def to_line(record) diff --git a/lib/puppet/provider/mcx/mcxcontent.rb b/lib/puppet/provider/mcx/mcxcontent.rb index 002bb0dae..de60de15a 100644 --- a/lib/puppet/provider/mcx/mcxcontent.rb +++ b/lib/puppet/provider/mcx/mcxcontent.rb @@ -68,10 +68,13 @@ Puppet::Type.type(:mcx).provide :mcxcontent, :parent => Puppet::Provider do Puppet.debug "/#{TypeMap[ds_type]}/#{ds_name} has no MCX data." else # This node has MCX data. - rsrc = self.new(:name => "/#{TypeMap[ds_type]}/#{ds_name}", - :ds_type => ds_type, - :ds_name => ds_name, - :content => content) + + rsrc = self.new( + :name => "/#{TypeMap[ds_type]}/#{ds_name}", + :ds_type => ds_type, + :ds_name => ds_name, + + :content => content) mcx_list << rsrc end end @@ -184,17 +187,23 @@ Puppet::Type.type(:mcx).provide :mcxcontent, :parent => Puppet::Provider do def content ds_parms = get_dsparams - mcx = self.class.mcxexport(ds_parms[:ds_type], - ds_parms[:ds_name]) + + mcx = self.class.mcxexport( + ds_parms[:ds_type], + + ds_parms[:ds_name]) return mcx end def content=(value) # dscl localhost -mcximport ds_parms = get_dsparams - mcx = mcximport(ds_parms[:ds_type], - ds_parms[:ds_name], - resource[:content]) + + mcx = mcximport( + ds_parms[:ds_type], + ds_parms[:ds_name], + + resource[:content]) return mcx end diff --git a/lib/puppet/provider/mount/parsed.rb b/lib/puppet/provider/mount/parsed.rb index b30de2bc7..1100ad62c 100755 --- a/lib/puppet/provider/mount/parsed.rb +++ b/lib/puppet/provider/mount/parsed.rb @@ -8,9 +8,12 @@ else fstab = "/etc/fstab" end -Puppet::Type.type(:mount).provide(:parsed, + + Puppet::Type.type(:mount).provide( + :parsed, :parent => Puppet::Provider::ParsedFile, :default_target => fstab, + :filetype => :flat ) do include Puppet::Provider::Mount @@ -21,8 +24,7 @@ Puppet::Type.type(:mount).provide(:parsed, @platform = Facter["operatingsystem"].value case @platform when "Solaris" - @fields = [:device, :blockdevice, :name, :fstype, :pass, :atboot, - :options] + @fields = [:device, :blockdevice, :name, :fstype, :pass, :atboot, :options] else @fields = [:device, :name, :fstype, :options, :dump, :pass] @fielddefaults = [ nil ] * 4 + [ "0", "2" ] diff --git a/lib/puppet/provider/nameservice.rb b/lib/puppet/provider/nameservice.rb index 57441ddf6..8a759e4f3 100644 --- a/lib/puppet/provider/nameservice.rb +++ b/lib/puppet/provider/nameservice.rb @@ -6,7 +6,7 @@ require 'puppet' class Puppet::Provider::NameService < Puppet::Provider class << self def autogen_default(param) - if defined? @autogen_defaults + if defined?(@autogen_defaults) return @autogen_defaults[symbolize(param)] else return nil @@ -36,7 +36,7 @@ class Puppet::Provider::NameService < Puppet::Provider def option(name, option) name = name.intern if name.is_a? String - if defined? @options and @options.include? name and @options[name].include? option + if defined?(@options) and @options.include? name and @options[name].include? option return @options[name][option] else return nil @@ -45,8 +45,7 @@ class Puppet::Provider::NameService < Puppet::Provider def options(name, hash) unless resource_type.valid_parameter?(name) - raise Puppet::DevError, "%s is not a valid attribute for %s" % - [name, resource_type.name] + raise Puppet::DevError, "%s is not a valid attribute for %s" % [name, resource_type.name] end @options ||= {} @options[name] ||= {} @@ -93,7 +92,7 @@ class Puppet::Provider::NameService < Puppet::Provider # This is annoying, but there really aren't that many options, # and this *is* built into Ruby. def section - unless defined? @resource_type + unless defined?(@resource_type) raise Puppet::DevError, "Cannot determine Etc section without a resource type" @@ -111,8 +110,7 @@ class Puppet::Provider::NameService < Puppet::Provider if @checks.include? name block = @checks[name][:block] unless block.call(value) - raise ArgumentError, "Invalid value %s: %s" % - [value, @checks[name][:error]] + raise ArgumentError, "Invalid value %s: %s" % [value, @checks[name][:error]] end end end @@ -161,7 +159,7 @@ class Puppet::Provider::NameService < Puppet::Provider end # Make sure we don't use the same value multiple times - if defined? @@prevauto + if defined?(@@prevauto) @@prevauto += 1 else Etc.send(group) { |obj| @@ -179,7 +177,7 @@ class Puppet::Provider::NameService < Puppet::Provider end def create - if exists? + if exists? info "already exists" # The object already exists return nil @@ -188,8 +186,7 @@ class Puppet::Provider::NameService < Puppet::Provider begin execute(self.addcmd) rescue Puppet::ExecutionFailure => detail - raise Puppet::Error, "Could not create %s %s: %s" % - [@resource.class.name, @resource.name, detail] + raise Puppet::Error, "Could not create %s %s: %s" % [@resource.class.name, @resource.name, detail] end end @@ -203,8 +200,7 @@ class Puppet::Provider::NameService < Puppet::Provider begin execute(self.deletecmd) rescue Puppet::ExecutionFailure => detail - raise Puppet::Error, "Could not delete %s %s: %s" % - [@resource.class.name, @resource.name, detail] + raise Puppet::Error, "Could not delete %s %s: %s" % [@resource.class.name, @resource.name, detail] end end diff --git a/lib/puppet/provider/nameservice/directoryservice.rb b/lib/puppet/provider/nameservice/directoryservice.rb index b882e808a..1eb0aec6c 100644 --- a/lib/puppet/provider/nameservice/directoryservice.rb +++ b/lib/puppet/provider/nameservice/directoryservice.rb @@ -93,7 +93,7 @@ class DirectoryService < Puppet::Provider::NameService # For example, if we're working with an user type, this will be /Users # with a group type, this will be /Groups. # @ds_path is an attribute of the class itself. - if defined? @ds_path + if defined?(@ds_path) return @ds_path end # JJM: "Users" or "Groups" etc ... (Based on the Puppet::Type) @@ -104,7 +104,7 @@ class DirectoryService < Puppet::Provider::NameService end def self.get_macosx_version_major - if defined? @macosx_version_major + if defined?(@macosx_version_major) return @macosx_version_major end begin @@ -115,7 +115,7 @@ class DirectoryService < Puppet::Provider::NameService product_version_major = Facter.value(:macosx_productversion_major) else # TODO: remove this code chunk once we require Facter 1.5.5 or higher. - Puppet.warning("DEPRECATION WARNING: Future versions of the directoryservice provider will require Facter 1.5.5 or newer.") + Puppet.warning("DEPRECATION WARNING: Future versions of the directoryservice provider will require Facter 1.5.5 or newer.") product_version = Facter.value(:macosx_productversion) if product_version.nil? fail("Could not determine OS X version from Facter") @@ -138,7 +138,7 @@ class DirectoryService < Puppet::Provider::NameService begin dscl_output = execute(get_exec_preamble("-list")) rescue Puppet::ExecutionFailure => detail - fail("Could not get %s list from DirectoryService" % [ @resource_type.name.to_s ]) + fail("Could not get %s list from DirectoryService" % [ @resource_type.name.to_s ]) end return dscl_output.split("\n") end @@ -155,12 +155,12 @@ class DirectoryService < Puppet::Provider::NameService dscl_plist = {} dscl_output.split("\n").inject([]) do |array, line| - if line =~ /^\s+/ # it's a value - array[-1] << line # add the value to the previous key - else - array << line - end - array + if line =~ /^\s+/ # it's a value + array[-1] << line # add the value to the previous key + else + array << line + end + array end.compact dscl_output.each do |line| @@ -357,19 +357,19 @@ class DirectoryService < Puppet::Provider::NameService end def password=(passphrase) - exec_arg_vector = self.class.get_exec_preamble("-read", @resource.name) - exec_arg_vector << @@ns_to_ds_attribute_map[:guid] - begin - guid_output = execute(exec_arg_vector) - guid_plist = Plist.parse_xml(guid_output) - # Although GeneratedUID like all DirectoryService values can be multi-valued - # according to the schema, in practice user accounts cannot have multiple UUIDs - # otherwise Bad Things Happen, so we just deal with the first value. - guid = guid_plist["dsAttrTypeStandard:#{@@ns_to_ds_attribute_map[:guid]}"][0] - self.class.set_password(@resource.name, guid, passphrase) - rescue Puppet::ExecutionFailure => detail - fail("Could not set %s on %s[%s]: %s" % [param, @resource.class.name, @resource.name, detail]) - end + exec_arg_vector = self.class.get_exec_preamble("-read", @resource.name) + exec_arg_vector << @@ns_to_ds_attribute_map[:guid] + begin + guid_output = execute(exec_arg_vector) + guid_plist = Plist.parse_xml(guid_output) + # Although GeneratedUID like all DirectoryService values can be multi-valued + # according to the schema, in practice user accounts cannot have multiple UUIDs + # otherwise Bad Things Happen, so we just deal with the first value. + guid = guid_plist["dsAttrTypeStandard:#{@@ns_to_ds_attribute_map[:guid]}"][0] + self.class.set_password(@resource.name, guid, passphrase) + rescue Puppet::ExecutionFailure => detail + fail("Could not set %s on %s[%s]: %s" % [param, @resource.class.name, @resource.name, detail]) + end end # NBK: we override @parent.set as we need to execute a series of commands @@ -385,10 +385,10 @@ class DirectoryService < Puppet::Provider::NameService # in the manifest. if @resource[:auth_membership] and not current_members.nil? remove_unwanted_members(current_members, value) - end + end - # if they're not a member, make them one. - add_members(current_members, value) + # if they're not a member, make them one. + add_members(current_members, value) else exec_arg_vector = self.class.get_exec_preamble("-create", @resource[:name]) # JJM: The following line just maps the NS name to the DS name @@ -424,14 +424,13 @@ class DirectoryService < Puppet::Provider::NameService exec_arg_vector = self.class.get_exec_preamble("-create", @resource[:name]) exec_arg_vector << @@ns_to_ds_attribute_map[:guid] << guid begin - execute(exec_arg_vector) + execute(exec_arg_vector) rescue Puppet::ExecutionFailure => detail - fail("Could not set GeneratedUID for %s %s: %s" % - [@resource.class.name, @resource.name, detail]) + fail("Could not set GeneratedUID for %s %s: %s" % [@resource.class.name, @resource.name, detail]) end if value = @resource.should(:password) and value != "" - self.class.set_password(@resource[:name], guid, value) + self.class.set_password(@resource[:name], guid, value) end # Now we create all the standard properties @@ -446,10 +445,9 @@ class DirectoryService < Puppet::Provider::NameService next if property == :password # skip setting the password here exec_arg_vector << value.to_s begin - execute(exec_arg_vector) + execute(exec_arg_vector) rescue Puppet::ExecutionFailure => detail - fail("Could not create %s %s: %s" % - [@resource.class.name, @resource.name, detail]) + fail("Could not create %s %s: %s" % [@resource.class.name, @resource.name, detail]) end end end @@ -461,24 +459,24 @@ class DirectoryService < Puppet::Provider::NameService if not new_members.include?(member) cmd = [:dseditgroup, "-o", "edit", "-n", ".", "-d", member, @resource[:name]] begin - execute(cmd) + execute(cmd) rescue Puppet::ExecutionFailure => detail - fail("Could not remove %s from group: %s, %s" % [member, @resource.name, detail]) + fail("Could not remove %s from group: %s, %s" % [member, @resource.name, detail]) end - end - end + end + end end def add_members(current_members, new_members) new_members.each do |new_member| - if current_members.nil? or not current_members.include?(new_member) - cmd = [:dseditgroup, "-o", "edit", "-n", ".", "-a", new_member, @resource[:name]] - begin + if current_members.nil? or not current_members.include?(new_member) + cmd = [:dseditgroup, "-o", "edit", "-n", ".", "-a", new_member, @resource[:name]] + begin execute(cmd) - rescue Puppet::ExecutionFailure => detail + rescue Puppet::ExecutionFailure => detail fail("Could not add %s to group: %s, %s" % [new_member, @resource.name, detail]) - end - end + end + end end end diff --git a/lib/puppet/provider/package/aix.rb b/lib/puppet/provider/package/aix.rb index 5cccdf376..385d33fac 100644 --- a/lib/puppet/provider/package/aix.rb +++ b/lib/puppet/provider/package/aix.rb @@ -43,7 +43,7 @@ Puppet::Type.type(:package).provide :aix, :parent => Puppet::Provider::Package d previous = updates[current[:name]] unless Puppet::Util::Package.versioncmp(previous[:version], current[:version]) == 1 - updates[ current[:name] ] = current + updates[ current[:name] ] = current end else diff --git a/lib/puppet/provider/package/appdmg.rb b/lib/puppet/provider/package/appdmg.rb index 352f8738f..a07b43f07 100644 --- a/lib/puppet/provider/package/appdmg.rb +++ b/lib/puppet/provider/package/appdmg.rb @@ -17,7 +17,7 @@ Puppet::Type.type(:package).provide(:appdmg, :parent => Puppet::Provider::Packag desc "Package management which copies application bundles to a target." confine :operatingsystem => :darwin - + commands :hdiutil => "/usr/bin/hdiutil" commands :curl => "/usr/bin/curl" commands :ditto => "/usr/bin/ditto" @@ -40,12 +40,12 @@ Puppet::Type.type(:package).provide(:appdmg, :parent => Puppet::Provider::Packag end def self.installapp(source, name, orig_source) - appname = File.basename(source); - ditto "--rsrc", source, "/Applications/#{appname}" - File.open("/var/db/.puppet_appdmg_installed_#{name}", "w") do |t| - t.print "name: '#{name}'\n" - t.print "source: '#{orig_source}'\n" - end + appname = File.basename(source); + ditto "--rsrc", source, "/Applications/#{appname}" + File.open("/var/db/.puppet_appdmg_installed_#{name}", "w") do |t| + t.print "name: '#{name}'\n" + t.print "source: '#{orig_source}'\n" + end end def self.installpkgdmg(source, name) diff --git a/lib/puppet/provider/package/apple.rb b/lib/puppet/provider/package/apple.rb index 063470fc4..9214d4eb5 100755 --- a/lib/puppet/provider/package/apple.rb +++ b/lib/puppet/provider/package/apple.rb @@ -13,9 +13,12 @@ Puppet::Type.type(:package).provide :apple, :parent => Puppet::Provider::Package def self.instances instance_by_name.collect do |name| - self.new( + + self.new( + :name => name, :provider => :apple, + :ensure => :installed ) end diff --git a/lib/puppet/provider/package/apt.rb b/lib/puppet/provider/package/apt.rb index c43bb4dfc..9ae2a861e 100755 --- a/lib/puppet/provider/package/apt.rb +++ b/lib/puppet/provider/package/apt.rb @@ -19,7 +19,7 @@ Puppet::Type.type(:package).provide :apt, :parent => :dpkg, :source => :dpkg do # install packages from remote sites. def checkforcdrom - unless defined? @@checkedforcdrom + unless defined?(@@checkedforcdrom) if FileTest.exists? "/etc/apt/sources.list" if File.read("/etc/apt/sources.list") =~ /^[^#]*cdrom:/ @@checkedforcdrom = true diff --git a/lib/puppet/provider/package/aptrpm.rb b/lib/puppet/provider/package/aptrpm.rb index 0471fb915..4b3841d88 100644 --- a/lib/puppet/provider/package/aptrpm.rb +++ b/lib/puppet/provider/package/aptrpm.rb @@ -12,12 +12,12 @@ Puppet::Type.type(:package).provide :aptrpm, :parent => :rpm, :source => :rpm do if command('rpm') confine :true => begin - rpm('-ql', 'rpm') - rescue Puppet::ExecutionFailure - false - else - true - end + rpm('-ql', 'rpm') + rescue Puppet::ExecutionFailure + false + else + true + end end # Install a package using 'apt-get'. This function needs to support diff --git a/lib/puppet/provider/package/dpkg.rb b/lib/puppet/provider/package/dpkg.rb index fda9e02fb..aaa277944 100755 --- a/lib/puppet/provider/package/dpkg.rb +++ b/lib/puppet/provider/package/dpkg.rb @@ -106,13 +106,15 @@ Puppet::Type.type(:package).provide :dpkg, :parent => Puppet::Provider::Package # list out our specific package begin - output = dpkgquery("-W", "--showformat", + + output = dpkgquery( + "-W", "--showformat", + '${Status} ${Package} ${Version}\\n', @resource[:name] ) rescue Puppet::ExecutionFailure # dpkg-query exits 1 if the package is not found. - return {:ensure => :purged, :status => 'missing', - :name => @resource[:name], :error => 'ok'} + return {:ensure => :purged, :status => 'missing', :name => @resource[:name], :error => 'ok'} end @@ -120,8 +122,7 @@ Puppet::Type.type(:package).provide :dpkg, :parent => Puppet::Provider::Package if hash[:error] != "ok" raise Puppet::Error.new( - "Package %s, version %s is in error state: %s" % - [hash[:name], hash[:ensure], hash[:error]] + "Package %s, version %s is in error state: %s" % [hash[:name], hash[:ensure], hash[:error]] ) end @@ -144,7 +145,7 @@ Puppet::Type.type(:package).provide :dpkg, :parent => Puppet::Provider::Package tmpfile.flush execute([:dpkg, "--set-selections"], :stdinfile => tmpfile.path.to_s) } - end + end end def unhold diff --git a/lib/puppet/provider/package/fink.rb b/lib/puppet/provider/package/fink.rb index 5d9e86313..d859c0e32 100755 --- a/lib/puppet/provider/package/fink.rb +++ b/lib/puppet/provider/package/fink.rb @@ -79,6 +79,6 @@ Puppet::Type.type(:package).provide :fink, :parent => :dpkg, :source => :dpkg do def purge aptget '-y', '-q', 'remove', '--purge', @resource[:name] - end + end end diff --git a/lib/puppet/provider/package/freebsd.rb b/lib/puppet/provider/package/freebsd.rb index f4ca35466..79316f80f 100755 --- a/lib/puppet/provider/package/freebsd.rb +++ b/lib/puppet/provider/package/freebsd.rb @@ -6,8 +6,8 @@ Puppet::Type.type(:package).provide :freebsd, :parent => :openbsd do libraries." commands :pkginfo => "/usr/sbin/pkg_info", - :pkgadd => "/usr/sbin/pkg_add", - :pkgdelete => "/usr/sbin/pkg_delete" + :pkgadd => "/usr/sbin/pkg_add", + :pkgdelete => "/usr/sbin/pkg_delete" confine :operatingsystem => :freebsd diff --git a/lib/puppet/provider/package/gem.rb b/lib/puppet/provider/package/gem.rb index 56350fd36..9dca08d5c 100755 --- a/lib/puppet/provider/package/gem.rb +++ b/lib/puppet/provider/package/gem.rb @@ -4,9 +4,9 @@ require 'uri' # Ruby gems support. Puppet::Type.type(:package).provide :gem, :parent => Puppet::Provider::Package do desc "Ruby Gem support. If a URL is passed via ``source``, then that URL is used as the - remote gem repository; if a source is present but is not a valid URL, it will be - interpreted as the path to a local gem file. If source is not present at all, - the gem will be installed from the default gem repositories." + remote gem repository; if a source is present but is not a valid URL, it will be + interpreted as the path to a local gem file. If source is not present at all, + the gem will be installed from the default gem repositories." has_feature :versionable diff --git a/lib/puppet/provider/package/hpux.rb b/lib/puppet/provider/package/hpux.rb index 0c4fb36f0..76922dc09 100644 --- a/lib/puppet/provider/package/hpux.rb +++ b/lib/puppet/provider/package/hpux.rb @@ -7,8 +7,8 @@ Puppet::Type.type(:package).provide :hpux, :parent => Puppet::Provider::Package desc "HP-UX's packaging system." commands :swinstall => "/usr/sbin/swinstall", - :swlist => "/usr/sbin/swlist", - :swremove => "/usr/sbin/swremove" + :swlist => "/usr/sbin/swlist", + :swremove => "/usr/sbin/swremove" confine :operatingsystem => "hp-ux" diff --git a/lib/puppet/provider/package/nim.rb b/lib/puppet/provider/package/nim.rb index 670136e6b..a798f338a 100644 --- a/lib/puppet/provider/package/nim.rb +++ b/lib/puppet/provider/package/nim.rb @@ -19,7 +19,7 @@ Puppet::Type.type(:package).provide :nim, :parent => :aix, :source => :aix do def self.srclistcmd(source) return [ command(:nimclient), "-o", "showres", "-a", "installp_flags=L", "-a", "resource=#{source}" ] - end + end def install(useversion = true) unless source = @resource[:source] diff --git a/lib/puppet/provider/package/openbsd.rb b/lib/puppet/provider/package/openbsd.rb index 1c873fdad..254c9ab61 100755 --- a/lib/puppet/provider/package/openbsd.rb +++ b/lib/puppet/provider/package/openbsd.rb @@ -78,24 +78,24 @@ Puppet::Type.type(:package).provide :openbsd, :parent => Puppet::Provider::Packa end def get_version - begin + begin execpipe([command(:pkginfo), " -I ", @resource[:name]]) do |process| # our regex for matching pkg_info output regex = /^(.*)-(\d[^-]*)[-]?(\D*)(.*)$/ fields = [ :name, :version, :flavor ] master_version = 0 - + process.each do |line| - if match = regex.match(line.split()[0]) + if match = regex.match(line.split()[0]) # now we return the first version, unless ensure is latest version = match.captures[1] return version unless @resource[:ensure] == "latest" - + master_version = version unless master_version > version end end - - return master_version unless master_version == 0 + + return master_version unless master_version == 0 raise Puppet::Error, "#{version} is not available for this package" end rescue Puppet::ExecutionFailure diff --git a/lib/puppet/provider/package/pkg.rb b/lib/puppet/provider/package/pkg.rb index 148ef0d62..7d21acb66 100644 --- a/lib/puppet/provider/package/pkg.rb +++ b/lib/puppet/provider/package/pkg.rb @@ -66,8 +66,7 @@ Puppet::Type.type(:package).provide :pkg, :parent => Puppet::Provider::Package d when "installed" version = v else - Puppet.warn "unknown package state for %s: %s" % - [@resource[:name], v] + Puppet.warn "unknown package state for %s: %s" % [@resource[:name], v] end end version @@ -95,17 +94,14 @@ Puppet::Type.type(:package).provide :pkg, :parent => Puppet::Provider::Package d rescue Puppet::ExecutionFailure # pkg returns 1 if the package is not found. return {:ensure => :absent, :status => 'missing', - :name => @resource[:name], :error => 'ok'} + :name => @resource[:name], :error => 'ok'} end - hash = self.class.parse_line(output) || - {:ensure => :absent, :status => 'missing', - :name => @resource[:name], :error => 'ok'} + hash = self.class.parse_line(output) || + {:ensure => :absent, :status => 'missing', :name => @resource[:name], :error => 'ok'} if hash[:error] != "ok" - raise Puppet::Error.new( - "Package %s, version %s is in error state: %s" % - [hash[:name], hash[:version], hash[:error]]) + raise Puppet::Error.new( "Package %s, version %s is in error state: %s" % [hash[:name], hash[:version], hash[:error]]) end return hash diff --git a/lib/puppet/provider/package/pkgdmg.rb b/lib/puppet/provider/package/pkgdmg.rb index 25edc9109..4e9e50802 100644 --- a/lib/puppet/provider/package/pkgdmg.rb +++ b/lib/puppet/provider/package/pkgdmg.rb @@ -30,7 +30,7 @@ require 'facter/util/plist' Puppet::Type.type(:package).provide :pkgdmg, :parent => Puppet::Provider::Package do desc "Package management based on Apple's Installer.app and DiskUtility.app. This package works by checking the contents of a DMG image for Apple pkg or mpkg files. Any number of pkg or mpkg files may exist in the root directory of the DMG file system. Sub directories are not checked for packages. See `the wiki docs </trac/puppet/wiki/DmgPackages>` for more detail." - + confine :operatingsystem => :darwin defaultfor :operatingsystem => :darwin commands :installer => "/usr/sbin/installer" @@ -50,21 +50,24 @@ Puppet::Type.type(:package).provide :pkgdmg, :parent => Puppet::Provider::Packag def self.instances instance_by_name.collect do |name| + new( + :name => name, :provider => :pkgdmg, + :ensure => :installed ) end end def self.installpkg(source, name, orig_source) - installer "-pkg", source, "-target", "/" - # Non-zero exit status will throw an exception. - File.open("/var/db/.puppet_pkgdmg_installed_#{name}", "w") do |t| - t.print "name: '#{name}'\n" - t.print "source: '#{orig_source}'\n" - end + installer "-pkg", source, "-target", "/" + # Non-zero exit status will throw an exception. + File.open("/var/db/.puppet_pkgdmg_installed_#{name}", "w") do |t| + t.print "name: '#{name}'\n" + t.print "source: '#{orig_source}'\n" + end end def self.installpkgdmg(source, name) diff --git a/lib/puppet/provider/package/ports.rb b/lib/puppet/provider/package/ports.rb index 21696721e..16e065ef8 100755 --- a/lib/puppet/provider/package/ports.rb +++ b/lib/puppet/provider/package/ports.rb @@ -2,9 +2,9 @@ Puppet::Type.type(:package).provide :ports, :parent => :freebsd, :source => :fre desc "Support for FreeBSD's ports. Again, this still mixes packages and ports." commands :portupgrade => "/usr/local/sbin/portupgrade", - :portversion => "/usr/local/sbin/portversion", - :portuninstall => "/usr/local/sbin/pkg_deinstall", - :portinfo => "/usr/sbin/pkg_info" + :portversion => "/usr/local/sbin/portversion", + :portuninstall => "/usr/local/sbin/pkg_deinstall", + :portinfo => "/usr/sbin/pkg_info" defaultfor :operatingsystem => :freebsd diff --git a/lib/puppet/provider/package/portupgrade.rb b/lib/puppet/provider/package/portupgrade.rb index 531cab219..acdcab6f7 100644 --- a/lib/puppet/provider/package/portupgrade.rb +++ b/lib/puppet/provider/package/portupgrade.rb @@ -3,248 +3,248 @@ require 'puppet/provider/package' Puppet::Type.type(:package).provide :portupgrade, :parent => Puppet::Provider::Package do - include Puppet::Util::Execution - - desc "Support for FreeBSD's ports using the portupgrade ports management software. - Use the port's full origin as the resource name. eg (ports-mgmt/portupgrade) - for the portupgrade port." - - ## has_features is usually autodetected based on defs below. - # has_features :installable, :uninstallable, :upgradeable - - commands :portupgrade => "/usr/local/sbin/portupgrade", - :portinstall => "/usr/local/sbin/portinstall", - :portversion => "/usr/local/sbin/portversion", - :portuninstall => "/usr/local/sbin/pkg_deinstall", - :portinfo => "/usr/sbin/pkg_info" - - ## Activate this only once approved by someone important. - # defaultfor :operatingsystem => :freebsd - - # Remove unwanted environment variables. - %w{INTERACTIVE UNAME}.each do |var| - if ENV.include?(var) - ENV.delete(var) - end - end - - ######## instances sub command (builds the installed packages list) - - def self.instances - Puppet.debug "portupgrade.rb Building packages list from installed ports" - - # regex to match output from pkg_info - regex = %r{^(\S+)-([^-\s]+):(\S+)$} - # Corresponding field names - fields = [:portname, :ensure, :portorigin] - # define Temporary hash used, packages array of hashes - hash = Hash.new - packages = [] - - # exec command - cmdline = ["-aoQ"] - begin - output = portinfo(*cmdline) - rescue Puppet::ExecutionFailure - raise Puppet::Error.new(output) - return nil - end - - # split output and match it and populate temp hash - output.split("\n").each { |data| - # reset hash to nil for each line - hash.clear - if match = regex.match(data) - # Output matched regex - fields.zip(match.captures) { |field, value| - hash[field] = value - } - - # populate the actual :name field from the :portorigin - # Set :provider to this object name - hash[:name] = hash[:portorigin] - hash[:provider] = self.name - - # Add to the full packages listing - packages << new(hash) - - else - # unrecognised output from pkg_info - Puppet.debug "portupgrade.Instances() - unable to match output: %s" % data - end - } - - # return the packages array of hashes - return packages - - end - - ######## Installation sub command - - def install - Puppet.debug "portupgrade.install() - Installation call on %s" % @resource[:name] - # -M: yes, we're a batch, so don't ask any questions + include Puppet::Util::Execution + + desc "Support for FreeBSD's ports using the portupgrade ports management software. + Use the port's full origin as the resource name. eg (ports-mgmt/portupgrade) + for the portupgrade port." + + ## has_features is usually autodetected based on defs below. + # has_features :installable, :uninstallable, :upgradeable + + commands :portupgrade => "/usr/local/sbin/portupgrade", + :portinstall => "/usr/local/sbin/portinstall", + :portversion => "/usr/local/sbin/portversion", + :portuninstall => "/usr/local/sbin/pkg_deinstall", + :portinfo => "/usr/sbin/pkg_info" + + ## Activate this only once approved by someone important. + # defaultfor :operatingsystem => :freebsd + + # Remove unwanted environment variables. + %w{INTERACTIVE UNAME}.each do |var| + if ENV.include?(var) + ENV.delete(var) + end + end + + ######## instances sub command (builds the installed packages list) + + def self.instances + Puppet.debug "portupgrade.rb Building packages list from installed ports" + + # regex to match output from pkg_info + regex = %r{^(\S+)-([^-\s]+):(\S+)$} + # Corresponding field names + fields = [:portname, :ensure, :portorigin] + # define Temporary hash used, packages array of hashes + hash = Hash.new + packages = [] + + # exec command + cmdline = ["-aoQ"] + begin + output = portinfo(*cmdline) + rescue Puppet::ExecutionFailure + raise Puppet::Error.new(output) + return nil + end + + # split output and match it and populate temp hash + output.split("\n").each { |data| + # reset hash to nil for each line + hash.clear + if match = regex.match(data) + # Output matched regex + fields.zip(match.captures) { |field, value| + hash[field] = value + } + + # populate the actual :name field from the :portorigin + # Set :provider to this object name + hash[:name] = hash[:portorigin] + hash[:provider] = self.name + + # Add to the full packages listing + packages << new(hash) + + else + # unrecognised output from pkg_info + Puppet.debug "portupgrade.Instances() - unable to match output: %s" % data + end + } + + # return the packages array of hashes + return packages + + end + + ######## Installation sub command + + def install + Puppet.debug "portupgrade.install() - Installation call on %s" % @resource[:name] + # -M: yes, we're a batch, so don't ask any questions cmdline = ["-M BATCH=yes", @resource[:name]] - # FIXME: it's possible that portinstall prompts for data so locks up. - begin - output = portinstall(*cmdline) - rescue Puppet::ExecutionFailure - raise Puppet::Error.new(output) - end - - if output =~ /\*\* No such / - raise Puppet::ExecutionFailure, "Could not find package %s" % @resource[:name] - end - - # No return code required, so do nil to be clean - return nil - end - - ######## Latest subcommand (returns the latest version available, or current version if installed is latest) - - def latest - Puppet.debug "portupgrade.latest() - Latest check called on %s" % @resource[:name] - # search for latest version available, or return current version. - # cmdline = "portversion -v <portorigin>", returns "<portname> <code> <stuff>" - # or "** No matching package found: <portname>" + # FIXME: it's possible that portinstall prompts for data so locks up. + begin + output = portinstall(*cmdline) + rescue Puppet::ExecutionFailure + raise Puppet::Error.new(output) + end + + if output =~ /\*\* No such / + raise Puppet::ExecutionFailure, "Could not find package %s" % @resource[:name] + end + + # No return code required, so do nil to be clean + return nil + end + + ######## Latest subcommand (returns the latest version available, or current version if installed is latest) + + def latest + Puppet.debug "portupgrade.latest() - Latest check called on %s" % @resource[:name] + # search for latest version available, or return current version. + # cmdline = "portversion -v <portorigin>", returns "<portname> <code> <stuff>" + # or "** No matching package found: <portname>" cmdline = ["-v", @resource[:name]] - begin - output = portversion(*cmdline) - rescue Puppet::ExecutionFailure - raise Puppet::Error.new(output) - end - - # Check: output format. - if output =~ /^\S+-([^-\s]+)\s+(\S)\s+(.*)/ - # $1 = installed version, $2 = comparison, $3 other data - # latest installed - installedversion = $1 - comparison = $2 - otherdata = $3 - - # Only return a new version number when it's clear that there is a new version - # all others return the current version so no unexpected 'upgrades' occur. - case comparison - when "=", ">" - Puppet.debug "portupgrade.latest() - Installed package is latest (%s)" % installedversion - return installedversion - when "<" - # "portpkg-1.7_5 < needs updating (port has 1.14)" - # "portpkg-1.7_5 < needs updating (port has 1.14) (=> 'newport/pkg') - if otherdata =~ /\(port has (\S+)\)/ - newversion = $1 - Puppet.debug "portupgrade.latest() - Installed version needs updating to (%s)" % newversion - return newversion - else - Puppet.debug "portupgrade.latest() - Unable to determine new version from (%s)" % otherdata - return installedversion - end - when "?", "!", "#" - Puppet.debug "portupgrade.latest() - Comparison Error reported from portversion (%s)" % output - return installedversion - else - Puppet.debug "portupgrade.latest() - Unknown code from portversion output (%s)" % output - return installedversion - end - - else - # error: output not parsed correctly, error out with nil. - # Seriously - this section should never be called in a perfect world. - # as verification that the port is installed has already happened in query. - if output =~ /^\*\* No matching package / - raise Puppet::ExecutionFailure, "Could not find package %s" % @resource[:name] - else - # Any other error (dump output to log) - raise Puppet::ExecutionFailure, "Unexpected output from portversion: %s" % output - end - - # Just in case we still are running, return nil - return nil - end - - # At this point normal operation has finished and we shouldn't have been called. - # Error out and let the admin deal with it. - raise Puppet::Error, "portversion.latest() - fatal error with portversion: %s" % output - return nil - - end - - ###### Query subcommand - return a hash of details if exists, or nil if it doesn't. - # Used to make sure the package is installed - - def query - Puppet.debug "portupgrade.query() - Called on %s" % @resource[:name] - - cmdline = ["-qO", @resource[:name]] - begin - output = portinfo(*cmdline) - rescue Puppet::ExecutionFailure - raise Puppet::Error.new(output) - end - - # Check: if output isn't in the right format, return nil - if output =~ /^(\S+)-([^-\s]+)/ - # Fill in the details - hash = Hash.new - hash[:portorigin] = self.name - hash[:portname] = $1 - hash[:ensure] = $2 - - # If more details are required, then we can do another pkg_info query here - # and parse out that output and add to the hash - - # return the hash to the caller - return hash - else - Puppet.debug "portupgrade.query() - package (%s) not installed" % @resource[:name] - return nil - end - - end # def query - - ####### Uninstall command - - def uninstall - Puppet.debug "portupgrade.uninstall() - called on %s" % @resource[:name] - # Get full package name from port origin to uninstall with - cmdline = ["-qO", @resource[:name]] - begin - output = portinfo(*cmdline) - rescue Puppet::ExecutionFailure - raise Puppet::Error.new(output) - end - - if output =~ /^(\S+)/ - # output matches, so uninstall it + begin + output = portversion(*cmdline) + rescue Puppet::ExecutionFailure + raise Puppet::Error.new(output) + end + + # Check: output format. + if output =~ /^\S+-([^-\s]+)\s+(\S)\s+(.*)/ + # $1 = installed version, $2 = comparison, $3 other data + # latest installed + installedversion = $1 + comparison = $2 + otherdata = $3 + + # Only return a new version number when it's clear that there is a new version + # all others return the current version so no unexpected 'upgrades' occur. + case comparison + when "=", ">" + Puppet.debug "portupgrade.latest() - Installed package is latest (%s)" % installedversion + return installedversion + when "<" + # "portpkg-1.7_5 < needs updating (port has 1.14)" + # "portpkg-1.7_5 < needs updating (port has 1.14) (=> 'newport/pkg') + if otherdata =~ /\(port has (\S+)\)/ + newversion = $1 + Puppet.debug "portupgrade.latest() - Installed version needs updating to (%s)" % newversion + return newversion + else + Puppet.debug "portupgrade.latest() - Unable to determine new version from (%s)" % otherdata + return installedversion + end + when "?", "!", "#" + Puppet.debug "portupgrade.latest() - Comparison Error reported from portversion (%s)" % output + return installedversion + else + Puppet.debug "portupgrade.latest() - Unknown code from portversion output (%s)" % output + return installedversion + end + + else + # error: output not parsed correctly, error out with nil. + # Seriously - this section should never be called in a perfect world. + # as verification that the port is installed has already happened in query. + if output =~ /^\*\* No matching package / + raise Puppet::ExecutionFailure, "Could not find package %s" % @resource[:name] + else + # Any other error (dump output to log) + raise Puppet::ExecutionFailure, "Unexpected output from portversion: %s" % output + end + + # Just in case we still are running, return nil + return nil + end + + # At this point normal operation has finished and we shouldn't have been called. + # Error out and let the admin deal with it. + raise Puppet::Error, "portversion.latest() - fatal error with portversion: %s" % output + return nil + + end + + ###### Query subcommand - return a hash of details if exists, or nil if it doesn't. + # Used to make sure the package is installed + + def query + Puppet.debug "portupgrade.query() - Called on %s" % @resource[:name] + + cmdline = ["-qO", @resource[:name]] + begin + output = portinfo(*cmdline) + rescue Puppet::ExecutionFailure + raise Puppet::Error.new(output) + end + + # Check: if output isn't in the right format, return nil + if output =~ /^(\S+)-([^-\s]+)/ + # Fill in the details + hash = Hash.new + hash[:portorigin] = self.name + hash[:portname] = $1 + hash[:ensure] = $2 + + # If more details are required, then we can do another pkg_info query here + # and parse out that output and add to the hash + + # return the hash to the caller + return hash + else + Puppet.debug "portupgrade.query() - package (%s) not installed" % @resource[:name] + return nil + end + + end # def query + + ####### Uninstall command + + def uninstall + Puppet.debug "portupgrade.uninstall() - called on %s" % @resource[:name] + # Get full package name from port origin to uninstall with + cmdline = ["-qO", @resource[:name]] + begin + output = portinfo(*cmdline) + rescue Puppet::ExecutionFailure + raise Puppet::Error.new(output) + end + + if output =~ /^(\S+)/ + # output matches, so uninstall it portuninstall $1 - end - - end - - ######## Update/upgrade command - - def update - Puppet.debug "portupgrade.update() - called on (%s)" % @resource[:name] - - cmdline = ["-qO", @resource[:name]] - begin - output = portinfo(*cmdline) - rescue Puppet::ExecutionFailure - raise Puppet::Error.new(output) - end - - if output =~ /^(\S+)/ - # output matches, so upgrade the software - cmdline = ["-M BATCH=yes", $1] - begin - output = portupgrade(*cmdline) - rescue Puppet::ExecutionFailure - raise Puppet::Error.new(output) - end - end - end + end + + end + + ######## Update/upgrade command + + def update + Puppet.debug "portupgrade.update() - called on (%s)" % @resource[:name] + + cmdline = ["-qO", @resource[:name]] + begin + output = portinfo(*cmdline) + rescue Puppet::ExecutionFailure + raise Puppet::Error.new(output) + end + + if output =~ /^(\S+)/ + # output matches, so upgrade the software + cmdline = ["-M BATCH=yes", $1] + begin + output = portupgrade(*cmdline) + rescue Puppet::ExecutionFailure + raise Puppet::Error.new(output) + end + end + end ## EOF end diff --git a/lib/puppet/provider/package/rpm.rb b/lib/puppet/provider/package/rpm.rb index a9da43fac..6d5adf2ef 100755 --- a/lib/puppet/provider/package/rpm.rb +++ b/lib/puppet/provider/package/rpm.rb @@ -14,12 +14,12 @@ Puppet::Type.type(:package).provide :rpm, :source => :rpm, :parent => Puppet::Pr if command('rpm') confine :true => begin - rpm('--version') - rescue Puppet::ExecutionFailure - false - else - true - end + rpm('--version') + rescue Puppet::ExecutionFailure + false + else + true + end end def self.instances diff --git a/lib/puppet/provider/package/sun.rb b/lib/puppet/provider/package/sun.rb index 4f8b311ab..f0a1c6ac5 100755 --- a/lib/puppet/provider/package/sun.rb +++ b/lib/puppet/provider/package/sun.rb @@ -6,8 +6,8 @@ Puppet::Type.type(:package).provide :sun, :parent => Puppet::Provider::Package d desc "Sun's packaging system. Requires that you specify the source for the packages you're managing." commands :pkginfo => "/usr/bin/pkginfo", - :pkgadd => "/usr/sbin/pkgadd", - :pkgrm => "/usr/sbin/pkgrm" + :pkgadd => "/usr/sbin/pkgadd", + :pkgrm => "/usr/sbin/pkgrm" confine :operatingsystem => :solaris diff --git a/lib/puppet/provider/package/up2date.rb b/lib/puppet/provider/package/up2date.rb index 284bbaf42..1de7c6ea5 100644 --- a/lib/puppet/provider/package/up2date.rb +++ b/lib/puppet/provider/package/up2date.rb @@ -5,7 +5,7 @@ Puppet::Type.type(:package).provide :up2date, :parent => :rpm, :source => :rpm d commands :up2date => "/usr/sbin/up2date-nox" defaultfor :operatingsystem => [:redhat, :oel, :ovm], - :lsbdistrelease => ["2.1", "3", "4"] + :lsbdistrelease => ["2.1", "3", "4"] confine :operatingsystem => [:redhat, :oel, :ovm] diff --git a/lib/puppet/provider/package/urpmi.rb b/lib/puppet/provider/package/urpmi.rb index a79e96227..05eed42d7 100644 --- a/lib/puppet/provider/package/urpmi.rb +++ b/lib/puppet/provider/package/urpmi.rb @@ -4,12 +4,12 @@ Puppet::Type.type(:package).provide :urpmi, :parent => :rpm, :source => :rpm do if command('rpm') confine :true => begin - rpm('-ql', 'rpm') - rescue Puppet::ExecutionFailure - false - else - true - end + rpm('-ql', 'rpm') + rescue Puppet::ExecutionFailure + false + else + true + end end defaultfor :operatingsystem => [:mandriva, :mandrake] diff --git a/lib/puppet/provider/package/yum.rb b/lib/puppet/provider/package/yum.rb index 6fdff6997..32ab2c124 100755 --- a/lib/puppet/provider/package/yum.rb +++ b/lib/puppet/provider/package/yum.rb @@ -11,12 +11,12 @@ Puppet::Type.type(:package).provide :yum, :parent => :rpm, :source => :rpm do if command('rpm') confine :true => begin - rpm('--version') - rescue Puppet::ExecutionFailure - false - else - true - end + rpm('--version') + rescue Puppet::ExecutionFailure + false + else + true + end end defaultfor :operatingsystem => [:fedora, :centos, :redhat] @@ -28,26 +28,26 @@ Puppet::Type.type(:package).provide :yum, :parent => :rpm, :source => :rpm do super return unless packages.detect { |name, package| package.should(:ensure) == :latest } - # collect our 'latest' info - updates = {} - python(YUMHELPER).each_line do |l| - l.chomp! - next if l.empty? - if l[0,4] == "_pkg" - hash = nevra_to_hash(l[5..-1]) - [hash[:name], "#{hash[:name]}.#{hash[:arch]}"].each do |n| - updates[n] ||= [] - updates[n] << hash - end - end - end - - # Add our 'latest' info to the providers. - packages.each do |name, package| - if info = updates[package[:name]] - package.provider.latest_info = info[0] - end - end + # collect our 'latest' info + updates = {} + python(YUMHELPER).each_line do |l| + l.chomp! + next if l.empty? + if l[0,4] == "_pkg" + hash = nevra_to_hash(l[5..-1]) + [hash[:name], "#{hash[:name]}.#{hash[:arch]}"].each do |n| + updates[n] ||= [] + updates[n] << hash + end + end + end + + # Add our 'latest' info to the providers. + packages.each do |name, package| + if info = updates[package[:name]] + package.provider.latest_info = info[0] + end + end end def install @@ -104,5 +104,5 @@ Puppet::Type.type(:package).provide :yum, :parent => :rpm, :source => :rpm do def purge yum "-y", :erase, @resource[:name] end - end +end diff --git a/lib/puppet/provider/parsedfile.rb b/lib/puppet/provider/parsedfile.rb index 40e172785..47e4fcd69 100755 --- a/lib/puppet/provider/parsedfile.rb +++ b/lib/puppet/provider/parsedfile.rb @@ -36,7 +36,7 @@ class Puppet::Provider::ParsedFile < Puppet::Provider end def self.filetype - unless defined? @filetype + unless defined?(@filetype) @filetype = Puppet::Util::FileType.filetype(:flat) end return @filetype @@ -151,7 +151,7 @@ class Puppet::Provider::ParsedFile < Puppet::Provider if @property_hash[attr] or self.class.valid_attr?(self.class.name, attr) @property_hash[attr] || :absent else - if defined? @resource + if defined?(@resource) @resource.should(attr) else nil @@ -385,7 +385,7 @@ class Puppet::Provider::ParsedFile < Puppet::Provider # Mark both the resource and provider target as modified. def mark_target_modified - if defined? @resource and restarget = @resource.should(:target) and restarget != @property_hash[:target] + if defined?(@resource) and restarget = @resource.should(:target) and restarget != @property_hash[:target] self.class.modified(restarget) end if @property_hash[:target] != :absent and @property_hash[:target] diff --git a/lib/puppet/provider/selboolean/getsetsebool.rb b/lib/puppet/provider/selboolean/getsetsebool.rb index 4614c6c38..c993c3748 100644 --- a/lib/puppet/provider/selboolean/getsetsebool.rb +++ b/lib/puppet/provider/selboolean/getsetsebool.rb @@ -34,14 +34,14 @@ Puppet::Type.type(:selboolean).provide(:getsetsebool) do # 'setsebool("...")' construct from working. def execoutput (cmd) - output = '' - begin - execpipe(cmd) do |out| - output = out.readlines.join('').chomp! + output = '' + begin + execpipe(cmd) do |out| + output = out.readlines.join('').chomp! + end + rescue Puppet::ExecutionFailure + raise Puppet::ExecutionFailure, output.split("\n")[0] end - rescue Puppet::ExecutionFailure - raise Puppet::ExecutionFailure, output.split("\n")[0] - end - return output + return output end end diff --git a/lib/puppet/provider/selmodule/semodule.rb b/lib/puppet/provider/selmodule/semodule.rb index 2b65c0d4a..c75acfa5e 100644 --- a/lib/puppet/provider/selmodule/semodule.rb +++ b/lib/puppet/provider/selmodule/semodule.rb @@ -25,7 +25,7 @@ Puppet::Type.type(:selmodule).provide(:semodule) do execpipe("#{command(:semodule)} --list") do |out| out.each do |line| if line =~ /#{@resource[:name]}\b/ - return :true + return :true end end end @@ -57,15 +57,15 @@ Puppet::Type.type(:selmodule).provide(:semodule) do # Helper functions def execoutput (cmd) - output = '' - begin - execpipe(cmd) do |out| - output = out.readlines.join('').chomp! + output = '' + begin + execpipe(cmd) do |out| + output = out.readlines.join('').chomp! + end + rescue Puppet::ExecutionFailure + raise Puppet::ExecutionFailure, output.split("\n")[0] end - rescue Puppet::ExecutionFailure - raise Puppet::ExecutionFailure, output.split("\n")[0] - end - return output + return output end def selmod_name_to_filename diff --git a/lib/puppet/provider/service/base.rb b/lib/puppet/provider/service/base.rb index 183bf33e3..aa11f26fc 100755 --- a/lib/puppet/provider/service/base.rb +++ b/lib/puppet/provider/service/base.rb @@ -49,7 +49,7 @@ Puppet::Type.type(:service).provide :base do end end - # There is no default command, which causes other methods to be used + # There is no default command, which causes other methods to be used def restartcmd end @@ -77,10 +77,10 @@ Puppet::Type.type(:service).provide :base do end end - # There is no default command, which causes other methods to be used + # There is no default command, which causes other methods to be used def statuscmd end - + # Run the 'start' parameter command, or the specified 'startcmd'. def start ucommand(:start) @@ -114,14 +114,13 @@ Puppet::Type.type(:service).provide :base do begin output = kill pid rescue Puppet::ExecutionFailure => detail - @resource.fail "Could not kill %s, PID %s: %s" % - [self.name, pid, output] + @resource.fail "Could not kill %s, PID %s: %s" % [self.name, pid, output] end return true end end - - # There is no default command, which causes other methods to be used + + # There is no default command, which causes other methods to be used def stopcmd end diff --git a/lib/puppet/provider/service/daemontools.rb b/lib/puppet/provider/service/daemontools.rb index 3749f9c2c..cb3ac51a1 100644 --- a/lib/puppet/provider/service/daemontools.rb +++ b/lib/puppet/provider/service/daemontools.rb @@ -19,10 +19,10 @@ Puppet::Type.type(:service).provide :daemontools, :parent => :base do or this can be overriden in the service resource parameters:: - service { - \"myservice\": - provider => \"daemontools\", path => \"/path/to/daemons\"; - } + service { + \"myservice\": + provider => \"daemontools\", path => \"/path/to/daemons\"; + } This provider supports out of the box: diff --git a/lib/puppet/provider/service/debian.rb b/lib/puppet/provider/service/debian.rb index 51fb7a22b..34e2cf8b1 100755 --- a/lib/puppet/provider/service/debian.rb +++ b/lib/puppet/provider/service/debian.rb @@ -13,7 +13,7 @@ Puppet::Type.type(:service).provide :debian, :parent => :init do # http://projects.reductivelabs.com/issues/2538 # is resolved. commands :invoke_rc => "/usr/sbin/invoke-rc.d" - + defaultfor :operatingsystem => [:debian, :ubuntu] def self.defpath @@ -30,7 +30,7 @@ Puppet::Type.type(:service).provide :debian, :parent => :init do # TODO: Replace system() call when Puppet::Util.execute gives us a way # to determine exit status. http://projects.reductivelabs.com/issues/2538 system("/usr/sbin/invoke-rc.d", "--quiet", "--query", @resource[:name], "start") - + # 104 is the exit status when you query start an enabled service. # 106 is the exit status when the policy layer supplies a fallback action # See x-man-page://invoke-rc.d diff --git a/lib/puppet/provider/service/freebsd.rb b/lib/puppet/provider/service/freebsd.rb index 27f3715ee..32f8abb7c 100644 --- a/lib/puppet/provider/service/freebsd.rb +++ b/lib/puppet/provider/service/freebsd.rb @@ -1,139 +1,139 @@ Puppet::Type.type(:service).provide :freebsd, :parent => :init do - desc "Provider for FreeBSD. Makes use of rcvar argument of init scripts and parses/edits rc files." - - confine :operatingsystem => [:freebsd] - defaultfor :operatingsystem => [:freebsd] - - @@rcconf = '/etc/rc.conf' - @@rcconf_local = '/etc/rc.conf.local' - @@rcconf_dir = '/etc/rc.conf.d' - - def self.defpath - superclass.defpath - end - - # Executing an init script with the 'rcvar' argument returns - # the service name, rcvar name and whether it's enabled/disabled - def rcvar - rcvar = execute([self.initscript, :rcvar], :failonfail => true, :squelch => false) - rcvar = rcvar.split("\n") - return rcvar - end - - # Extract service name - def service_name - name = self.rcvar[0] - self.error("No service name found in rcvar") if name.nil? - name = name.gsub!(/# (.*)/, '\1') - self.error("Service name is empty") if name.nil? - self.debug("Service name is #{name}") - return name - end - - # Extract rcvar name - def rcvar_name - name = self.rcvar[1] - self.error("No rcvar name found in rcvar") if name.nil? - name = name.gsub!(/(.*)_enable=(.*)/, '\1') - self.error("rcvar name is empty") if name.nil? - self.debug("rcvar name is #{name}") - return name - end - - # Extract rcvar value - def rcvar_value - value = self.rcvar[1] - self.error("No rcvar value found in rcvar") if value.nil? - value = value.gsub!(/(.*)_enable=\"?(.*)\"?/, '\2') - self.error("rcvar value is empty") if value.nil? - self.debug("rcvar value is #{value}") - return value - end - - # Edit rc files and set the service to yes/no - def rc_edit(yesno) - service = self.service_name - rcvar = self.rcvar_name - self.debug("Editing rc files: setting #{rcvar} to #{yesno} for #{service}") - if not self.rc_replace(service, rcvar, yesno) - self.rc_add(service, rcvar, yesno) + desc "Provider for FreeBSD. Makes use of rcvar argument of init scripts and parses/edits rc files." + + confine :operatingsystem => [:freebsd] + defaultfor :operatingsystem => [:freebsd] + + @@rcconf = '/etc/rc.conf' + @@rcconf_local = '/etc/rc.conf.local' + @@rcconf_dir = '/etc/rc.conf.d' + + def self.defpath + superclass.defpath + end + + # Executing an init script with the 'rcvar' argument returns + # the service name, rcvar name and whether it's enabled/disabled + def rcvar + rcvar = execute([self.initscript, :rcvar], :failonfail => true, :squelch => false) + rcvar = rcvar.split("\n") + return rcvar + end + + # Extract service name + def service_name + name = self.rcvar[0] + self.error("No service name found in rcvar") if name.nil? + name = name.gsub!(/# (.*)/, '\1') + self.error("Service name is empty") if name.nil? + self.debug("Service name is #{name}") + return name + end + + # Extract rcvar name + def rcvar_name + name = self.rcvar[1] + self.error("No rcvar name found in rcvar") if name.nil? + name = name.gsub!(/(.*)_enable=(.*)/, '\1') + self.error("rcvar name is empty") if name.nil? + self.debug("rcvar name is #{name}") + return name + end + + # Extract rcvar value + def rcvar_value + value = self.rcvar[1] + self.error("No rcvar value found in rcvar") if value.nil? + value = value.gsub!(/(.*)_enable=\"?(.*)\"?/, '\2') + self.error("rcvar value is empty") if value.nil? + self.debug("rcvar value is #{value}") + return value + end + + # Edit rc files and set the service to yes/no + def rc_edit(yesno) + service = self.service_name + rcvar = self.rcvar_name + self.debug("Editing rc files: setting #{rcvar} to #{yesno} for #{service}") + if not self.rc_replace(service, rcvar, yesno) + self.rc_add(service, rcvar, yesno) + end end - end - - # Try to find an existing setting in the rc files - # and replace the value - def rc_replace(service, rcvar, yesno) - success = false - # Replace in all files, not just in the first found with a match - [@@rcconf, @@rcconf_local, @@rcconf_dir + "/#{service}"].each do |filename| - if File.exists?(filename) - s = File.read(filename) - if s.gsub!(/(#{rcvar}_enable)=\"?(YES|NO)\"?/, "\\1=\"#{yesno}\"") - File.open(filename, File::WRONLY) { |f| f << s } - self.debug("Replaced in #{filename}") - success = true + + # Try to find an existing setting in the rc files + # and replace the value + def rc_replace(service, rcvar, yesno) + success = false + # Replace in all files, not just in the first found with a match + [@@rcconf, @@rcconf_local, @@rcconf_dir + "/#{service}"].each do |filename| + if File.exists?(filename) + s = File.read(filename) + if s.gsub!(/(#{rcvar}_enable)=\"?(YES|NO)\"?/, "\\1=\"#{yesno}\"") + File.open(filename, File::WRONLY) { |f| f << s } + self.debug("Replaced in #{filename}") + success = true + end + end + end + return success + end + + # Add a new setting to the rc files + def rc_add(service, rcvar, yesno) + append = "\n\# Added by Puppet\n#{rcvar}_enable=\"#{yesno}\"" + # First, try the one-file-per-service style + if File.exists?(@@rcconf_dir) + File.open(@@rcconf_dir + "/#{service}", File::WRONLY | File::APPEND | File::CREAT, 0644) { + |f| f << append + self.debug("Appended to #{f.path}") + } + else + # Else, check the local rc file first, but don't create it + if File.exists?(@@rcconf_local) + File.open(@@rcconf_local, File::WRONLY | File::APPEND) { + |f| f << append + self.debug("Appended to #{f.path}") + } + else + # At last use the standard rc.conf file + File.open(@@rcconf, File::WRONLY | File::APPEND | File::CREAT, 0644) { + |f| f << append + self.debug("Appended to #{f.path}") + } + end + end + end + + def enabled? + if /YES$/ =~ self.rcvar_value then + self.debug("Is enabled") + return :true end - end + self.debug("Is disabled") + return :false end - return success - end - - # Add a new setting to the rc files - def rc_add(service, rcvar, yesno) - append = "\n\# Added by Puppet\n#{rcvar}_enable=\"#{yesno}\"" - # First, try the one-file-per-service style - if File.exists?(@@rcconf_dir) - File.open(@@rcconf_dir + "/#{service}", File::WRONLY | File::APPEND | File::CREAT, 0644) { - |f| f << append - self.debug("Appended to #{f.path}") - } - else - # Else, check the local rc file first, but don't create it - if File.exists?(@@rcconf_local) - File.open(@@rcconf_local, File::WRONLY | File::APPEND) { - |f| f << append - self.debug("Appended to #{f.path}") - } - else - # At last use the standard rc.conf file - File.open(@@rcconf, File::WRONLY | File::APPEND | File::CREAT, 0644) { - |f| f << append - self.debug("Appended to #{f.path}") - } - end + + def enable + self.debug("Enabling") + self.rc_edit("YES") + end + + def disable + self.debug("Disabling") + self.rc_edit("NO") + end + + def startcmd + [self.initscript, :onestart] + end + + def stopcmd + [self.initscript, :onestop] end - end - def enabled? - if /YES$/ =~ self.rcvar_value then - self.debug("Is enabled") - return :true + def statuscmd + [self.initscript, :onestatus] end - self.debug("Is disabled") - return :false - end - - def enable - self.debug("Enabling") - self.rc_edit("YES") - end - - def disable - self.debug("Disabling") - self.rc_edit("NO") - end - - def startcmd - [self.initscript, :onestart] - end - - def stopcmd - [self.initscript, :onestop] - end - - def statuscmd - [self.initscript, :onestatus] - end end diff --git a/lib/puppet/provider/service/gentoo.rb b/lib/puppet/provider/service/gentoo.rb index ed643119d..0327eb297 100644 --- a/lib/puppet/provider/service/gentoo.rb +++ b/lib/puppet/provider/service/gentoo.rb @@ -21,8 +21,7 @@ Puppet::Type.type(:service).provide :gentoo, :parent => :init do begin output = update :del, @resource[:name], :default rescue Puppet::ExecutionFailure - raise Puppet::Error, "Could not disable %s: %s" % - [self.name, output] + raise Puppet::Error, "Could not disable %s: %s" % [self.name, output] end end @@ -49,8 +48,7 @@ Puppet::Type.type(:service).provide :gentoo, :parent => :init do begin output = update :add, @resource[:name], :default rescue Puppet::ExecutionFailure - raise Puppet::Error, "Could not enable %s: %s" % - [self.name, output] + raise Puppet::Error, "Could not enable %s: %s" % [self.name, output] end end end diff --git a/lib/puppet/provider/service/init.rb b/lib/puppet/provider/service/init.rb index 4c73845a3..5804732ed 100755 --- a/lib/puppet/provider/service/init.rb +++ b/lib/puppet/provider/service/init.rb @@ -49,7 +49,7 @@ Puppet::Type.type(:service).provide :init, :parent => :base do Dir.entries(path).each do |name| fullpath = File.join(path, name) next if name =~ /^\./ - next if exclude.include? name + next if exclude.include? name next if not FileTest.executable?(fullpath) instances << new(:name => name, :path => path, :hasstatus => true) end @@ -63,8 +63,7 @@ Puppet::Type.type(:service).provide :init, :parent => :base do when true, "true"; @parameters[:hasstatus] = true when false, "false"; @parameters[:hasstatus] = false else - raise Puppet::Error, "Invalid 'hasstatus' value %s" % - value.inspect + raise Puppet::Error, "Invalid 'hasstatus' value %s" % value.inspect end end diff --git a/lib/puppet/provider/service/launchd.rb b/lib/puppet/provider/service/launchd.rb index 770a7b154..c65e1cc1a 100644 --- a/lib/puppet/provider/service/launchd.rb +++ b/lib/puppet/provider/service/launchd.rb @@ -8,28 +8,28 @@ Puppet::Type.type(:service).provide :launchd, :parent => :base do other platforms. See: - * http://developer.apple.com/macosx/launchd.html - * http://launchd.macosforge.org/ + * http://developer.apple.com/macosx/launchd.html + * http://launchd.macosforge.org/ This provider reads plists out of the following directories: - * /System/Library/LaunchDaemons - * /System/Library/LaunchAgents - * /Library/LaunchDaemons - * /Library/LaunchAgents + * /System/Library/LaunchDaemons + * /System/Library/LaunchAgents + * /Library/LaunchDaemons + * /Library/LaunchAgents and builds up a list of services based upon each plists \"Label\" entry. This provider supports: - * ensure => running/stopped, - * enable => true/false - * status - * restart + * ensure => running/stopped, + * enable => true/false + * status + * restart Here is how the Puppet states correspond to launchd states: - * stopped => job unloaded - * started => job loaded - * enabled => 'Disable' removed from job plist file - * disabled => 'Disable' added to job plist file + * stopped => job unloaded + * started => job loaded + * enabled => 'Disable' removed from job plist file + * disabled => 'Disable' added to job plist file Note that this allows you to do something launchctl can't do, which is to be in a state of \"stopped/enabled\ or \"running/disabled\". @@ -45,9 +45,9 @@ Puppet::Type.type(:service).provide :launchd, :parent => :base do has_feature :enableable Launchd_Paths = ["/Library/LaunchAgents", - "/Library/LaunchDaemons", - "/System/Library/LaunchAgents", - "/System/Library/LaunchDaemons",] + "/Library/LaunchDaemons", + "/System/Library/LaunchAgents", + "/System/Library/LaunchDaemons",] Launchd_Overrides = "/var/db/launchd.db/com.apple.launchd/overrides.plist" @@ -89,10 +89,10 @@ Puppet::Type.type(:service).provide :launchd, :parent => :base do new(:name => job, :provider => :launchd, :path => jobs[job]) end end - - + + def self.get_macosx_version_major - if defined? @macosx_version_major + if defined?(@macosx_version_major) return @macosx_version_major end begin @@ -103,7 +103,7 @@ Puppet::Type.type(:service).provide :launchd, :parent => :base do product_version_major = Facter.value(:macosx_productversion_major) else # TODO: remove this code chunk once we require Facter 1.5.5 or higher. - Puppet.warning("DEPRECATION WARNING: Future versions of the launchd provider will require Facter 1.5.5 or newer.") + Puppet.warning("DEPRECATION WARNING: Future versions of the launchd provider will require Facter 1.5.5 or newer.") product_version = Facter.value(:macosx_productversion) if product_version.nil? fail("Could not determine OS X version from Facter") @@ -211,15 +211,15 @@ Puppet::Type.type(:service).provide :launchd, :parent => :base do def enabled? job_plist_disabled = nil overrides_disabled = nil - + job_path, job_plist = plist_from_label(resource[:name]) if job_plist.has_key?("Disabled") job_plist_disabled = job_plist["Disabled"] end - + if self.class.get_macosx_version_major == "10.6": overrides = Plist::parse_xml(Launchd_Overrides) - + unless overrides.nil? if overrides.has_key?(resource[:name]) if overrides[resource[:name]].has_key?("Disabled") @@ -228,7 +228,7 @@ Puppet::Type.type(:service).provide :launchd, :parent => :base do end end end - + if overrides_disabled.nil? if job_plist_disabled.nil? or job_plist_disabled == false return :true diff --git a/lib/puppet/provider/service/redhat.rb b/lib/puppet/provider/service/redhat.rb index 27bdbb820..f3d5caee0 100755 --- a/lib/puppet/provider/service/redhat.rb +++ b/lib/puppet/provider/service/redhat.rb @@ -25,8 +25,7 @@ Puppet::Type.type(:service).provide :redhat, :parent => :init, :source => :init begin output = chkconfig(@resource[:name], :off) rescue Puppet::ExecutionFailure - raise Puppet::Error, "Could not disable %s: %s" % - [self.name, output] + raise Puppet::Error, "Could not disable %s: %s" % [self.name, output] end end @@ -52,8 +51,7 @@ Puppet::Type.type(:service).provide :redhat, :parent => :init, :source => :init begin output = chkconfig(@resource[:name], :on) rescue Puppet::ExecutionFailure => detail - raise Puppet::Error, "Could not enable %s: %s" % - [self.name, detail] + raise Puppet::Error, "Could not enable %s: %s" % [self.name, detail] end end diff --git a/lib/puppet/provider/service/runit.rb b/lib/puppet/provider/service/runit.rb index b8b444e34..265111469 100644 --- a/lib/puppet/provider/service/runit.rb +++ b/lib/puppet/provider/service/runit.rb @@ -4,31 +4,31 @@ Puppet::Type.type(:service).provide :runit, :parent => :daemontools do desc "Runit service management. - This provider manages daemons running supervised by Runit. - It tries to detect the service directory, with by order of preference: + This provider manages daemons running supervised by Runit. + It tries to detect the service directory, with by order of preference: - * /service - * /var/service - * /etc/service + * /service + * /var/service + * /etc/service - The daemon directory should be placed in a directory that can be - by default in: + The daemon directory should be placed in a directory that can be + by default in: - * /etc/sv + * /etc/sv - or this can be overriden in the service resource parameters:: + or this can be overriden in the service resource parameters:: - service { - \"myservice\": - provider => \"runit\", path => \"/path/to/daemons\"; - } + service { + \"myservice\": + provider => \"runit\", path => \"/path/to/daemons\"; + } - This provider supports out of the box: + This provider supports out of the box: - * start/stop - * enable/disable - * restart - * status + * start/stop + * enable/disable + * restart + * status " diff --git a/lib/puppet/provider/service/smf.rb b/lib/puppet/provider/service/smf.rb index 957a1ae82..685889386 100755 --- a/lib/puppet/provider/service/smf.rb +++ b/lib/puppet/provider/service/smf.rb @@ -90,11 +90,10 @@ Puppet::Type.type(:service).provide :smf, :parent => :base do return :maintenance when "legacy_run" raise Puppet::Error, - "Cannot manage legacy services through SMF" + "Cannot manage legacy services through SMF" else raise Puppet::Error, - "Unmanageable state '%s' on service %s" % - [state, self.name] + "Unmanageable state '%s' on service %s" % [state, self.name] end end diff --git a/lib/puppet/provider/service/src.rb b/lib/puppet/provider/service/src.rb index eadce8e96..fe178ab4f 100755 --- a/lib/puppet/provider/service/src.rb +++ b/lib/puppet/provider/service/src.rb @@ -1,7 +1,7 @@ # AIX System Resource controller (SRC) Puppet::Type.type(:service).provide :src, :parent => :base do - desc "Support for AIX's System Resource controller. + desc "Support for AIX's System Resource controller. Services are started/stopped based on the stopsrc and startsrc commands, and some services can be refreshed with refresh command. @@ -31,7 +31,7 @@ Puppet::Type.type(:service).provide :src, :parent => :base do end def restart - begin + begin execute([command(:lssrc), "-Ss", @resource[:name]]).each do |line| args = line.split(":") @@ -65,14 +65,14 @@ Puppet::Type.type(:service).provide :src, :parent => :base do end def status - begin + begin execute([command(:lssrc), "-s", @resource[:name]]).each do |line| args = line.split # This is the header line next unless args[0] == @resource[:name] - # PID is the 3rd field, but inoperative subsystems + # PID is the 3rd field, but inoperative subsystems # skip this so split doesn't work right state = case args[-1] when "active" then :running diff --git a/lib/puppet/provider/ssh_authorized_key/parsed.rb b/lib/puppet/provider/ssh_authorized_key/parsed.rb index cc4e27954..a39f59c54 100644 --- a/lib/puppet/provider/ssh_authorized_key/parsed.rb +++ b/lib/puppet/provider/ssh_authorized_key/parsed.rb @@ -1,8 +1,11 @@ require 'puppet/provider/parsedfile' -Puppet::Type.type(:ssh_authorized_key).provide(:parsed, + + Puppet::Type.type(:ssh_authorized_key).provide( + :parsed, :parent => Puppet::Provider::ParsedFile, :filetype => :flat, + :default_target => '' ) do desc "Parse and generate authorized_keys files for SSH." diff --git a/lib/puppet/provider/sshkey/parsed.rb b/lib/puppet/provider/sshkey/parsed.rb index e84e3e5c5..4fefc4067 100755 --- a/lib/puppet/provider/sshkey/parsed.rb +++ b/lib/puppet/provider/sshkey/parsed.rb @@ -7,9 +7,12 @@ else known = "/etc/ssh/ssh_known_hosts" end -Puppet::Type.type(:sshkey).provide(:parsed, + + Puppet::Type.type(:sshkey).provide( + :parsed, :parent => Puppet::Provider::ParsedFile, :default_target => known, + :filetype => :flat ) do desc "Parse and generate host-wide known hosts files for SSH." diff --git a/lib/puppet/provider/user/user_role_add.rb b/lib/puppet/provider/user/user_role_add.rb index aa01f8e52..961cb5e73 100644 --- a/lib/puppet/provider/user/user_role_add.rb +++ b/lib/puppet/provider/user/user_role_add.rb @@ -67,8 +67,7 @@ Puppet::Type.type(:user).provide :user_role_add, :parent => :useradd, :source => begin execute(cmd) rescue Puppet::ExecutionFailure => detail - raise Puppet::Error, "Could not %s %s %s: %s" % - [msg, @resource.class.name, @resource.name, detail] + raise Puppet::Error, "Could not %s %s %s: %s" % [msg, @resource.class.name, @resource.name, detail] end end |
