[Pkg-puppet-devel] [SCM] Puppet packaging for Debian branch, master, updated. debian/0.24.5-2-109-g5a96442

Micah Anderson micah at riseup.net
Sun Nov 30 00:48:21 UTC 2008


The following commit has been merged in the master branch:
commit 0680ac2a7220145687a3ffbc27930015e9daff6e
Author: Luke Kanies <luke at madstop.com>
Date:   Fri Nov 14 19:29:08 2008 -0600

    Cleaning up the tidy type a bit
    
    Signed-off-by: Luke Kanies <luke at madstop.com>

diff --git a/lib/puppet/type/tidy.rb b/lib/puppet/type/tidy.rb
index c352ec8..2ceaf4d 100755
--- a/lib/puppet/type/tidy.rb
+++ b/lib/puppet/type/tidy.rb
@@ -1,323 +1,322 @@
-module Puppet
-    newtype(:tidy, :parent => Puppet.type(:file)) do
-        @doc = "Remove unwanted files based on specific criteria.  Multiple
-            criteria are OR'd together, so a file that is too large but is not
-            old enough will still get tidied.
-            
-            You must specify either the size or age of the file (or both) for
-            files to be tidied."
+# We need to keep the :file type as the parent type until
+# we refactor backups.
+Puppet::Type.newtype(:tidy, :parent => Puppet.type(:file)) do
+    @doc = "Remove unwanted files based on specific criteria.  Multiple
+        criteria are OR'd together, so a file that is too large but is not
+        old enough will still get tidied.
+        
+        You must specify either the size or age of the file (or both) for
+        files to be tidied."
 
-        newparam(:path) do
-            desc "The path to the file or directory to manage.  Must be fully
-                qualified."
-            isnamevar
-        end
+    newparam(:path) do
+        desc "The path to the file or directory to manage.  Must be fully
+            qualified."
+        isnamevar
+    end
 
-        newparam(:matches) do
-            desc "One or more file glob patterns, which restrict the list of
-                files to be tidied to those whose basenames match at least one
-                of the patterns specified.  Multiple patterns can be specified
-                using an array."
-        end
+    newparam(:matches) do
+        desc "One or more file glob patterns, which restrict the list of
+            files to be tidied to those whose basenames match at least one
+            of the patterns specified.  Multiple patterns can be specified
+            using an array."
+    end
 
-        copyparam(Puppet.type(:file), :backup)
-        
-        newproperty(:ensure) do
-            desc "An internal attribute used to determine which files should be removed."
+    copyparam(Puppet::Type.type(:file), :backup)
+    
+    newproperty(:ensure) do
+        desc "An internal attribute used to determine which files should be removed."
 
-            @nodoc = true
-            
-            TATTRS = [:age, :size]
-            
-            defaultto :anything # just so we always get this property
-
-            def change_to_s(currentvalue, newvalue)
-                start = "Tidying"
-                if @out.include?(:age)
-                    start += ", older than %s seconds" % @resource.should(:age)
-                end
-                if @out.include?(:size)
-                    start += ", larger than %s bytes" % @resource.should(:size)
-                end
+        @nodoc = true
+        
+        TATTRS = [:age, :size]
+        
+        defaultto :anything # just so we always get this property
 
-                start
+        def change_to_s(currentvalue, newvalue)
+            start = "Tidying"
+            if @out.include?(:age)
+                start += ", older than %s seconds" % @resource.should(:age)
+            end
+            if @out.include?(:size)
+                start += ", larger than %s bytes" % @resource.should(:size)
             end
 
-            def insync?(is)
-                if is.is_a?(Symbol)
-                    if [:absent, :notidy].include?(is)
-                        return true
-                    else
-                        return false
-                    end
+            start
+        end
+
+        def insync?(is)
+            if is.is_a?(Symbol)
+                if [:absent, :notidy].include?(is)
+                    return true
                 else
