
    Vh$                     T   d dl mZmZmZ eZd dlZd dlZd dlm	Z	m
Z
 d dlmZ d dlmZmZ d dlmZmZ d dlmZ i Z e        ed	       eed
gf       eedgfd       eedgfd       ed	      dZi Zd Zd!dZd Zd Z	 d!dZd"dZd Zd Z d Z!d Z"d Z#d"dZ$d Z%d#d Z&y)$    )absolute_importdivisionprint_functionN)to_text	to_native)env_fallback)to_listComplexList)
ConnectionConnectionError)base_interfacesint)typeANSIBLE_NET_USERNAME)fallbackANSIBLE_NET_PASSWORDT)r   no_logANSIBLE_NET_SSH_KEYFILEpath)r   r   )hostportusernamepasswordssh_keyfiletimeoutc                    t        j                  d      }t        j                  d      }t               }d}d}d}| j                         D ]s  }t        j                  ||      rd}t        j                  ||      r/|dz  }d}d}t               ||<   |||   d<   t               ||   d	<   a|sd|||   d	   |<   |dz  }u |S )
Nz^---+ +-+.*$z^ *$r   F   Theaderdata)recompiledict
splitlinesmatch)r    TABLE_HEADER
EMPTY_LINEtablestablenolinenotabledatagetlines           t/home/dcms/DCMS/lib/python3.12/site-packages/ansible_collections/community/ciscosmb/plugins/module_utils/ciscosmb.pyciscosmb_split_to_tablesr.   8   s    ::o.LG$JVFGFL! 88J% L88L$'qLGLF"fF7O(,F7OH%&*fF7OF#.2F7OF#F+aKF#& M    c                 \    |
t               }t        | d         }t        | d   |||      }|S )Nr   r    )list__get_table_columns_end__get_table_data)tableallow_overflowallow_empty_fields
fields_endr    s        r-   ciscosmb_parse_tabler8   W   s=    !!V(x9Jfz>3ED Kr/   c                     t        j                  d| j                               D cg c]  }|j                          }}|j	                  d       |S c c}w )zL fields length are diferent device to device, detect them on horizontal lin z  *i'  )r!   finditerstripstartappend)
headerlinemr7   s      r-   r2   r2   d   sK    %'[[
8H8H8J%KL!'')LJL e Ms   Ac                 Z    i }d}d}|D ]  }| || j                         ||<   |dz  }|}! |S )z dynamic fields lenghts r   r   )r;   )r,   r7   
line_elemsindexf_startf_ends         r-   __line_to_fieldsrE   n   sP    JEG  /557
5

 r/   c                 :   |
t               }t               }d}| D ]}  }t               }d}| |   }	t        |	|      }
|rR|
D ]"  }||vr|
|   dk(  rd}|j                  |       $ |r|D ]  }||dz
     |xx   |
|   z  cc<    i|
||<   |dz  }t|
||<   |dz  } |S )Nr   F Tr   )r1   r#   rE   r=   )	tabledatar7   r5   r6   r    	dataindexr*   owerflownfieldsowerflowr,   rA   elemnofieldnos                r-   r3   r3   {   s     !!V6DI & %dJ7
$ 3!33
68Jb8P#H#**62	3 . HGQ'0Jw4GG0H #-YQ	(DONI36 Kr/   c           
      H   |g }t        |      s| S |D ]  }|| v r}t        | |   t              r4t        ||   t              r!t        | |   ||   |t	        |      gz          N| |   ||   k(  rZt        ddj                  |t	        |      gz         z        ||   | |<    | S )zmerges b into azConflict at %s.)bool
