
    Vhe                    N    d dl mZ dZd dlZd dlZd dlZd dlmZ  G d de      Zy)    )annotationsa]  
author: Unknown (!UNKNOWN)
name: syslog_json
type: notification
requirements:
  - whitelist in configuration
short_description: sends JSON events to syslog
description:
  - This plugin logs ansible-playbook and ansible runs to a syslog server in JSON format.
options:
  server:
    description: Syslog server that will receive the event.
    type: str
    env:
      - name: SYSLOG_SERVER
    default: localhost
    ini:
      - section: callback_syslog_json
        key: syslog_server
  port:
    description: Port on which the syslog server is listening.
    type: int
    env:
      - name: SYSLOG_PORT
    default: 514
    ini:
      - section: callback_syslog_json
        key: syslog_port
  facility:
    description: Syslog facility to log as.
    type: str
    env:
      - name: SYSLOG_FACILITY
    default: user
    ini:
      - section: callback_syslog_json
        key: syslog_facility
  setup:
    description: Log setup tasks.
    env:
      - name: ANSIBLE_SYSLOG_SETUP
    type: bool
    default: true
    ini:
      - section: callback_syslog_json
        key: syslog_setup
    version_added: 4.5.0
N)CallbackBasec                  j     e Zd ZdZdZdZdZdZ fdZd fd	Z	ddZ
d	 Zd
 Zd Zd Zd Zd Z xZS )CallbackModulezR
    logs ansible-playbook and ansible runs to a syslog server in json format
    g       @notificationzcommunity.general.syslog_jsonTc                *    t         t        |           y )N)superr   __init__)self	__class__s    r/home/dcms/DCMS/lib/python3.12/site-packages/ansible_collections/community/general/plugins/callback/syslog_json.pyr
   zCallbackModule.__init__L   s    nd,.    c                   t         t        |   |||       | j                  d      }t	        | j                  d            }| j                  d      }t        j                  d      | _        | j                  j                  t
        j                         t
        j                  j                  ||f|      | _        | j                  j                  | j                         t        j                         | _        y )N)	task_keysvar_optionsdirectserverportfacilityzansible logger)addressr   )r	   r   set_options
get_optionintlogging	getLoggerloggersetLevelDEBUGhandlersSysLogHandlerhandler
addHandlersocketgethostnamehostname)r   r   r   r   syslog_hostsyslog_portsyslog_facilityr   s          r   r   zCallbackModule.set_optionsP   s    nd/)Q\ek/looh/$//&12//*5''(89W]]+''55 +.$ 6 
 	t||,**,r   c                    |j                   }|j                  j                         }| j                  j	                  d| j
                  || j                  |             y )N@%s ansible-command: task execution FAILED; host: %s; message: %s_result_hostget_namer   errorr%   _dump_results)r   resultignore_errorsreshosts        r   v2_runner_on_failedz"CallbackModule.v2_runner_on_failedb   s^    nn||$$&\^b^k^kmqsw  tF  tF  GJ  tK  	Lr   c                   |j                   }|j                  j                         }|j                  j                  dk7  s| j                  d      r8| j                  j                  d| j                  || j                  |             y y )Ngather_factssetupz<%s ansible-command: task execution OK; host: %s; message: %s)
r,   r-   r.   _taskactionr   r   infor%   r0   r   r1   r3   r4   s       r   v2_runner_on_okzCallbackModule.v2_runner_on_okg   s    nn||$$&<<.0DOOG4LKK[]a]j]jlprv  sE  sE  FI  sJ  K 5Mr   c                    |j                   j                         }| j                  j                  d| j                  |d       y )NzA%s ansible-command: task execution SKIPPED; host: %s; message: %sskippedr-   r.   r   r;   r%   )r   r1   r4   s      r   v2_runner_on_skippedz#CallbackModule.v2_runner_on_skippedm   s6    ||$$&\^b^k^kmqs|}r   c                    |j                   }|j                  j                         }| j                  j	                  d| j
                  || j                  |             y )NzE%s ansible-command: task execution UNREACHABLE; host: %s; message: %sr+   r<   s       r   v2_runner_on_unreachablez'CallbackModule.v2_runner_on_unreachableq   s^    nn||$$&acgcpcprvx|  yK  yK  LO  yP  	Qr   c                    |j                   }|j                  j                         }|j                   j                  d      }| j                  j                  d| j                  || j                  |             y )Nansible_job_idr*   )r,   r-   r.   getr   r/   r%   r0   )r   r1   r3   r4   jids        r   v2_runner_on_async_failedz(CallbackModule.v2_runner_on_async_failedv   ss    nn||$$&nn  !12\^b^k^kmqsw  tF  tF  GJ  tK  	Lr   c                    |j                   j                         }| j                  j                  d| j                  ||       y )NzJ%s ansible-command: playbook IMPORTED; host: %s; message: imported file %sr@   )r   r1   imported_filer4   s       r   v2_playbook_on_import_for_hostz-CallbackModule.v2_playbook_on_import_for_host|   s=    ||$$&egkgtgtvz  }J  	Kr   c                    |j                   j                         }| j                  j                  d| j                  ||       y )NzM%s ansible-command: playbook NOT IMPORTED; host: %s; message: missing file %sr@   )r   r1   missing_filer4   s       r   "v2_playbook_on_not_import_for_hostz1CallbackModule.v2_playbook_on_not_import_for_host   s=    ||$$&hjnjwjwy}  @L  	Mr   )NNN)F)__name__
__module____qualname____doc__CALLBACK_VERSIONCALLBACK_TYPECALLBACK_NAMECALLBACK_NEEDS_WHITELISTr
   r   r5   r=   rA   rC   rH   rK   rN   __classcell__)r   s   @r   r   r   B   sT     "M3M#/-$L
K~Q
LKMr   r   )	
__future__r   DOCUMENTATIONr   logging.handlersr#   ansible.plugins.callbackr   r    r   r   <module>r]      s0    #/b    1@M\ @Mr   