
    Vh                         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mZ d dlmZ d dlmZ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: Unknown (!UNKNOWN)
name: cnos
short_description: Use cnos cliconf to run command on Lenovo CNOS platform
description:
  - This cnos plugin provides low level abstraction apis for
    sending and receiving CLI commands from Lenovo CNOS network devices.
N)AnsibleConnectionFailure)Mapping)to_bytesto_text)to_list)CliconfBaseenable_modec                   f     e Zd Zd Zd Zd Zed	d       Ze	 	 d
d       ZddZ	 fdZ
d Z xZS )Cliconfc                 "   i }d|d<   | j                  d      }t        |d      j                         }| j                  d      }t        |d      j                         }|r-| j                  |      |d<   | j	                  |      |d<   ||d	<   |S )
Ncnos
network_oszshow sys-infosurrogate_or_stricterrorszshow hostnamenetwork_os_versionnetwork_os_modelnetwork_os_hostname)getr	   stripparse_versionparse_model)selfdevice_inforeplydatahosthostnames         j/home/dcms/DCMS/lib/python3.12/site-packages/ansible_collections/community/network/plugins/cliconf/cnos.pyget_device_infozCliconf.get_device_info-   s    $*L!)u%:;AACxx(4(=>DDF040B0B40HK,-.2.>.>t.DK*+19K-.    c                    |j                  d      D ]r  }|j                         }t        j                  d|t        j                  t        j
                  z        }|sL|j                  d      }|d   j                         }|c S  y)N
zSystem Software Revision (.*?):   NAsplitr   rematchMI)r   r   liner-   versvers         r"   r   zCliconf.parse_version<   sp    JJt$ 	D::<DHH>!244"$$;0Ezz#1gmmo
	 r$   c                    |j                  d      D ]r  }|j                         }t        j                  d|t        j                  t        j
                  z        }|sL|j                  d      }|d   j                         }|c S  y)Nr&   zSystem Model (.*?)r'   r(   r)   r*   )r   r   r0   r-   mdlsmdls         r"   r   zCliconf.parse_modelG   sm    JJt$ 	D::<DHH2D"$$+FEzz#1gmmo
	 r$   c                 l    |dvrd}| j                  ||z        S |dk(  rd}nd}| j                  |      S )N)runningstartupz/fetching configuration from %s is not supportedr7   zshow running-configzshow startup-config)invalid_paramssend_command)r   sourceflagsformatmsgcmds         r"   
get_configzCliconf.get_configQ   sH    //CC&&sV|44Y'C'C  %%r$   c                 Z   i }g }g }|r| j                  d       t        |      D ]\  }t        |t              sd|i}|d   }	|	dk7  s"|	d   dk7  s+|j	                   | j                   d	i |       |j	                  |	       ^ | j                  d       nt        d      ||d<   ||d<   |S )
Nzconfigure terminalcommandendr   !zcheck mode is not supportedrequestresponse )r:   r
   
isinstancer   append
ValueError)
r   	candidatecommitreplacecommentrespresultsrequestsr0   r?   s
             r"   edit_configzCliconf.edit_config\   s     23	* )!$0%t,D9o%<CFcMNN#44#4#4#<t#<=OOC() e$:;;"Y"Zr$   c                 0    | j                  ||||||      S )N)rB   promptanswersendonlynewline	check_all)r:   )r   rB   rT   rU   rV   rW   rX   s          r"   r   zCliconf.getu   s-      Yakr  H   I  	Ir$   c                 R    t         t        |          }t        j                  |      S )N)superr   get_capabilitiesjsondumps)r   result	__class__s     r"   r[   zCliconf.get_capabilitiesx   s!    w68zz&!!r$   c                    | j                   j                  r| j                   j                         }|#t        d| j                   j                  z        t        |d      j                         j                  d      r8| j                   j                  dd       | j                   j                  d	       y| j                   j                  d
       yy)zT
        Make sure we are in the operational cli mode
        :return: None
        NzGcli prompt is not identified from the last received response window: %s)messagesurrogate_then_replacer   z)#vvvvz&In Config mode, sending exit to deviceexitenable)
_connection	connected
get_promptr   _last_recv_windowr	   r   endswithqueue_messager:   )r   outs     r"   set_cli_prompt_contextzCliconf.set_cli_prompt_context|   s    
 %%""--/C{. 8OQUQaQaQsQs8t u u s#;<BBDMMdS  ..v7_`  --f5  --h7 &r$   )r7   Ntext)NTNN)NNFTF)__name__
__module____qualname__r#   r   r   r   r@   rR   r   r[   rm   __classcell__)r_   s   @r"   r   r   +   sP    	 & & 15*. 0I"8r$   r   )
__future__r   r   r   type__metaclass__DOCUMENTATIONr,   r\   ansible.errorsr   /ansible.module_utils.common._collections_compatr   ansible.module_utils._textr   r	   Oansible_collections.ansible.netcommon.plugins.module_utils.network.common.utilsr
   ansible.plugins.cliconfr   r   r   rG   r$   r"   <module>r|      s?     C B 
  3 C 8 c <a8k a8r$   