+
    €DAi!  ã                   ó®   € ^ RI t ^ RIt^ RItRtRRRR/tRRRRRR/t ! R	 R
]4      t ! R R]4      tR t	]	! 4       t
R tR tR tR tR tR tR tR tR# )é    Nz	ovs-vsctlÚmcast_snooping_enableÚfalseÚrstp_enablezset-sslzset-fail-modezset-controllerc                   ó   € ] tR t^&tRtR# )ÚOvsDbServerNotRunning© N©Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__static_attributes__r   ó    Ú)/usr/share/netplan/netplan_cli/cli/ovs.pyr   r   &   ó   † Ûr   r   c                   ó   € ] tR t^*tRtR# )ÚOvsDbServerNotInstalledr   Nr	   r   r   r   r   r   *   r   r   r   c                  óö   € \         P                  P                  R \        ,           4      '       g1   \         P                  P                  R\        ,           4      '       g   R \        ,           # R\        ,           # )z	/usr/bin/z
/snap/bin/)ÚosÚpathÚexistsÚOPENVSWITCH_OVS_VSCTLr   r   r   Ú_ovs_vsctl_pathr   .   sL   € Ü	‡w�w‡~�~�kÔ"7Õ7×8Ò8Ü—‘—‘˜|Ô,AÕA×BÒBØÔ0Õ0Ð0àÔ1Õ1Ð1r   c                  óH   € \         P                  P                  \        4      # ©N)r   r   r   ÚOVS_VSCTL_PATHr   r   r   Ú_ovs_installedr   9   s   € Ü�7‰7�>‰>œ.Ó)Ð)r   c                  ó~   € \         P                  ! \        R .\         P                  \         P                  R7      ^ 8H  # )Úshow)ÚstdoutÚstderr)Ú
subprocessÚcallr   ÚDEVNULLr   r   r   Ú_ovs_activer%   =   s-   € Ü�?Š?œN¨FÐ3¼J×<NÑ<NÔWa×WiÑWiÔjÐnoÑoÐor   c                óž  € \         P                  V4      pVfO   \        RWW#.p\        P                  ! RRP                  V4      ,          4       \        P                  ! V4       R# V'       d^   WC8w  dV   \        RWV: RV: 2.p\        P                  ! RRP                  V4      ,          4       \        P                  ! V4       R# R# R# )z2Cleanup values from a column (i.e. "column=value")NÚremoveúRunning: %sÚ ÚsetÚ=)ÚDEFAULTSÚgetr   ÚloggingÚdebugÚjoinr"   Ú
check_call)ÚtypeÚifaceÚcolumnÚvalueÚdefaultÚcmds   &&&&  r   Ú_del_colr8   A   s“   € ä�l‰l˜6Ó"€GØ‚ä˜x¨°fÐDˆÜ�Š�m c§h¡h¨s£mÕ3Ô4Ü×Ò˜cÖ"ß	�WÔ%ä˜u d»fÂgÐ3NÐOˆÜ�Š�m c§h¡h¨s£mÕ3Ô4Ü×Ò˜cÖ"ñ	 &‰r   c           	     ó®   € \         RWW#: RV: R2.p\        P                  ! RRP                  V4      ,          4       \        P
                  ! V4       R# )z:Cleanup values from a dictionary (i.e. "column:key=value")r'   z="Ú"r(   r)   N)r   r.   r/   r0   r"   r1   )r2   r3   r4   Úkeyr5   r7   s   &&&&& r   Ú	_del_dictr<   P   s@   € ô ˜8 T°&ÊËeÐ:TÐ
U€CÜ‡M‚M�- #§(¡(¨3£-Õ/Ô0Ü×Ò˜#Ör   c                ó  a€ \         P                  VR	4      w  rEVR8X  d   RpV'       dË   \        V.p\        V.pV'       d#   VP                  V4       VP                  V4       \        P
                  ! VRR7      o\        ;QJ d.    V3R lVP                  R4       4       F  '       d   K   RM#	  RM! V3R lVP                  R4       4       4      '       d   \        P                  ! V4       R# R# \        RV4      h)
z*Cleanup commands from the global namespaceNúdel-sslT©Útextc              3   ó,   <"  € T F	  qS9   x € K  	  R # 5ir   r   )Ú.0ÚitemÚouts   & €r   Ú	<genexpr>Ú_del_global.<locals>.<genexpr>r   s   øé € Ð8Ñ'7˜t�sŽ{Ó'7ùs   ƒÚ,FzReset command unknown for:)NN)
ÚGLOBALSr-   r   Úappendr"   Úcheck_outputÚallÚsplitr1   Ú	Exception)	r2   r3   r;   r5   Údel_cmdÚget_cmdÚargs_getÚargs_delrD   s	   &&&&    @r   Ú_del_globalrR   X   sÁ   ø€ ä—{‘{ 3¨Ó5Ñ€GØ�)ÔØˆçÜ" GÐ,ˆÜ" GÐ,ˆßØ�O‰O˜EÔ"Ø�O‰O˜EÔ"ô ×%Ò% h°TÔ:ˆ÷ ‹3Ô8 u§{¡{°3Ô'7Ó8�3�3Š3Ô8 u§{¡{°3Ô'7Ó8×8Ò8Ü×!Ò! (Ö+ñ 9ô Ð4°cÓ:Ð:r   c                óT  € VP                  R^4      pV^,          pVR8X  d&   \        V4      ^8”  d   \        WV^,          V4       MA\        V4      ^8”  d   \        WV^,          V^,          V4       M\	        WV^,          V4       \
        P                  ! \        RWRV.4       R# )zDCheck if this setting is in a dict or a colum and delete accordinglyÚ/Úglobalr'   úexternal-idsN)rL   ÚlenrR   r<   r8   r"   r1   r   )r2   r3   Úsettingr5   rL   Úcols   &&&&  r   Úclear_settingrZ   x   s‡   € à�M‰M˜#˜qÓ!€EØ
