/usr/lib/python3/dist-packages/cloudinit/net/__pycache__
NameSizeModeActions
activators.cpython-310.pyc117130644editdlrm
bsd.cpython-310.pyc59580644editdlrm
cmdline.cpython-310.pyc75210644editdlrm
dhcp.cpython-310.pyc273310644editdlrm
eni.cpython-310.pyc150540644editdlrm
ephemeral.cpython-310.pyc165680644editdlrm
freebsd.cpython-310.pyc28410644editdlrm
netbsd.cpython-310.pyc18250644editdlrm
netplan.cpython-310.pyc152150644editdlrm
networkd.cpython-310.pyc156850644editdlrm
network_manager.cpython-310.pyc153930644editdlrm
network_state.cpython-310.pyc285610644editdlrm
openbsd.cpython-310.pyc23470644editdlrm
renderer.cpython-310.pyc19060644editdlrm
renderers.cpython-310.pyc15080644editdlrm
sysconfig.cpython-310.pyc238390644editdlrm
udev.cpython-310.pyc12970644editdlrm
__init__.cpython-310.pyc337190644editdlrm
Edit: /usr/lib/python3/dist-packages/cloudinit/net/__pycache__/eni.cpython-310.pyc (15054B)
o thGd @sddlZddlZddlZddlZddlZddlZddlmZddlm Z m Z m Z m Z ddl mZmZmZddlmZmZmZmZmZmZmZddlmZeeZgdZgdZgd Z d e!d e!d e"d e e#fddZ$d e!de%de e#d e e#fddZ& d+d e!de"d e e#fddZ'de!de#de#de#d df ddZ(e)dde#d e!fd d!Z*de!d e!fd"d#Z+d$e#d e"d e"fd%d&Z,Gd'd(d(ej-Z-d e"fd)d*Z.dS),N)suppress)AnyDictListOptional) performancesubputil) ParserErroris_ipv4_addressis_ipv4_networkis_ipv6_addressis_ipv6_networkrenderersubnet_is_ipv6) NetworkState)zpre-upupzpost-updownzpre-downz post-down) bridge_ageingbridge_bridgeprio bridge_fd bridge_gcinit bridge_hello bridge_maxagebridge_maxwait bridge_stp)addressnetmask broadcastnetworkmetricgateway pointtopointmediamtuhostname leasehours leasetimevendorclientbootfileserverhwaddrproviderframenetnumendpointlocalttlifacesubnetis_ipv6returncCsg}gd}|D]U\}}|dkrq |dkr!d|d|df}|r_||vr_t|trB|dkronoffr$zZNetwork config: ignoring %s device-level mtu:%s because ipv4 subnet-level mtu:%s provided.r[r?r<) rIr@getrHrAboolLOGwarningrJrBrGrK) r3rSrTrL ignore_mapmultiline_keysrenamesrNrO key_writevrPrPrQ_iface_add_attrsvsB         rrFrender_hwaddresscCs|d}|d}|dkrd}n |dvrd|}nd|}|}|||ddjd i|d jd i|g}|rJ|d rJ|d jd i||S) Nr[rUauto)hotplugzallow-z # control-)fullnamecverbz{cverb} {fullname}ziface {fullname} {inet} {mode}raz hwaddress {mac_address}rP)copyupdaterJrirI)r3rSrsrvrUrwsubstlinesrPrPrQ_iface_start_entrys r|ifacescontentssrc_dirsrc_pathc s<d}|D]}|}|drq|d}|d}|dkrd|d}|ds0tj||}t|D]-t} fdd | D} | D]} t | } tj | } t || tj | | qGq5q|d kr|d} | dsxtj|| } t| D].td }|} Wdn1swYtj }t || tj ||q}q|d kr|ddD]}||vrd |i||<d||d <qq|dkr|dd\}}}||vrd |i||<nd||vrtd||f|||d<|||d<|}q|dkr|ddkr|d}n|d}|||d<q|tvr+|d|||<q|tvrN|||vr=g|||<|||d|ddq|drd||vrai||d<|dkrg||dd<|ddD]}||dd|qtq|dkrg||dd<|ddD]}||dd|qq|drbd||vri||d<|tvr|ddd}|d||d|<q|d krg||dd!<|ddD]}||dd!|qq|d"kr|dd#kr |d||dd#<q|d||dd#<q|d$kr=d%||dvr.i||dd%<|d||dd%|d<q|d&krad'||dvrSi||dd'<|d||dd'|d<q|d(rd)||vrui||d)<|d(dd}|d||d)|<q|D]}d ||vrd*||d <qdS)+a~Parses the file contents, placing result into ifaces. '_source_path' is added to every dictionary entry to define which file the configuration information came from. :param ifaces: interface dictionary :param contents: contents of interfaces file :param src_dir: directory interfaces file was located :param src_path: file path the `contents` was read N#r<rzsource-directory/cs@g|]}tjtj|rtd|durtj|qS)z^[a-zA-Z0-9_-]+$N)ospathisfilerGrematch).0r expanded_pathrPrQ s z*_parse_deb_config_data..sourcerrt _source_pathTr3familyz:Interface %s can only be defined once. Re-defined in '%s'.methodrbetherzdns-rWz dns-searchsearchzdns-nameservers nameserversbridge_rd bridge_portsports bridge_hwmacr^pathcostr_portpriozbond-rcF) splitlinesstrip startswithsplitrrrGgloblistdirr load_text_fileabspath_parse_deb_config_datadirnameopenreadr NET_CONFIG_OPTIONSNET_CONFIG_COMMANDSrINET_CONFIG_BRIDGE_OPTIONSrHlowerkeys)r}r~rrcurriflineroptionparsed_src_dir dir_contentsentrysrc_data abs_entry new_src_pathfpabs_pathr3rrvaldomainr+ bridge_option bond_optionrPrrQrs                   "               rzConverting eni dataeni_datacCsi}t||dddt|S)z=Return a network config representation of what is in eni_dataNone)rr)r_ifaces_to_net_config_data)rr}rPrPrQconvert_eni_dataXsrcs4i|D]\}}|dd}|vr2|dkrd}nd}||gd|<d|vr2|d|d<||d d }|d rCd |d <nd |d <|d dkrT|d|d<dD] }||vrb||||<qVd|vrdD]}||dvr|d|r|d||d|<qi|d|qdfddtDdS)zReturn network config that represents the ifaces data provided. ifaces = _parse_deb_config_data(...) config = ifaces_to_net_config_data(ifaces) state = parse_net_config_data(config).:rloloopbackphysical)r]r[r\rbrar)_orig_eni_namer]rtrUmanualstaticr)rr!rrW)rrdns_r\rcsg|]}|qSrPrP)rddevsrPrQrz._ifaces_to_net_config_data..)versionconfig)r@ partitionrirIrK)r}r[datadevnamedtyper4copy_keynrPrrQr`s6    r addr_or_netcCs$|s t|p t|St|pt|SN)r r r r)rr5rPrPrQrFsrFc @seZdZdZddeefddZddeded eefd d Z dd ede d eeefddZ dde de d efddZ  dde deedeed dfddZdS)Rendererz@Renders network information in a /etc/network/interfaces format.NrcCs6|si}|dd|_|dd|_|dd|_dS)Neni_pathzetc/network/interfaces eni_header netrules_pathz(etc/udev/rules.d/70-persistent-net.rules)rirrr)selfrrPrPrQ__init__s zRenderer.__init__rrouteindentr6c Csg}tdr d}nd}|r|d}|d}ddd}n |d }|d }d dd}d }d } |ddkrF|ddkrF|rC|d7}|d7}d} n|ddkra|ddkra|r_|d7}|d7}d} nd} d } dD]t} | rn| dkrnqe| dkr| d| || || f7} qe| |vr| dkr|rt|| r|d7}|d7}|d7}|d7}nt|| r| d7} n|ddkr| d 7} n| d!7} d|vr| d"|| |df7} qe| d#|| || f7} qe||| |||| ||S)$aWhen rendering routes for an iface, in some cases applying a route may result in the route command returning non-zero which produces some confusing output for users manually using ifup/ifdown[1]. To that end, we will optionally include an '|| true' postfix to each route line allowing users to work with ifup/ifdown without using --force option. We may at somepoint not want to emit this additional postfix, and add a 'strict' flag to this function. When called with strict=True, then we will not append the postfix. 1. http://askubuntu.com/questions/168033/ how-to-set-static-routes-in-ubuntu-server ipTFz post-up ipz pre-down ipviar )r!r zpost-up route addzpre-down route delgwz || truerrz0.0.0.0rz route addz route delz defaultz::r;rz -family inet6 route addz -family inet6 route delz -A inet6 default)rr!r r!z%s %s %sz -family inet6z -A inet6 z -hostz -netz %s/%sz %s %s)rwhichr rirI) rrrrL use_ip_cmdrrmappingor_true default_gw route_linekrPrPrQ _render_routesn       zRenderer._render_routeFr3rscsttt dWdn1swYg}di}dd}dd}|r8dd<|rd}g}t|D]\} d} | d<dd <d d d <d } trid } | d7} nd} d} | d <ddksddksddkrdd <|dur|rdndd<n2ddkrd d <dd<n#ddkrd d <dd<ntrdd <|dur|rdndd<d fdd|Dvrdd <dvpdv} |dur| rtfd d!d"D}|dur| si|t t | |d#t | t | | }d$gD]"}t |d%d&}|r/| s/||q||j|d'd(q|rU| rU|D] }||j|d'd(qC|||qC|rd)d dd*d+d|d,|duryi|t t d-|d#t d }d$D] }||j|d'd(q|||Sg}d.vsd/vr|d0jd4i|d1jd4i|t d2dd3|||S)5N config_idr\z accept-ra wakeonlangz ethernet-wolrSr]rZrUrtrYT6Fr$dhcp4dhcp6zipv6_dhcpv6-statefuldhcp10 accept_razipv6_dhcpv6-stateless ipv6_slaacrcsg|] }dd|vqS)zauto %sr[rP)rr)r3rPrQr(sz*Renderer._render_iface..aliasr9r:c3s|] }||fVqdSr)ri)rr)r4rPrQ 3s  z)Renderer._render_iface..)r9r:rsroutesrrz )rr[inet6)r[rUrZrY)r]rz bond-masterz bond-slavesz auto {name}ziface {name} {inet} {mode}r)rSrTrP)rxdeepcopyrKeyErrorpopri enumeraterdictrBr|rRrrrrIextendrclearrJ)rr3rssectionsr\r ethernet_wolrWroutes6rSrT subnet_inetr5 dns_presentr{r ipv6_networkrP)r3r4rQ _render_ifaces                                    zRenderer._render_iface network_statec sddddddgd}|D]}|ddkrt|}q|j}|r+||d d d <|j}|r8||d d d <d d dddddg}|||t|fdddD]}|ddkraqW||j||dqW| D] }| | |qpd dd|DdS)z1Given state, emit etc/network/interfaces content.rrrYrrt)r]rU)r[r]rYr\r[r\rr:r9rrr)rrrercrdrfcs|d|dfS)Nr]r[rP)rorderrPrQrz-Renderer._render_interfaces..)rNrz cSsg|]}d|qS) )rG)rsrPrPrQrsz/Renderer._render_interfaces..r) iter_interfacesrirxrr:dns_searchdomainsrr rK iter_routesrIrrG) rr rsrr3r searchdomainsrrrPrrQ_render_interfacespsH        zRenderer._render_interfaces templatestargetcCst||j}ttj||jr|jnd}t ||| ||j rCt||j }ttj|tj || |dddSdS)NrT)rL preserve_mode) r target_pathrr ensure_dirrrrr write_filerr_render_persistent_net)rr rrfpeniheadernetrulesrPrPrQrender_network_states zRenderer.render_network_stater)rF)NN)__name__ __module__ __qualname____doc__rrrstrrrrjr rrr#rPrPrPrQrs@ R   9rcCsFgd}ddg}|D] }tj||dsdSq d}tj|s!dSdS)N)ifqueryifupifdownz/sbinz /usr/sbin)rFz/etc/network/interfacesT)rrrrr)expectedrpenirPrPrQ availables r0r$)/rxrDrloggingrr contextlibrtypingrrrr cloudinitrrr cloudinit.netr r r r rrrcloudinit.net.network_stater getLoggerr%rkrrrrrjr)rRintrrr|rtimedrrrFrr0rPrPrPrQsj $   , C  ).