summaryrefslogtreecommitdiffstats
path: root/lib/puppet
diff options
context:
space:
mode:
authorluke <luke@980ebf18-57e1-0310-9a29-db15c13687c0>2006-11-13 08:40:35 +0000
committerluke <luke@980ebf18-57e1-0310-9a29-db15c13687c0>2006-11-13 08:40:35 +0000
commit5d2f95475d558197a56674cb641fa5def8f16065 (patch)
treebebcad12ac2296764f926ef6194d2d6b7fb5003d /lib/puppet
parentf8b9e866082794e5d7fb0082ebf4df24823b2053 (diff)
downloadpuppet-5d2f95475d558197a56674cb641fa5def8f16065.tar.gz
puppet-5d2f95475d558197a56674cb641fa5def8f16065.tar.xz
puppet-5d2f95475d558197a56674cb641fa5def8f16065.zip
Fixes to the test system, and a couple of small fixes to the main code. Also, disabled the "port" type, because I cannot seem to model it correctly.
git-svn-id: https://reductivelabs.com/svn/puppet/trunk@1875 980ebf18-57e1-0310-9a29-db15c13687c0
Diffstat (limited to 'lib/puppet')
-rwxr-xr-xlib/puppet/provider/port/parsed.rb340
-rwxr-xr-xlib/puppet/type/port.rb232
-rwxr-xr-xlib/puppet/type/user.rb2
-rw-r--r--lib/puppet/type/yumrepo.rb2
4 files changed, 289 insertions, 287 deletions
diff --git a/lib/puppet/provider/port/parsed.rb b/lib/puppet/provider/port/parsed.rb
index 17633e23a..f5f12d3a1 100755
--- a/lib/puppet/provider/port/parsed.rb
+++ b/lib/puppet/provider/port/parsed.rb
@@ -1,174 +1,174 @@
require 'puppet/provider/parsedfile'
-services = nil
-case Facter.value(:operatingsystem)
-when "Solaris": services = "/etc/inet/services"
-else
- services = "/etc/services"
-end
-
-Puppet::Type.type(:port).provide(:parsed,
- :parent => Puppet::Provider::ParsedFile,
- :default_target => services,
- :filetype => :flat
-) do
- text_line :comment, :match => /^\s*#/
- text_line :blank, :match => /^\s*$/
-
- # We're cheating horribly here -- we don't support ddp, because it assigns
- # the same number to already-used names, and the same name to different
- # numbers.
- text_line :ddp, :match => /^\S+\s+\d+\/ddp/
-
- # Also, just ignore the lines on OS X that don't have service names.
- text_line :funky_darwin, :match => /^\s+\d+\//
-
- # We have to manually parse the line, since it's so darn complicated.
- record_line :parsed, :fields => %w{name port protocols alias description},
- :optional => %w{alias description} do |line|
- if line =~ /\/ddp/
- raise "missed ddp in %s" % line
- end
- # The record might contain multiple port lines separated by \n.
- hashes = line.split("\n").collect { |l| parse_port(l) }
-
- # It's easy if there's just one hash.
- if hashes.length == 1
- return hashes.shift
- end
-
- # Else, merge the two records into one.
- return port_merge(*hashes)
- end
-
- # Override how we split into lines, so that we always treat both protocol
- # lines as a single line. This drastically simplifies merging the two lines
- # into one record.
- def self.lines(text)
- names = {}
- lines = []
-
- # We organize by number, because that's apparently how the ports work.
- # You'll never be able to use Puppet to manage multiple entries
- # with the same name but different numbers, though.
- text.split("\n").each do |line|
- if line =~ /^([-\w]+)\s+(\d+)\/[^d]/ # We want to skip ddp proto stuff
- names[$1] ||= []
- names[$1] << line
- lines << [:special, $1]
- else
- lines << line
- end
- end
-
- # Now, return each line in order, but join the ones with the same name
- lines.collect do |line|
- if line.is_a?(Array)
- name = line[1]
- if names[name]
- t = names[name].join("\n")
- names.delete(name)
- t
- end
- else
- line
- end
- end.reject { |l| l.nil? }
- end
-
- # Parse a single port line, returning a hash.
- def self.parse_port(line)
- hash = {}
- if line.sub!(/^(\S+)\s+(\d+)\/(\w+)\s*/, '')
- hash[:name] = $1
- hash[:number] = $2
- hash[:protocols] = [$3]
-
- unless line == ""
- line.sub!(/^([^#]+)\s*/) do |value|
- aliases = $1
-
- # Remove any trailing whitespace
- aliases.strip!
- unless aliases =~ /^\s*$/
- hash[:alias] = aliases.split(/\s+/)
- end
-
- ""
- end
-
- line.sub!(/^\s*#\s*(.+)$/) do |value|
- desc = $1
- unless desc =~ /^\s*$/
- hash[:description] = desc.sub(/\s*$/, '')
- end
-
- ""
- end
- end
- else
- if line =~ /^\s+\d+/ and
- Facter["operatingsystem"].value == "Darwin"
- #Puppet.notice "Skipping wonky OS X port entry %s" %
- # line.inspect
- next
- end
- Puppet.notice "Ignoring unparseable line '%s' in %s" % [line, self.target]
- end
-
- if hash.empty?
- return nil
- else
- return hash
- end
- end
-
- # Merge two records into one.
- def self.port_merge(one, two)
- keys = [one.keys, two.keys].flatten.uniq
-
- # We'll be returning the 'one' hash. so make any necessary modifications
- # to it.
- keys.each do |key|
- # The easy case
- if one[key] == two[key]
- next
- elsif one[key] and ! two[key]
- next
- elsif ! one[key] and two[key]
- one[key] = two[key]
- elsif one[key].is_a?(Array) and two[key].is_a?(Array)
- one[key] = [one[key], two[key]].flatten.uniq
- else
- # Keep the info from the first hash, so don't do anything
- #Puppet.notice "Cannot merge %s in %s with %s" %
- # [key, one.inspect, two.inspect]
- end
- end
-
- return one
- end
-
- # Convert the current object into one or more services entry.
- def self.to_line(hash)
- unless hash[:record_type] == :parsed
- return super
- end
-
- # Strangely, most sites seem to use tabs as separators.
- hash[:protocols].collect { |proto|
- str = "%s\t\t%s/%s" % [hash[:name], hash[:number], proto]
-
- if value = hash[:alias] and value != :absent
- str += "\t\t%s" % value.join(" ")
- end
-
- if value = hash[:description] and value != :absent
- str += "\t# %s" % value
- end
- str
- }.join("\n")
- end
-end
+#services = nil
+#case Facter.value(:operatingsystem)
+#when "Solaris": services = "/etc/inet/services"
+#else
+# services = "/etc/services"
+#end
+#
+#Puppet::Type.type(:port).provide(:parsed,
+# :parent => Puppet::Provider::ParsedFile,
+# :default_target => services,
+# :filetype => :flat
+#) do
+# text_line :comment, :match => /^\s*#/
+# text_line :blank, :match => /^\s*$/
+#
+# # We're cheating horribly here -- we don't support ddp, because it assigns
+# # the same number to already-used names, and the same name to different
+# # numbers.
+# text_line :ddp, :match => /^\S+\s+\d+\/ddp/
+#
+# # Also, just ignore the lines on OS X that don't have service names.
+# text_line :funky_darwin, :match => /^\s+\d+\//
+#
+# # We have to manually parse the line, since it's so darn complicated.
+# record_line :parsed, :fields => %w{name port protocols alias description},
+# :optional => %w{alias description} do |line|
+# if line =~ /\/ddp/
+# raise "missed ddp in %s" % line
+# end
+# # The record might contain multiple port lines separated by \n.
+# hashes = line.split("\n").collect { |l| parse_port(l) }
+#
+# # It's easy if there's just one hash.
+# if hashes.length == 1
+# return hashes.shift
+# end
+#
+# # Else, merge the two records into one.
+# return port_merge(*hashes)
+# end
+#
+# # Override how we split into lines, so that we always treat both protocol
+# # lines as a single line. This drastically simplifies merging the two lines
+# # into one record.
+# def self.lines(text)
+# names = {}
+# lines = []
+#
+# # We organize by number, because that's apparently how the ports work.
+# # You'll never be able to use Puppet to manage multiple entries
+# # with the same name but different numbers, though.
+# text.split("\n").each do |line|
+# if line =~ /^([-\w]+)\s+(\d+)\/[^d]/ # We want to skip ddp proto stuff
+# names[$1] ||= []
+# names[$1] << line
+# lines << [:special, $1]
+# else
+# lines << line
+# end
+# end
+#
+# # Now, return each line in order, but join the ones with the same name
+# lines.collect do |line|
+# if line.is_a?(Array)
+# name = line[1]
+# if names[name]
+# t = names[name].join("\n")
+# names.delete(name)
+# t
+# end
+# else
+# line
+# end
+# end.reject { |l| l.nil? }
+# end
+#
+# # Parse a single port line, returning a hash.
+# def self.parse_port(line)
+# hash = {}
+# if line.sub!(/^(\S+)\s+(\d+)\/(\w+)\s*/, '')
+# hash[:name] = $1
+# hash[:number] = $2
+# hash[:protocols] = [$3]
+#
+# unless line == ""
+# line.sub!(/^([^#]+)\s*/) do |value|
+# aliases = $1
+#
+# # Remove any trailing whitespace
+# aliases.strip!
+# unless aliases =~ /^\s*$/
+# hash[:alias] = aliases.split(/\s+/)
+# end
+#
+# ""
+# end
+#
+# line.sub!(/^\s*#\s*(.+)$/) do |value|
+# desc = $1
+# unless desc =~ /^\s*$/
+# hash[:description] = desc.sub(/\s*$/, '')
+# end
+#
+# ""
+# end
+# end
+# else
+# if line =~ /^\s+\d+/ and
+# Facter["operatingsystem"].value == "Darwin"
+# #Puppet.notice "Skipping wonky OS X port entry %s" %
+# # line.inspect
+# next
+# end
+# Puppet.notice "Ignoring unparseable line '%s' in %s" % [line, self.target]
+# end
+#
+# if hash.empty?
+# return nil
+# else
+# return hash
+# end
+# end
+#
+# # Merge two records into one.
+# def self.port_merge(one, two)
+# keys = [one.keys, two.keys].flatten.uniq
+#
+# # We'll be returning the 'one' hash. so make any necessary modifications
+# # to it.
+# keys.each do |key|
+# # The easy case
+# if one[key] == two[key]
+# next
+# elsif one[key] and ! two[key]
+# next
+# elsif ! one[key] and two[key]
+# one[key] = two[key]
+# elsif one[key].is_a?(Array) and two[key].is_a?(Array)
+# one[key] = [one[key], two[key]].flatten.uniq
+# else
+# # Keep the info from the first hash, so don't do anything
+# #Puppet.notice "Cannot merge %s in %s with %s" %
+# # [key, one.inspect, two.inspect]
+# end
+# end
+#
+# return one
+# end
+#
+# # Convert the current object into one or more services entry.
+# def self.to_line(hash)
+# unless hash[:record_type] == :parsed
+# return super
+# end
+#
+# # Strangely, most sites seem to use tabs as separators.
+# hash[:protocols].collect { |proto|
+# str = "%s\t\t%s/%s" % [hash[:name], hash[:number], proto]
+#
+# if value = hash[:alias] and value != :absent
+# str += "\t\t%s" % value.join(" ")
+# end
+#
+# if value = hash[:description] and value != :absent
+# str += "\t# %s" % value
+# end
+# str
+# }.join("\n")
+# end
+#end
# $Id$
diff --git a/lib/puppet/type/port.rb b/lib/puppet/type/port.rb
index c1eed299b..0460c0972 100755
--- a/lib/puppet/type/port.rb
+++ b/lib/puppet/type/port.rb
@@ -1,119 +1,121 @@
require 'puppet/type/parsedtype'
-module Puppet
- newtype(:port) do
- @doc = "Installs and manages port entries. For most systems, these
- entries will just be in /etc/services, but some systems (notably OS X)
- will have different solutions."
-
- newstate(:protocols) do
- desc "The protocols the port uses. Valid values are *udp* and *tcp*.
- Most services have both protocols, but not all. If you want
- both protocols, you must specify that; Puppet replaces the
- current values, it does not merge with them. If you specify
- multiple protocols they must be as an array."
-
- def is=(value)
- case value
- when String
- @is = value.split(/\s+/)
- else
- @is = value
- end
- end
-
- def is
- @is
- end
-
- # We actually want to return the whole array here, not just the first
- # value.
- def should
- if defined? @should
- if @should[0] == :absent
- return :absent
- else
- return @should
- end
- else
- return nil
- end
- end
-
- validate do |value|
- valids = ["udp", "tcp", "ddp", :absent]
- unless valids.include? value
- raise Puppet::Error,
- "Protocols can be either 'udp' or 'tcp', not %s" % value
- end
- end
- end
-
- newstate(:number) do
- desc "The port number."
- end
-
- newstate(:description) do
- desc "The port description."
- end
-
- newstate(:alias) do
- desc "Any aliases the port might have. Multiple values must be
- specified as an array. Note that this state has the same name as
- one of the metaparams; using this state to set aliases will make
- those aliases available in your Puppet scripts and also on disk."
-
- # We actually want to return the whole array here, not just the first
- # value.
- def should
- if defined? @should
- if @should[0] == :absent
- return :absent
- else
- return @should
- end
- else
- return nil
- end
- end
-
- validate do |value|
- if value.is_a? String and value =~ /\s/
- raise Puppet::Error,
- "Aliases cannot have whitespace in them: %s" %
- value.inspect
- end
- end
-
- munge do |value|
- unless value == "absent" or value == :absent
- # Add the :alias metaparam in addition to the state
- @parent.newmetaparam(
- @parent.class.metaparamclass(:alias), value
- )
- end
- value
- end
- end
-
- newstate(:target) do
- desc "The file in which to store service information. Only used by
- those providers that write to disk (i.e., not NetInfo)."
-
- defaultto { if @parent.class.defaultprovider.ancestors.include?(Puppet::Provider::ParsedFile)
- @parent.class.defaultprovider.default_target
- else
- nil
- end
- }
- end
-
- newparam(:name) do
- desc "The port name."
-
- isnamevar
- end
- end
-end
+#module Puppet
+# newtype(:port) do
+# @doc = "Installs and manages port entries. For most systems, these
+# entries will just be in /etc/services, but some systems (notably OS X)
+# will have different solutions."
+#
+# ensurable
+#
+# newstate(:protocols) do
+# desc "The protocols the port uses. Valid values are *udp* and *tcp*.
+# Most services have both protocols, but not all. If you want
+# both protocols, you must specify that; Puppet replaces the
+# current values, it does not merge with them. If you specify
+# multiple protocols they must be as an array."
+#
+# def is=(value)
+# case value
+# when String
+# @is = value.split(/\s+/)
+# else
+# @is = value
+# end
+# end
+#
+# def is
+# @is
+# end
+#
+# # We actually want to return the whole array here, not just the first
+# # value.
+# def should
+# if defined? @should
+# if @should[0] == :absent
+# return :absent
+# else
+# return @should
+# end
+# else
+# return nil
+# end
+# end
+#
+# validate do |value|
+# valids = ["udp", "tcp", "ddp", :absent]
+# unless valids.include? value
+# raise Puppet::Error,
+# "Protocols can be either 'udp' or 'tcp', not %s" % value
+# end
+# end
+# end
+#
+# newstate(:number) do
+# desc "The port number."
+# end
+#
+# newstate(:description) do
+# desc "The port description."
+# end
+#
+# newstate(:alias) do
+# desc "Any aliases the port might have. Multiple values must be
+# specified as an array. Note that this state has the same name as
+# one of the metaparams; using this state to set aliases will make
+# those aliases available in your Puppet scripts and also on disk."
+#
+# # We actually want to return the whole array here, not just the first
+# # value.
+# def should
+# if defined? @should
+# if @should[0] == :absent
+# return :absent
+# else
+# return @should
+# end
+# else
+# return nil
+# end
+# end
+#
+# validate do |value|
+# if value.is_a? String and value =~ /\s/
+# raise Puppet::Error,
+# "Aliases cannot have whitespace in them: %s" %
+# value.inspect
+# end
+# end
+#
+# munge do |value|
+# unless value == "absent" or value == :absent
+# # Add the :alias metaparam in addition to the state
+# @parent.newmetaparam(
+# @parent.class.metaparamclass(:alias), value
+# )
+# end
+# value
+# end
+# end
+#
+# newstate(:target) do
+# desc "The file in which to store service information. Only used by
+# those providers that write to disk (i.e., not NetInfo)."
+#
+# defaultto { if @parent.class.defaultprovider.ancestors.include?(Puppet::Provider::ParsedFile)
+# @parent.class.defaultprovider.default_target
+# else
+# nil
+# end
+# }
+# end
+#
+# newparam(:name) do
+# desc "The port name."
+#
+# isnamevar
+# end
+# end
+#end
# $Id$
diff --git a/lib/puppet/type/user.rb b/lib/puppet/type/user.rb
index 2fffc6f48..661d10e4a 100755
--- a/lib/puppet/type/user.rb
+++ b/lib/puppet/type/user.rb
@@ -89,7 +89,7 @@ module Puppet
end
# Set ourselves to whatever our should value is.
- self.set
+ self.set(self.should)
end
end
diff --git a/lib/puppet/type/yumrepo.rb b/lib/puppet/type/yumrepo.rb
index 92f83b384..5c06edc57 100644
--- a/lib/puppet/type/yumrepo.rb
+++ b/lib/puppet/type/yumrepo.rb
@@ -21,7 +21,7 @@ module Puppet
if insync?
result = nil
else
- result = set
+ result = set(self.should)
if should == :absent
parent.section[inikey] = nil
else