diff options
| author | Luke Kanies <luke@reductivelabs.com> | 2009-12-21 16:23:44 -0800 |
|---|---|---|
| committer | Luke Kanies <luke@reductivelabs.com> | 2009-12-21 16:23:44 -0800 |
| commit | 740fd6b301af89ab3aad89bca183ad1fcdc24ac4 (patch) | |
| tree | f34617a229509c373d28d67abb453e7ae2136c39 /lib/puppet/provider | |
| parent | 8971d8beae2c409f9052f27c3f80ad3bdfff4de2 (diff) | |
| parent | 4a06379f8770c164e42bcc410d874076c6e95f24 (diff) | |
Merge branch '0.25.x'
Conflicts:
lib/puppet/agent.rb
lib/puppet/application/puppetd.rb
lib/puppet/parser/ast/leaf.rb
lib/puppet/util/rdoc/parser.rb
Diffstat (limited to 'lib/puppet/provider')
| -rwxr-xr-x | lib/puppet/provider/package/dpkg.rb | 2 | ||||
| -rw-r--r-- | lib/puppet/provider/package/portage.rb | 50 | ||||
| -rw-r--r-- | lib/puppet/provider/package/rug.rb | 2 | ||||
| -rw-r--r-- | lib/puppet/provider/package/up2date.rb | 2 | ||||
| -rw-r--r-- | lib/puppet/provider/package/urpmi.rb | 2 | ||||
| -rw-r--r-- | lib/puppet/provider/service/daemontools.rb | 2 | ||||
| -rwxr-xr-x | lib/puppet/provider/service/debian.rb | 2 | ||||
| -rw-r--r-- | lib/puppet/provider/service/runit.rb | 2 | ||||
| -rw-r--r-- | lib/puppet/provider/ssh_authorized_key/parsed.rb | 3 | ||||
| -rw-r--r-- | lib/puppet/provider/zone/solaris.rb | 17 |
10 files changed, 45 insertions, 39 deletions
diff --git a/lib/puppet/provider/package/dpkg.rb b/lib/puppet/provider/package/dpkg.rb index a4c398282..d6ec56ad4 100755 --- a/lib/puppet/provider/package/dpkg.rb +++ b/lib/puppet/provider/package/dpkg.rb @@ -83,7 +83,7 @@ Puppet::Type.type(:package).provide :dpkg, :parent => Puppet::Provider::Package def latest output = dpkg_deb "--show", @resource[:source] matches = /^(\S+)\t(\S+)$/.match(output).captures - unless matches[0].match(@resource[:name]) + unless matches[0].match( Regexp.escape(@resource[:name]) ) warning "source doesn't contain named package, but %s" % matches[0] end matches[1] diff --git a/lib/puppet/provider/package/portage.rb b/lib/puppet/provider/package/portage.rb index e92058040..bd03aad2e 100644 --- a/lib/puppet/provider/package/portage.rb +++ b/lib/puppet/provider/package/portage.rb @@ -1,7 +1,6 @@ require 'puppet/provider/package' Puppet::Type.type(:package).provide :portage, :parent => Puppet::Provider::Package do - include Puppet::Util::Execution desc "Provides packaging support for Gentoo's portage system." has_feature :versionable @@ -13,33 +12,32 @@ Puppet::Type.type(:package).provide :portage, :parent => Puppet::Provider::Packa defaultfor :operatingsystem => :gentoo def self.instances - result_format = /(\S+) (\S+) \[(?:([0-9.a-zA-Z]+(?:_(?:alpha|beta|pre|rc|p)[0-9]*)*(?:-r[0-9]*)?)(?:\([^\)]+\))?(?:\[([^\]]+)\])?[ ]*)*\] \[(?:(?:\{M\})?(?:\([~*]+\))?([0-9.a-zA-Z]+(?:_(?:alpha|beta|pre|rc|p)[0-9]*)*(?:-r[0-9]*)?)(?:\(([^\)]+)\))?(?:![mf])*(?:\[([^\]]+)\])?)?\] ([\S]*) (.*)/ - result_fields = [:category, :name, :ensure, :ensure_overlay, :version_available, :slot, :overlay, :vendor, :description] + result_format = /(\S+) (\S+) \[(\S+)\] \[(\S+)\] (\S+) (.*)/ + result_fields = [:category, :name, :ensure, :version_available, :vendor, :description] - version_format = "<version>{!last} {}" - search_format = "<category> <name> [<installedversions:SPLITVERSIONS>] [<bestversion:SPLITVERSIONS>] <homepage> <description>" + version_format = "{last}<version>{}" + search_format = "<category> <name> [<installedversions:LASTVERSION>] [<bestversion:LASTVERSION>] <homepage> <description>\n" begin if !FileUtils.uptodate?("/var/cache/eix", %w(/usr/bin/eix /usr/portage/metadata/timestamp)) update_eix end + search_output = nil - withenv :SPLITVERSIONS => version_format do - search_output = eix "--nocolor", "--pure-packages", "--installed", "--format", search_format + Puppet::Util::Execution.withenv :LASTVERSION => version_format do + search_output = eix "--nocolor", "--pure-packages", "--stable", "--installed", "--format", search_format end packages = [] search_output.each do |search_result| - match = result_format.match( search_result ) + match = result_format.match(search_result) if match package = {} - result_fields.zip(match.captures) { |field, value| + result_fields.zip(match.captures) do |field, value| package[field] = value unless !value or value.empty? - } + end package[:provider] = :portage - package[:ensure] = package[:ensure].split.last - packages << new(package) end end @@ -74,36 +72,35 @@ Puppet::Type.type(:package).provide :portage, :parent => Puppet::Provider::Packa end def query - result_format = /(\S+) (\S+) \[(?:([0-9.a-zA-Z]+(?:_(?:alpha|beta|pre|rc|p)[0-9]*)*(?:-r[0-9]*)?)(?:\([^\)]+\))?(?:\[([^\]]+)\])?[ ]*)*\] \[(?:(?:\{M\})?(?:\([~*]+\))?([0-9.a-zA-Z]+(?:_(?:alpha|beta|pre|rc|p)[0-9]*)*(?:-r[0-9]*)?)(?:\(([^\)]+)\))?(?:![mf])*(?:\[([^\]]+)\])?)?\] ([\S]*) (.*)/ - result_fields = [:category, :name, :ensure, :ensure_overlay, :version_available, :slot, :overlay, :vendor, :description] + result_format = /(\S+) (\S+) \[(\S*)\] \[(\S+)\] (\S+) (.*)/ + result_fields = [:category, :name, :ensure, :version_available, :vendor, :description] + + version_format = "{last}<version>{}" + search_format = "<category> <name> [<installedversions:LASTVERSION>] [<bestversion:LASTVERSION>] <homepage> <description>\n" search_field = package_name.count('/') > 0 ? "--category-name" : "--name" search_value = package_name - version_format = "<version>{!last} {}" - search_format = "<category> <name> [<installedversions:FORMAT_PVERSION>] [<bestversion:FORMAT_PVERSION>] <homepage> <description>" - begin if !FileUtils.uptodate?("/var/cache/eix", %w(/usr/bin/eix /usr/portage/metadata/timestamp)) update_eix end + search_output = nil - withenv :SPLITVERSIONS => version_format do - search_output = eix "--nocolor", "--pure-packages", "--format", search_format, "--exact", search_field, search_value + Puppet::Util::Execution.withenv :LASTVERSION => version_format do + search_output = eix "--nocolor", "--pure-packages", "--stable", "--format", search_format, "--exact", search_field, search_value end packages = [] search_output.each do |search_result| - match = result_format.match( search_result ) + match = result_format.match(search_result) - if( match ) + if match package = {} - result_fields.zip( match.captures ) { |field, value| package[field] = value unless !value or value.empty? } - if package[:ensure] - package[:ensure] = package[:ensure].split.last - else - package[:ensure] = :absent + result_fields.zip(match.captures) do |field, value| + package[field] = value unless !value or value.empty? end + package[:ensure] = package[:ensure] ? package[:ensure] : :absent packages << package end end @@ -126,4 +123,3 @@ Puppet::Type.type(:package).provide :portage, :parent => Puppet::Provider::Packa return self.query[:version_available] end end - diff --git a/lib/puppet/provider/package/rug.rb b/lib/puppet/provider/package/rug.rb index b68ec30c5..ca27cbbd3 100644 --- a/lib/puppet/provider/package/rug.rb +++ b/lib/puppet/provider/package/rug.rb @@ -36,7 +36,7 @@ Puppet::Type.type(:package).provide :rug, :parent => :rpm do #rug can only get a list of *all* available packages? output = rug "list-updates" - if output =~ /#{@resource[:name]}\s*\|\s*([0-9\.\-]+)/ + if output =~ /#{Regexp.escape @resource[:name]}\s*\|\s*([0-9\.\-]+)/ return $1 else # rug didn't find updates, pretend the current diff --git a/lib/puppet/provider/package/up2date.rb b/lib/puppet/provider/package/up2date.rb index d8a12652f..284bbaf42 100644 --- a/lib/puppet/provider/package/up2date.rb +++ b/lib/puppet/provider/package/up2date.rb @@ -25,7 +25,7 @@ Puppet::Type.type(:package).provide :up2date, :parent => :rpm, :source => :rpm d #up2date can only get a list of *all* available packages? output = up2date "--showall" - if output =~ /^#{@resource[:name]}-(\d+.*)\.\w+/ + if output =~ /^#{Regexp.escape @resource[:name]}-(\d+.*)\.\w+/ return $1 else # up2date didn't find updates, pretend the current diff --git a/lib/puppet/provider/package/urpmi.rb b/lib/puppet/provider/package/urpmi.rb index a95835284..a79e96227 100644 --- a/lib/puppet/provider/package/urpmi.rb +++ b/lib/puppet/provider/package/urpmi.rb @@ -43,7 +43,7 @@ Puppet::Type.type(:package).provide :urpmi, :parent => :rpm, :source => :rpm do def latest output = urpmq "-S", @resource[:name] - if output =~ /^#{@resource[:name]}\s+:\s+.*\(\s+(\S+)\s+\)/ + if output =~ /^#{Regexp.escape @resource[:name]}\s+:\s+.*\(\s+(\S+)\s+\)/ return $1 else # urpmi didn't find updates, pretend the current diff --git a/lib/puppet/provider/service/daemontools.rb b/lib/puppet/provider/service/daemontools.rb index 2c6c6dbc7..3749f9c2c 100644 --- a/lib/puppet/provider/service/daemontools.rb +++ b/lib/puppet/provider/service/daemontools.rb @@ -45,7 +45,7 @@ Puppet::Type.type(:service).provide :daemontools, :parent => :base do attr_writer :defpath # Determine the daemon path. - def defpath + def defpath(dummy_argument=:work_arround_for_ruby_GC_bug) unless defined?(@defpath) and @defpath ["/var/lib/service", "/etc"].each do |path| if FileTest.exist?(path) diff --git a/lib/puppet/provider/service/debian.rb b/lib/puppet/provider/service/debian.rb index 7ddbd288b..51fb7a22b 100755 --- a/lib/puppet/provider/service/debian.rb +++ b/lib/puppet/provider/service/debian.rb @@ -29,7 +29,7 @@ Puppet::Type.type(:service).provide :debian, :parent => :init do def enabled? # 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", "--query", @resource[:name], "start") + 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 diff --git a/lib/puppet/provider/service/runit.rb b/lib/puppet/provider/service/runit.rb index b313fc79c..b8b444e34 100644 --- a/lib/puppet/provider/service/runit.rb +++ b/lib/puppet/provider/service/runit.rb @@ -38,7 +38,7 @@ Puppet::Type.type(:service).provide :runit, :parent => :daemontools do class << self # this is necessary to autodetect a valid resource # default path, since there is no standard for such directory. - def defpath + def defpath(dummy_argument=:work_arround_for_ruby_GC_bug) unless defined?(@defpath) and @defpath ["/etc/sv", "/var/lib/service"].each do |path| if FileTest.exist?(path) diff --git a/lib/puppet/provider/ssh_authorized_key/parsed.rb b/lib/puppet/provider/ssh_authorized_key/parsed.rb index 69eec9fde..b435c513c 100644 --- a/lib/puppet/provider/ssh_authorized_key/parsed.rb +++ b/lib/puppet/provider/ssh_authorized_key/parsed.rb @@ -14,8 +14,9 @@ Puppet::Type.type(:ssh_authorized_key).provide(:parsed, :fields => %w{options type key name}, :optional => %w{options}, :rts => /^\s+/, - :match => /^(?:(.+) )?(ssh-dss|ssh-rsa) ([^ ]+)(?: (.+))?$/, + :match => /^(?:(.+) )?(ssh-dss|ssh-rsa) ([^ ]+) ?(.*)$/, :post_parse => proc { |h| + h[:name] = "" if h[:name] == :absent h[:options] ||= [:absent] h[:options] = Puppet::Type::Ssh_authorized_key::ProviderParsed.parse_options(h[:options]) if h[:options].is_a? String }, diff --git a/lib/puppet/provider/zone/solaris.rb b/lib/puppet/provider/zone/solaris.rb index 778b9e0a1..b047f6984 100644 --- a/lib/puppet/provider/zone/solaris.rb +++ b/lib/puppet/provider/zone/solaris.rb @@ -64,7 +64,7 @@ Puppet::Type.type(:zone).provide(:solaris) do @property_hash.clear end - def install + def install(dummy_argument=:work_arround_for_ruby_GC_bug) if @resource[:install_args] zoneadm :install, @resource[:install_args].split(" ") else @@ -156,11 +156,16 @@ Puppet::Type.type(:zone).provide(:solaris) do def start # Check the sysidcfg stuff if cfg = @resource[:sysidcfg] - path = File.join(@resource[:path], "root", "etc", "sysidcfg") + zoneetc = File.join(@resource[:path], "root", "etc") + sysidcfg = File.join(zoneetc, "sysidcfg") - unless File.exists?(path) + # if the zone root isn't present "ready" the zone + # which makes zoneadmd mount the zone root + zoneadm :ready unless File.directory?(zoneetc) + + unless File.exists?(sysidcfg) begin - File.open(path, "w", 0600) do |f| + File.open(sysidcfg, "w", 0600) do |f| f.puts cfg end rescue => detail @@ -193,6 +198,10 @@ Puppet::Type.type(:zone).provide(:solaris) do main end + def ready + zoneadm :ready + end + def stop zoneadm :halt end |
