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