module Puppet::DataSync
Public Instance Methods
checksum_insync?(param, is, has_contents) { |is| ... }
click to toggle source
# File lib/puppet/type/file/data_sync.rb 24 def checksum_insync?(param, is, has_contents, &block) 25 resource = param.resource 26 if resource.should_be_file? 27 return false if is == :absent 28 else 29 if resource[:ensure] == :present && has_contents && (s = resource.stat) 30 #TRANSLATORS 'Ensure' is an attribute and ':present' is a value and should not be translated 31 resource.warning _("Ensure set to :present but file type is %{file_type} so no content will be synced") % { file_type: s.ftype} 32 end 33 return true 34 end 35 36 return true if ! resource.replace? 37 38 is_insync = yield(is) 39 40 if show_diff?(!is_insync) 41 if param.sensitive 42 send resource[:loglevel], "[diff redacted]" 43 else 44 write_temporarily(param) do |path| 45 diff_output = diff(resource[:path], path) 46 if diff_output.encoding == Encoding::BINARY || !diff_output.valid_encoding? 47 diff_output = "Binary files #{resource[:path]} and #{path} differ" 48 end 49 send resource[:loglevel], "\n" + diff_output 50 end 51 end 52 end 53 is_insync 54 end
contents_sync(param)
click to toggle source
# File lib/puppet/type/file/data_sync.rb 91 def contents_sync(param) 92 return_event = param.resource.stat ? :file_changed : :file_created 93 resource.write(param) 94 return_event 95 end
date_matches?(checksum_type, current, desired)
click to toggle source
# File lib/puppet/type/file/data_sync.rb 60 def date_matches?(checksum_type, current, desired) 61 time_types = [:mtime, :ctime] 62 return false if !time_types.include?(checksum_type) 63 return false unless current && desired 64 65 begin 66 if checksum?(current) || checksum?(desired) 67 raise if !time_types.include?(sumtype(current).to_sym) || !time_types.include?(sumtype(desired).to_sym) 68 current = sumdata(current) 69 desired = sumdata(desired) 70 end 71 DateTime.parse(current) >= DateTime.parse(desired) 72 rescue => detail 73 self.fail Puppet::Error, "Resource with checksum_type #{checksum_type} didn't contain a date in #{current} or #{desired}", detail.backtrace 74 end 75 end
retrieve_checksum(resource)
click to toggle source
# File lib/puppet/type/file/data_sync.rb 77 def retrieve_checksum(resource) 78 stat = resource.stat 79 return :absent unless stat 80 ftype = stat.ftype 81 # Don't even try to manage the content on directories or links 82 return nil if ["directory","link"].include?(ftype) 83 84 begin 85 resource.parameter(:checksum).sum_file(resource[:path]) 86 rescue => detail 87 raise Puppet::Error, "Could not read #{ftype} #{resource.title}: #{detail}", detail.backtrace 88 end 89 end
show_diff?(has_changes)
click to toggle source
# File lib/puppet/type/file/data_sync.rb 56 def show_diff?(has_changes) 57 has_changes && Puppet[:show_diff] && resource.show_diff? 58 end
write_temporarily(param) { |path| ... }
click to toggle source
# File lib/puppet/type/file/data_sync.rb 11 def write_temporarily(param) 12 tempfile = Tempfile.new("puppet-file") 13 tempfile.open 14 15 param.write(tempfile) 16 17 tempfile.close 18 19 yield tempfile.path 20 ensure 21 tempfile.delete if tempfile 22 end