Change mounted? to query the property_hash so we don't have to run the
mountcommand for every specified mount but rely on the prefetched state

Also update the prefetched property_hash[:ensure] after mount or umount.
This is important if we query mounted? later (most obvious when refresh
is called. We dont want to remount a resource that was umounted before)

Signed-off-by: Stefan Schulte <[email protected]>
---
 lib/puppet/provider/mount.rb |   26 ++++++++++++--------------
 1 files changed, 12 insertions(+), 14 deletions(-)

diff --git a/lib/puppet/provider/mount.rb b/lib/puppet/provider/mount.rb
index 8c7b24b..65296ee 100644
--- a/lib/puppet/provider/mount.rb
+++ b/lib/puppet/provider/mount.rb
@@ -14,8 +14,11 @@ module Puppet::Provider::Mount
     args << "-o" << self.options if self.options and self.options != :absent
     args << resource[:name]
 
-    flush if respond_to?(:flush)
     mountcmd(*args)
+    case get(:ensure)
+    when :absent; set(:ensure => :ghost)
+    when :unmounted; set(:ensure => :mounted)
+    end
   end
 
   def remount
@@ -30,22 +33,17 @@ module Puppet::Provider::Mount
 
   # This only works when the mount point is synced to the fstab.
   def unmount
-    umount resource[:name]
+    umount(resource[:name])
+
+    # Update property hash for future queries (e.g. refresh is called)
+    case get(:ensure)
+    when :mounted; set(:ensure => :unmounted)
+    when :ghost; set(:ensure => :absent)
+    end
   end
 
   # Is the mount currently mounted?
   def mounted?
-    platform = Facter.value("operatingsystem")
-    name = resource[:name]
-    mounts = mountcmd.split("\n").find do |line|
-      case platform
-      when "Darwin"
-        line =~ / on #{name} / or line =~ %r{ on /private/var/automount#{name}}
-      when "Solaris", "HP-UX"
-        line =~ /^#{name} on /
-      else
-        line =~ / on #{name} /
-      end
-    end
+    [:mounted, :ghost].include?(get(:ensure))
   end
 end
-- 
1.7.4.1

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Developers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/puppet-dev?hl=en.

Reply via email to