��(€CØ
ˆh„œ3˜u›:¨œ>Ü�D  q¥¨5Õ1Ü	ˆU‹�aŒÜ�$˜u Q�x¨¨q­°5Õ9ä�˜e A�h¨Ô.ä×Òœ>¨8°TÀ.ÐRYÐZÖ[r   c                 óˆ   € \        V\        4      '       g   Q hVP                  V R 4      pT;'       d    VP                  R8H  # )NÚOpenVSwitch)Ú
isinstanceÚdictr-   Úbackend)r3   Únp_interface_dictÚnp_defs   && r   Úis_ovs_interfacerb   †   s?   € ÜÐ'¬×.Ò.Ð.Ð.Ø×"Ñ" 5¨$Ó/€FØ×5Ð5�f—n‘n¨Ñ5Ð5r   c                ó  € \        4       '       g   \        R4      h\        4       '       g   \        R4      hV P	                  4        \        4       pV P                  P                  4        F1  p\        W@P                  4      '       g   K   VP                  V4       K3  	  R Fî  p\        P                  ! \        RRRRRR	R
V^ ,          .	RR7      pVP                  4        F«  pRV9   g   K  VP                  R4      ^ ,          pWƒ9   d   K,  V^ ,          R8X  dM   \        P                  ! \        RV.4      P                   ^ 8”  d!   \        P"                  ! \        RRV.4       K†  \        P"                  ! \        RV^,          V.4       K­  	  Kð  	  R Fì  pRp	VR8X  d   Rp	M	VR8X  d   Rp	\        P                  ! \        RV	,          RRRRR	R
V.	RR7      pVP                  4        F”  pRV9   g   K  RpTp
VR8w  d   VP                  R^4      w  rŠV
P%                  R4      P                  R4       FE  pVP'                  R4      '       g   K  RV9   g   K%  VP                  R^4      w  rÍ\)        WXWÍ4       KG  	  K–  	  Kî  	  R# ) a9  
Query OpenVSwitch state through 'ovs-vsctl' and filter for netplan=true
tagged ports/bonds and bridges. Delete interfaces which are not defined
in the current configuration.
Also filter for individual settings tagged netplan/<column>[/<key]=value
in external-ids and clear them if they have been set by netplan.
z:Cannot apply OpenvSwitch cleanup: ovs-vsctl is 'not-found'z#OpenvSwitch database is not runningÚ	Interfacez--columns=name,external-idsz-fÚcsvz-dÚbarez--no-headingsÚlistTr?   znetplan=truerG   z	br-existsz--if-existszdel-bond-ifaceÚOpen_vSwitchÚ
Controllerzname,external-idsrV   z_uuid,external-idsz--columns=%sznetplan/Ú.r:   r)   r+   N))ÚPortzdel-port)ÚBridgeúdel-br)rd   rm   )rk   rl   rd   rh   ri   )r   r   r%   r   Úparser*   ÚnetdefsÚkeysrb   Úaddr"   rJ   r   Ú
splitlinesrL   ÚrunÚ
returncoder1   ÚstripÚ
startswithrZ   )Úconfig_managerÚovs_oldÚovs_currentÚ
ovs_ifacesÚiÚtrD   Úliner3   ÚcolsÚextidsÚentryrX   Úvals   &&&           r   Úapply_ovs_cleanupr‚   Œ   s@  € ô ×ÒÜ%Ð&bÓcÐcä�=Š=Ü#Ð$IÓJÐJà×ÑÔÜ“€JØ×#Ñ#×(Ñ(Ö*ˆÜ˜Q× 6Ñ 6×7Ô7Ø�N‰N˜1Öñ +ó SˆÜ×%Ò%¤~Ð7TØ'+¨U°D¸&À/ÐSYÐ[\Ð]^Õ[_ð'aà+/ô1ˆð —N‘NÖ$ˆDØ Ö%ØŸ
™
 3›¨Õ*�àÔ&ÙØ�Q•4˜;Ô&¬:¯>ª>¼>È;ÐX]Ð:^Ó+_×+jÑ+jÐmnÔ+nÜ×)Ò)¬>¸=ÐJZÐ\aÐ*bÖcä×)Ò)¬>¸=È!ÈAÍ$ÐPUÐ*VÖWó %ñ	 Só  KˆØ"ˆØ�ÔØ!‰DØ�,ÔØ'ˆDÜ×%Ò%¤~°~ÈÕ7LØ'+¨U°D¸&À/ÐSYÐ[\ð'^à+/ô1ˆð —N‘NÖ$ˆDØ˜TÖ!Ø�Ø�Ø˜Ô&Ø$(§J¡J¨s°AÓ$6‘M�Eð $Ÿ\™\¨#Ó.×4Ñ4°SÖ9�EØ×'Ñ'¨
×3Ô3¸¸u¾Ø',§{¡{°3¸Ó':™˜Ü% a°Ö=ó :ó %ó Kr   )r>   zget-ssl)zdel-fail-modezget-fail-mode)zdel-controllerzget-controller)r.   r   r"   r   r,   rH   rM   r   r   r   r   r   r%   r8   r<   rR   rZ   rb   r‚   r   r   r   Ú<module>rƒ      s–   ðó$ Û 	Û à#Ð ð
 ˜WØ�7ð€ð Ð%ØÐ7ØÐ:ð	€ô	˜Iô 	ô	˜iô 	ò2ñ !Ó"€ò*òpò#òò;ò@\ò6ô=>r   