Ë
    *CàeÉ  ã                   óp   — d dl mZ d dl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 ddlmZ  G d	„ d
«      Zy)é    )ÚStringION)ÚIOé   )ÚffiÚlib)ÚNetDefinitionÚNetDefinitionIterator)ÚParser)Ú_checked_lib_callc                   óš  — e Zd Zd„ Zd„ Zdefd„Zd„ Zdefd„Z	dd	ed
efd„Z
d ded
efd„Zdefd„Zedefd„«       Zedefd„«       Zedefd„«       Zedefd„«       Zedefd„«       Zedefd„«       Zedefd„«       Zedefd„«       Zedefd„«       Zedefd„«       Zedefd„«       Zedefd„«       Zedefd„«       Zedefd„«       Zy)!ÚStatec                 ó6   — t        j                  «       | _        y ©N)r   Únetplan_state_newÚ_ptr©Úselfs    ú//usr/lib/python3/dist-packages/netplan/state.pyÚ__init__zState.__init__"   s   € Ü×)Ñ)Ó+ˆ�	ó    c                 ón   — t        j                  d| j                  «      }t        j                  |«       y )NzNetplanState **)r   Únewr   r   Únetplan_state_clear)r   Úrefs     r   Ú__del__zState.__del__%   s%   € Ü�g‰gÐ'¨¯©Ó3ˆÜ×Ñ Õ$r   Ú	netdef_idc                 ó�   — t        j                  | j                  |j                  d«      «      }|s
t	        «       ‚t        | |«      S ©Núutf-8)r   Únetplan_state_get_netdefr   ÚencodeÚ
IndexErrorr   )r   r   Úptrs      r   Ú__getitem__zState.__getitem__)   s;   € Ü×*Ñ*¨4¯9©9°i×6FÑ6FÀwÓ6OÓPˆÙÜ“,ÐÜ˜T 3Ó'Ð'r   c                 ó@   — t        j                  | j                  «      S r   )r   Únetplan_state_get_netdefs_sizer   r   s    r   Ú__len__zState.__len__/   s   € Ü×1Ñ1°$·)±)Ó<Ð<r   Úparserc                 ób   — t        t        j                  | j                  |j                  «       y r   )r   r   Ú#netplan_state_import_parser_resultsr   )r   r(   s     r   Úimport_parser_resultszState.import_parser_results2   s   € Üœ#×AÑAÀ4Ç9Á9ÈfÏkÉkÕZr   NÚfilenameÚrootdirc                 óÜ   — |r|j                  d«      nt        j                  }|r|j                  d«      nt        j                  }t        t        j
                  | j                  ||«       y r   )r!   r   ÚNULLr   r   Únetplan_state_write_yaml_filer   )r   r,   r-   ÚnameÚroots        r   Ú_write_yaml_filezState._write_yaml_file:   sF   € Ù+3ˆx�‰˜wÔ'¼¿¹ˆÙ*1ˆw�~‰~˜gÔ&´s·x±xˆÜœ#×;Ñ;¸T¿Y¹YÈÈdÕSr   Údefault_filenamec                 ó¸   — |j                  d«      }|r|j                  d«      nt        j                  }t        t        j
                  | j                  ||«       y r   )r!   r   r/   r   r   Ú#netplan_state_update_yaml_hierarchyr   )r   r4   r-   r1   r2   s        r   Ú_update_yaml_hierarchyzState._update_yaml_hierarchy?   sA   € Ø×&Ñ& wÓ/ˆÙ*1ˆw�~‰~˜gÔ&´s·x±xˆÜœ#×AÑAÀ4Ç9Á9ÈdÐTXÕYr   Úoutput_filec                 ó0  — t        |t        «      rÑt        j                  d¬«      }t	        t
        j                  | j                  |«       t        j                  |dt        j                  «      }t        j                  |dt        j                  «       t        j                  ||«      }t        j                  |«       |j                  |j                  d«      «       y |j                  «       }t	        t
        j                  | j                  |«       y )NÚnetplan_temp_file)r1   r   r   )Ú
