diff options
author | Nick Lewis <nick@puppetlabs.com> | 2011-05-16 14:57:52 -0700 |
---|---|---|
committer | Nick Lewis <nick@puppetlabs.com> | 2011-05-16 14:57:52 -0700 |
commit | 83fa8cf03133174d7182adee6f34efc6ba15d6b3 (patch) | |
tree | 974e35f86578c1fd67454e14f989e235323f5544 | |
parent | 2705a041f050a74cd7d11922c9b67ff747c1344f (diff) | |
parent | 0b8ebaccfef829856720c29c3bc00c042a515c71 (diff) | |
download | puppet-83fa8cf03133174d7182adee6f34efc6ba15d6b3.tar.gz puppet-83fa8cf03133174d7182adee6f34efc6ba15d6b3.tar.xz puppet-83fa8cf03133174d7182adee6f34efc6ba15d6b3.zip |
Merge branch 'ticket/2.7.x/7300' into 2.7.next
-rwxr-xr-x | lib/puppet/provider/mount/parsed.rb | 18 | ||||
-rwxr-xr-x | spec/unit/provider/mount/parsed_spec.rb | 41 |
2 files changed, 59 insertions, 0 deletions
diff --git a/lib/puppet/provider/mount/parsed.rb b/lib/puppet/provider/mount/parsed.rb index 7c3f41bbd..8d48dad57 100755 --- a/lib/puppet/provider/mount/parsed.rb +++ b/lib/puppet/provider/mount/parsed.rb @@ -47,6 +47,24 @@ Puppet::Type.type(:mount).provide( end end + def self.instances + providers = super + mounts = mountinstances.dup + + # Update fstab entries that are mounted + providers.each do |prov| + if mounts.delete({:name => prov.get(:name), :mounted => :yes}) then + prov.set(:ensure => :mounted) + end + end + + # Add mounts that are not in fstab but mounted + mounts.each do |mount| + providers << new(:ensure => :ghost, :name => mount[:name]) + end + providers + end + def self.prefetch(resources = nil) # Get providers for all resources the user defined and that match # a record in /etc/fstab. diff --git a/spec/unit/provider/mount/parsed_spec.rb b/spec/unit/provider/mount/parsed_spec.rb index 0293e0758..2e1e1e92e 100755 --- a/spec/unit/provider/mount/parsed_spec.rb +++ b/spec/unit/provider/mount/parsed_spec.rb @@ -193,6 +193,47 @@ FSTAB my_fixtures('*.fstab').each do |fstab| platform = File.basename(fstab, '.fstab') + + describe "when calling instances on #{platform}" do + before :each do + if Facter[:operatingsystem] == "Solaris" then + platform == 'solaris' or + pending "We need to stub the operatingsystem fact at load time, but can't" + else + platform != 'solaris' or + pending "We need to stub the operatingsystem fact at load time, but can't" + end + + # Stub the mount output to our fixture. + begin + mount = my_fixture(platform + '.mount') + @provider.stubs(:mountcmd).returns File.read(mount) + rescue + pending "is #{platform}.mount missing at this point?" + end + + # Note: we have to stub default_target before creating resources + # because it is used by Puppet::Type::Mount.new to populate the + # :target property. + @provider.stubs(:default_target).returns fstab + @retrieve = @provider.instances.collect { |prov| {:name => prov.get(:name), :ensure => prov.get(:ensure)}} + end + + # Following mountpoint are present in all fstabs/mountoutputs + it "should include unmounted resources" do + @retrieve.should include(:name => '/', :ensure => :mounted) + end + + it "should include mounted resources" do + @retrieve.should include(:name => '/boot', :ensure => :unmounted) + end + + it "should include ghost resources" do + @retrieve.should include(:name => '/ghost', :ensure => :ghost) + end + + end + describe "when prefetching on #{platform}" do before :each do if Facter[:operatingsystem] == "Solaris" then |