isinstancer#   ciscosmb_merge_dictsstr	Exceptionjoin)abr   keys       r-   rR   rR      s    | 7 	!8!C&$'Jqvt,D$QsVQsVTSXJ5FG31S6! 0388DCH:<M3N NOOsVAcF	 Hr/   c                     | j                  d      }| t        |      d  j                         }|t        v r	t        |   }|t	        |      z   } | S )Nz/\0123456789. )rstriplenlstripr   rS   )	interfaceiftypeifnos      r-   interface_canonical_namer`      sR    /0FS[\"))+D  (T"Ir/   c                      t         S N)ciscosmb_provider_spec r/   r-   get_provider_argspecre      s    !!r/   c                    t        | d      r| j                  S t        |       }|j                  d      }|dk(  r&t	        | j
                        | _        | j                  S | j                  d|z         | j                  S )N_ciscosmb_connectionnetwork_apicliconfzInvalid connection type %smsg)hasattrrg   get_capabilitiesgetr   _socket_path	fail_json)modulecapabilitiesrh   s      r-   get_connectionrs      s    v-.***#F+L""=1Ki&01D1D&E# &&& 	9KGH&&&r/   c                 ,   t        | d      r| j                  S 	 t        | j                        j	                         }t        j                  |      | _        | j                  S # t        $ r'}| j                  t        |d             Y d }~y d }~ww xY w)N_ciscosmb_capabilitiessurrogate_then_replaceerrorsrj   )
rl   ru   r   ro   rm   jsonloadsr   rp   r   )rq   rr   excs      r-   rm   rm      s    v/0,,,N!&"5"56GGI(,

<(@%,,, NYs3KLMMNs   AA# #	B,BBc                    t        |       }	 |j                  d      }t	        d      }t               }|j                         D ]C  }|j                         s|j                  |j                         j                         d          E d|v rdgS dgS # t        $ r'}| j                  t	        |d             Y d }~d }~ww xY w)Nz#/system default-configuration printrv   rw   rj   r   allfull)
rs   rn   r   rp   r   setr$   r;   addsplit)rq   
connectionoutr{   commandsr,   s         r-   get_defaults_flagr      s    'JLnnBC #6
7CuH  2::<LL++-a012 wx  LWS1IJKKLs   B 	CC  Cc                 X   dj                  t        |            }	 t        |   S # t        $ r{ t	        |       }	 |j                  |      }n3# t        $ r'}| j                  t        |d             Y d }~nd }~ww xY wt        d      j                         }|t        |<   |cY S w xY w)N )flagsrv   rw   rj   )
rU   r	   _DEVICE_CONFIGSKeyErrorrs   
get_configr   rp   r   r;   )rq   r   flag_strr   r   r{   cfgs          r-   r   r      s    xx'Hx(( 
#F+
	P''e'4C 	P5M!NOO	P c":;AAC$'!

s8   % B)AB)	A=A83B)8A==)B)(B)c                 j    t        d      t               t               d}t        ||       } ||      S )NT)rX   )commandpromptanswer)r#   r
   )rq   r   spec	transforms       r-   to_commandsr   	  s3    D>&&D
 D&)IXr/   c           
         t               }t        |       }t        |      D ][  }t        |t              r|d   }|d   }|d   }n|}d }d }	 |j                  |||      }		 t        	d      }	|j                  |	       ] |S # t        $ r'}
| j                  t        |
d             Y d }
~
Nd }
~
ww xY w# t        $ r$ | j                  d|d	t        	             Y tw xY w)
Nr   r   r   rv   rw   rj   surrogate_or_strictzFailed to decode output from z: )r1   rs   r	   rQ   r#   rn   r   rp   r   UnicodeErrorr=   )rq   r   check_rc	responsesr   cmdr   r   r   r   r{   s              r-   run_commandsr     s    I'Jx  c4 )nG]F]FGFF	P..&&9C	R#&;<C
 	+.   	P5M!NOO	P
  	R>A73<P  R	Rs*   BB4	B1
B,,B14*C! C!)TNrb   )T)'
__future__r   r   r   r   __metaclass__ry   r!   ansible.module_utils._textr   r   ansible.module_utils.basicr   Oansible_collections.ansible.netcommon.plugins.module_utils.network.common.utilsr	   r
   ansible.module_utils.connectionr   r   Ransible_collections.community.ciscosmb.plugins.module_utils.ciscosmb_canonical_mapr   r   r#   rc   ciscosmb_argument_specr.   r8   r2   rE   r3   rR   r`   re   rs   rm   r   r   r   r   rd   r/   r-   <module>r      s   : A @  	 9 3 p G o Fe|.D-EFG|.D-EFtT,1J0K!LSYZ   >

 DH$N,	"'	N*$r/   