isinstancer   ÚosÚmemfd_creater   r   Únetplan_state_dump_yamlr   ÚlseekÚSEEK_CURÚSEEK_SETÚreadÚcloseÚwriteÚdecodeÚfileno)r   r8   ÚfdÚsizeÚdatas        r   Ú
_dump_yamlzState._dump_yamlD   s±   € Ü�k¤8Ô,Ü—‘Ð&9Ô:ˆBÜœc×9Ñ9¸4¿9¹9ÀbÔIÜ—8‘8˜B ¤2§;¡;Ó/ˆDÜ�H‰H�R˜œBŸK™KÔ(Ü—7‘7˜2˜tÓ$ˆDÜ�H‰H�RŒLØ×Ñ˜dŸk™k¨'Ó2Õ3à×#Ñ#Ó%ˆBÜœc×9Ñ9¸4¿9¹9ÀbÕIr   Úreturnc                 óª   — t        j                  t        j                  t        j                  | j
                  «      «      «      j                  d«      S r   )r   Ústringr   Únetplan_backend_nameÚnetplan_state_get_backendr   rE   r   s    r   ÚbackendzState.backendQ   s:   € ä�z‰zœ#×2Ñ2´3×3PÑ3PÐQU×QZÑQZÓ3[Ó\Ó]×dÑdÐelÓmÐmr   c                 ó:   — t        d„ t        | d «      D «       «      S )Nc              3   ó8   K  — | ]  }|j                   |f–— Œ y ­wr   ©Úid©Ú.0Únds     r   ú	<genexpr>z State.netdefs.<locals>.<genexpr>W   s   è ø€ ÒL B�R—U‘U˜B”KÑLùó   ‚©Údictr	   r   s    r   ÚnetdefszState.netdefsU   s   € äÑLÔ*?ÀÀdÓ*KÔLÓLÐLr   c                 ó:   — t        d„ t        | d«      D «       «      S )Nc              3   ó8   K  — | ]  }|j                   |f–— Œ y ­wr   rS   rU   s     r   rX   z"State.ethernets.<locals>.<genexpr>[   s   è ø€ ÒS B�R—U‘U˜B”KÑSùrY   Ú	ethernetsrZ   r   s    r   r_   zState.ethernetsY   s   € äÑSÔ*?ÀÀkÓ*RÔSÓSÐSr   c                 ó:   — t        d„ t        | d«      D «       «      S )Nc              3   ó8   K  — | ]  }|j                   |f–— Œ y ­wr   rS   rU   s     r   rX   zState.modems.<locals>.<genexpr>_   s   è ø€ ÒP B�R—U‘U˜B”KÑPùrY   ÚmodemsrZ   r   s    r   rb   zState.modems]   s   € äÑPÔ*?ÀÀhÓ*OÔPÓPÐPr   c                 ó:   — t        d„ t        | d«      D «       «      S )Nc              3   ó8   K  — | ]  }|j                   |f–— Œ y ­wr   rS   rU   s     r   rX   zState.wifis.<locals>.<genexpr>c   ó   è ø€ ÒO B�R—U‘U˜B”KÑOùrY   ÚwifisrZ   r   s    r   rf   zState.wifisa   ó   € äÑOÔ*?ÀÀgÓ*NÔOÓOÐOr   c                 ó:   — t        d„ t        | d«      D «       «      S )Nc              3   ó8   K  — | ]  }|j                   |f–— Œ y ­wr   rS   rU   s     r   rX   zState.vlans.<locals>.<genexpr>g   re   rY   ÚvlansrZ   r   s    r   rj   zState.vlanse   rg   r   c                 ó:   — t        d„ t        | d«      D «       «      S )Nc              3   ó8   K  — | ]  }|j                   |f–— Œ y ­wr   rS   rU   s     r   rX   z State.bridges.<locals>.<genexpr>k   ó   è ø€ ÒQ B�R—U‘U˜B”KÑQùrY   ÚbridgesrZ   r   s    r   rn   zState.bridgesi   ó   € äÑQÔ*?ÀÀiÓ*PÔQÓQÐQr   c                 ó:   — t        d„ t        | d«      D «       «      S )Nc              3   ó8   K  — | ]  }|j                   |f–— Œ y ­wr   rS   rU   s     r   rX   zState.bonds.<locals>.<genexpr>o   re   rY   ÚbondsrZ   r   s    r   rr   zState.bondsm   rg   r   c                 ó:   — t        d„ t        | d«      D «       «      S )Nc              3   ó8   K  — | ]  }|j                   |f–— Œ y ­wr   rS   rU   s     r   rX   z&State.dummy_devices.<locals>.<genexpr>s   s   è ø€ ÒW B�R—U‘U˜B”KÑWùrY   zdummy-devicesrZ   r   s    r   Údummy_deviceszState.dummy_devicesq   s   € äÑWÔ*?ÀÀoÓ*VÔWÓWÐWr   c                 ó:   — t        d„ t        | d«      D «       «      S )Nc              3   ó8   K  — | ]  }|j                   |f–— Œ y ­wr   rS   rU   s     r   rX   z State.tunnels.<locals>.<genexpr>w   rm   rY   ÚtunnelsrZ   r   s    r   rx   zState.tunnelsu   ro   r   c                 ó:   — t        d„ t        | d«      D «       «      S )Nc              3   ó8   K  — | ]  }|j                   |f–— Œ y ­wr   rS   rU   s     r   rX   z*State.virtual_ethernets.<locals>.<genexpr>{   s   è ø€ Ò[ B�R—U‘U˜B”KÑ[ùrY   zvirtual-ethernetsrZ   r   s    r   Úvirtual_ethernetszState.virtual_ethernetsy   s   € äÑ[Ô*?ÀÐFYÓ*ZÔ[Ó[Ð[r   c                 ó:   — t        d„ t        | d«      D «       «      S )Nc              3   ó8   K  — | ]  }|j                   |f–— Œ y ­wr   rS   rU   s     r   rX   zState.vrfs.<locals>.<genexpr>   s   è ø€ ÒN B�R—U‘U˜B”KÑNùrY   ÚvrfsrZ   r   s    r   r~   z
