diff --git a/lib/puppet/file_serving/base.rb b/lib/puppet/file_serving/base.rb
index <HASH>..<HASH> 100644
--- a/lib/puppet/file_serving/base.rb
+++ b/lib/puppet/file_serving/base.rb
@@ -7,6 +7,10 @@ require 'puppet/file_serving'
 # The base class for Content and Metadata; provides common
 # functionality like the behaviour around links.
 class Puppet::FileServing::Base
+    # This is for external consumers to store the source that was used
+    # to retrieve the metadata.
+    attr_accessor :source
+
     # Does our file exist?
     def exist?
         begin
diff --git a/spec/unit/file_serving/base.rb b/spec/unit/file_serving/base.rb
index <HASH>..<HASH> 100755
--- a/spec/unit/file_serving/base.rb
+++ b/spec/unit/file_serving/base.rb
@@ -17,6 +17,12 @@ describe Puppet::FileServing::Base do
         Puppet::FileServing::Base.new("/module/dir/file", :links => :manage).links.should == :manage
     end
 
+    it "should have a :source attribute" do
+        file = Puppet::FileServing::Base.new("/module/dir/file")
+        file.should respond_to(:source)
+        file.should respond_to(:source=)
+    end
+
     it "should consider :ignore links equivalent to :manage links" do
         Puppet::FileServing::Base.new("/module/dir/file", :links => :ignore).links.should == :manage
     end
Adding a "source" attribute to fileserving instances.

This will be used to cache the source that was used
to retrieve the instance.