diff options
author | Lamont Granquist <lamont@scriptkiddie.org> | 2015-08-18 13:37:53 -0700 |
---|---|---|
committer | Lamont Granquist <lamont@scriptkiddie.org> | 2015-08-18 13:37:53 -0700 |
commit | 1bdf739b844489424283852af56f5a8f2b8f362a (patch) | |
tree | d5ebfdb3b1ba77ac8c98b64882fae95c29f767d4 | |
parent | 457cba5aab3cb15435e4cc5c3fd47b0669eee159 (diff) | |
parent | 7f748a5c429134d100ea3ee69e168e81ea1065ef (diff) | |
download | chef-1bdf739b844489424283852af56f5a8f2b8f362a.tar.gz |
Merge pull request #3792 from chef/lcg/making_mount_options_aware
Lcg/making mount options aware
-rw-r--r-- | CHANGELOG.md | 3 | ||||
-rw-r--r-- | lib/chef/provider/mount.rb | 10 | ||||
-rw-r--r-- | spec/unit/provider/mount/aix_spec.rb | 3 | ||||
-rw-r--r-- | spec/unit/provider/mount/mount_spec.rb | 6 | ||||
-rw-r--r-- | spec/unit/provider/mount/windows_spec.rb | 14 | ||||
-rw-r--r-- | spec/unit/provider/mount_spec.rb | 13 |
6 files changed, 44 insertions, 5 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index cdfc1560ee..032fca2bac 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,9 @@ [pr#3764](https://github.com/chef/chef/pull/3764) uniquify chef\_repo\_path * [**Renan Vicente**](https://github.com/renanvicente): [pr#3771](https://github.com/chef/chef/pull/3771) add depth property for deploy resource +* [**James Belchamber**](https://github.com/JamesBelchamber): + [pr#1796](https://github.com/chef/chef/pull/1796): make mount options aware + * [pr#2460](https://github.com/chef/chef/pull/2460) add privacy flag * [pr#1259](https://github.com/chef/chef/pull/1259) CHEF-5012: add methods for template breadcrumbs diff --git a/lib/chef/provider/mount.rb b/lib/chef/provider/mount.rb index 2039e9ae51..6bdfd5b867 100644 --- a/lib/chef/provider/mount.rb +++ b/lib/chef/provider/mount.rb @@ -42,13 +42,17 @@ class Chef end def action_mount - unless current_resource.mounted + if current_resource.mounted + if mount_options_unchanged? + Chef::Log.debug("#{new_resource} is already mounted") + else + action_remount + end + else converge_by("mount #{current_resource.device} to #{current_resource.mount_point}") do mount_fs Chef::Log.info("#{new_resource} mounted") end - else - Chef::Log.debug("#{new_resource} is already mounted") end end diff --git a/spec/unit/provider/mount/aix_spec.rb b/spec/unit/provider/mount/aix_spec.rb index ca0ddd006c..e232592275 100644 --- a/spec/unit/provider/mount/aix_spec.rb +++ b/spec/unit/provider/mount/aix_spec.rb @@ -126,9 +126,10 @@ ENABLED @provider.run_action(:mount) end - it "should not mount resource if it is already mounted" do + it "should not mount resource if it is already mounted and the options have not changed" do stub_mounted_enabled(@provider, @mounted_output, "") + allow(@provider).to receive(:mount_options_unchanged?).and_return(true) expect(@provider).not_to receive(:mount_fs) @provider.run_action(:mount) diff --git a/spec/unit/provider/mount/mount_spec.rb b/spec/unit/provider/mount/mount_spec.rb index 7a37ffe74e..dd13a62796 100644 --- a/spec/unit/provider/mount/mount_spec.rb +++ b/spec/unit/provider/mount/mount_spec.rb @@ -323,6 +323,12 @@ describe Chef::Provider::Mount::Mount do @provider.mount_fs() end + it "should not mount the filesystem if it is mounted and the options have not changed" do + allow(@current_resource).to receive(:mounted).and_return(true) + expect(@provider).to_not receive(:shell_out!) + @provider.mount_fs() + end + end describe "umount_fs" do diff --git a/spec/unit/provider/mount/windows_spec.rb b/spec/unit/provider/mount/windows_spec.rb index 467d923c6a..2de6f11d43 100644 --- a/spec/unit/provider/mount/windows_spec.rb +++ b/spec/unit/provider/mount/windows_spec.rb @@ -111,6 +111,20 @@ describe Chef::Provider::Mount::Windows do allow(@current_resource).to receive(:mounted).and_return(true) @provider.mount_fs end + + it "should remount the filesystem if it is mounted and the options have changed" do + expect(@vol).to receive(:add).with(:remote => @new_resource.device, + :username => @new_resource.username, + :domainname => @new_resource.domain, + :password => @new_resource.password) + @provider.mount_fs + end + + it "should not mount the filesystem if it is mounted and the options have not changed" do + expect(@vol).to_not receive(:add) + allow(@current_resource).to receive(:mounted).and_return(true) + @provider.mount_fs + end end describe "when unmounting a file system" do diff --git a/spec/unit/provider/mount_spec.rb b/spec/unit/provider/mount_spec.rb index e9fe3fa050..cc2a456440 100644 --- a/spec/unit/provider/mount_spec.rb +++ b/spec/unit/provider/mount_spec.rb @@ -61,8 +61,19 @@ describe Chef::Provider::Mount do expect(new_resource).to be_updated_by_last_action end - it "should not mount the filesystem if it is mounted" do + it "should remount the filesystem if it is mounted and the options have changed" do allow(current_resource).to receive(:mounted).and_return(true) + allow(provider).to receive(:mount_options_unchanged?).and_return(false) + expect(provider).to receive(:umount_fs).and_return(true) + expect(provider).to receive(:wait_until_unmounted) + expect(provider).to receive(:mount_fs).and_return(true) + provider.run_action(:mount) + expect(new_resource).to be_updated_by_last_action + end + + it "should not mount the filesystem if it is mounted and the options have not changed" do + allow(current_resource).to receive(:mounted).and_return(true) + expect(provider).to receive(:mount_options_unchanged?).and_return(true) expect(provider).not_to receive(:mount_fs) provider.run_action(:mount) expect(new_resource).not_to be_updated_by_last_action |