diff options
Diffstat (limited to 'lib/chef/provider')
-rw-r--r-- | lib/chef/provider/group.rb | 4 | ||||
-rw-r--r-- | lib/chef/provider/user.rb | 26 | ||||
-rw-r--r-- | lib/chef/provider/user/mac.rb | 16 | ||||
-rw-r--r-- | lib/chef/provider/user/windows.rb | 13 |
4 files changed, 41 insertions, 18 deletions
diff --git a/lib/chef/provider/group.rb b/lib/chef/provider/group.rb index 9e3d7f9a00..0cda3182ba 100644 --- a/lib/chef/provider/group.rb +++ b/lib/chef/provider/group.rb @@ -159,7 +159,7 @@ class Chef converge_by(["manage group #{new_resource.group_name}"] + change_desc) do manage_group - logger.info("#{new_resource} managed") + logger.info("#{new_resource} managed: #{change_desc.join(", ")}") end end @@ -168,7 +168,7 @@ class Chef converge_by(["modify group #{new_resource.group_name}"] + change_desc) do manage_group - logger.info("#{new_resource} modified") + logger.info("#{new_resource} modified: #{change_desc.join(", ")}") end end diff --git a/lib/chef/provider/user.rb b/lib/chef/provider/user.rb index d4a2651378..803d87d820 100644 --- a/lib/chef/provider/user.rb +++ b/lib/chef/provider/user.rb @@ -24,6 +24,7 @@ class Chef class User < Chef::Provider attr_accessor :user_exists, :locked + attr_accessor :change_desc def initialize(new_resource, run_context) super @@ -107,13 +108,20 @@ class Chef # <true>:: If a change is required # <false>:: If the users are identical def compare_user - return true if !new_resource.home.nil? && Pathname.new(new_resource.home).cleanpath != Pathname.new(current_resource.home).cleanpath + @change_desc = [] + if !new_resource.home.nil? && Pathname.new(new_resource.home).cleanpath != Pathname.new(current_resource.home).cleanpath + @change_desc << "change homedir from #{current_resource.home} to #{new_resource.home}" + end %i{comment shell password uid gid}.each do |user_attrib| - return true if !new_resource.send(user_attrib).nil? && new_resource.send(user_attrib).to_s != current_resource.send(user_attrib).to_s + new_val = new_resource.send(user_attrib) + cur_val = current_resource.send(user_attrib) + if !new_val.nil? && new_val.to_s != cur_val.to_s + @change_desc << "change #{user_attrib} from #{cur_val} to #{new_val}" + end end - false + !@change_desc.empty? end action :create do @@ -123,9 +131,9 @@ class Chef logger.info("#{new_resource} created") end elsif compare_user - converge_by("alter user #{new_resource.username}") do + converge_by(["alter user #{new_resource.username}"] + change_desc) do manage_user - logger.info("#{new_resource} altered") + logger.info("#{new_resource} altered, #{change_desc.join(", ")}") end end end @@ -142,18 +150,18 @@ class Chef action :manage do return unless @user_exists && compare_user - converge_by("manage user #{new_resource.username}") do + converge_by(["manage user #{new_resource.username}"] + change_desc) do manage_user - logger.info("#{new_resource} managed") + logger.info("#{new_resource} managed: #{change_desc.join(", ")}") end end action :modify do return unless compare_user - converge_by("modify user #{new_resource.username}") do + converge_by(["modify user #{new_resource.username}"] + change_desc) do manage_user - logger.info("#{new_resource} modified") + logger.info("#{new_resource} modified: #{change_desc.join(", ")}") end end diff --git a/lib/chef/provider/user/mac.rb b/lib/chef/provider/user/mac.rb index a3980aa12f..aef831907a 100644 --- a/lib/chef/provider/user/mac.rb +++ b/lib/chef/provider/user/mac.rb @@ -221,7 +221,17 @@ class Chef end def compare_user - %i{comment shell uid gid salt password admin secure_token hidden}.any? { |m| diverged?(m) } + @change_desc = [] + %i{comment shell uid gid salt password admin secure_token hidden}.each do |attr| + if diverged?(m) + desc = "Update #{attr}" + unless %i{password gid secure_token hidden}.include?(attr) + desc << " from #{current_resource.send(attr)} to #{new_resource.send(attr)}" + end + @change_desc << desc + end + end + !@change_desc.empty? end def manage_user @@ -290,9 +300,7 @@ class Chef end if diverged?(:hidden) - converge_by("alter hidden") do - set_hidden - end + converge_by("alter hidden") { set_hidden } end reload_user_plist diff --git a/lib/chef/provider/user/windows.rb b/lib/chef/provider/user/windows.rb index 6d50e2c8ee..32b2c35264 100644 --- a/lib/chef/provider/user/windows.rb +++ b/lib/chef/provider/user/windows.rb @@ -61,13 +61,20 @@ class Chef # <true>:: If a change is required # <false>:: If the users are identical def compare_user + @change_desc = [] unless @net_user.validate_credentials(new_resource.password) - logger.trace("#{new_resource} password has changed") - return true + @change_desc << "update password" end + %i{uid comment home shell full_name}.any? do |user_attrib| - !new_resource.send(user_attrib).nil? && new_resource.send(user_attrib) != current_resource.send(user_attrib) + new_val = new_resource.send(user_attrib) + cur_val = current_resource.send(user_attrib) + if !new_val.nil? && new_val != cur_val + @change_desc << "change #{user_attrib} from #{cur_val} to #{new_val}" + end end + + !@change_desc.empty? end def create_user |