diff options
Diffstat (limited to 'lib/puppet')
-rwxr-xr-x | lib/puppet/type/group.rb | 3 | ||||
-rwxr-xr-x | lib/puppet/type/nameservice.rb | 12 | ||||
-rw-r--r-- | lib/puppet/type/nameservice/netinfo.rb | 25 | ||||
-rwxr-xr-x | lib/puppet/type/user.rb | 2 | ||||
-rw-r--r-- | lib/puppet/util.rb | 6 |
5 files changed, 35 insertions, 13 deletions
diff --git a/lib/puppet/type/group.rb b/lib/puppet/type/group.rb index 8a2301838..05a71119e 100755 --- a/lib/puppet/type/group.rb +++ b/lib/puppet/type/group.rb @@ -58,7 +58,8 @@ module Puppet end if gid == :auto unless self.class.autogen? - gid = autogen + gid = autogen() + @parent.log "autogenerated value as %s" % gid end end end diff --git a/lib/puppet/type/nameservice.rb b/lib/puppet/type/nameservice.rb index 4fccaeb17..5f6d15e62 100755 --- a/lib/puppet/type/nameservice.rb +++ b/lib/puppet/type/nameservice.rb @@ -6,6 +6,11 @@ class Type class << self attr_reader :parentstate, :parentmodule + # Seems a lot like this should be elsewhere, + # but we'd have to have a different parent class for + # netinfo types if that were the case. + attr_accessor :netinfodir + def newstate(*args, &block) s = super(*args, &block) @@ -44,11 +49,14 @@ class State @isautogen = true end + def noautogen + @isautogen = false + end + # Can we autogenerate a value for this field? If a required field # can be autogenerated then we don't require a value. def autogen? - if self.method_defined?(:autogen) or - (defined? @isautogen and @isautogen) + if defined? @isautogen and @isautogen return true else return false diff --git a/lib/puppet/type/nameservice/netinfo.rb b/lib/puppet/type/nameservice/netinfo.rb index f8334c774..e011202ef 100644 --- a/lib/puppet/type/nameservice/netinfo.rb +++ b/lib/puppet/type/nameservice/netinfo.rb @@ -56,22 +56,31 @@ module Puppet # abstract the differents using a simple map where necessary # (the netinfokeymap). class NetInfoState < Puppet::State::NSSState - @netinfokeymap = { - :comment => "realname" - } - - @@allatonce = false - # Similar to posixmethod, what key do we use to get data? Defaults # to being the object name. def self.netinfokey - if @netinfokeymap.include?(self.name) - return @netinfokeymap[self.name] + if defined? @netinfokey + return @netinfokey else return self.name end end + def self.setkey(key) + @netinfokey = key + end + + def self.finish + @allatonce = false + case self.name + when :comment: setkey "realname" + when :uid: + noautogen + when :gid: + noautogen + end + end + # Retrieve the data, yo. def retrieve NetInfo.flush diff --git a/lib/puppet/type/user.rb b/lib/puppet/type/user.rb index fddf64a85..a56e92a6f 100755 --- a/lib/puppet/type/user.rb +++ b/lib/puppet/type/user.rb @@ -182,7 +182,7 @@ module Puppet self.class.states.each { |state| next if @states.include?(state.name) - unless state.autogen? or state.optional? + unless state.autogen? or state.isoptional? if state.method_defined?(:autogen) self[state.name] = :auto else diff --git a/lib/puppet/util.rb b/lib/puppet/util.rb index 87e80b143..650eb484a 100644 --- a/lib/puppet/util.rb +++ b/lib/puppet/util.rb @@ -98,7 +98,11 @@ module Util rescue raise ensure - File.delete(lock) + # I don't really understand how the lock file could disappear, + # but just in case... + if FileTest.exists?(lock) + File.delete(lock) + end end end |