Issue #16883 has been updated by Banio Carpenter.

Sorry. I did indeed leave off the .pp extension.


It's been a while, and I don't have the above setup anymore.  But the problem 
is still happening with many modules that use inheritance, including modules 
written by puppetlabs.  Perhaps it will be easier to reproduce using the 
puppetlabs mysql module I am currently using taken from here: 
https://github.com/puppetlabs/puppetlabs-mysql

puppetmaster profile:
    CentOS 6.3
    Arch: 64bit
    # puppet --version
    3.0.1
    # ruby --version
    ruby 1.8.7 (2011-06-30 patchlevel 352) [x86_64-linux]
    # facter --version
    1.6.13

puppet client profile:
    CentOS 6.3
    Arch: 64bit
    # puppet --version
    3.0.1
    # ruby --version 
    ruby 1.8.7 (2011-06-30 patchlevel 352) [x86_64-linux]
    [root@dbstg1-s1 cw]# facter --version
    1.6.14


Here is the error from the puppet client:

    Error: Could not retrieve catalog from remote server: Error 400 on SERVER: 
Could not find parent resource type 'mysql::params' of type hostclass in 
production at /etc/puppet/modules/mysql/manifests/server.pp:17 on node 
dbstg1-s1.mydomain.com

Here is the trace from puppetmaster:

    Fri Nov 09 10:09:29 -0700 2012 Puppet (err): Could not find parent resource 
type 'mysql::params' of type hostclass in production at 
/etc/puppet/modules/mysql/manifests/server.pp:17 on node dbstg1-s1.mydomain.com
    /usr/lib/ruby/site_ruby/1.8/puppet/util/errors.rb:60:in `fail'
    /usr/lib/ruby/site_ruby/1.8/puppet/resource/type.rb:284:in `parent_type'
    /usr/lib/ruby/site_ruby/1.8/puppet/resource/type.rb:232:in 
`instantiate_resource'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/resource.rb:57:in `evaluate'
    /usr/lib/ruby/site_ruby/1.8/puppet/util/errors.rb:35:in `exceptwrap'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/resource.rb:43:in `evaluate'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/resource.rb:42:in `collect'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/resource.rb:42:in `evaluate'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/lexer.rb:171:in `collect'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/branch.rb:16:in `each'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/branch.rb:15:in `each'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/resource.rb:25:in `collect'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/resource.rb:25:in `evaluate'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast.rb:62:in `safeevaluate'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/relationship.rb:13:in 
`evaluate'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast.rb:62:in `safeevaluate'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/relationship.rb:13:in 
`evaluate'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast.rb:62:in `safeevaluate'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/relationship.rb:13:in 
`evaluate'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast.rb:62:in `safeevaluate'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/relationship.rb:13:in 
`evaluate'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast.rb:62:in `safeevaluate'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/relationship.rb:13:in 
`evaluate'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast.rb:62:in `safeevaluate'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/relationship.rb:13:in 
`evaluate'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast.rb:62:in `safeevaluate'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/astarray.rb:25:in `evaluate'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/astarray.rb:20:in `each'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/astarray.rb:20:in `evaluate'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast.rb:62:in `safeevaluate'
    /usr/lib/ruby/site_ruby/1.8/puppet/resource/type.rb:136:in `evaluate_code'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/resource.rb:81:in `evaluate'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/compiler.rb:165:in 
`evaluate_classes'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/compiler.rb:150:in `each'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/compiler.rb:150:in 
`evaluate_classes'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/resource.rb:60:in `evaluate'
    /usr/lib/ruby/site_ruby/1.8/puppet/util/errors.rb:35:in `exceptwrap'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/resource.rb:43:in `evaluate'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/resource.rb:42:in `collect'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/resource.rb:42:in `evaluate'
    /usr/lib/ruby/1.8/erb.rb:716:in `collect'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/branch.rb:16:in `each'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/branch.rb:15:in `each'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/resource.rb:25:in `collect'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/resource.rb:25:in `evaluate'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast.rb:62:in `safeevaluate'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/relationship.rb:14:in 
`evaluate'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast.rb:62:in `safeevaluate'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/relationship.rb:13:in 
`evaluate'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast.rb:62:in `safeevaluate'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/relationship.rb:13:in 
`evaluate'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast.rb:62:in `safeevaluate'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/relationship.rb:13:in 
`evaluate'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast.rb:62:in `safeevaluate'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/relationship.rb:13:in 
`evaluate'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast.rb:62:in `safeevaluate'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/astarray.rb:25:in `evaluate'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/astarray.rb:20:in `each'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/astarray.rb:20:in `evaluate'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast.rb:62:in `safeevaluate'
    /usr/lib/ruby/site_ruby/1.8/puppet/resource/type.rb:136:in `evaluate_code'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/resource.rb:81:in `evaluate'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/compiler.rb:165:in 
