Thanks Ken that finaly solved the problem with the ruby dsl class and
it's working now.

I don't quite understand why you think implementing ruby function is
better fit - what I need to do is iterate over
all records in couchdb and create a puppet resource for each one of
them - that's the reason I use ruby dsl and not puppet defines.
But how is puppet function going to help me - I won't be able to reuse
it in other places - so I don't want to create
a functions instead of each hostclass i need.

Thanks

On Aug 12, 12:17 am, Ken Barber <k...@puppetlabs.com> wrote:
> 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 
> > athttp://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