[PATCH] Fix default value for enable_environment_macros

Andreas Ericsson ae at op5.se
Mon Jan 14 11:08:48 CET 2013


On 01/14/2013 10:30 AM, Ton Voon wrote:
> 
> On 11 Jan 2013, at 17:08, Andreas Ericsson wrote:
> 
>> On 01/11/2013 02:43 PM, Ton Voon wrote:
>>> 2) an env_macros field is available in all objects to
>>> define specifically which environment macros. This is a comma
>>> separated list, defaulting to ALL for backwards compatibility
>>>
>>
>> I was thinking more along the lines of
>>
>> define command {
>>    env          ORACLE_HOME=/foo/bar/lala
>>    env          HOST_NAME=$HOSTNAME$
>>    command_name check_something
>>    command_line /path/to/some-check
>> }
>>
>> since that also lets users set variables that aren't exactly Nagios related.
> 
> I think that's a great idea and better than my proposal.
> 
> Conceptually, the environment macros are based on plugin/notification/eventhandlers/perfhandler requirements, so putting this in a "define command" is more accurate than in "define service".
> 
> 
>>
>>> I'm happy to do some of this work, but will require agreement on the
>>> design and some technical assistance.
>>>
>>
>> If you get the macros to the workers as kvvec key/value pairs like this:
>>
>>   k=env
>>   v=NAGIOS_(MACRO_NAME)=macro value
>>
>> then I'll make sure the workers set up the environment properly. I'll
>> make an addendum to the worker rules though so the (possibly huge)
>> macro values don't have to be passed back to Nagios for every check
>> executed.
> 
> Please find a patch that is setting the envvars. This sets before execution and then unsets at the end. I've only done it for 4 hard coded variables - it should be based on this new env property. It's clearly not production ready yet.
> 
> Are there any kv limits to be aware of?
> 

Nope. The key value vectors will expand as necessary, although you
have to use kvvec_destroy() with the proper flags to get rid of the
memory they're using (which is being done for the core<->worker
communication already, so nothing to worry about there).

> What I can't work out is how to set the env property in "define command". Can you provide some pointers and assistance?
> 

Using a secondary list of key/value vectors. Since commands are usually
fewer than 500 and remain pretty static, I'd just use a command->id
indexed pointer-to-pointer list of key value vectors.

-- 
Andreas Ericsson                   andreas.ericsson at op5.se
OP5 AB                             www.op5.se
Tel: +46 8-230225                  Fax: +46 8-230231

Considering the successes of the wars on alcohol, poverty, drugs and
terror, I think we should give some serious thought to declaring war
on peace.

------------------------------------------------------------------------------
Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS,
MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current
with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft
MVPs and experts. SALE $99.99 this month only -- learn more at:
http://p.sf.net/sfu/learnmore_122412




More information about the Developers mailing list