`evaluate_classes'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/compiler.rb:150:in `each'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/compiler.rb:150:in 
`evaluate_classes'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/resource.rb:60:in `evaluate'
    /usr/lib/ruby/site_ruby/1.8/puppet/util/errors.rb:35:in `exceptwrap'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/resource.rb:43:in `evaluate'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/resource.rb:42:in `collect'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/resource.rb:42:in `evaluate'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/lexer.rb:171:in `collect'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/branch.rb:16:in `each'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/branch.rb:15:in `each'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/resource.rb:25:in `collect'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/resource.rb:25:in `evaluate'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast.rb:62:in `safeevaluate'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/astarray.rb:25:in `evaluate'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/astarray.rb:20:in `each'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast/astarray.rb:20:in `evaluate'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/ast.rb:62:in `safeevaluate'
    /usr/lib/ruby/site_ruby/1.8/puppet/resource/type.rb:136:in `evaluate_code'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/resource.rb:81:in `evaluate'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/compiler.rb:219:in 
`evaluate_ast_node'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/compiler.rb:98:in `compile'
    /usr/lib/ruby/site_ruby/1.8/puppet/parser/compiler.rb:29:in `compile'
    /usr/lib/ruby/site_ruby/1.8/puppet/indirector/catalog/compiler.rb:77:in 
`compile'
    /usr/lib/ruby/site_ruby/1.8/puppet/util.rb:179:in `benchmark'
    /usr/lib/ruby/1.8/benchmark.rb:308:in `realtime'
    /usr/lib/ruby/site_ruby/1.8/puppet/util.rb:178:in `benchmark'
    /usr/lib/ruby/site_ruby/1.8/puppet/indirector/catalog/compiler.rb:75:in 
`compile'
    /usr/lib/ruby/site_ruby/1.8/puppet/indirector/catalog/compiler.rb:35:in 
`find'
    /usr/lib/ruby/site_ruby/1.8/puppet/indirector/indirection.rb:191:in `find'
    /usr/lib/ruby/site_ruby/1.8/puppet/network/http/handler.rb:108:in `do_find'
    /usr/lib/ruby/site_ruby/1.8/puppet/network/http/handler.rb:71:in `send'
    /usr/lib/ruby/site_ruby/1.8/puppet/network/http/handler.rb:71:in `process'
    /usr/lib/ruby/site_ruby/1.8/puppet/network/http/webrick/rest.rb:24:in 
`service'
    /usr/lib/ruby/1.8/webrick/httpserver.rb:104:in `service'
    /usr/lib/ruby/1.8/webrick/httpserver.rb:65:in `run'
    /usr/lib/ruby/site_ruby/1.8/puppet/network/http/webrick.rb:33:in `listen'
    /usr/lib/ruby/1.8/webrick/server.rb:173:in `call'
    /usr/lib/ruby/1.8/webrick/server.rb:173:in `start_thread'
    /usr/lib/ruby/1.8/webrick/server.rb:162:in `start'
    /usr/lib/ruby/1.8/webrick/server.rb:162:in `start_thread'
    /usr/lib/ruby/1.8/webrick/server.rb:95:in `start'
    /usr/lib/ruby/1.8/webrick/server.rb:92:in `each'
    /usr/lib/ruby/1.8/webrick/server.rb:92:in `start'
    /usr/lib/ruby/1.8/webrick/server.rb:23:in `start'
    /usr/lib/ruby/1.8/webrick/server.rb:82:in `start'
    /usr/lib/ruby/site_ruby/1.8/puppet/network/http/webrick.rb:30:in `listen'
    /usr/lib/ruby/site_ruby/1.8/puppet/network/http/webrick.rb:29:in 
`initialize'
    /usr/lib/ruby/site_ruby/1.8/puppet/network/http/webrick.rb:29:in `new'
    /usr/lib/ruby/site_ruby/1.8/puppet/network/http/webrick.rb:29:in `listen'
    /usr/lib/ruby/site_ruby/1.8/puppet/network/http/webrick.rb:26:in 
