From 89ea98ffb7dea3720c064f0eed45bcecaa68b699 Mon Sep 17 00:00:00 2001
From: Alexander Evseev <aevseev@mirantis.com>
Date: Wed, 22 Jun 2016 15:53:48 +0300
Subject: [PATCH] Fix search of latest package version

In case, when there is more than one obsoleted package, incorrect package
version is chosen.

For example:
/usr/local/bin/pip --version
pip 8.1.2 from /usr/local/lib/python2.7/dist-packages (python 2.7)

/usr/local/bin/pip list --obsolete
alabaster (0.7.6) - Latest: 0.7.8 [wheel]
Babel (1.3) - Latest: 2.3.4 [wheel]
...
tox (1.6.0) - Latest: 2.3.1 [wheel]
...

Puppet output:
Debug: Executing '/usr/local/bin/pip list --outdated'
Debug: /Stage[main]/Jenkins::Slave/Package[tox]/ensure: tox "1.6.0" is installed, latest is "0.7.8"
Debug: Executing '/usr/local/bin/pip install -q --upgrade tox'
Notice: /Stage[main]/Jenkins::Slave/Package[tox]/ensure: ensure changed '1.6.0' to '0.7.8'

Change-Id: Ia46c10ef4220be47e34c08cfd2be69e8c349f73d
---
 lib/puppet/provider/package/openstack_pip.rb | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/lib/puppet/provider/package/openstack_pip.rb b/lib/puppet/provider/package/openstack_pip.rb
index 105f838..ebbd884 100644
--- a/lib/puppet/provider/package/openstack_pip.rb
+++ b/lib/puppet/provider/package/openstack_pip.rb
@@ -18,7 +18,9 @@ Puppet::Type.type(:package).provide(:openstack_pip, :parent => :pip) do
   def latest
     outdated = self.class.outdated
     if outdated =~ /#{@resource[:name]}/
-      latest = outdated.split('-')[1].match('Latest: (.*) ')[1]
+      latest = outdated.split("\n").select { |line|
+        line =~ /#{@resource[:name]}/
+      }.first.split('-')[1].match('Latest: (.*) ')[1]
     else
       package_info = lazy_pip(['show', @resource[:name]])
       current = package_info.split("\n").select { |line|