24: def self.prefetch(packages)
25: if Process.euid != 0
26: raise Puppet::Error, "The yum provider can only be used as root"
27: end
28: super
29: return unless packages.detect { |name, package| package.should(:ensure) == :latest }
30:
31:
32: updates = {}
33: python(YUMHELPER).each_line do |l|
34: l.chomp!
35: next if l.empty?
36: if l[0,4] == "_pkg"
37: hash = nevra_to_hash(l[5..-1])
38: [hash[:name], "#{hash[:name]}.#{hash[:arch]}"].each do |n|
39: updates[n] ||= []
40: updates[n] << hash
41: end
42: end
43: end
44:
45:
46: packages.each do |name, package|
47: if info = updates[package[:name]]
48: package.provider.latest_info = info[0]
49: end
50: end
51: end