`synchronize'
    /usr/lib/ruby/site_ruby/1.8/puppet/network/http/webrick.rb:26:in `listen'
    /usr/lib/ruby/site_ruby/1.8/puppet/network/server.rb:92:in `listen'
    /usr/lib/ruby/site_ruby/1.8/puppet/network/server.rb:104:in `start'
    /usr/lib/ruby/site_ruby/1.8/puppet/daemon.rb:136:in `start'
    /usr/lib/ruby/site_ruby/1.8/puppet/application/master.rb:199:in `main'
    /usr/lib/ruby/site_ruby/1.8/puppet/application/master.rb:148:in 
`run_command'
    /usr/lib/ruby/site_ruby/1.8/puppet/application.rb:346:in `run'
    /usr/lib/ruby/site_ruby/1.8/puppet/application.rb:438:in `plugin_hook'
    /usr/lib/ruby/site_ruby/1.8/puppet/application.rb:346:in `run'
    /usr/lib/ruby/site_ruby/1.8/puppet/util.rb:500:in `exit_on_fail'
    /usr/lib/ruby/site_ruby/1.8/puppet/application.rb:346:in `run'
    /usr/lib/ruby/site_ruby/1.8/puppet/util/command_line.rb:87:in `execute'
    /usr/bin/puppet:4

Here is /etc/puppet/modules/mysql/manifests/server.pp:

    # Class: mysql::server
    #
    # manages the installation of the mysql server.  manages the package, 
service,
    # my.cnf
    #
    # Parameters:
    #   [*package_name*] - name of package
    #   [*service_name*] - name of service
    #   [*config_hash*]  - hash of config parameters that need to be set.
    #
    # Actions:
    #
    # Requires:
    #
    # Sample Usage:
    #
    class mysql::server (
    $package_name     = $mysql::params::server_package_name,
    $package_ensure   = 'present',
    $service_name     = $mysql::params::service_name,
    $service_provider = $mysql::params::service_provider,
    $config_hash      = {},
    $enabled          = true,
    $manage_service   = true
    ) inherits mysql::params {
    Class['mysql::server'] -> Class['mysql::config']
    $config_class = { 'mysql::config' => $config_hash }
    create_resources( 'class', $config_class )
    package { 'mysql-server':
    ensure => $package_ensure,
    name   => $package_name,
    }
    if $enabled {
    $service_ensure = 'running'
    } else {
    $service_ensure = 'stopped'
    }
    if $manage_service {
    service { 'mysqld':
    ensure   => $service_ensure,
    name     => $service_name,
    enable   => $enabled,
    require  => Package['mysql-server'],
    provider => $service_provider,
    }
    }
    }




Here is /etc/puppet/modules/mysql/manifests/params.pp:

    # Class: mysql::params
    #
    #   The mysql configuration settings.
    #
    # Parameters:
    #
    # Actions:
    #
    # Requires:
    #
    # Sample Usage:
    #
    class mysql::params {
    $bind_address        = '127.0.0.1'
    $port                = 3306
    $etc_root_password   = false
    $ssl                 = false
    $restart             = true
    case $::operatingsystem {
    'Ubuntu': {
    $service_provider = upstart
    }
    default: {
    $service_provider = undef
    }
    }
    case $::osfamily {
    'RedHat': {
    $basedir               = '/usr'
    #      $datadir               = '/var/lib/mysql'
    # our mysql dir
    $datadir               = '/mnt/mysql'
    $service_name          = 'mysqld'
    $client_package_name   = 'mysql'
    $server_package_name   = 'mysql-server'
    # our mysql dir
    $socket                = '/var/lib/mysql/mysql.sock'
    #      $socket                = '/mnt/mysql/mysql.sock'
    $pidfile               = '/var/run/mysqld/mysqld.pid'
    $config_file           = '/etc/my.cnf'
    $log_error             = '/var/log/mysqld.log'
    $ruby_package_name     = 'ruby-mysql'
    $ruby_package_provider = 'gem'
    $python_package_name   = 'MySQL-python'
    $java_package_name     = 'mysql-connector-java'
    $root_group            = 'root'
    $ssl_ca                = '/etc/mysql/cacert.pem'
    $ssl_cert              = '/etc/mysql/server-cert.pem'
    $ssl_key               = '/etc/mysql/server-key.pem'
    }
    'Debian': {
    $basedir              = '/usr'
    $datadir              = '/var/lib/mysql'
    $service_name         = 'mysql'
    $client_package_name  = 'mysql-client'
    $server_package_name  = 'mysql-server'
    $socket               = '/var/run/mysqld/mysqld.sock'
    $pidfile              = '/var/run/mysqld/mysqld.pid'
    $config_file          = '/etc/mysql/my.cnf'
    $log_error            = '/var/log/mysql/error.log'
    $ruby_package_name    = 'libmysql-ruby'
    $python_package_name  = 'python-mysqldb'
    $java_package_name    = 'libmysql-java'
    $root_group           = 'root'
    $ssl_ca               = '/etc/mysql/cacert.pem'
    $ssl_cert             = '/etc/mysql/server-cert.pem'
    $ssl_key              = '/etc/mysql/server-key.pem'
    }
    'FreeBSD': {
    $basedir               = '/usr/local'
    $datadir               = '/var/db/mysql'
    $service_name          = 'mysql-server'
    $client_package_name   = 'databases/mysql55-client'
    $server_package_name   = 'databases/mysql55-server'
    $socket                = '/tmp/mysql.sock'
    $pidfile               = '/var/db/mysql/mysql.pid'
    $config_file           = '/var/db/mysql/my.cnf'
    $log_error             = "/var/db/mysql/${::hostname}.err"
    $ruby_package_name     = 'ruby-mysql'
    $ruby_package_provider = 'gem'
    $python_package_name   = 'databases/py-MySQLdb'
    $java_package_name     = 'databases/mysql-connector-java'
    $root_group            = 'wheel'
    $ssl_ca                = undef
    $ssl_cert              = undef
    $ssl_key               = undef
    }
    default: {
    case $::operatingsystem {
    'Amazon': {
    $basedir               = '/usr'
    $datadir               = '/var/lib/mysql'
    $service_name          = 'mysqld'
    $client_package_name   = 'mysql'
    $server_package_name   = 'mysql-server'
    $socket                = '/var/lib/mysql/mysql.sock'
    $config_file           = '/etc/my.cnf'
    $log_error             = '/var/log/mysqld.log'
    $ruby_package_name     = 'ruby-mysql'
    $ruby_package_provider = 'gem'
    $python_package_name   = 'MySQL-python'
    $java_package_name     = 'mysql-connector-java'
    $root_group            = 'root'
    $ssl_ca                = '/etc/mysql/cacert.pem'
    $ssl_cert              = '/etc/mysql/server-cert.pem'
    $ssl_key               = '/etc/mysql/server-key.pem'
    }
    default: {
    fail("Unsupported osfamily: ${::osfamily} operatingsystem: 
${::operatingsystem}, module ${module_name} only support osfamily RedHat, 
Debian, and FreeBSD, or operatingsystem Amazon")
    }
    }
    }
    }
    }

----------------------------------------
Bug #16883: Inheritence seems to not be working puppet 3.0 intermittent error
https://projects.puppetlabs.com/issues/16883#change-76130

Author: Banio Carpenter
Status: Needs More Information
Priority: Normal
Assignee: Banio Carpenter
Category: 
Target version: 
Affected Puppet version: 
Keywords: 
Branch: 


All servers running Centos 6.3

puppet master:

    # puppet --version
    3.0.0
    # ruby --version
    ruby 1.8.7 (2011-06-30 patchlevel 352) [x86_64-linux]
    # facter --version
    1.6.12
    

puppet client:

    # puppet --version
    3.0.0
    # ruby --version
    ruby 1.8.7 (2012-06-29 patchlevel 370) [i386-linux]
    # facter --version
    1.6.12

This is the server class:

    class admin::test {
    class { 'base::standard': } ->
    class { 'users::standard_groups': } ->
    class { 'users::admins': } ->
    class { 'sudoers::standard': } ->
    class { 'users::root': } ->
    class { 'admin::scripts2': } ->
    class { 'admin::usrlocalbin': } ->
    class { 'admin::backendstgcron': }
    }

Here is the problematic class that uses inheritence 
(/etc/puppet/modules/admins/manifests/scripts2):

    class admin::scripts2 inherits admin::scripts {
    File['/tmp/scripts'] { source => 
"puppet:///modules/admin/auxiliary/scripts-backend1_15", }
    }



class the class it inherits from (/etc/puppet/modules/admins/manifests/scripts):

    class admin::scripts {
    file { "/tmp/scripts":
    ensure => directory,
    recurse => true,
    purge => true,
    force => true,
    owner => "root",
    group => "root",
    source => "puppet:///modules/admin/auxiliary/scripts-backend",
    }
    }


Her is the error that sometimes happens:

    Error: Could not retrieve catalog from remote server: Error 400 on SERVER: 
Could not find parent resource type 'admins::scripts' of type hostclass in 
production at /etc/puppet/modules/admins/manifests/scripts2.pp:1 on node 
admtest2.mydomain.com



This error only occurs sometimes. If i run puppet agent -t on the puppet client 
it never happens.

The file /etc/puppet/modules/admins/manifests/scripts is indeed there.


-- 
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