Is it this line?

raise Puppet:Error, "Unsupported ssa nagios check type $type"

Should be double colon ... Puppet::Error.

Looking at your code, I can't help but think a function is a better
fit then Ruby DSL.

ken.

On Thu, Aug 11, 2011 at 9:34 PM, piavlo <lolitus...@gmail.com> wrote:
> Hi Ken,
>
> Thank you so much for your reply
> I did like you said BUT i was still getting the error
>
> err: Must pass a parameter or all necessary values at /etc/puppet/
> modules/nagios/manifests/server.pp:19 on node mon1a.internal
>
> Then I started to insert notice statement in the ruby DSL class - it
> turns out I a logical erro in the code.
> Arghhh - I have been so fooled by the totally misguiding error
> message.
> Shouldn't puppet err indicate that there is problem in /etc/puppet/
> modules/nagios/manifests/ssa_nagios_checks.rb and not in /etc/puppet/
> modules/nagios/manifests/server.pp?
>
> Anyway now that the ruby error is fixed I get new error
> err: undefined method `Puppet' for #<Puppet::DSL::ResourceAPI:
> 0xb73f50e0> at /etc/puppet/modules/nagios/manifests/server.pp:15 on
> node mon1a.internal
>
> What does this error means?
>
> Here is the real ruby dsl class code - in case it's again a problem
> with the class :)
>
> ----------------
> require 'json'
> require 'open-uri'
>
> hostclass :'nagios::ssa_nagios_checks' do
>
>  nagios_confdir = scope.lookupvar('nagios::params::nrpe_confdir')
>
>  url = "http://localhost:5984/nagios_alerts/_all_docs?
> include_docs=true"
>  result = JSON.parse(open(URI.parse(url)).read)
>
>  result['rows'].each do |x|
>
>    type = x['doc']['type']
>    args = x['doc']['args']
>    warning_threshold = x['doc']['warning_threshold']
>    critical_threshold = x['doc']['critical_threshold']
>
>    contacts = x['doc']['contacts']
>    contact_groups = x['doc']['contact_groups']
>    notification_period = x['doc']['notifications_period']
>
>    case type
>    when "mysql"
>      mysql_user = 'nagios'
>      mysql_password = 'xxxx'
>      check_command = "check_mysql_health_sql_tresholds!#{mysql_user}!
> #{mysql_password}!'#{args}'!#{warning_threshold}!
> #{critical_threshold}"
>    when "api"
>      check_command = "blah-blah"
>    else
>      raise Puppet:Error, "Unsupported ssa nagios check type $type"
>    end
>
>    nagios_service( "ssa_#{x['doc']['_id']}",
>      :target              => "${nagios_confdir}/app_alerts/ssa/
> services/${name}.cfg",
>      :host_name           => x['doc']['hosts'],
>      :service_description => x['doc']['desc'],
>      :use                 => 'generic-service',
>      :check_command       => check_command,
>      :require             => "File[#{nagios_confdir}/app_alerts/ssa/
> services]" )
>
>  end
>
> end
> ----------------
>
> Thanks
> Alex
>
> On Aug 11, 9:13 pm, Ken Barber <k...@puppetlabs.com> wrote:
>> If you look at this example:
>>
>> >> I have a Ruby class in "nagios" module - it's located in nagios/
>> >> manifests/ssa_nagios_checks.rb
>> >> and looks like this
>>
>> >> hostclass :ssa_nagios_checks do
>> >> ...
>> >> end
>>
>> >> In nagios/manifests/init.pp I have
>>
>> >> class nagios::server {
>> >> ...
>> >>    include ssa_nagios_checks
>> >> ...
>> >> }
>>
>> The autoloader/module layout recommendations/rules haven't been followed.
>>
>> You actually want something more like:
>>
>> nagios/manifests/server.pp:
>>
>>   class nagios::server {
>>     include nagios::ssa_nagios_checks
>>   }
>>
>> nagios/manifests/ssa_nagios_checks.rb:
>>
>>   hostclass :'nagios::ssa_nagios_checks' do
>>     notice(["should work"])
>>   end
>>
>> This should work. Can you test it?
>>
>> Remember that sub-classes belong in their own file ... and only the
>> class with the same name as the module belongs in init.pp. Also - you
>> have to fully qualify class names when declaring them in their rb/pp
>> file.
>>
>> ken.
>>
>> --
>> "Join us for PuppetConf, September 22nd and 23rd in Portland, 
>> OR:http://bit.ly/puppetconfsig";
>
> --
> You received this message because you are subscribed to the Google Groups 
> "Puppet Users" group.
> To post to this group, send email to puppet-users@googlegroups.com.
> To unsubscribe from this group, send email to 
> puppet-users+unsubscr...@googlegroups.com.
> For more options, visit this group at 
> http://groups.google.com/group/puppet-users?hl=en.
>
>



-- 
"Join us for PuppetConf, September 22nd and 23rd in Portland, OR:
http://bit.ly/puppetconfsig";

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Users" group.
To post to this group, send email to puppet-users@googlegroups.com.
To unsubscribe from this group, send email to 
puppet-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/puppet-users?hl=en.

Reply via email to