summaryrefslogtreecommitdiffstats
path: root/lib/puppet
diff options
context:
space:
mode:
Diffstat (limited to 'lib/puppet')
-rwxr-xr-xlib/puppet/type/group.rb3
-rwxr-xr-xlib/puppet/type/nameservice.rb12
-rw-r--r--lib/puppet/type/nameservice/netinfo.rb25
-rwxr-xr-xlib/puppet/type/user.rb2
-rw-r--r--lib/puppet/util.rb6
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