�
�Udac @` s� d d l m Z m Z m Z e Z d Z d d l Z d d l Z d d l m
Z
d d l m Z d d l
m Z d e f d � � YZ d S( i ( t absolute_importt divisiont print_functions)
callback: nrdp
type: notification
author: "Remi VERCHERE (@rverchere)"
short_description: post task result to a nagios server through nrdp
description:
- this callback send playbook result to nagios
- nagios shall use NRDP to recive passive events
- the passive check is sent to a dedicated host/service for ansible
version_added: 2.8
options:
url:
description: url of the nrdp server
required: True
env:
- name : NRDP_URL
ini:
- section: callback_nrdp
key: url
validate_certs:
description: (bool) validate the SSL certificate of the nrdp server. (For HTTPS url)
env:
- name: NRDP_VALIDATE_CERTS
ini:
- section: callback_nrdp
key: validate_nrdp_certs
- section: callback_nrdp
key: validate_certs
default: False
aliases: [ validate_nrdp_certs ]
token:
description: token to be allowed to push nrdp events
required: True
env:
- name: NRDP_TOKEN
ini:
- section: callback_nrdp
key: token
hostname:
description: hostname where the passive check is linked to
required: True
env:
- name : NRDP_HOSTNAME
ini:
- section: callback_nrdp
key: hostname
servicename:
description: service where the passive check is linked to
required: True
env:
- name : NRDP_SERVICENAME
ini:
- section: callback_nrdp
key: servicename
N( t urlencode( t open_url( t CallbackBaset CallbackModulec B` st e Z d Z d Z d Z d Z e Z d Z d Z d Z
d Z d � Z d
d
d
d � Z d
� Z d � Z d � Z RS( sD
send ansible-playbook to Nagios server using nrdp protocol
g @t notificationt nrdpi i i i c C` s2 t t | � j � t | _ d | _ d | _ d S( N( t superR t __init__t Falset printed_playbookt Nonet
playbook_namet play( t self( ( sA /usr/lib/python2.7/site-packages/ansible/plugins/callback/nrdp.pyR
Y s c C` s� t t | � j d | d | d | � | j d � | _ | j j d � s[ | j d 7_ n | j d � | _ | j d � | _ | j d � | _ | j d � | _ | j p� | j p� | j p� | j d k r� | j j d
� t
| _ n d S( Nt task_keyst var_optionst directt urlt /t tokent hostnamet servicenamet validate_certss� NRDP callback wants the NRDP_URL, NRDP_TOKEN, NRDP_HOSTNAME, NRDP_SERVICENAME environment variables'. The NRDP callback plugin is disabled.( R R t set_optionst
get_optionR t endswithR R R t validate_nrdp_certsR
t _displayt warningt Truet disabled( R R R R ( ( sA /usr/lib/python2.7/site-packages/ansible/plugins/callback/nrdp.pyR ` s %c C` s� d } | d 7} | d 7} | d | j 7} | d | j 7} | d | 7} | d | 7} | d 7} | d 7} i d
d 6| j d 6t | � d
6} y8 t | j d t | � d d d | j �} | j � SWn, t k
r� } | j
j d j | � � n Xd S( s�
nrpd service check send XMLDATA like this:
<?xml version='1.0'?>
<checkresults>
<checkresult type='service'>
<hostname>somehost</hostname>
<servicename>someservice</servicename>
<state>1</state>
<output>WARNING: Danger Will Robinson!|perfdata</output>
</checkresult>
</checkresults>
s <?xml version='1.0'?>
s <checkresults>
s <checkresult type='service'>
s <hostname>%s</hostname>
s <servicename>%s</servicename>
s <state>%d</state>
s <output>%s</output>
s </checkresult>
s </checkresults>
t submitcheckt cmdR t XMLDATAt datat methodt POSTR s$ NRDP callback cannot send result {0}N(
R R R t bytesR R R R t readt ExceptionR R t format( R t statet msgt xmldatat bodyt responset ex( ( sA /usr/lib/python2.7/site-packages/ansible/plugins/callback/nrdp.pyt
_send_nrdpt s*
c C` s
| | _ d S( s:
Display Playbook and play start messages
N( R ( R R ( ( sA /usr/lib/python2.7/site-packages/ansible/plugins/callback/nrdp.pyt v2_playbook_on_play_start� s c
C` s
| j } d } t | j j � � } d } } x} | D]u } | j | � } | d | | d | | d | | d | | d f 7} | | d 7} | | d 7} | | d 7} q5 Wd | | f } | r� | j | j | � n/ | r� | j | j | � n | j | j | � d S(
s8
Display info about playbook statistics
t i sU '%s_ok'=%d '%s_changed'=%d '%s_unreachable'=%d '%s_failed'=%d t okt changedt unreachablet failuress %s | %sN( R t sortedt processedt keyst summarizeR2 t CRITICALt WARNINGt OK(
R t statst namet gstatst hostst criticalR t hostt statR- ( ( sA /usr/lib/python2.7/site-packages/ansible/plugins/callback/nrdp.pyt v2_playbook_on_stats� s&