-                    @out = []
-                    if @resource[:matches]
-                        basename = File.basename(@resource[:path])
-                        flags = File::FNM_DOTMATCH | File::FNM_PATHNAME
-                        unless @resource[:matches].any? {|pattern| File.fnmatch(pattern, basename, flags) }
-                            self.debug "No patterns specified match basename, skipping"
-                            return true
-                        end
-                    end
-                    TATTRS.each do |param|
-                        if property = @resource.property(param)
-                            self.debug "No is value for %s", [param] if is[property].nil?
-                            unless property.insync?(is[property])
-                                @out << param
-                            end
-                        end
-                    end
-                    
-                    if @out.length > 0
-                        return false
-                    else
+                    return false
+                end
+            else
+                @out = []
+                if @resource[:matches]
+                    basename = File.basename(@resource[:path])
+                    flags = File::FNM_DOTMATCH | File::FNM_PATHNAME
+                    unless @resource[:matches].any? {|pattern| File.fnmatch(pattern, basename, flags) }
+                        self.debug "No patterns specified match basename, skipping"
                         return true
                     end
                 end
-            end
-            
-            def retrieve
-                stat = nil
-                unless stat = @resource.stat
-                    return { self => :absent}
-                end
-                
-                if stat.ftype == "directory" and ! @resource[:rmdirs]
-                    return {self => :notidy}
-                end
-
-                allprops = TATTRS.inject({}) { |prophash, param|
+                TATTRS.each do |param|
                     if property = @resource.property(param)
-                        prophash[property] = property.assess(stat)
-                    end
-                    prophash
-                }
-                return { self => allprops } 
-            end
-
-            def sync
-                file = @resource[:path]
-                case File.lstat(file).ftype
-                when "directory":
-                    if @resource[:rmdirs]
-                        subs = Dir.entries(@resource[:path]).reject { |d|
-                            d == "." or d == ".."
-                        }.length
-                        if subs > 0
-                            self.info "%s has %s children; not tidying" %
-                                [@resource[:path], subs]
-                            self.info Dir.entries(@resource[:path]).inspect
-                        else
-                            Dir.rmdir(@resource[:path])
+                        self.debug "No is value for %s", [param] if is[property].nil?
+                        unless property.insync?(is[property])
+                            @out << param
                         end
-                    else
-                        self.debug "Not tidying directories"
-                        return nil
                     end
-                when "file":
-                    @resource.handlebackup(file)
-                    File.unlink(file)
-                when "link":
-                    File.unlink(file)
+                end
+                
+                if @out.length > 0
+                    return false
                 else
-                    self.fail "Cannot tidy files of type %s" %
-                        File.lstat(file).ftype
+                    return true
                 end
-
-                return :file_tidied
             end
         end
+        
+        def retrieve
+            stat = nil
+            unless stat = @resource.stat
+                return { self => :absent}
+            end
+            
+            if stat.ftype == "directory" and ! @resource[:rmdirs]
+                return {self => :notidy}
+            end
 
-        newproperty(:age) do
-            desc "Tidy files whose age is equal to or greater than
-                the specified time.  You can choose seconds, minutes,
-                hours, days, or weeks by specifying the first letter of any
-                of those words (e.g., '1w')."
-
-            @@ageconvertors = {
-                :s => 1,
-                :m => 60
-            }
-
-            @@ageconvertors[:h] = @@ageconvertors[:m] * 60
-            @@ageconvertors[:d] = @@ageconvertors[:h] * 24
-            @@ageconvertors[:w] = @@ageconvertors[:d] * 7
-
-            def assess(stat)
-                type = nil
-                if stat.ftype == "directory"
-                    type = :mtime
-                else
-                    type = @resource[:type] || :atime
+            allprops = TATTRS.inject({}) { |prophash, param|
+                if property = @resource.property(param)
+                    prophash[property] = property.assess(stat)
                 end
-                
-                return stat.send(type).to_i
-            end
+                prophash
+            }
+            return { self => allprops } 
+        end
 
-            def convert(unit, multi)
-                if num = @@ageconvertors[unit]
-                    return num * multi
+        def sync
+            file = @resource[:path]
+            case File.lstat(file).ftype
+            when "directory":
+                if @resource[:rmdirs]
+                    subs = Dir.entries(@resource[:path]).reject { |d|
+                        d == "." or d == ".."
+                    }.length
+                    if subs > 0
+                        self.info "%s has %s children; not tidying" %
+                            [@resource[:path], subs]
+                        self.info Dir.entries(@resource[:path]).inspect
+                    else
+                        Dir.rmdir(@resource[:path])
+                    end
                 else
-                    self.fail "Invalid age unit '%s'" % unit
+                    self.debug "Not tidying directories"
+                    return nil
                 end
