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