܍~cmddlZddlmZddlmZddlmZmZmZddl m Z ddl m Z ddl mZddlmZejeZGd d ejZdS) N)Optional)log)netsubputil) bsd_utils) ResolvConf)renderer) NetworkStateceZdZdZdZdZdZddZdZdZ d Z dd e d e e d dfd ZdZddZddZdZdZdZdS) BSDRendererzetc/resolv.confz etc/rc.confcptj|j|j}t j||dSN)fn)r target_pathtarget rc_conf_fnrget_rc_config_value)selfkeyrs 3/usr/lib/python3/dist-packages/cloudinit/net/bsd.pyrzBSDRenderer.get_rc_config_values4  dk4? ; ;%cb111111crtj|j|j}t j|||dSr)rrrrrset_rc_config_value)rrvaluers rrzBSDRenderer.set_rc_config_values6  dk4? ; ;%c5R888888rNc`|si}d|_i|_|dd|_dS)NpostcmdsT)rinterface_configurationsget _postcmds)rconfigs r__init__zBSDRenderer.__init__s7 F (*%J55rc tj}|D]}|d}|d}|rt jd|rE||vrt d|n{|rq|ro||}||kr`t d|| |||n5#t$rt d|}Yn wxYwn||}t d|d|j |<|d gD]}|d d kr|d s/t d |d_t d||d|d |d|d |dp|dd|j |<dS)Nname mac_addressz^lo\d+$z"Cannot find any device with MAC %sz,netif service will rename interface %s to %sz.Interface renaming is not supported on this OSzConfiguring interface %sDHCPsubnetstypestaticnetmaskz+Skipping IP %s, because there is no netmaskaddresszConfiguring dev %s with %s / %smtu)r+r*r,) rget_interfaces_by_maciter_interfacesrrematchLOGinforename_interfaceNotImplementedErrorerrorrdebug)rsettings ifname_by_mac interface device_name device_maccur_namesubnets r_ifconfig_entrieszBSDRenderer._ifconfig_entries#sv133 !11331 1 I#--//K"}55J rx K@@ ..=zJJJJ 8  8(4{**HHF # /--h DDDD./// L'/ /+,J7 HH/ = = =9?D )+ 6#-- 266  ::f%%11!::i00! I"JJy11!II9# 9-- 9-- $*::i#8#8#)::i#8#8%zz%00HIMM%4H4HBBD1+> =1 1 s<C&C<;C<ct|}|D]}|dg}|D]}|ddkr|d}|r?t |ddkr|dd|d||d gz }|D]u}|d }|std 4|d } |d}| || |vdS) Nr'r(r)gateway.z0.0.0.0)networkr*r@routesrCzSkipping a bad route entryr*) list iter_routesr.rlensplitappendr1r6 set_route) rr7rDr9r'r=r@routerCr*s r_route_entrieszBSDRenderer._route_entriesXsxh**,,--!1133 3 3ImmIr22G! 3 3::f%%11 **Y//s7==#5#566!;;MM'0'0'.&**Xr222 3 6 6Eii **G  6777ii **Gii **G NN7GW 5 5 5 5 6 6rc H|j}|j}|D]Y}|dgD]@}d|vr||dd|vr||dAZ t t jtj |j |j }| nk#t$r^t jtdtj |j |j t d}| YnwxYwt!|D]C} ||#t$$rt jtd|Y@wxYwt!|D]C} ||#t$$rt jtd|Y@wxYwt jtj |j |j t+|ddS) Nr'dns_nameservers dns_searchz&Failed to parse %s, use new empty filezFailed to add nameserver %szFailed to add search domain %si)rNdns_searchdomainsr.rextendr r load_filerrrresolv_conf_fnparseIOErrorlogexcr1setadd_nameserver ValueErroradd_search_domain write_filestr) rr7 nameservers searchdomainsr9r= resolvconfserverdomains r _resolve_confzBSDRenderer._resolve_confrsz.  2 !1133 ? ?I#-- 266 ? ?$..&&v.?'@AAA6))!(( )=>>>  ? #$T[$2EFFJ           K8 d.ABB    $BJ         +&& H HF H))&1111 H H H C!>GGGGG H-(( K KF K,,V4444 K K K C!A6JJJJJ K   T[$*= > >  OO      s8>ACA%D98D9E$$%F  F !F77%GG network_state templatesreturnc|r||_|||||||||jdS)N)r7)run)rr>rLrc write_configstart_servicesr )rrdrers rrender_network_statez BSDRenderer.render_network_states  ! DK  666 ]333 M222  /////rcB|jj}d|DS)Nc$g|] \}}|dk |S)r&).0kvs r z/BSDRenderer.dhcp_interfaces..s!222daa6kkkkkr)ritems)rics rdhcp_interfaceszBSDRenderer.dhcp_interfacess'  * 022bbdd2222rFctNr4)rrhs rrjzBSDRenderer.start_services!###rctrwrx)rrs rrizBSDRenderer.write_configryrctrwrx)rr@s r set_gatewayzBSDRenderer.set_gatewayryrctrwrx)rr<r:s rr3zBSDRenderer.rename_interfaceryrctrwrx)rrCr*r@s rrJzBSDRenderer.set_routeryrrw)NN)F)__name__ __module__ __qualname__rTrrrr"r>rLrcr rdictrkrurjrir|r3rJrnrrr r s$&NJ2229996666333j6664, , , b%) 0 0# 0D> 0  0 0 0 0333$$$$$$$$$$$$$$$$$$$rr )r/typingr cloudinitrloggingrrrcloudinit.distrosr%cloudinit.distros.parsers.resolv_confr cloudinit.netr cloudinit.net.network_stater getLoggerrr1Rendererr rnrrrs $$$$$$%%%%%%%%%%''''''<<<<<<""""""444444g!!p$p$p$p$p$(#p$p$p$p$p$r