+            when "file":
+                @resource.handlebackup(file)
+                File.unlink(file)
+            when "link":
+                File.unlink(file)
+            else
+                self.fail "Cannot tidy files of type %s" %
+                    File.lstat(file).ftype
             end
 
-            def insync?(is)
-                if (Time.now.to_i - is) > self.should
-                    return false
-                end
+            return :file_tidied
+        end
+    end
 
-                true
+    newproperty(:age) do
+        desc "Tidy files whose age is equal to or greater than
+            the specified time.  You can choose seconds, minutes,
+            hours, days, or weeks by specifying the first letter of any
+            of those words (e.g., '1w')."
+
+        @@ageconvertors = {
+            :s => 1,
+            :m => 60
+        }
+
+        @@ageconvertors[:h] = @@ageconvertors[:m] * 60
+        @@ageconvertors[:d] = @@ageconvertors[:h] * 24
+        @@ageconvertors[:w] = @@ageconvertors[:d] * 7
+
+        def assess(stat)
+            type = nil
+            if stat.ftype == "directory"
+                type = :mtime
+            else
+                type = @resource[:type] || :atime
             end
+            
+            return stat.send(type).to_i
+        end
 
-            munge do |age|
-                unit = multi = nil
-                case age
-                when /^([0-9]+)(\w)\w*$/:
-                    multi = Integer($1)
-                    unit = $2.downcase.intern
-                when /^([0-9]+)$/:
-                    multi = Integer($1)
-                    unit = :d
-                else
-                    self.fail "Invalid tidy age %s" % age
-                end
-
-                convert(unit, multi)
+        def convert(unit, multi)
+            if num = @@ageconvertors[unit]
+                return num * multi
+            else
+                self.fail "Invalid age unit '%s'" % unit
             end
         end
 
-        newproperty(:size) do
-            desc "Tidy files whose size is equal to or greater than
-                the specified size.  Unqualified values are in kilobytes, but
-                *b*, *k*, and *m* can be appended to specify *bytes*, *kilobytes*,
-                and *megabytes*, respectively.  Only the first character is
-                significant, so the full word can also be used."
-
-            @@sizeconvertors = {
-                :b => 0,
-                :k => 1,
-                :m => 2,
-                :g => 3
-            }
-
-            # Retrieve the size from a File::Stat object
-            def assess(stat)
-                return stat.size
+        def insync?(is)
+            if (Time.now.to_i - is) > self.should
+                return false
             end
 
-            def convert(unit, multi)
-                if num = @@sizeconvertors[unit]
-                    result = multi
-                    num.times do result *= 1024 end
-                    return result
-                else
-                    self.fail "Invalid size unit '%s'" % unit
-                end
-            end
-            
-            def insync?(is)
-                if is > self.should
-                    return false
-                end
+            true
+        end
 
-                true
+        munge do |age|
+            unit = multi = nil
+            case age
+            when /^([0-9]+)(\w)\w*$/:
+                multi = Integer($1)
+                unit = $2.downcase.intern
+            when /^([0-9]+)$/:
+                multi = Integer($1)
+                unit = :d
+            else
+                self.fail "Invalid tidy age %s" % age
             end
-            
-            munge do |size|
-                case size
-                when /^([0-9]+)(\w)\w*$/:
-                    multi = Integer($1)
-                    unit = $2.downcase.intern
-                when /^([0-9]+)$/:
-                    multi = Integer($1)
-                    unit = :k
-                else
-                    self.fail "Invalid tidy size %s" % age
-                end
 
-                convert(unit, multi)
-            end
+            convert(unit, multi)
         end
+    end
 
-        newparam(:type) do
-            desc "Set the mechanism for determining age."
-            
-            newvalues(:atime, :mtime, :ctime)
-
-            defaultto :atime
+    newproperty(:size) do
+        desc "Tidy files whose size is equal to or greater than
+            the specified size.  Unqualified values are in kilobytes, but
+            *b*, *k*, and *m* can be appended to specify *bytes*, *kilobytes*,
+            and *megabytes*, respectively.  Only the first character is
+            significant, so the full word can also be used."
+
+        @@sizeconvertors = {
+            :b => 0,
+            :k => 1,
+            :m => 2,
+            :g => 3
+        }
+
+        # Retrieve the size from a File::Stat object
+        def assess(stat)
+            return stat.size
         end
 
