
    VhZ                         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 dlmZ d dlmZ d d	lmZ  G d
 de      Zy)    )absolute_importdivisionprint_functiona  
---
deprecated:
  removed_in: 6.0.0
  why: This collection and all content in it is unmaintained and deprecated.
  alternative: Unknown.
author: Ernst Oudhof (@ernst-s)
name: weos4
short_description: Use weos4 cliconf to run commands on Westermo platform
description:
  - This weos4 plugin provides low level abstraction APIs for
    sending and receiving CLI commands from Westermo WeOS 4 network devices.
version_added: '2.2.0'
N)chain)to_text)to_list)Mapping)NetworkConfig)CliconfBasec                   P     e Zd Zd Zd	dZd
dZddZddZd Zd Z	 fdZ
 xZS )Cliconfc                    i }d|d<   | j                  d      }t        |d      j                         }t        j                  d|t        j
                        }|r|j                  d      |d<   t        j                  d	|t        j
                        }|r|j                  d      |d
<   t        j                  d|t        j
                        }|r|j                  d      |d<   |S )Nweos4
network_oszshow system-informationsurrogate_or_strict)errorszMain firmware ver.\s+: (\S+)   network_os_versionzModel\s+: (\S+)network_os_modelzSystem Name\s+: (\S+)network_os_hostname)getr   stripresearchMgroup)selfdevice_inforeplydatamatchs        k/home/dcms/DCMS/lib/python3.12/site-packages/ansible_collections/community/network/plugins/cliconf/weos4.pyget_device_infozCliconf.get_device_info#   s    $+L!23u%:;AAC		94F05AK,-		,dBDD9.3kk!nK*+		2D"$$?16QK-.    c           	         i }| j                         }| j                         }	||d   r|dk7  rt        d      ||	d   vr#t        d|ddj                  |	d               ||	d   vr#t        d	|ddj                  |	d               t	        d
      }
|
j                  |       |r)|dk7  r$t	        d
||      }|
j                  ||||      }n|
j                  }|r|dk(  r||d<   |S |rt               }t        |      D ]  \  }}|j                  |j                         |d
z   t        |      k  r2t        |j                        t        ||d
z      j                        z
  }nt        |j                        }|j                  dk(  r|d
z  }|dkD  st        |      D ]  }|j                  d         dj                  |      |d<   |S d|d<   |S )Nsupports_generate_diffnonez4candidate configuration is required to generate diff
diff_matchz'match' value z in invalid, valid values are z, diff_replacez'replace' value r   )indent)r*   contentsignore_lines)pathr!   replaceconfigconfig_diffendr   
 )get_device_operationsget_option_values
ValueErrorjoinr
   load
differenceitemslist	enumerateappendtextlenparentsrange)r   	candidaterunningr(   diff_ignore_linesr-   r)   diffdevice_operationsoption_valuescandidate_objrunning_objconfigdiffobjsconfiglinesiolevelss                    r"   get_diffzCliconf.get_diff8   s+    668..0!23K!LQ[_eQeSTT]<88S]_c_h_hiv  xD  jE  `F  G  H  H}^<<Uacgclclmz  |J  nK  dL  M  N  N &Q/9%zV+'q7QbcK*55kT^ht5uN*00Nlh6"+D$ # &K!.1 
21""166*q53~.. ^c.Q2G2O2O.PPF ^F66U?aKFA:"6] 2#**512
2 #'))K"8D  #%Dr$   c                 h    |dvr| j                  d|z        S |dk(  rd}nd}| j                  |      S )N)rC   startupz/fetching configuration from %s is not supportedrC   zshow running-configzshow startup-config)invalid_paramssend_command)r   sourceflagsformatcmds        r"   
get_configzCliconf.get_configf   sF    //&&'X[a'abbY'C'C  %%r$   c                    i }| j                         }| j                  |||||       g }g }|rm|du ridj                  |      }	| j                  dd       | j                  |	d       |j	                  | j                  d             |j	                  |	       n|rE|rCdj                  |      }|j	                  | j                  |             |j	                  |       n|r| j                  d       t        |      D ]S  }
t        |
t              sd|
i}
|
d   }|d	k7  s"|j	                   | j                  di |
       |j	                  |       U | j                  d	       nt        d
      ||d<   ||d<   |S )NTr2   zcopy console running-config)sendonlyzcopy {0} running-configzconfigure terminalcommandleavezcheck mode is not supportedrequestresponse )
r4   check_edit_config_capabilityr7   rS   r=   rV   r   
isinstancer	   r6   )r   rB   commitr.   commentresp
operationsresultsrequestsr/   linerW   s               r"   edit_configzCliconf.edit_configo   sv   //1
))*iRYZgoYYy)F;dKft4NN4,,V45OOF#188AINN4,,Y78OOI&23	* )!$0%t,D9o'>NN#44#4#4#<t#<=OOC() g&:;;"Y"Zr$   c                 0    | j                  ||||||      S )N)r\   promptanswerrZ   newline	check_all)rS   )r   r\   rl   rm   rZ   rn   ro   s          r"   r   zCliconf.get   s-      Yakr  H   I  	Ir$   c                     ddddddddddddS )NTF)supports_diff_replacesupports_commitsupports_rollbacksupports_defaultssupports_onbox_diffsupports_commit_commentsupports_multiline_delimitersupports_diff_matchsupports_diff_ignore_linesr&   supports_replacer`   r   s    r"   r4   zCliconf.get_device_operations   s-    %)$!&!&#(',,1#'*.&* $
 	
r$   c                     dgg dg dg dS )Nr>   )ri   strictexactr'   )ri   blockr/   )rV   r(   r)   outputr`   r{   s    r"   r5   zCliconf.get_option_values   s    h=7	
 	
r$   c                     t         t        |          }|dxx   ddgz  cc<   | j                         |d<   |j	                  | j                                t        j                  |      S )NrpcrO   run_commandsrF   )superr   get_capabilitiesr4   updater5   jsondumps)r   result	__class__s     r"   r   zCliconf.get_capabilities   s]    w68u*n55&*&@&@&B"#d,,./zz&!!r$   )NNri   NNri   )rC   Nr>   )NTNN)NNFTF)__name__
__module____qualname__r#   rO   rX   rj   r   r4   r5   r   __classcell__)r   s   @r"   r   r   !   s3    *,\&BI

" "r$   r   )
__future__r   r   r   type__metaclass__DOCUMENTATIONr   r   	itertoolsr   ansible.module_utils._textr   Oansible_collections.ansible.netcommon.plugins.module_utils.network.common.utilsr   /ansible.module_utils.common._collections_compatr	   Pansible_collections.ansible.netcommon.plugins.module_utils.network.common.configr
   ansible.plugins.cliconfr   r   r`   r$   r"   <module>r      sB    C B 
   . c C j /N"k N"r$   