Hey all,

I'm not sure where I originally snagged this sysctl type/provider, but
we were using it w/o problems until we upgraded to 0.25.x and I'm
having trouble debugging the issue. The error we're getting is:

Apr 19 15:46:19 s0005 puppetmasterd[21382]:
(//digg-cassandra/Sysctl[net.ipv4.tcp_max_syn_backlog]) Failed to
retrieve current state of resource: No ability to determine if sysctl
exists

Which Luke and James both suggested (in IRC) indicates a missing
'exists?' method, but this type descends from ParsedFile; other
examples don't define their own 'exists?' method either (see the cron
type/provider for example).

Any ideas would be appreciated.

#### modules/sysctl/plugins/puppet/type/sysctl.rb
module Puppet
    newtype(:sysctl) do

        @doc = "Manages kernel parameters in /etc/sysctl.conf.  By
default this will
                only edit the configuration file, and not change any
of the runtime
                values.  If you wish changes to be activated right
away, you can do
                so with an exec like so:

                        exec { load-sysctl:
                            command => \"/sbin/sysctl -p /etc/sysctl.conf\",
                            refreshonly => true
                        }

                Set any changes you want to happen right away to
notify this command,
                or you can set it as the default:

                        Sysctl {
                            notify => Exec[load-sysctl]
                        }"

        ensurable

        newparam(:name, :namevar => true) do
            desc "Name of the parameter"
            isnamevar
        end

        newproperty(:val) do
            desc "Value the parameter should be set to"
        end

        newproperty(:target) do
            desc "Name of the file to store parameters in"
            defaultto { if
@resource.class.defaultprovider.ancestors.include?(Puppet::Provider::ParsedFile)
                            @resource.class.defaultprovider.default_target
                        else
                            nil
                        end
            }
        end
    end
end

##### modules/sysctl/plugins/puppet/provider/sysctl/parsed.rb
require 'puppet/provider/parsedfile'

sysctlconf = "/etc/sysctl.conf"

Puppet::Type.type(:sysctl).provide(:parsed,
                                   :parent => Puppet::Provider::ParsedFile,
                                   :default_target => sysctlconf,
                                   :filetype => :flat
                                   ) do

    confine :exists => sysctlconf
    text_line :comment, :match => /^\s*#/;
    text_line :blank, :match => /^\s*$/;

    record_line :parsed, :fields => %w{name val}, :joiner => ' = ',
:separator => /\s*=\s*/

end

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Developers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/puppet-dev?hl=en.

Reply via email to