class Chef::Provider::Mount::Linux
Public Instance Methods
loop_mount_points()
click to toggle source
Check to see if the volume is mounted. “findmnt” outputs the mount points with volume. Convert the mount_point of the resource to a real path in case it contains symlinks in its parents dirs.
# File lib/chef/provider/mount/linux.rb, line 32 def loop_mount_points # get loop_mount_points only if not initialized earlier @loop_mount_points ||= shell_out!("losetup -a").stdout rescue Errno::ENOENT @loop_mount_points = "" end
mounted?()
click to toggle source
# File lib/chef/provider/mount/linux.rb, line 40 def mounted? mounted = false real_mount_point = if ::TargetIO::File.exist? @new_resource.mount_point ::TargetIO::File.realpath(@new_resource.mount_point) else @new_resource.mount_point end shell_out!("findmnt -rn").stdout.each_line do |line| case line # Permalink for device already mounted to mount point for : https://rubular.com/r/L0RNnD4gf2DJGl when /\A#{Regexp.escape(real_mount_point)}\s+#{device_mount_regex}\s/ mounted = true logger.trace("Special device #{device_logstring} mounted as #{real_mount_point}") # Permalink for loop type devices mount points https://rubular.com/r/a0bS4p2RvXsGxx when %r{\A#{Regexp.escape(real_mount_point)}\s+\/dev\/loop+[0-9]+\s} loop_mount_points.each_line do |mount_point| if mount_point.include? device_real mounted = true break end end # Permalink for multiple devices mounted to the same mount point(i.e. '/proc') https://rubular.com/r/a356yzspU7N9TY when %r{\A#{Regexp.escape(real_mount_point)}\s+([/\w])+\s} mounted = false logger.trace("Special device #{$~[1]} mounted as #{real_mount_point}") # Permalink for bind device mounted to an existing mount point: https://rubular.com/r/QAE0ilL3sm3Ldz when %r{\A#{Regexp.escape(real_mount_point)}\s+([/\w])+\[#{device_mount_regex}\]\s} mounted = true logger.trace("Bind device #{device_logstring} mounted as #{real_mount_point}") # Permalink for network device mounted to an existing mount point: https://rubular.com/r/JRTXXGFdQtwCD6 when /\A#{Regexp.escape(real_mount_point)}\s+#{device_mount_regex}\[/ mounted = true logger.trace("Network device #{device_logstring} mounted as #{real_mount_point}") # Permalink for network device mounted with a space in device name https://rubular.com/r/CK5zWWms96CRES # See the comment in "device_with_space_escape" for an explanation what's going here. when /\A#{Regexp.escape(real_mount_point)}\s+#{device_with_space_escape}\s/ mounted = true logger.trace("Network device #{device_logstring} mounted as #{real_mount_point}") end end @current_resource.mounted(mounted) end