Ë
    *Càeº  ã                   óp   — d Z ddlZddlZddlZddlZddlZddlZddlmZ  G d„ de	«      Z
 G d„ de«      Zy)znetplan configuration manageré    N)ÚOptionalc                   ót   — e Zd Zdi fd„Zd„ Zed„ «       Zed„ «       Zdd„Zd„ Z	dd	„Z
d
„ Zd„ Zd„ Zd„ Zdd„Zy)ÚConfigManagerú/c                 ó>  — || _         t        j                  d¬«      | _        t        j
                  j                  | j                  d«      | _        t        j
                  j                  | j                  d«      | _        || _	        t        «       | _        d | _        y )NÚnetplan_)ÚprefixÚetcÚrun)r	   ÚtempfileÚmkdtempÚtempdirÚosÚpathÚjoinÚtemp_etcÚtemp_runÚextra_filesÚsetÚnew_interfacesÚnp_state)Úselfr	   r   s      ú//usr/share/netplan/netplan_cli/configmanager.pyÚ__init__zConfigManager.__init__   sh   € ØˆŒÜ×'Ñ'¨zÔ:ˆŒÜŸ™Ÿ™ T§\¡\°5Ó9ˆŒÜŸ™Ÿ™ T§\¡\°5Ó9ˆŒØ&ˆÔÜ!›eˆÔØ15ˆ�ó    c                 óT   — | j                   €J d«       ‚t        | j                   |«      S ©Nz.Must call parse() before accessing the config.)r   Úgetattr)r   Úattrs     r   Ú__getattr__zConfigManager.__getattr__(   s)   € Ø�}‰}Ð(ÐZÐ*ZÓZÐ(Ü�t—}‘} dÓ+Ð+r   c                 ó  — | j                   €J d«       ‚i }|j                  | j                   j                  «       |j                  | j                   j                  «       |j                  | j                   j                  «       |S r   )r   ÚupdateÚ	ethernetsÚmodemsÚwifis©r   Ú
interfacess     r   Úphysical_interfacesz!ConfigManager.physical_interfaces,   sk   € à�}‰}Ð(ÐZÐ*ZÓZÐ(Øˆ
Ø×Ñ˜$Ÿ-™-×1Ñ1Ô2Ø×Ñ˜$Ÿ-™-×.Ñ.Ô/Ø×Ñ˜$Ÿ-™-×-Ñ-Ô.ØÐr   c                 ó6  — | j                   €J d«       ‚i }|j                  | j                   j                  «       |j                  | j                   j                  «       |j                  | j                   j                  «       |j                  | j                   j
                  «       |j                  | j                   j                  «       |j                  | j                   j                  «       |j                  | j                   j                  «       |S r   )	r   r"   ÚbridgesÚbondsÚdummy_devicesÚtunnelsÚvirtual_ethernetsÚvlansÚvrfsr&   s     r   Úvirtual_interfacesz ConfigManager.virtual_interfaces5   sË   € à�}‰}Ð(ÐZÐ*ZÓZÐ(Øˆ
à×Ñ˜$Ÿ-™-×/Ñ/Ô0Ø×Ñ˜$Ÿ-™-×-Ñ-Ô.Ø×Ñ˜$Ÿ-™-×5Ñ5Ô6Ø×Ñ˜$Ÿ-™-×/Ñ/Ô0Ø×Ñ˜$Ÿ-™-×9Ñ9Ô:Ø×Ñ˜$Ÿ-™-×-Ñ-Ô.Ø×Ñ˜$Ÿ-™-×,Ñ,Ô-ØÐr   Nc                 óz  — t        j                  «       }	 |j                  | j                  ¬«       |r|D ]  }|j	                  |«       Œ t        j
                  «       | _        | j                  j                  |«       t        j                  «       5 }| j                  j                  |¬«       t        j                  dj!                  |j#                  «       «      «       ddd«       | j                  S # t         j                  $ r}t        t        |«      «      ‚d}~ww xY w# 1 sw Y   | j                  S xY w)zÌ
        Parse all our config files to return an object that describes the system's
        entire configuration, so that it can later be interrogated.

        Returns a libnetplan State wrapper
        )ÚrootdirN)Úoutput_filezMerged config:
{})ÚnetplanÚParserÚload_yaml_hierarchyr	   Ú	load_yamlÚStater   Úimport_parser_resultsÚNetplanExceptionÚConfigurationErrorÚstrr   ÚTemporaryFileÚ
_dump_yamlÚloggingÚdebugÚformatÚread)r   Úextra_configÚparserÚfÚeÚtmps         r   ÚparsezConfigManager.parseC   s   € ô —‘Ó!ˆð
	-Ø×&Ñ&¨t¯{©{Ð&Ô;áØ%ò (�AØ×$Ñ$ QÕ'ð(ô $ŸM™M›OˆDŒMØ�M‰M×/Ñ/°Ô7ô
 ×#Ñ#Ó%ð 	C¨Ø�M‰M×$Ñ$°Ð$Ô5Ü�M‰MÐ.×5Ñ5°c·h±h³jÓAÔB÷	Cð �}‰}Ðøô ×'Ñ'ò 	-Ü$¤S¨£VÓ,Ð,ûð	-ú÷	Cð �}‰}Ðús%   –A*C7 ÂAD&Ã7D#Ä
DÄD#Ä&D:c                 ó€   — |D ]  }| j                  |||   «       Œ | j                  j                  |«       d | _        y ©N)Ú
_copy_filer   r"   r   )r   Úconfig_dictÚconfig_files      r   ÚaddzConfigManager.add`   sC   € Ø&ò 	CˆKØ�O‰O˜K¨°[Ñ)AÕBð	Cà×Ñ×Ñ Ô,ð ˆ�r   c                 ó`  — |rb| j                  t        j                  j                  | j                  d«      t        j                  j                  | j
                  d«      «       | j                  t        j                  j                  | j                  d«      t        j                  j                  | j                  dd«      d¬«       | j                  t        j                  j                  | j                  d«      t        j                  j                  | j                  d	d
«      d¬«       y )Nzetc/netplanr5   ú%run/NetworkManager/system-connectionsÚNetworkManagerzsystem-connectionsT)Ú
missing_okúrun/systemd/networkÚsystemdÚnetwork)Ú
_copy_treer   r   r   r	   r   r   )r   Úbackup_config_dirs     r   ÚbackupzConfigManager.backuph   sÅ   € ÙØ�O‰OœBŸG™GŸL™L¨¯©°mÓDÜŸG™GŸL™L¨¯©¸	ÓBôDà�‰œŸ™Ÿ™ T§[¡[Ð2YÓZÜŸ™Ÿ™ T§]¡]Ð4DÐFZÓ[Ø#'ð 	ô 	)ð 	�‰œŸ™Ÿ™ T§[¡[Ð2GÓHÜŸ™Ÿ™ T§]¡]°I¸yÓIØ#'ð 	õ 	)r   c                 ó&  — 	 t        | j                  «      D ]1  }t        j                  | j                  |   «       | j                  |= Œ3 dj	                  | j
                  «      }dj	                  | j
                  «      }t        j                  j                  |«      rwt        j                  t        j                  j                  | j                  d«      «       | j                  |t        j                  j                  | j                  d«      «       t        j                  j                  |«      rxt        j                  t        j                  j                  | j                  d«      «       | j                  |t        j                  j                  | j                  d«      «       y y # t        $ rX}t        j                  dj	                  |«      «       t        j                  d«       t!        j"                  d«       Y d }~y d }~ww xY w)Nz${}/NetworkManager/system-connectionsz{}/systemd/networkrQ   rT   z8Something really bad happened while reverting config: {}zZYou should verify the netplan YAML in /etc/netplan and probably run 'netplan apply' again.éÿÿÿÿ)Údictr   r   ÚunlinkrB   r   r   ÚexistsÚshutilÚrmtreer   r	   rW   Ú	Exceptionr@   ÚerrorÚsysÚexit)r   Ú
