*CepdZddlZddlZddlZddlZddlZddlZddlmZGdde Z Gdde Z y)znetplan configuration managerN)OptionalcteZdZdifdZdZedZedZddZdZ dd Z d Z d Z d Z d ZddZy) ConfigManager/c>||_tjd|_tj j |jd|_tj j |jd|_||_ t|_ d|_ y)Nnetplan_)prefixetcrun) r tempfilemkdtemptempdirospathjointemp_etctemp_run extra_filessetnew_interfacesnp_state)selfr rs //usr/share/netplan/netplan_cli/configmanager.py__init__zConfigManager.__init__sh ''z:  T\\59  T\\59 &!e15 cT|jJdt|j|SNz.Must call parse() before accessing the config.)rgetattr)rattrs r __getattr__zConfigManager.__getattr__(s)}}(Z*ZZ(t}}d++rc|jJdi}|j|jj|j|jj|j|jj|Sr)rupdate ethernetsmodemswifisr interfacess rphysical_interfacesz!ConfigManager.physical_interfaces,sk}}(Z*ZZ( $--112$--../$----.rc6|jJdi}|j|jj|j|jj|j|jj|j|jj |j|jj |j|jj|j|jj|Sr) rr"bridgesbonds dummy_devicestunnelsvirtual_ethernetsvlansvrfsr&s rvirtual_interfacesz ConfigManager.virtual_interfaces5s}}(Z*ZZ( $--//0$----.$--556$--//0$--99:$----.$--,,-rNcztj} |j|j|r|D]}|j |tj |_|j j|tj5}|j j|tjdj!|j#ddd|j S#tj$r}tt|d}~wwxYw#1swY|j SxYw)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_filezMerged config: {})netplanParserload_yaml_hierarchyr load_yamlStaterimport_parser_resultsNetplanExceptionConfigurationErrorstrr TemporaryFile _dump_yamlloggingdebugformatread)r extra_configparserfetmps rparsezConfigManager.parseCs! -  & &t{{ & ;%(A$$Q'($MMODM MM / / 7  # # % C MM $ $ $ 5 MM.55chhjA B C}}'' -$SV, , - C}}s%A*C7AD&7D# DD#&D:c|D]}|j||||jj|d|_yN) _copy_filerr"r)r config_dict config_files raddzConfigManager.add`sC& CK OOK[)A B C  , rc`|rb|jtjj|jdtjj|j d|jtjj|jdtjj|j ddd|jtjj|jdtjj|j d d dy) Nz etc/netplanr5%run/NetworkManager/system-connectionsNetworkManagerzsystem-connectionsT) missing_okrun/systemd/networksystemdnetwork) _copy_treerrrr rr)rbackup_config_dirs rbackupzConfigManager.backuphs  OOBGGLLmDGGLL B D  T[[2YZ T]]4DFZ[#'  )  T[[2GH T]]IyI#'  )rc& t|jD]1}tj|j||j|=3dj |j }dj |j }tj j|rwtjtj j|jd|j|tj j|jdtj j|rxtjtj j|jd|j|tj j|jdyy#t$rX}tjdj |tjdt!j"dYd}~yd}~wwxYw)Nz${}/NetworkManager/system-connectionsz{}/systemd/networkrQrTz8Something really bad happened while reverting config: {}zZYou should verify the netplan YAML in /etc/netplan and probably run 'netplan apply' again.)dictrrunlinkrBrrexistsshutilrmtreerr rW Exceptionr@errorsysexit)r extra_file temp_nm_pathtemp_networkd_pathrGs rrevertzConfigManager.revertssl "4#3#34 1  $**:67$$Z0 1BHHWL!5!r~s:$$ CFCL  r