-        newparam(:recurse) do
-            desc "If target is a directory, recursively descend
-                into the directory looking for files to tidy."
-
-            newvalues(:true, :false, :inf, /^[0-9]+$/)
-
-            # Replace the validation so that we allow numbers in
-            # addition to string representations of them.
-            validate { |arg| }
-            munge do |value|
-                newval = super(value)
-                case newval
-                when :true, :inf: true
-                when :false: false
-                when Integer, Fixnum, Bignum: value
-                when /^\d+$/: Integer(value)
-                else
-                    raise ArgumentError, "Invalid recurse value %s" % value.inspect
-                end
+        def convert(unit, multi)
+            if num = @@sizeconvertors[unit]
+                result = multi
+                num.times do result *= 1024 end
+                return result
+            else
+                self.fail "Invalid size unit '%s'" % unit
             end
         end
+        
+        def insync?(is)
+            if is > self.should
+                return false
+            end
 
-        newparam(:rmdirs) do
-            desc "Tidy directories in addition to files; that is, remove
-                directories whose age is older than the specified criteria.
-                This will only remove empty directories, so all contained
-                files must also be tidied before a directory gets removed."
+            true
         end
         
-        # Erase PFile's validate method
-        validate do
-        end
+        munge do |size|
+            case size
+            when /^([0-9]+)(\w)\w*$/:
+                multi = Integer($1)
+                unit = $2.downcase.intern
+            when /^([0-9]+)$/:
+                multi = Integer($1)
+                unit = :k
+            else
+                self.fail "Invalid tidy size %s" % age
+            end
 
-        def self.instances
-            []
+            convert(unit, multi)
         end
+    end
 
-        @depthfirst = true
+    newparam(:type) do
+        desc "Set the mechanism for determining age."
+        
+        newvalues(:atime, :mtime, :ctime)
 
-        def initialize(hash)
-            super
+        defaultto :atime
+    end
 
-            unless  @parameters.include?(:age) or
-                    @parameters.include?(:size)
-                unless FileTest.directory?(self[:path])
-                    # don't do size comparisons for directories
-                    self.fail "Tidy must specify size, age, or both"
-                end
+    newparam(:recurse) do
+        desc "If target is a directory, recursively descend
+            into the directory looking for files to tidy."
+
+        newvalues(:true, :false, :inf, /^[0-9]+$/)
+
+        # Replace the validation so that we allow numbers in
+        # addition to string representations of them.
+        validate { |arg| }
+        munge do |value|
+            newval = super(value)
+            case newval
+            when :true, :inf: true
+            when :false: false
+            when Integer, Fixnum, Bignum: value
+            when /^\d+$/: Integer(value)
+            else
+                raise ArgumentError, "Invalid recurse value %s" % value.inspect
             end
+        end
+    end
 
-            # only allow backing up into filebuckets
-            unless self[:backup].is_a? Puppet::Network::Client.dipper
-                self[:backup] = false
+    newparam(:rmdirs) do
+        desc "Tidy directories in addition to files; that is, remove
+            directories whose age is older than the specified criteria.
+            This will only remove empty directories, so all contained
+            files must also be tidied before a directory gets removed."
+    end
+    
+    # Erase PFile's validate method
+    validate do
+    end
+
+    def self.instances
+        []
+    end
+
+    @depthfirst = true
+
+    def initialize(hash)
+        super
+
+        unless  @parameters.include?(:age) or
+                @parameters.include?(:size)
+            unless FileTest.directory?(self[:path])
+                # don't do size comparisons for directories
+                self.fail "Tidy must specify size, age, or both"
             end
         end
-        
-        def retrieve
-            # Our ensure property knows how to retrieve everything for us.
-            if obj = @parameters[:ensure] 
-                return obj.retrieve
-            else
-                return {}
-            end
+
+        # only allow backing up into filebuckets
+        unless self[:backup].is_a? Puppet::Network::Client.dipper
+            self[:backup] = false
         end
-        
-        # Hack things a bit so we only ever check the ensure property.
-        def properties
-            []
+    end
+    
+    def retrieve
+        # Our ensure property knows how to retrieve everything for us.
+        if obj = @parameters[:ensure] 
+            return obj.retrieve
+        else
+            return {}
         end
     end
+    
+    # Hack things a bit so we only ever check the ensure property.
+    def properties
+        []
+    end
 end
-

-- 
Puppet packaging for Debian



More information about the Pkg-puppet-devel mailing list