extra_fileÚtemp_nm_pathÚtemp_networkd_pathrG   s        r   ÚrevertzConfigManager.reverts   sl  € ð	Ü" 4×#3Ñ#3Ó4ò 1�
Ü—	‘	˜$×*Ñ*¨:Ñ6Ô7Ø×$Ñ$ ZÑ0ð1ð B×HÑHÈÏÉÓWˆLØ!5×!<Ñ!<¸T¿]¹]Ó!KÐÜ�w‰w�~‰~˜lÔ+Ü—‘œbŸg™gŸl™l¨4¯;©;Ð8_Ó`ÔaØ—‘ Ü "§¡§¡¨T¯[©[Ð:aÓ bôdä�w‰w�~‰~Ð0Ô1Ü—‘œbŸg™gŸl™l¨4¯;©;Ð8MÓNÔOØ—‘Ð 2Ü "§¡§¡¨T¯[©[Ð:OÓ PõRð 2øô ò 		ô �M‰MÐT×[Ñ[Ð\]Ó^Ô_Ü�M‰MÐvÔwÜ�H‰H�R�L‰Lûð		ús   ‚F+F/ Æ/	HÆ8AHÈHc                 óB   — t        j                  | j                  «       y rK   )r_   r`   r   ©r   s    r   ÚcleanupzConfigManager.cleanup�   s   € Ü�‰�d—l‘lÕ#r   c                 óD   — 	 | j                  «        y # t        $ r Y y w xY wrK   )rk   ÚFileNotFoundErrorrj   s    r   Ú__del__zConfigManager.__del__�   s"   € ð	Ø�L‰L�NøÜ ò 	áð	ús   ‚ “	žc                 ó0   — t        j                  ||«       y rK   )r_   Úcopy)r   ÚsrcÚdsts      r   rL   zConfigManager._copy_file—   s   € Ü�‰�C˜Õr   c                 óV   — 	 t        j                  ||«       y # t        $ r |rY y ‚ w xY wrK   )r_   Úcopytreerm   )r   rq   rr   rS   s       r   rW   zConfigManager._copy_treeš   s-   € ð	Ü�O‰O˜C Õ%øÜ ò 	ÙÙàð		ús   ‚ ™(¦(rK   )T)F)Ú__name__Ú
__module__Ú__qualname__r   r    Úpropertyr(   r1   rI   rO   rY   rh   rk   rn   rL   rW   © r   r   r   r      sa   „ Ø!¨ró 6ò,ð ñó ðð ñó ðóò:ó	)òò4$òòôr   r   c                   ó   — e Zd ZdZy)r<   zL
    Configuration could not be parsed or has otherwise failed to apply
    N)ru   rv   rw   Ú__doc__ry   r   r   r<   r<   ¤   s   „ ñð 	r   r<   )r{   r@   r5   r   r_   rc   r   Útypingr   Úobjectr   ra   r<   ry   r   r   ú<module>r~      s:   ðñ$ $ã Û Û 	Û Û 
Û å ôC�Fô CôL	˜õ 	r   