
    Vh                     |    d dl mZmZmZ eZdZdZd dlm	Z	  e
dd      Zd Zd	 Zd
 Zd Zd Zedk(  r e        yy)    )absolute_importdivisionprint_functiona  
module: logstash_plugin
short_description: Manage Logstash plugins
description:
  - Manages Logstash plugins.
author: Loic Blot (@nerzhul)
extends_documentation_fragment:
  - community.general.attributes
attributes:
  check_mode:
    support: full
  diff_mode:
    support: none
options:
  name:
    type: str
    description:
      - Install plugin with that name.
    required: true
  state:
    type: str
    description:
      - Apply plugin state.
    choices: ["present", "absent"]
    default: present
  plugin_bin:
    type: path
    description:
      - Specify logstash-plugin to use for plugin management.
    default: /usr/share/logstash/bin/logstash-plugin
  proxy_host:
    type: str
    description:
      - Proxy host to use during plugin installation.
  proxy_port:
    type: str
    description:
      - Proxy port to use during plugin installation.
  version:
    type: str
    description:
      - Specify plugin Version of the plugin to install. If plugin exists with previous version, it will NOT be updated.
ac  
- name: Install Logstash beats input plugin
  community.general.logstash_plugin:
    state: present
    name: logstash-input-beats

- name: Install specific version of a plugin
  community.general.logstash_plugin:
    state: present
    name: logstash-input-syslog
    version: '3.2.0'

- name: Uninstall Logstash plugin
  community.general.logstash_plugin:
    state: absent
    name: logstash-filter-multiline

- name: Install Logstash plugin with alternate heap size
  community.general.logstash_plugin:
    state: present
    name: logstash-input-beats
  environment:
    LS_JAVA_OPTS: "-Xms256m -Xmx256m"
)AnsibleModuleinstallremove)presentabsentc                 @    |d|g}| j                  |      \  }}}|dk(  S )Nlistr   )run_command)module
plugin_binplugin_namecmd_argsrcouterrs          u/home/dcms/DCMS/lib/python3.12/site-packages/ansible_collections/community/general/plugins/modules/logstash_plugin.pyis_plugin_presentr   Y   s-    FK0H%%h/LBS7N    c                     d}	 | | j                  |      t        |      z   d  j                         S # t        $ r | cY S w xY w)Nzreason: )indexlenstrip
ValueError)stringreasons     r   parse_errorr   _   sI    Ffll6*S[89:@@BB s   -2 A A c                 >   |t         d   |g}|r|j                  d|z         |r|r|j                  d|d|       dj                  |      }| j                  rd\  }}	}
n| j	                  |      \  }}	}
|dk7  rt        |	      }| j                  |       d	||	|
fS )
Nr	   z--version %sz-DproxyHost=z -DproxyPort= r   z
check mode r   msgT)PACKAGE_STATE_MAPappendjoin
check_moder   r   	fail_json)r   r   r   version
proxy_host
proxy_portr   cmdr   r   r   r   s               r   install_pluginr/   g   s    -i8+FH01j:zRS
((8
C*C))#.C	QwS!V$c3r   c                     |t         d   |g}dj                  |      }| j                  rd\  }}}n| j                  |      \  }}}|dk7  rt	        |      }| j                  |       d|||fS )Nr
   r!   r"   r   r$   T)r&   r(   r)   r   r   r*   )	r   r   r   r   r.   r   r   r   r   s	            r   remove_pluginr1   ~   s}    -h7EH
((8
C*C))#.C	QwS!V$c3r   c                     t        t        t        d      t        dt        t        j	                                     t        dd      t               t               t                     d	      } | j
                  d
   }| j
                  d   }| j
                  d   }| j
                  d   }| j
                  d   }| j
                  d   }t        | ||      }|r|dk(  s|dk(  r|s| j                  d||       |dk(  rt        | |||||      \  }}	}
}n|dk(  rt        | ||      \  }}	}
}| j                  	||
       y )NT)requiredr	   )defaultchoicesz'/usr/share/logstash/bin/logstash-pluginpath)r4   type)namestater   r,   r-   r+   )argument_specsupports_check_moder8   r9   r   r,   r-   r+   r
   F)changedr8   r9   )r<   r.   r8   r9   stdoutstderr)
r   dictr   r&   keysparamsr   	exit_jsonr/   r1   )r   r8   r9   r   r,   r-   r+   r	   r<   r.   r   r   s               r   mainrC      sE   t$y$7H7M7M7O2PQ$MTZ[vvF
 !
F == DMM'"E|,J|,J|,JmmI&G
D9G 	EY&EX,=gT?	!/
D'S]_i!jc3	(	!.vz4!Hc3
W#DcZ]^r   __main__N)
__future__r   r   r   r7   __metaclass__DOCUMENTATIONEXAMPLESansible.module_utils.basicr   r?   r&   r   r   r/   r1   rC   __name__ r   r   <module>rL      si    A @*X2 5  ."_D zF r   