Class: Chef::Provider::Mount::Linux
- Inherits:
-
Mount
- Object
- Chef::Provider
- Chef::Provider::Mount
- Mount
- Chef::Provider::Mount::Linux
- Defined in:
- lib/chef/provider/mount/linux.rb
Instance Attribute Summary
Attributes inherited from Mount
Attributes inherited from Chef::Provider::Mount
Attributes inherited from Chef::Provider
#action, #after_resource, #current_resource, #logger, #new_resource, #run_context
Instance Method Summary collapse
-
#loop_mount_points ⇒ Object
Check to see if the volume is mounted.
- #mounted? ⇒ Boolean
Methods inherited from Mount
#default_mount_options, #device_should_exist?, #disable_fs, #enable_fs, #enabled?, #initialize, #load_current_resource, #mount_fs, #mountable?, #network_device?, #remount_command, #remount_fs, #umount_fs
Methods inherited from Chef::Provider::Mount
#device_unchanged?, #disable_fs, #enable_fs, #initialize, #load_current_resource, #mount_fs, #mount_options_unchanged?, #remount_fs, #umount_fs
Methods inherited from Chef::Provider
action, action_description, action_descriptions, #action_nothing, #check_resource_semantics!, #cleanup_after_converge, #compile_and_converge_action, #converge_by, #converge_if_changed, #cookbook_name, #define_resource_requirements, #description, #events, include_resource_dsl?, include_resource_dsl_module, #initialize, #introduced, #load_after_resource, #load_current_resource, #node, #process_resource_requirements, provides, provides?, #recipe_name, #requirements, #resource_collection, #resource_updated?, #run_action, #set_updated_status, supports?, use, use_inline_resources, #validate_required_properties!, #whyrun_mode?, #whyrun_supported?
Methods included from Mixin::Provides
#provided_as, #provides, #provides?
Methods included from Mixin::DescendantsTracker
#descendants, descendants, direct_descendants, #direct_descendants, find_descendants_by_name, #find_descendants_by_name, #inherited, store_inherited
Methods included from Mixin::LazyModuleInclude
#descendants, #include, #included
Methods included from Mixin::PowershellOut
#powershell_out, #powershell_out!
Methods included from Mixin::WindowsArchitectureHelper
#assert_valid_windows_architecture!, #disable_wow64_file_redirection, #forced_32bit_override_required?, #is_i386_process_on_x86_64_windows?, #node_supports_windows_architecture?, #node_windows_architecture, #restore_wow64_file_redirection, #valid_windows_architecture?, #with_os_architecture, #wow64_architecture_override_required?, #wow64_directory
Methods included from DSL::Secret
#default_secret_config, #default_secret_service, #secret, #with_secret_config, #with_secret_service
Methods included from DSL::RenderHelpers
#render_json, #render_toml, #render_yaml
Methods included from DSL::ReaderHelpers
#parse_file, #parse_json, #parse_toml, #parse_yaml
Methods included from DSL::Powershell
Methods included from DSL::RegistryHelper
#registry_data_exists?, #registry_get_subkeys, #registry_get_values, #registry_has_subkeys?, #registry_key_exists?, #registry_value_exists?
Methods included from DSL::ChefVault
#chef_vault, #chef_vault_item, #chef_vault_item_for_environment
Methods included from DSL::DataQuery
#data_bag, #data_bag_item, #search, #tagged?
Methods included from EncryptedDataBagItem::CheckEncrypted
Methods included from DSL::PlatformIntrospection
#older_than_win_2012_or_8?, #platform?, #platform_family?, #value_for_platform, #value_for_platform_family
Methods included from DSL::Recipe
#exec, #have_resource_class_for?, #resource_class_for
Methods included from DSL::Definitions
add_definition, #evaluate_resource_definition, #has_resource_definition?
Methods included from DSL::Resources
add_resource_dsl, remove_resource_dsl
Methods included from DSL::Cheffish
Methods included from DSL::RebootPending
Methods included from DSL::IncludeRecipe
Methods included from Mixin::NotifyingBlock
#notifying_block, #subcontext_block
Methods included from DSL::DeclareResource
#build_resource, #declare_resource, #delete_resource, #delete_resource!, #edit_resource, #edit_resource!, #find_resource, #find_resource!, #resources, #with_run_context
Methods included from DSL::Compliance
#include_input, #include_profile, #include_waiver
Constructor Details
This class inherits a constructor from Chef::Provider::Mount::Mount
Instance Method Details
#loop_mount_points ⇒ Object
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.
32 33 34 35 36 37 38 |
# 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? ⇒ Boolean
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
# File 'lib/chef/provider/mount/linux.rb', line 40 def mounted? mounted = false real_mount_point = if ::File.exist? @new_resource.mount_point ::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 |