Issue #14845 has been updated by jayendren maduray.

Affected Facter version set to 1.6.5

- FreeBSD 8.2 host,
- file:
/usr/local/lib/ruby/site_ruby/1.8/puppet/provider/package/portupgrade.rb
- facter version: 1.6.5

- When a class is defined with:
package { "something/somepkg":
                ensure => "latest",
                provider "portupgrade" }

- If the package is outdated, it is never upgraded, since the parameters
passed to portupgrade do not include the package name.

Steps to Reproduce:
Class included in node file:
--
# = Class: puppet_agent
#
#   - This class ensures puppet client package is the latest version
#
# == Parameters:
#   - None
#
# == Actions:
#   - FreeBSD:
#    - sets up cron job:
#    0 3 * * * root portsnap -I cron update && pkg_version -vIL=
#
#   - uses puppet package ensure => "latest"
#     - sysutils/puppet
#     - sysutils/facter
#
# == Requires:
#   - FreeBSD:
#     - portsnap package
#     - initial configuration of portsnap:
#       - portsnap fetch && portsnap extract
#       - see http://www.freebsdwiki.net/index.php/Portsnap for more
information
#
#     - puppet node file:
#       - include baseline in node file
#
# == Sample Usage:
#
#   - Entry in baseline.pp
#     - puppetdoc ~/gitwork/puppet/manifests/classes/baseline/baseline.pp
#
#   include puppet_agent
#
class puppet_agent
{
    case $operatingsystem
    {
        Ubuntu,Debian:
        {
        }
        FreeBSD:
        {
            cron { "portsnap_cron":
                ensure => "present",
                user => "root",
                hour => "3",
                minute => "0",
                command => "portsnap -I cron update && pkg_version -vIL=" }

            package {"sysutils/puppet": ensure => "latest", provider =>
"portupgrade" }
            package {"sysutils/facter": ensure => "latest", provider =>
"portupgrade" }
        }
        Solaris:
        {
        }
        default,RedHat:
        {
        }
    }
}
--

Expected Results:
- Once the ports tree is updated, and puppet runs,
if the puppet/facter package is outdated, it should be upgraded:
- output from puppet agent -tvd
--
debug: portupgrade.query() - Called on sysutils/facter
debug: Puppet::Type::Package::ProviderPortupgrade: Executing
'/usr/sbin/pkg_info -qO sysutils/facter'
debug: portupgrade.latest() - Latest check called on sysutils/facter
debug: Puppet::Type::Package::ProviderPortupgrade: Executing
'/usr/local/sbin/portversion -v sysutils/facter'
debug: portupgrade.latest() - Installed version needs updating to (1.6.8)
debug: /Stage[main]/Puppet_agent/Package[sysutils/facter]/ensure:
sysutils/facter "1.6.5" is installed, latest is "1.6.8"
debug: portupgrade.update() - called on (sysutils/facter)
debug: Puppet::Type::Package::ProviderPortupgrade: Executing
'/usr/sbin/pkg_info -qO sysutils/facter'
debug: Puppet::Type::Package::ProviderPortupgrade: Executing
'/usr/local/sbin/portupgrade -M BATCH=yes sysutils/facter'
notice: /Stage[main]/Puppet_agent/Package[sysutils/facter]/ensure:
ensure changed '1.6.5' to '1.6.8'
--

Actual Results:
- output from puppet agent -tvd
--
debug: portupgrade.query() - Called on sysutils/facter
debug: Puppet::Type::Package::ProviderPortupgrade: Executing
'/usr/sbin/pkg_info -qO sysutils/facter'
debug: portupgrade.latest() - Latest check called on sysutils/facter
debug: Puppet::Type::Package::ProviderPortupgrade: Executing
'/usr/local/sbin/portversion -v sysutils/facter'
debug: portupgrade.latest() - Installed version needs updating to (1.6.8)
debug: /Stage[main]/Puppet_agent/Package[sysutils/facter]/ensure:
sysutils/facter "1.6.5" is installed, latest is "1.6.8"
debug: portupgrade.update() - called on (sysutils/facter)
debug: Puppet::Type::Package::ProviderPortupgrade: Executing
'/usr/sbin/pkg_info -qO sysutils/facter'
debug: Puppet::Type::Package::ProviderPortupgrade: Executing
'/usr/local/sbin/portupgrade -M BATCH=yes pkg_info:'
notice: /Stage[main]/Puppet_agent/Package[sysutils/facter]/ensure:
ensure changed '1.6.5' to '1.6.8'
--

Regression:

Notes:
/usr/local/lib/ruby/site_ruby/1.8/puppet/provider/package/portupgrade.rb
diff:
--- portupgrade.rb    2012-06-06 13:41:03.000000000 +0200
+++ /root/portupgrade.rb    2012-06-06 13:41:11.000000000 +0200
@@ -228,7 +228,7 @@
 
     if output =~ /^(\S+)/
       # output matches, so upgrade the software
-      cmdline = ["-M BATCH=yes", $1]
+      cmdline = ["-M BATCH=yes", @resource[:name]]
       begin
         output = portupgrade(*cmdline)
       rescue Puppet::ExecutionFailure
----------------------------------------
Bug #14845: portupgrade.rb -> ensure latest issue
https://projects.puppetlabs.com/issues/14845#change-64344

Author: jayendren maduray
Status: Unreviewed
Priority: Normal
Assignee: 
Category: 
Target version: 
Keywords: 
Branch: 
Affected Facter version: 1.6.5


Summary:
- FreeBSD 8.2 host,
- file:
/usr/local/lib/ruby/site_ruby/1.8/puppet/provider/package/portupgrade.rb
- facter version: 1.6.5

- When a class is defined with:
package { "something/somepkg":
                ensure => "latest",
                provider "portupgrade" }

- If the package is outdated, it is never upgraded, since the parameters
passed to portupgrade do not include the package name.

Steps to Reproduce:
Class included in node file:


-- 
You have received this notification because you have either subscribed to it, 
or are involved in it.
To change your notification preferences, please click here: 
http://projects.puppetlabs.com/my/account

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Bugs" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/puppet-bugs?hl=en.

Reply via email to