diff options
author | Nigel Kersten <nigelk@google.com> | 2009-07-13 16:18:51 -0700 |
---|---|---|
committer | Nigel Kersten <nigelk@google.com> | 2009-07-14 07:54:15 -0700 |
commit | a42e8788b1fde5273ba1e34f6d90c451394849b8 (patch) | |
tree | 5145273a5bba4a3bf070c95417e2c334db4fbe25 /lib/puppet | |
parent | 22f56327e74a1201cf25d82e980b2500057d698e (diff) | |
download | puppet-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.rb | 15 | ||||
-rw-r--r-- | lib/puppet/provider/host/netinfo.rb | 19 | ||||
-rw-r--r-- | lib/puppet/provider/mount/netinfo.rb | 37 | ||||
-rw-r--r-- | lib/puppet/provider/nameservice.rb | 2 | ||||
-rw-r--r-- | lib/puppet/provider/nameservice/directoryservice.rb | 22 | ||||
-rw-r--r-- | lib/puppet/provider/nameservice/netinfo.rb | 224 | ||||
-rw-r--r-- | lib/puppet/provider/user/directoryservice.rb | 19 | ||||
-rw-r--r-- | lib/puppet/provider/user/netinfo.rb | 111 | ||||
-rwxr-xr-x | lib/puppet/type/host.rb | 2 | ||||
-rwxr-xr-x | lib/puppet/type/mailalias.rb | 2 | ||||
-rwxr-xr-x | lib/puppet/type/mount.rb | 2 | ||||
-rwxr-xr-x | lib/puppet/type/port.rb | 2 |
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 |