Bug #1639

uninitialized constant Puppet::Type::User::ProviderUseradd

Added by Bart Cortooms over 3 years ago. Updated over 3 years ago.

Status:Closed Start date:10/08/2008
Priority:Normal Due date:
Assignee:- % Done:

0%

Category:user
Target version:0.24.6
Affected Puppet version: Branch:
Keywords:
Votes: 0

Description

With a recent git checkout of Puppet 0.24.6 from git://github.com/jamtur01/puppet.git (up to commit 80e5c111fd2d227ef076fd0409213f30af13bc56), I’m getting the following error message. This does not seem to happen on all nodes, but I’m not sure what’s different for this node.

$ sudo puppetd --no-daemonize --no-splay --onetime --logdest console --debug --trace
info: Loading fact debian
info: Loading fact backupsshkey
info: Loading fact xen
info: Loading fact perc
info: Loading fact drbd
debug: Creating default schedules
debug: Failed to load library 'ldap' for feature 'ldap'
/usr/lib/ruby/1.8/puppet/provider/user/user_role_add.rb:3
/usr/lib/ruby/1.8/puppet/util/autoload.rb:116:in `require'
/usr/lib/ruby/1.8/puppet/util/autoload.rb:116:in `loadall'
/usr/lib/ruby/1.8/puppet/util/autoload.rb:112:in `each'
/usr/lib/ruby/1.8/puppet/util/autoload.rb:112:in `loadall'
/usr/lib/ruby/1.8/puppet/util/autoload.rb:132:in `eachdir'
/usr/lib/ruby/1.8/puppet/util/autoload.rb:130:in `each'
/usr/lib/ruby/1.8/puppet/util/autoload.rb:130:in `eachdir'
/usr/lib/ruby/1.8/puppet/util/autoload.rb:111:in `loadall'
/usr/lib/ruby/1.8/puppet/metatype/manager.rb:93:in `newtype'
/usr/lib/ruby/1.8/puppet.rb:373:in `newtype'
/usr/lib/ruby/1.8/puppet/type/user.rb:6
/usr/lib/ruby/1.8/puppet/util/autoload.rb:77:in `load'
/usr/lib/ruby/1.8/puppet/util/autoload.rb:77:in `load'
/usr/lib/ruby/1.8/puppet/util/autoload.rb:132:in `eachdir'
/usr/lib/ruby/1.8/puppet/util/autoload.rb:130:in `each'
/usr/lib/ruby/1.8/puppet/util/autoload.rb:130:in `eachdir'
/usr/lib/ruby/1.8/puppet/util/autoload.rb:73:in `load'
/usr/lib/ruby/1.8/puppet/metatype/manager.rb:119:in `type'
/usr/lib/ruby/1.8/puppet.rb:378:in `type'
/usr/lib/ruby/1.8/puppet/type.rb:1971:in `autorequire'
/usr/lib/ruby/1.8/puppet/type.rb:1961:in `eachautorequire'
/usr/lib/ruby/1.8/puppet/type.rb:1960:in `each'
/usr/lib/ruby/1.8/puppet/type.rb:1960:in `eachautorequire'
/usr/lib/ruby/1.8/puppet/type.rb:1969:in `autorequire'
/usr/lib/ruby/1.8/puppet/node/catalog.rb:346:in `relationship_graph'
/usr/lib/ruby/1.8/puppet/node/catalog.rb:345:in `each'
/usr/lib/ruby/1.8/puppet/node/catalog.rb:345:in `relationship_graph'
/usr/lib/ruby/1.8/puppet/transaction.rb:515:in `relationship_graph'
/usr/lib/ruby/1.8/puppet/transaction.rb:511:in `prepare'
/usr/lib/ruby/1.8/puppet/transaction.rb:300:in `evaluate'
/usr/lib/ruby/1.8/puppet/node/catalog.rb:124:in `apply'
/usr/lib/ruby/1.8/puppet/util/settings.rb:731:in `use'
/usr/lib/ruby/1.8/sync.rb:229:in `synchronize'
/usr/lib/ruby/1.8/puppet/util/settings.rb:711:in `use'
/usr/lib/ruby/1.8/puppet/network/client/master.rb:197:in `initialize'
/usr/sbin/puppetd:328:in `new'
/usr/sbin/puppetd:328
Could not autoload "/usr/lib/ruby/1.8/puppet/provider/user/user_role_add.rb": uninitialized constant Puppet::Type::User::ProviderUseradd

0001-change-parent-of-user_role_add-to-useradd-symbol-in.patch - Change the parent from the full class to the symbol to force autoloading (1.1 kB) Andrew Shafer, 10/08/2008 05:25 pm

History

Updated by Luke Kanies over 3 years ago

  • Status changed from Unreviewed to Needs More Information
  • Target version set to 0.24.6

What platform is this?

Updated by Bart Cortooms over 3 years ago

luke wrote:

What platform is this?

Sorry, should have thought of adding that to the description. This is on Debian Linux (4.0).

I’ve tested the same Puppet version on two other Debian nodes, and they don’t show the error. All nodes I tested have the ruby libraries as below.

$ dpkg -l | grep ruby
ii  libopenssl-ruby                  1.0.0+ruby1.8.2-1                    OpenSSL interface for Ruby
ii  libopenssl-ruby1.8               1.8.5-4etch2                         OpenSSL interface for Ruby 1.8
ii  libruby1.8                       1.8.5-4etch2                         Libraries necessary to run Ruby 1.8
ii  libshadow-ruby1.8                1.4.1-7                              Interface of shadow password for Ruby 1.8
ii  libxmlrpc-ruby                   1.8.2-1                              XML-RPC support for Ruby
ii  ruby                             1.8.2-1                              An interpreter of object-oriented scripting 
ii  ruby1.8                          1.8.5-4etch2                         Interpreter of object-oriented scripting lan

The two other nodes do have different manifests, but it doesn’t seem to be related to the manifest, since I’m also getting it with a simple test run with ‘puppet’ on the node which shows the problem:

$ cat test.pp 
#!/usr/bin/env puppet

file { "/tmp/test":
    ensure => present,
}
$  ./test.pp 
/dev/mem: Permission denied
Could not autoload "/usr/lib/ruby/1.8/puppet/provider/user/user_role_add.rb": uninitialized constant Puppet::Type::User::ProviderUseradd

Any tips for debugging this? E.g. strategic places where I could add some print statements?

Updated by Andrew Shafer over 3 years ago

I believe this is a problem with ordering in the autoloader.

Try the attached patch and let me know if that fixes the problem.

Updated by Bart Cortooms over 3 years ago

andrew wrote:

Try the attached patch and let me know if that fixes the problem.

It does, that fixes it. Many thanks!

Updated by James Turnbull over 3 years ago

  • Status changed from Needs More Information to Closed

Pushed in commit:2b4aa0c442f40125526cf2a19c15af4908684388 in branch 0.24.x

Also available in: Atom PDF