Issue #1674 has been updated by rgsteele.

Below are the classes and definitions used to reproduce this problem.  And, 
according to the TypeReference, arrays are only needed when specifying multiple 
groups (

# Class which realizes the user
class dev_userconf {
   realize( Group["alpha"], Group["tango"], Group["charlie"], Group["bravo"] )
   realize( User_account["foo"] )
}

# Class which passes some user attributes to the user_accts
# virtual define.  Start out with this, then after the client
# runs once, change the 'groups' to: ["charlie", "bravo"], or
# even just ["bravo"] - any array will throw an exception.
class user_accts {
   @user_account { "foo":
         comment => "Foo Bar",
         type    => "dev",
         groups  => "bravo"; 
   }
}

# The virtual definition
define user_account ( ensure = present, type, comment, shell = false, groups = 
false ) {

   # Define the appropriate shell and supplementary groups
   case $type {
      dev: {
         $supp_groups = $groups ? {
            false   => ["alpha", "tango"],
            default => ["alpha", "tango", $groups]
         }
         $user_shell = $shell ? {
            false   => "/bin/bash",
            default => $shell
         }
      }
      nondev: {
         $supp_groups = $groups ? {
            false   => "charlie",
            default => ["charlie", $groups]
         }
         $user_shell = "/sbin/nologin"
      }
   }

   user { $name:
      ensure  => $ensure,
      groups  => $supp_groups,
      comment => $comment,
      shell   => $user_shell,
   }
}

Also worth noting is even if you start out with an array for the 'groups' 
attribute, if you ever switch to using a single string, you can never switch 
back.
----------------------------------------
Bug #1674: Puppet compares string to array if 'groups' attribute of user type 
is changed accordingly.
http://projects.reductivelabs.com/issues/show/1674

Author: rgsteele
Status: Accepted
Priority: High
Assigned to: andrew
Category: user
Target version: 
Complexity: Unknown
Affected version: 0.24.5
Keywords: 


If the 'groups' attribute for a user is first stored as a string, but then 
later changed to an array, Puppet throws an exception and complains that it 
can't compare a string to an array.  Here's a trace:

/usr/lib/ruby/1.8/puppet/type/user.rb:192:in `sort'
/usr/lib/ruby/1.8/puppet/type/user.rb:192:in `should'
/usr/lib/ruby/1.8/puppet/type/user.rb:320
/usr/lib/ruby/1.8/puppet/metatype/relationships.rb:27:in `instance_eval'
/usr/lib/ruby/1.8/puppet/metatype/relationships.rb:27:in `autorequire'
/usr/lib/ruby/1.8/puppet/metatype/relationships.rb:14:in `eachautorequire'
/usr/lib/ruby/1.8/puppet/metatype/relationships.rb:13:in `each'
/usr/lib/ruby/1.8/puppet/metatype/relationships.rb:13:in `eachautorequire'
/usr/lib/ruby/1.8/puppet/metatype/relationships.rb:22: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/network/client/master.rb:255:in `run'
/usr/lib/ruby/1.8/puppet/util.rb:212:in `benchmark'
/usr/lib/ruby/1.8/benchmark.rb:293:in `measure'
/usr/lib/ruby/1.8/benchmark.rb:307:in `realtime'
/usr/lib/ruby/1.8/puppet/util.rb:211:in `benchmark'
/usr/lib/ruby/1.8/puppet/network/client/master.rb:254:in `run'
/usr/lib/ruby/1.8/sync.rb:230:in `synchronize'
/usr/lib/ruby/1.8/puppet/network/client/master.rb:236:in `run'
/usr/sbin/puppetd:417
err: Got an uncaught exception of type ArgumentError: comparison of String with 
Array failed
debug: Storing state
debug: Stored state in 0.04 seconds
notice: Finished catalog run in 0.18 seconds


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