[Pkg-puppet-devel] [SCM] Puppet packaging for Debian branch, upstream, updated. puppet-0.24.5-rc3-1601-gf8c1b08

James Turnbull james at lovedthanlost.net
Fri Jan 15 09:08:35 UTC 2010


The following commit has been merged in the upstream branch:
commit 7e2e12be7827c2adb64a192b5b7176c7c541af44
Author: Markus Roberts <Markus at reality.com>
Date:   Tue Dec 29 11:29:09 2009 -0800

    Fix for #2995 (don't fail to load PSON when UTF-8 missing)
    
    We don't actually rely on iconv's UTF-8 support, so its absence
    shouldn't cause the PSON feature to fail on system (e.g. HPUX)
    where it isn't fully implemented.
    
    This change exposed a dependency on library load order that was causing
    Puppet::Util::Log to raise an error. I've removed the dependency of
    Puppet::Type from Puppet::Util::Log.
    
    Signed-off-by: Jesse Wolfe <jes5199 at gmail.com>

diff --git a/lib/puppet/util/log.rb b/lib/puppet/util/log.rb
index 4cdad70..90d7229 100644
--- a/lib/puppet/util/log.rb
+++ b/lib/puppet/util/log.rb
@@ -511,11 +511,16 @@ class Puppet::Util::Log
     # If they pass a source in to us, we make sure it is a string, and
     # we retrieve any tags we can.
     def source=(source)
-        # We can't store the actual source, we just store the path.
-        # We can't just check for whether it responds to :path, because
-        # plenty of providers respond to that in their normal function.
-        if (source.is_a?(Puppet::Type) or source.is_a?(Puppet::Parameter)) and source.respond_to?(:path)
-            set_source_from_ral(source)
+        if source.respond_to?(:source_descriptors)
+            descriptors = source.source_descriptors
+            @source = descriptors[:path]
+
+            descriptors[:tags].each { |t| tag(t) }
+
+            [:file, :line, :version].each do |param|
+                next unless descriptors[param]
+                send(param.to_s + "=", descriptors[param])
+            end
         else
             @source = source.to_s
         end
@@ -528,19 +533,6 @@ class Puppet::Util::Log
     def to_s
         return @message
     end
-
-    private
-
-    def set_source_from_ral(source)
-        @source = source.path
-
-        source.tags.each { |t| tag(t) }
-
-        [:file, :line, :version].each do |param|
-            next unless value = source.send(param)
-            send(param.to_s + "=", value)
-        end
-    end
 end
 
 # This is for backward compatibility from when we changed the constant to Puppet::Util::Log
diff --git a/lib/puppet/util/log_paths.rb b/lib/puppet/util/log_paths.rb
index 1a6bafc..46f6c48 100644
--- a/lib/puppet/util/log_paths.rb
+++ b/lib/puppet/util/log_paths.rb
@@ -11,5 +11,19 @@ module Puppet::Util::LogPaths
 
         return "/" + @path.join("/")
     end
+
+    def source_descriptors
+        descriptors = {}
+
+        descriptors[:tags] = tags
+
+        [:path, :file, :line, :version].each do |param|
+            next unless value = send(param)
+            descriptors[param] = value
+        end
+
+        return descriptors
+    end
+
 end
 
diff --git a/spec/unit/parameter.rb b/spec/unit/parameter.rb
index 0548346..e3eaca6 100755
--- a/spec/unit/parameter.rb
+++ b/spec/unit/parameter.rb
@@ -44,6 +44,14 @@ describe Puppet::Parameter do
         @parameter.tags.should == %w{one two foo}
     end
 
+    it "should provide source_descriptors" do
+        @resource.expects(:line).returns 10
+        @resource.expects(:file).returns "file"
+        @resource.expects(:tags).returns %w{one two}
+        @resource.expects(:version).returns 50
+        @parameter.source_descriptors.should == {:tags=>["one", "two", "foo"], :path=>"//foo", :version=>50, :file => "file", :line => 10}
+    end
+
     describe "when returning the value" do
         it "should return nil if no value is set" do
             @parameter.value.should be_nil
diff --git a/spec/unit/type.rb b/spec/unit/type.rb
index fe2788e..11bedaa 100755
--- a/spec/unit/type.rb
+++ b/spec/unit/type.rb
@@ -89,6 +89,15 @@ describe Puppet::Type do
         Puppet::Type.type(:mount).new(:name => "foo").version.should == 0
     end
 
+    it "should provide source_descriptors" do
+        resource = Puppet::Type.type(:mount).new(:name => "foo")
+        catalog = Puppet::Resource::Catalog.new
+        catalog.version = 50
+        catalog.add_resource resource
+
+        resource.source_descriptors.should == {:version=>50, :tags=>["mount", "foo"], :path=>"/Mount[foo]"}
+    end
+
     describe "when choosing a default provider" do
         it "should choose the provider with the highest specificity" do
             # Make a fake type
diff --git a/spec/unit/util/log.rb b/spec/unit/util/log.rb
index 35e6a71..97fb2f2 100755
--- a/spec/unit/util/log.rb
+++ b/spec/unit/util/log.rb
@@ -157,6 +157,20 @@ describe Puppet::Util::Log do
                 end
             end
 
+            it "should use the source_descriptors" do
+                source = stub "source"
+                source.stubs(:source_descriptors).returns(:tags => ["tag","tag2"], :path => "path", :version => 100)
+                
+                log = Puppet::Util::Log.new(:level => "notice", :message => :foo)
+                log.expects(:tag).with("tag")
+                log.expects(:tag).with("tag2")
+                log.expects(:version=).with(100)
+
+                log.source = source
+
+                log.source.should == "path"
+            end
+
             it "should copy over any version information" do
                 catalog = Puppet::Resource::Catalog.new
                 catalog.version = 25

-- 
Puppet packaging for Debian



More information about the Pkg-puppet-devel mailing list