Issue #3186 has been updated by Markus Roberts.

Status changed from Available In Testing Branch to Ready for Checkin
Target version set to 0.25.5

This has been applied in master for Rowlf and needs to go in 0.25.x for 0.25.5.
----------------------------------------
Bug #3186: require not working as expected
http://projects.reductivelabs.com/issues/3186

Author: Dan Bode
Status: Ready for Checkin
Priority: Normal
Assigned to: Brice Figureau
Category: functions
Target version: 0.25.5
Affected version: 0.25.4
Keywords: require order
Branch: http://github.com/masterzen/puppet/tree/tickets/0.25.x/3186


I have an example where require is not correctly specifying a dependency 
between classes.

<pre>
$mysql_old_pw='b'
$mysql_root_pw='p'
$redmine_db='r'
$redmine_db_user='red'
$redmine_db_pw='red'
include redmine::mysql
</pre>

<pre>
class redmine::mysql {
  require mysql::server
  require mysql::ruby
  if ! $redmine_db {
    fail('$redmine_db parameter is required')
  }
  if ! $redmine_db_user {
    fail('$redmine_db_user parameter is required')
  }
  if ! $redmine_db_pw {
    fail('$redmine_db_pw parameter is required')
  }
  database{$redmine_db:
    ensure   => present,
    charset  => 'utf8',
    provider => 'mysql',
  }
  database_user{"${redmine_db_us...@localhost":
    ensure        => present,
    password_hash => mysql_password($redmine_db_pw),
    require       => Database[$redmine_db],
    provider      => 'mysql',
  }
  database_grant{"${redmine_...@localhost/${redmine_db}":
#    privileges => [ 'alter_priv', 'insert_priv', 'select_priv', 'update_priv' 
],
    provider   => 'mysql',
    privileges => all,
  }
}
</pre>

<pre>
class mysql::server {
  # set the mysql root password
  if(! $mysql_root_pw) {
    fail('$mysql_root_pw must be set for class mysql::server')
  }
  package{'mysql-server':
    name   => 'mysql-server',
    ensure => installed,
    notify => Service['mysqld'],
  }
.....
#more code here
</pre>

the require statement should order all of the resources in mysql::server before 
everything in redmine::mysql, but the Database resource is applied before the 
mysql-server package is installed (see output below).

<pre>
r...@ubuntu:/usr/local/dev/modules/infrastructure/modules/redmine/tests# puppet 
mysql.pp --noop
notice: //mysql::ruby/Package[ruby-mysql]/ensure: is absent, should be present 
(noop)
err: //redmine::mysql/Database[redmine]: Failed to retrieve current state of 
resource: Provider mysql is not functional on this platform
notice: //redmine::mysql/database_user[redm...@localhost]: Dependency 
database[redmine] has 1 failures
warning: //redmine::mysql/database_user[redm...@localhost]: Skipping because of 
failed dependencies
notice: //redmine::mysql/database_grant[redm...@localhost/redmine]: Dependency 
database[redmine] has 1 failures
warning: //redmine::mysql/database_grant[redm...@localhost/redmine]: Skipping 
because of failed dependencies
notice: //mysql::server/Package[mysql-server]/ensure: is purged, should be 
present (noop)
notice: //mysql::server/Service[mysqld]/enable: is false, should be true (noop)
notice: //mysql::server/Service[mysqld]: Would have triggered refresh from 1 
dependencies
err: //mysql::server/Exec[set_mysql_rootpw]: Failed to retrieve current state 
of resource: 
notice: //mysql::server/File[/root/.my.cnf]: Dependency exec[mysqladmin -u root 
-pblah password password] has 1 failures
warning: //mysql::server/File[/root/.my.cnf]: Skipping because of failed 
dependencies
notice: //mysql::server/File[/etc/my.cnf]/ensure: is absent, should be file 
(noop)
notice: //mysql::server/Service[mysqld-restart]: Dependency exec[mysqladmin -u 
root -pblah password password] has 1 failures
warning: //mysql::server/Service[mysqld-restart]: Skipping because of failed 
dependencies
notice: //mysql::server/Service[mysqld-restart]: Would have triggered refresh 
from 1 dependencies
</pre>

I can work around by specifying require=>Class['mysql::server'] for the 
resources that care about order, but I would rather use require.


-- 
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://reductivelabs.com/redmine/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