Class: Chef::Provider::Mount
- Inherits:
-
Chef::Provider
- Object
- Chef::Provider
- Chef::Provider::Mount
- Includes:
- Mixin::ShellOut
- Defined in:
- lib/chef/provider/mount.rb,
lib/chef/provider/mount/aix.rb,
lib/chef/provider/mount/mount.rb,
lib/chef/provider/mount/solaris.rb,
lib/chef/provider/mount/windows.rb
Defined Under Namespace
Classes: Aix, Mount, Solaris, Windows
Instance Attribute Summary collapse
-
#unmount_retries ⇒ Object
Returns the value of attribute unmount_retries.
Attributes inherited from Chef::Provider
#action, #current_resource, #logger, #new_resource, #recipe_name, #run_context
Instance Method Summary collapse
- #action_disable ⇒ Object
- #action_enable ⇒ Object
- #action_mount ⇒ Object
- #action_remount ⇒ Object
- #action_umount ⇒ Object (also: #action_unmount)
-
#device_unchanged? ⇒ Boolean
It’s entirely plausible that a site might prefer UUIDs or labels, so we need to be able to update fstab to conform with their wishes without necessarily needing to remount the device.
-
#disable_fs ⇒ Object
should implement disabling of the filesystem (e.g. in /etc/fstab), raises if action does not succeed.
-
#enable_fs ⇒ Object
should implement enabling of the filesystem (e.g. in /etc/fstab), raises if action does not succeed.
-
#initialize(new_resource, run_context) ⇒ Mount
constructor
A new instance of Mount.
- #load_current_resource ⇒ Object
-
#mount_fs ⇒ Object
should implement mounting of the filesystem, raises if action does not succeed.
-
#mount_options_unchanged? ⇒ Boolean
should check new_resource against current_resource to see if mount options need updating, returns true/false.
-
#mounted? ⇒ Boolean
should actually check if the filesystem is mounted (not just return current_resource) and return true/false.
-
#remount_fs ⇒ Object
should implement remounting of the filesystem (via a -o remount or some other atomic-ish action that isn’t simply a umount/mount style remount), raises if action does not succeed.
-
#umount_fs ⇒ Object
should implement unmounting of the filesystem, raises if action does not succeed.
Methods included from Mixin::ShellOut
apply_default_env, maybe_add_timeout, #shell_out, #shell_out!
Methods inherited from Chef::Provider
action, #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, #introduced, #node, #process_resource_requirements, provides, provides?, #requirements, #resource_collection, #resource_updated?, #run_action, #set_updated_status, supports?, use_inline_resources, #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 Mixin::PowershellExec
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::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 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
Constructor Details
#initialize(new_resource, run_context) ⇒ Mount
Returns a new instance of Mount.
35 36 37 38 |
# File 'lib/chef/provider/mount.rb', line 35 def initialize(new_resource, run_context) super self.unmount_retries = 20 end |
Instance Attribute Details
#unmount_retries ⇒ Object
Returns the value of attribute unmount_retries.
29 30 31 |
# File 'lib/chef/provider/mount.rb', line 29 def unmount_retries @unmount_retries end |
Instance Method Details
#action_disable ⇒ Object
96 97 98 99 100 101 102 103 104 105 |
# File 'lib/chef/provider/mount.rb', line 96 def action_disable if current_resource.enabled converge_by("disable #{current_resource.device}") do disable_fs logger.info("#{new_resource} disabled") end else logger.trace("#{new_resource} already disabled") end end |
#action_enable ⇒ Object
85 86 87 88 89 90 91 92 93 94 |
# File 'lib/chef/provider/mount.rb', line 85 def action_enable unless current_resource.enabled && && device_unchanged? converge_by("enable #{current_resource.device}") do enable_fs logger.info("#{new_resource} enabled") end else logger.trace("#{new_resource} already enabled") end end |
#action_mount ⇒ Object
40 41 42 43 44 45 46 47 48 49 |
# File 'lib/chef/provider/mount.rb', line 40 def action_mount unless current_resource.mounted converge_by("mount #{current_resource.device} to #{current_resource.mount_point}") do mount_fs logger.info("#{new_resource} mounted") end else logger.trace("#{new_resource} is already mounted") end end |
#action_remount ⇒ Object
62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'lib/chef/provider/mount.rb', line 62 def action_remount if current_resource.mounted if new_resource.supports[:remount] converge_by("remount #{current_resource.device}") do remount_fs logger.info("#{new_resource} remounted") end else converge_by("unmount #{current_resource.device}") do umount_fs logger.info("#{new_resource} unmounted") end wait_until_unmounted(unmount_retries) converge_by("mount #{current_resource.device}") do mount_fs logger.info("#{new_resource} mounted") end end else logger.trace("#{new_resource} not mounted, nothing to remount") end end |
#action_umount ⇒ Object Also known as: action_unmount
51 52 53 54 55 56 57 58 59 60 |
# File 'lib/chef/provider/mount.rb', line 51 def action_umount if current_resource.mounted converge_by("unmount #{current_resource.device}") do umount_fs logger.info("#{new_resource} unmounted") end else logger.trace("#{new_resource} is already unmounted") end end |
#device_unchanged? ⇒ Boolean
It’s entirely plausible that a site might prefer UUIDs or labels, so we need to be able to update fstab to conform with their wishes without necessarily needing to remount the device. See #6851 for more.
127 128 129 |
# File 'lib/chef/provider/mount.rb', line 127 def device_unchanged? @current_resource.device == @new_resource.device end |
#disable_fs ⇒ Object
should implement disabling of the filesystem (e.g. in /etc/fstab), raises if action does not succeed
159 160 161 |
# File 'lib/chef/provider/mount.rb', line 159 def disable_fs raise Chef::Exceptions::UnsupportedAction, "#{self} does not support :disable" end |
#enable_fs ⇒ Object
should implement enabling of the filesystem (e.g. in /etc/fstab), raises if action does not succeed
154 155 156 |
# File 'lib/chef/provider/mount.rb', line 154 def enable_fs raise Chef::Exceptions::UnsupportedAction, "#{self} does not support :enable" end |
#load_current_resource ⇒ Object
31 32 33 |
# File 'lib/chef/provider/mount.rb', line 31 def load_current_resource true end |
#mount_fs ⇒ Object
should implement mounting of the filesystem, raises if action does not succeed
138 139 140 |
# File 'lib/chef/provider/mount.rb', line 138 def mount_fs raise Chef::Exceptions::UnsupportedAction, "#{self} does not support :mount" end |
#mount_options_unchanged? ⇒ Boolean
should check new_resource against current_resource to see if mount options need updating, returns true/false
119 120 121 |
# File 'lib/chef/provider/mount.rb', line 119 def raise Chef::Exceptions::UnsupportedAction, "#{self} does not implement #mount_options_unchanged?" end |
#mounted? ⇒ Boolean
should actually check if the filesystem is mounted (not just return current_resource) and return true/false
114 115 116 |
# File 'lib/chef/provider/mount.rb', line 114 def mounted? raise Chef::Exceptions::UnsupportedAction, "#{self} does not implement #mounted?" end |
#remount_fs ⇒ Object
should implement remounting of the filesystem (via a -o remount or some other atomic-ish action that isn’t simply a umount/mount style remount), raises if action does not succeed
149 150 151 |
# File 'lib/chef/provider/mount.rb', line 149 def remount_fs raise Chef::Exceptions::UnsupportedAction, "#{self} does not support :remount" end |
#umount_fs ⇒ Object
should implement unmounting of the filesystem, raises if action does not succeed
143 144 145 |
# File 'lib/chef/provider/mount.rb', line 143 def umount_fs raise Chef::Exceptions::UnsupportedAction, "#{self} does not support :umount" end |