summaryrefslogtreecommitdiffstats
path: root/lib/puppet
diff options
context:
space:
mode:
authorNigel Kersten <nigelk@google.com>2009-07-13 16:18:51 -0700
committerNigel Kersten <nigelk@google.com>2009-07-14 07:54:15 -0700
commita42e8788b1fde5273ba1e34f6d90c451394849b8 (patch)
tree5145273a5bba4a3bf070c95417e2c334db4fbe25 /lib/puppet
parent22f56327e74a1201cf25d82e980b2500057d698e (diff)
downloadpuppet-a42e8788b1fde5273ba1e34f6d90c451394849b8.tar.gz
puppet-a42e8788b1fde5273ba1e34f6d90c451394849b8.tar.xz
puppet-a42e8788b1fde5273ba1e34f6d90c451394849b8.zip
deprecate NetInfo providers and examples, remove all NetInfo references and tests.
Diffstat (limited to 'lib/puppet')
-rw-r--r--lib/puppet/provider/group/netinfo.rb15
-rw-r--r--lib/puppet/provider/host/netinfo.rb19
-rw-r--r--lib/puppet/provider/mount/netinfo.rb37
-rw-r--r--lib/puppet/provider/nameservice.rb2
-rw-r--r--lib/puppet/provider/nameservice/directoryservice.rb22
-rw-r--r--lib/puppet/provider/nameservice/netinfo.rb224
-rw-r--r--lib/puppet/provider/user/directoryservice.rb19
-rw-r--r--lib/puppet/provider/user/netinfo.rb111
-rwxr-xr-xlib/puppet/type/host.rb2
-rwxr-xr-xlib/puppet/type/mailalias.rb2
-rwxr-xr-xlib/puppet/type/mount.rb2
-rwxr-xr-xlib/puppet/type/port.rb2
12 files changed, 10 insertions, 447 deletions
diff --git a/lib/puppet/provider/group/netinfo.rb b/lib/puppet/provider/group/netinfo.rb
deleted file mode 100644
index 8402e38bb..000000000
--- a/lib/puppet/provider/group/netinfo.rb
+++ /dev/null
@@ -1,15 +0,0 @@
-# Manage NetInfo POSIX objects.
-#
-# This provider has been deprecated. You should be using the directoryservice
-# nameservice provider instead.
-
-require 'puppet/provider/nameservice/netinfo'
-
-Puppet::Type.type(:group).provide :netinfo, :parent => Puppet::Provider::NameService::NetInfo do
- desc "Group management using NetInfo.
-
- "
- commands :nireport => "nireport", :niutil => "niutil"
-
-end
-
diff --git a/lib/puppet/provider/host/netinfo.rb b/lib/puppet/provider/host/netinfo.rb
deleted file mode 100644
index 534b06a8e..000000000
--- a/lib/puppet/provider/host/netinfo.rb
+++ /dev/null
@@ -1,19 +0,0 @@
-# Manage NetInfo POSIX objects. Probably only used on OS X, but I suppose
-# it could be used elsewhere.
-require 'puppet/provider/nameservice/netinfo'
-
-Puppet::Type.type(:host).provide :netinfo, :parent => Puppet::Provider::NameService::NetInfo,
- :netinfodir => "machines" do
- desc "Host management in NetInfo.
-
- This provider is highly experimental and is known not to work currently.
-
- "
- commands :nireport => "nireport", :niutil => "niutil"
- commands :mountcmd => "mount", :umount => "umount", :df => "df"
-
- options :ip, :key => "ip_address"
-
- defaultfor :operatingsystem => :darwin
-end
-
diff --git a/lib/puppet/provider/mount/netinfo.rb b/lib/puppet/provider/mount/netinfo.rb
deleted file mode 100644
index 1cc6c4476..000000000
--- a/lib/puppet/provider/mount/netinfo.rb
+++ /dev/null
@@ -1,37 +0,0 @@
-# Manage NetInfo POSIX objects. Probably only used on OS X, but I suppose
-# it could be used elsewhere.
-require 'puppet/provider/nameservice/netinfo'
-require 'puppet/provider/mount'
-
-# Puppet::Type.type(:mount).provide :netinfo, :parent => Puppet::Provider::NameService::NetInfo do
-# include Puppet::Provider::Mount
-# desc "Mount management in NetInfo. This provider is highly experimental and is known
-# not to work currently."
-# commands :nireport => "nireport", :niutil => "niutil"
-# commands :mountcmd => "mount", :umount => "umount", :df => "df"
-#
-# options :device, :key => "name"
-# options :name, :key => "dir"
-# options :dump, :key => "dump_freq"
-# options :pass, :key => "passno"
-# options :fstype, :key => "vfstype"
-# options :options, :key => "opts"
-#
-# defaultfor :operatingsystem => :darwin
-#
-# def initialize(resource)
-# warning "The NetInfo mount provider is highly experimental. Use at your own risk."
-# super
-# end
-#
-# def mount
-# cmd = []
-# if opts = @resource.should(:options)
-# cmd << opts
-# end
-# cmd << @resource.should(:device)
-# cmd << @resource[:name]
-# mountcmd cmd
-# end
-# end
-
diff --git a/lib/puppet/provider/nameservice.rb b/lib/puppet/provider/nameservice.rb
index d7c54c1fc..cc517ee5f 100644
--- a/lib/puppet/provider/nameservice.rb
+++ b/lib/puppet/provider/nameservice.rb
@@ -130,7 +130,7 @@ class Puppet::Provider::NameService < Puppet::Provider
end
# Autogenerate a value. Mostly used for uid/gid, but also used heavily
- # with netinfo, because netinfo is stupid.
+ # with DirectoryServices, because DirectoryServices is stupid.
def autogen(field)
field = symbolize(field)
id_generators = {:user => :uid, :group => :gid}
diff --git a/lib/puppet/provider/nameservice/directoryservice.rb b/lib/puppet/provider/nameservice/directoryservice.rb
index be0c2972c..9daed1779 100644
--- a/lib/puppet/provider/nameservice/directoryservice.rb
+++ b/lib/puppet/provider/nameservice/directoryservice.rb
@@ -30,14 +30,6 @@ class DirectoryService < Puppet::Provider::NameService
attr_writer :macosx_version_major
end
-
- # JJM 2007-07-24: Not yet sure what initvars() does. I saw it in netinfo.rb
- # I do know, however, that it makes methods "work" =)
- # e.g. addcmd isn't available if this method call isn't present.
- #
- # JJM: Also, where this method is defined seems to impact the visibility
- # of methods. If I put initvars after commands, confine and defaultfor,
- # then getinfo is called from the parent class, not this class.
initvars()
commands :dscl => "/usr/bin/dscl"
@@ -333,10 +325,9 @@ class DirectoryService < Puppet::Provider::NameService
def ensure=(ensure_value)
super
- # JJM: Modeled after nameservice/netinfo.rb, we need to
- # loop over all valid properties for the type we're managing
- # and call the method which sets that property value
- # Like netinfo, dscl can't create everything at once, afaik.
+ # We need to loop over all valid properties for the type we're
+ # managing and call the method which sets that property value
+ # dscl can't create everything at once unfortunately.
if ensure_value == :present
@resource.class.validproperties.each do |name|
next if name == :ensure
@@ -491,12 +482,7 @@ class DirectoryService < Puppet::Provider::NameService
def getinfo(refresh = false)
# JJM 2007-07-24:
# Override the getinfo method, which is also defined in nameservice.rb
- # This method returns and sets @infohash, which looks like:
- # (NetInfo provider, user type...)
- # @infohash = {:comment=>"Jeff McCune", :home=>"/Users/mccune",
- # :shell=>"/bin/zsh", :password=>"********", :uid=>502, :gid=>502,
- # :name=>"mccune"}
- #
+ # This method returns and sets @infohash
# I'm not re-factoring the name "getinfo" because this method will be
# most likely called by nameservice.rb, which I didn't write.
if refresh or (! defined?(@property_value_cache_hash) or ! @property_value_cache_hash)
diff --git a/lib/puppet/provider/nameservice/netinfo.rb b/lib/puppet/provider/nameservice/netinfo.rb
deleted file mode 100644
index ec79f1980..000000000
--- a/lib/puppet/provider/nameservice/netinfo.rb
+++ /dev/null
@@ -1,224 +0,0 @@
-# Manage NetInfo POSIX objects.
-#
-# This provider has been deprecated. You should be using the directoryservice
-# nameservice provider instead.
-
-require 'puppet'
-require 'puppet/provider/nameservice'
-
-class Puppet::Provider::NameService
-class NetInfo < Puppet::Provider::NameService
- class << self
- attr_writer :netinfodir
- end
-
- # We have to initialize manually because we're not using
- # classgen() here.
- initvars()
-
- commands :lookupd => "/usr/sbin/lookupd"
-
- # Attempt to flush the database, but this doesn't seem to work at all.
- def self.flush
- begin
- lookupd "-flushcache"
- rescue Puppet::ExecutionFailure
- # Don't throw an error; it's just a failed cache flush
- Puppet.err "Could not flush lookupd cache: %s" % output
- end
- end
-
- # Similar to posixmethod, what key do we use to get data? Defaults
- # to being the object name.
- def self.netinfodir
- if defined? @netinfodir
- return @netinfodir
- else
- return @resource_type.name.to_s + "s"
- end
- end
-
- def self.finish
- case self.name
- when :uid
- noautogen
- when :gid
- noautogen
- end
- end
-
- def self.instances
- warnonce "The NetInfo provider is deprecated; use directoryservice instead"
- report(@resource_type.validproperties).collect do |hash|
- self.new(hash)
- end
- end
-
- # Convert a NetInfo line into a hash of data.
- def self.line2hash(line, params)
- values = line.split(/\t/)
-
- hash = {}
- params.zip(values).each do |param, value|
- next if value == '#NoValue#'
- hash[param] = if value =~ /^[-0-9]+$/
- Integer(value)
- else
- value
- end
- end
- hash
- end
-
- # What field the value is stored under.
- def self.netinfokey(name)
- name = symbolize(name)
- self.option(name, :key) || name
- end
-
- # Retrieve the data, yo.
- # FIXME This should retrieve as much information as possible,
- # rather than retrieving it one at a time.
- def self.report(*params)
- dir = self.netinfodir()
- cmd = [command(:nireport), "/", "/%s" % dir]
-
- params.flatten!
-
- # We require the name in order to know if we match. There's no
- # way to just report on our individual object, we have to get the
- # whole list.
- params.unshift :name unless params.include? :name
-
- params.each do |param|
- if key = netinfokey(param)
- cmd << key.to_s
- else
- raise Puppet::DevError,
- "Could not find netinfokey for property %s" %
- self.class.name
- end
- end
-
- begin
- output = execute(cmd)
- rescue Puppet::ExecutionFailure => detail
- Puppet.err "Failed to call nireport: %s" % detail
- return nil
- end
-
- return output.split("\n").collect { |line|
- line2hash(line, params)
- }
- end
-
- # How to add an object.
- def addcmd
- creatorcmd("-create")
- end
-
- def creatorcmd(arg)
- cmd = [command(:niutil)]
- cmd << arg
-
- cmd << "/" << "/%s/%s" % [self.class.netinfodir(), @resource[:name]]
- return cmd
- end
-
- def deletecmd
- creatorcmd("-destroy")
- end
-
- def destroy
- delete()
- end
-
- def ensure=(arg)
- warnonce "The NetInfo provider is deprecated; use directoryservice instead"
- super
-
- # Because our stupid type can't create the whole thing at once,
- # we have to do this hackishness. Yay.
- if arg == :present
- @resource.class.validproperties.each do |name|
- next if name == :ensure
-
- # LAK: We use property.sync here rather than directly calling
- # the settor method because the properties might do some kind
- # of conversion. In particular, the user gid property might
- # have a string and need to convert it to a number
- if @resource.should(name)
- @resource.property(name).sync
- elsif value = autogen(name)
- self.send(name.to_s + "=", value)
- else
- next
- end
- end
- end
- end
-
- # Retrieve a specific value by name.
- def get(param)
- hash = getinfo(false)
- if hash
- return hash[param]
- else
- return :absent
- end
- end
-
- # Retrieve everything about this object at once, instead of separately.
- def getinfo(refresh = false)
- if refresh or (! defined? @infohash or ! @infohash)
- properties = [:name] + self.class.resource_type.validproperties
- properties.delete(:ensure) if properties.include? :ensure
- @infohash = single_report(*properties)
- end
-
- return @infohash
- end
-
- def modifycmd(param, value)
- cmd = [command(:niutil)]
- # if value.is_a?(Array)
- # warning "Netinfo providers cannot currently handle multiple values"
- # end
-
- cmd << "-createprop" << "/" << "/%s/%s" % [self.class.netinfodir, @resource[:name]]
-
- value = [value] unless value.is_a?(Array)
- if key = netinfokey(param)
- cmd << key
- cmd += value
- else
- raise Puppet::DevError,
- "Could not find netinfokey for property %s" %
- self.class.name
- end
- cmd
- end
-
- # Determine the flag to pass to our command.
- def netinfokey(name)
- self.class.netinfokey(name)
- end
-
- # Get a report for a single resource, not the whole table
- def single_report(*properties)
- warnonce "The NetInfo provider is deprecated; use directoryservice instead"
- self.class.report(*properties).find do |hash| hash[:name] == self.name end
- end
-
- def setuserlist(group, list)
- cmd = [command(:niutil), "-createprop", "/", "/groups/%s" % group, "users", list.join(",")]
- begin
- output = execute(cmd)
- rescue Puppet::ExecutionFailure => detail
- raise Puppet::Error, "Failed to set user list on %s: %s" %
- [group, detail]
- end
- end
-end
-end
-
diff --git a/lib/puppet/provider/user/directoryservice.rb b/lib/puppet/provider/user/directoryservice.rb
index 63e3a35e1..ffb7a65de 100644
--- a/lib/puppet/provider/user/directoryservice.rb
+++ b/lib/puppet/provider/user/directoryservice.rb
@@ -43,27 +43,10 @@ Puppet::Type.type(:user).provide :directoryservice, :parent => Puppet::Provider:
return @resource[:name].capitalize
end
- # The list of all groups the user is a member of. Different
- # user mgmt systems will need to override this method.
+ # The list of all groups the user is a member of.
# JJM: FIXME: Override this method...
def groups
groups = []
-
- # user = @resource[:name]
- # # Retrieve them all from netinfo
- # open("| #{command(:nireport)} / /groups name users") do |file|
- # file.each do |line|
- # name, members = line.split(/\s+/)
- # next unless members
- # next if members =~ /NoValue/
- # members = members.split(",")
- #
- # if members.include? user
- # groups << name
- # end
- # end
- # end
-
groups.join(",")
end
diff --git a/lib/puppet/provider/user/netinfo.rb b/lib/puppet/provider/user/netinfo.rb
deleted file mode 100644
index 9ec7c89ab..000000000
--- a/lib/puppet/provider/user/netinfo.rb
+++ /dev/null
@@ -1,111 +0,0 @@
-# Manage NetInfo POSIX objects.
-#
-# This provider has been deprecated. You should be using the directoryservice
-# nameservice provider instead.
-
-require 'puppet/provider/nameservice/netinfo'
-
-Puppet::Type.type(:user).provide :netinfo, :parent => Puppet::Provider::NameService::NetInfo do
- desc "User management in NetInfo. Note that NetInfo is not smart enough to fill in default information
- for users, so this provider will use default settings for home (``/var/empty``), shell (``/usr/bin/false``),
- comment (the user name, capitalized), and password ('********'). These defaults are only used when the user is created.
- Note that password management probably does not really work -- OS X does not store the password in NetInfo itself,
- yet we cannot figure out how to store the encrypted password where OS X will look for it. The main reason the password
- support is even there is so that a default password is created, which effectively locks people out, even if it does not
- enable us to set a password."
- commands :nireport => "nireport", :niutil => "niutil"
-
- options :comment, :key => "realname"
- options :password, :key => "passwd"
-
-
- autogen_defaults :home => "/var/empty", :shell => "/usr/bin/false", :password => '********'
-
- has_feature :manages_passwords
-
- verify :gid, "GID must be an integer" do |value|
- value.is_a? Integer
- end
-
- verify :uid, "UID must be an integer" do |value|
- value.is_a? Integer
- end
-
- def autogen_comment
- return @resource[:name].capitalize
- end
-
- # The list of all groups the user is a member of. Different
- # user mgmt systems will need to override this method.
- def groups
- warnonce "The NetInfo provider is deprecated; use directoryservice instead"
-
- groups = []
-
- user = @resource[:name]
- # Retrieve them all from netinfo
- open("| #{command(:nireport)} / /groups name users") do |file|
- file.each do |line|
- name, members = line.split(/\s+/)
- next unless members
- next if members =~ /NoValue/
- members = members.split(",")
-
- if members.include? user
- groups << name
- end
- end
- end
-
- groups.join(",")
- end
-
- # This is really lame. We have to iterate over each
- # of the groups and add us to them.
- def groups=(groups)
- warnonce "The NetInfo provider is deprecated; use directoryservice instead"
-
- case groups
- when Fixnum
- groups = [groups.to_s]
- when String
- groups = groups.split(/\s*,\s*/)
- else
- raise Puppet::DevError, "got invalid groups value %s of type %s" % [groups.class, groups]
- end
- # Get just the groups we need to modify
- diff = groups - (@is || [])
-
- data = {}
- open("| #{command(:nireport)} / /groups name users") do |file|
- file.each do |line|
- name, members = line.split(/\s+/)
-
- if members.nil? or members =~ /NoValue/
- data[name] = []
- else
- # Add each diff group's current members
- data[name] = members.split(/,/)
- end
- end
- end
-
- user = @resource[:name]
- data.each do |name, members|
- if members.include? user and groups.include? name
- # I'm in the group and should be
- next
- elsif members.include? user
- # I'm in the group and shouldn't be
- setuserlist(name, members - [user])
- elsif groups.include? name
- # I'm not in the group and should be
- setuserlist(name, members + [user])
- else
- # I'm not in the group and shouldn't be
- next
- end
- end
- end
-end
-
diff --git a/lib/puppet/type/host.rb b/lib/puppet/type/host.rb
index 6f6ea9480..c8b5934fa 100755
--- a/lib/puppet/type/host.rb
+++ b/lib/puppet/type/host.rb
@@ -71,7 +71,7 @@ module Puppet
newproperty(:target) do
desc "The file in which to store service information. Only used by
- those providers that write to disk (i.e., not NetInfo)."
+ those providers that write to disk."
defaultto { if @resource.class.defaultprovider.ancestors.include?(Puppet::Provider::ParsedFile)
@resource.class.defaultprovider.default_target
diff --git a/lib/puppet/type/mailalias.rb b/lib/puppet/type/mailalias.rb
index 249f99d5e..1044374a0 100755
--- a/lib/puppet/type/mailalias.rb
+++ b/lib/puppet/type/mailalias.rb
@@ -35,7 +35,7 @@ module Puppet
newproperty(:target) do
desc "The file in which to store the aliases. Only used by
- those providers that write to disk (i.e., not NetInfo)."
+ those providers that write to disk."
defaultto { if @resource.class.defaultprovider.ancestors.include?(Puppet::Provider::ParsedFile)
@resource.class.defaultprovider.default_target
diff --git a/lib/puppet/type/mount.rb b/lib/puppet/type/mount.rb
index 18509e349..9cb80b764 100755
--- a/lib/puppet/type/mount.rb
+++ b/lib/puppet/type/mount.rb
@@ -154,7 +154,7 @@ module Puppet
newproperty(:target) do
desc "The file in which to store the mount table. Only used by
- those providers that write to disk (i.e., not NetInfo)."
+ those providers that write to disk."
defaultto { if @resource.class.defaultprovider.ancestors.include?(Puppet::Provider::ParsedFile)
@resource.class.defaultprovider.default_target
diff --git a/lib/puppet/type/port.rb b/lib/puppet/type/port.rb
index db72b2331..fbb24425d 100755
--- a/lib/puppet/type/port.rb
+++ b/lib/puppet/type/port.rb
@@ -98,7 +98,7 @@
#
# newproperty(:target) do
# desc "The file in which to store service information. Only used by
-# those providers that write to disk (i.e., not NetInfo)."
+# those providers that write to disk."
#
# defaultto { if @resource.class.defaultprovider.ancestors.include?(Puppet::Provider::ParsedFile)
# @resource.class.defaultprovider.default_target