After mulling this a while, I think the real issue is that we're treating ensure as an attribute-set rather than as an attribute. It's a magic feature that semantically sets a whole slew of features. When we say "ensure => present" we really mean "present => true" and so on:
"ensure => absent" means "present => false" "ensure => 3.2" means "present => true; version => 3.2" "ensure => running" means "present => true; running => true" "ensure => eatable" means "present => true; toxic => false; palatable => true" and so on. Then all the special casing is on the two-valued "present" attribute instead of trying to figure out what "ensure => scrumulous" means, we just say that any of the above which set "present => false" also set all other state attributes to undef, while leaving identity attributes (e.g. name, target, provider) unchanged. -- Markus ----------------------------------------------------------- The power of accurate observation is commonly called cynicism by those who have not got it. ~George Bernard Shaw ------------------------------------------------------------ -- You received this message because you are subscribed to the Google Groups "Puppet Developers" 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-dev?hl=en.
