44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
# File 'lib/puppet/util/storage.rb', line 44
def self.load
Puppet.settings.use(:main) unless FileTest.directory?(Puppet[:statedir])
filename = Puppet[:statefile]
unless Puppet::FileSystem.exist?(filename)
self.init if @@state.nil?
return
end
unless File.file?(filename)
Puppet.warning(_("Checksumfile %{filename} is not a file, ignoring") % { filename: filename })
return
end
Puppet::Util.benchmark(:debug, "Loaded state") do
begin
@@state = Puppet::Util::Yaml.load_file(filename)
rescue Puppet::Util::Yaml::YamlLoadError => detail
Puppet.err _("Checksumfile %{filename} is corrupt (%{detail}); replacing") % { filename: filename, detail: detail }
begin
File.rename(filename, filename + ".bad")
rescue
raise Puppet::Error, _("Could not rename corrupt %{filename}; remove manually") % { filename: filename }, detail.backtrace
end
end
end
unless @@state.is_a?(Hash)
Puppet.err _("State got corrupted")
self.init
end
end
|