State.vrfs}   s   € äÑNÔ*?ÀÀfÓ*MÔNÓNÐNr   c                 ó:   — t        d„ t        | d«      D «       «      S )Nc              3   ó8   K  — | ]  }|j                   |f–— Œ y ­wr   rS   rU   s     r   rX   z"State.ovs_ports.<locals>.<genexpr>ƒ   ó   è ø€ ÒT B�R—U‘U˜B”KÑTùrY   z
_ovs-portsrZ   r   s    r   Ú	ovs_portszState.ovs_ports�   ó   € äÑTÔ*?ÀÀlÓ*SÔTÓTÐTr   c                 ó:   — t        d„ t        | d«      D «       «      S )Nc              3   ó8   K  — | ]  }|j                   |f–— Œ y ­wr   rS   rU   s     r   rX   z#State.nm_devices.<locals>.<genexpr>‡   r�   rY   z
nm-devicesrZ   r   s    r   Ú
nm_deviceszState.nm_devices…   rƒ   r   )NNr   )Ú__name__Ú
__module__Ú__qualname__r   r   Ústrr$   r'   r
   r+   r3   r7   r   rJ   ÚpropertyrP   r	   r\   r_   rb   rf   rj   rn   rr   ru   rx   r{   r~   r‚   r†   © r   r   r   r   !   s  „ ò,ò%ð( Só (ò=ð[¨Fó [ñT¨ð T¸có Tñ
Z°sð ZÀSó Zð
J bó Jð ðn˜ò nó ðnð ðMÐ.ò Mó ðMð ðTÐ0ò Tó ðTð ðQÐ-ò Qó ðQð ðPÐ,ò Pó ðPð ðPÐ,ò Pó ðPð ðRÐ.ò Ró ðRð ðPÐ,ò Pó ðPð ðXÐ4ò Xó ðXð ðRÐ.ò Ró ðRð ð\Ð#8ò \ó ð\ð ðOÐ+ò Oó ðOð ðUÐ0ò Uó ðUð ðUÐ1ò Uó ñUr   r   )Úior   r<   Útypingr   Ú_netplan_cffir   r   Únetdefr   r	   r(   r
   Ú_utilsr   r   rŒ   r   r   ú<module>r’      s*   ðõ" Û 	Ý ç #ß 8Ý Ý %÷fUò fUr   