a '¡DgÖ!ã@s€ddlZddlZddlmZddlmZmZmZddlm Z ddl m Z ddl m Z ddlmZe e¡ZGdd „d e jƒZdS) éN)ÚOptional)ÚnetÚsubpÚutil)Ú bsd_utils)Ú ResolvConf)Úrenderer)Ú NetworkStatec@s–eZdZdZdZdZdZdZdd„Zdd„Z dd d „Z d d „Z d d„Z dd„Z d eeeddœdd„Zdd„Zd!dd„Zd"dd„Zdd„Zdd„ZdS)#Ú BSDRendererzetc/resolv.confz etc/rc.confÚcCs"t |j|j¡}tj||d�dS©N)Úfn)rÚ target_pathÚtargetÚ rc_conf_fnrÚget_rc_config_value)ÚselfÚkeyr ©rú5/usr/lib/python3.9/site-packages/cloudinit/net/bsd.pyrszBSDRenderer.get_rc_config_valuecCs$t |j|j¡}tj|||d�dSr )rrrrrÚset_rc_config_value)rrÚvaluer rrrrszBSDRenderer.set_rc_config_valueNcCs,|si}d|_i|_i|_| dd¡|_dS)NZpostcmdsT)rÚinterface_configurationsÚinterface_configurations_ipv6ÚgetÚ _postcmds)rZconfigrrrÚ__init__s zBSDRenderer.__init__c Csþt ¡}| ¡D�]æ}| d¡}| d¡}|r| |d¡d|vr$| |d¡q$qz&tt t  |j |j ¡¡ƒ}|  ¡Wn<t yºt tdt  |j |j ¡¡tdƒ}|  ¡Yn0t|ƒD]4}z| |¡WqÄtyöt td|¡YqÄ0qÄt|ƒD]8}z| |¡Wn"t�y6t td|¡Yn0�qt t  |j |j ¡t|ƒd¡dS) NrÚdns_nameserversZ dns_searchz&Failed to parse %s, use new empty filer zFailed to add nameserver %szFailed to add search domain %si¤)rDZdns_searchdomainsr'rÚextendrrZload_text_filerrrÚresolv_conf_fnÚparseÚIOErrorZlogexcr*ÚsetZadd_nameserverÚ ValueErrorZadd_search_domainZ write_fileÚstr) rr0Z nameserversZ searchdomainsr1r4Z resolvconfZserverÚdomainrrrÚ _resolve_conf�sL ÿÿ  ý   ýzBSDRenderer._resolve_conf)Ú network_stateÚ templatesÚreturncCsH|r ||_|j|d�|j|d�|j|d�| ¡|j|jd�dS)N)r0)Úrun)rr5rCrMÚ write_configÚstart_servicesr)rrNrOrrrrÚrender_network_stateËs   z BSDRenderer.render_network_statecCs|jj}dd„|ƒDƒS)NcSsg|]\}}|dkr|‘qS)r&r)Ú.0ÚkÚvrrrÚ Üóz/BSDRenderer.dhcp_interfaces..)rÚitems)rZicrrrÚdhcp_interfacesÚszBSDRenderer.dhcp_interfacesFcCs tƒ‚dS©N©r-)rrQrrrrSÞszBSDRenderer.start_servicescCs tƒ‚dSr\r])rrrrrrRászBSDRenderer.write_configcCs tƒ‚dSr\r])rr3r2rrrr,äszBSDRenderer.rename_interfacecCs tƒ‚dSr\r])rr9r!r6rrrrBçszBSDRenderer.set_route)N)NN)F)N)Ú__name__Ú __module__Ú __qualname__rFrZinterface_routesZ route_namesZ route6_namesrrrr5rCrMr rÚdictrTr[rSrRr,rBrrrrr s. L*1üû   r )Zloggingr(ÚtypingrZ cloudinitrrrZcloudinit.distrosrZ%cloudinit.distros.parsers.resolv_confrZ cloudinit.netrZcloudinit.net.network_stater Z getLoggerr^r*ZRendererr rrrrÚs