----- Original Message -----
> From: "R. I. Pienaar" <[email protected]>
> To: "puppet-dev" <[email protected]>
> Sent: Thursday, 3 March, 2016 09:58:42
> Subject: Re: [Puppet-dev] metaparam question

> ----- Original Message -----
>> From: "Erik Dalén" <[email protected]>
>> To: "puppet-dev" <[email protected]>
>> Sent: Thursday, 3 March, 2016 09:43:30
>> Subject: Re: [Puppet-dev] metaparam question
> 
>> On Fri, 5 Feb 2016 at 00:35 Kylo Ginsberg <[email protected]> wrote:
>> 
>>> On Wed, Feb 3, 2016 at 7:47 AM, R.I.Pienaar <[email protected]> wrote:
>>>
>>>> hello,
>>>>
>>>> I would like to add a metaparameter - which I think is easy now via
>>>> Type.newmetaparam.
>>>>
>>>
>>> We haven't been thinking of metaparameters as a general purpose extension
>>> point. This came up once before that I know of, about a year ago, and
>>> there's a little discussion of this in
>>> https://tickets.puppetlabs.com/browse/PUP-4281. The conclusion we reached
>>> at the time was, more or less, to explore whether the desired change could
>>> be accomplished with a puppet function and/or a change to core puppet.
>>>
>>>
>>>>
>>>> The thing that I can't seem to find any example of though is how to
>>>> make this metaparameter do something on the nodes for all providers
>>>> or all types.
>>>
>>>
>>>> Imagine there's a metaparam that might describe how to test a resource
>>>> works, something like:
>>>>
>>>>    service{"httpd": validate => "check_http --port 80 -H localhost"}
>>>>
>>>> I'd then want to have some code that would be run on the agent nodes
>>>> for any resource that has this param set.
>>>>
>>>
>>> I don't think something like this exists per se, but 'validate' might be
>>> one such example of something worth adding to core puppet. Fwiw, one
>>> resource-specific example added not too long ago is the file type's
>>> validate_cmd:
>>>
>>>
>>> https://docs.puppetlabs.com/puppet/latest/reference/type.html#file-attribute-validate_cmd
>>> .
>>>
>>>
>> Just to clarify, validate_cmd works differently in that it validates the
>> new contents before replacing the file.
>> I guess the generic validate metaparameter would validate the resource
>> after it has been synced.
> 
> yes indeed, subtle but important.  thanks

Late to follow up on this but I had some time to work on this again, 

  service{"http":
    ensure => "running",
    post_validate => "/usr/lib64/nagios/plugins/check_http -H localhost"
  }

This works with the code below and I included a basic thingy that tells
sensu about this

I had to hack around a bit more than simply adding a metaparam since I had
to wait for puppet to completely finish with the resource and then do a 
final check after it's done

https://github.com/ripienaar/puppet/commit/a6c659cc3fb3555632bfe94df1411878a04fdc51

This is really nice, it both makes my Puppet runs a bit better and allows
me to get instant visibility of failures - and configurable notifications
based on sensu.  It works with any kind of resource.

Ideally the sensu notifier would be something a module can provide and you
could register multiple event handlers but Henrik says the bindings system
isn't initialized on the agent side at present and I didn't have time to 
hack around with that.

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/puppet-dev/157346444.508343.1462127599948.JavaMail.zimbra%40devco.net.
For more options, visit https://groups.google.com/d/optout.

Reply via email to