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.