/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__/netplan.cpython-310.pyc (15215B)
o th]@sLddlZddlZddlZddlZddlZddlZddlmZddlm Z m Z m Z ddl m Z mZmZmZddlmZmZmZmZmZmZddlmZmZdZdZeeZd d Z d e!d e!d e fddZ"ddZ#d%ddZ$ d%de%de e%de&fddZ'de%fddZ(de%de%de&fddZ)de%de%fdd Z*Gd!d"d"ej+Z+d#d$Z,dS)&N)SpooledTemporaryFile)CallableListOptional)featuressafeyamlsubputil)IPV6_DYNAMIC_TYPES SYS_CLASS_NETget_devicelistrenderershould_add_gateway_onlink_flagsubnet_is_ipv6)NET_CONFIG_TO_V2 NetworkStatez/etc/netplan/50-cloud-init.yamls4# This is the initial network config. # It can be overwritten by cloud-init or console-conf. network: version: 2 ethernets: all-en: match: name: "en*" dhcp4: true all-eth: match: name: "eth*" dhcp4: true cstfdd|DS)Nc3s&|]\}}|r||fVqdSN) startswith).0keyvaluematch7/usr/lib/python3/dist-packages/cloudinit/net/netplan.py -s z,_get_params_dict_by_match..)dictitems)configrrrr_get_params_dict_by_match,s rrentryrcCsd&dd}g}g}g}g}|dg} | durg} | D]} | d} | d} | drW| dkr5| d 7} || d i| durV| d } || i}| |d <|| |iq| tvrx|d d i| durw|di}| |d <|d|iq| dvr5d| d}d| vr|d| d7}| dr| ddd}t| d|rtd| d|d |d<| dur| |d<||d| vr||| dg7}d| vr||| dg7}d| vrd}t| rd|vrd}||| di| dgD]3}d|d|df}|d|d}|d}|dur!||d<n | dur*| |d<||q||qd|vr[|d}|rU|d|krUt d ||d|n|d|d<t |d!kri|d"|it |d!krw|d|it |d!krd"|i}|d#|it |d!kr|d#i}|d$|i|d#|id%|vr|d%dur|d%t |d%idSdSdS)'aThis method parse a cloudinit.net.network_state dictionary (config) and maps netstate keys/values into a dictionary (entry) to represent netplan yaml. (config v1 -> netplan) An example config dictionary might look like: {'mac_address': '52:54:00:12:34:00', 'name': 'interface0', 'subnets': [ {'address': '192.168.1.2/24', 'mtu': 1501, 'type': 'static'}, {'address': '2001:4800:78ff:1b:be76:4eff:fe06:1000", 'mtu': 1480, 'netmask': 64, 'type': 'static'}], 'type: physical', 'accept-ra': 'true' } An entry dictionary looks like: {'set-name': 'interface0', 'match': {'macaddress': '52:54:00:12:34:00'}, 'mtu': 1501} After modification returns {'set-name': 'interface0', 'match': {'macaddress': '52:54:00:12:34:00'}, 'mtu': 1501, 'address': ['192.168.1.2/24', '2001:4800:78ff:1b:be76:4eff:fe06:1000"], 'ipv6-mtu': 1480}  cSs*|rt|ts |S||vr||S|gS)zT Helper to convert strings to list of strings, handle single string ) isinstancestrsplit)objtokenrrr_listifyYs  z$_extract_addresses.._listifysubnetsNtypemetricdhcp4Tz -overridesz route-metricdhcp6zdhcp6-overrides)staticstatic6z%saddressprefixz/%dgatewaydefault)viatozAGateway %s is not contained within subnet %s, adding on-link flagzon-linkdns_nameservers dns_searchmtuzipv6-mturoutesz%s/%snetworkzZNetwork config: ignoring %s device-level mtu:%s because ipv4 subnet-level mtu:%s provided.r addresses nameserverssearchz accept-ra)r!) getrupdater rLOGdebugappendrwarninglenr is_true)rr ifnamerr'r;r9r< searchdomainsr(subnetsn_type sn_metricdhcp_override_key dhcp_overrideaddr new_routemtukeyrouteto_net route_metric entry_mtunsrrr_extract_addresses4s %                      rUcs<tfdd|D}t|dkr|d|idSdS)Ncs$g|]\}}|ddkr|qS)z bond-masterN)r>)rnamecfg bond_masterrr s z0_extract_bond_slaves_by_name..r interfaces)sortedrrDr?)r[r rYbond_slave_namesrrXr_extract_bond_slaves_by_names  r^cs~td}tj|sdSt|}|tkrdSfdddD}dd|D}t d|||g|D]}t |q5dS)Nz etc/netplan/00-snapd-config.yamlcsg|]}t|qSr)r target_pathrftargetrrrZs z"_clean_default..)z-run/systemd/network/10-netplan-all-en.networkz.run/systemd/network/10-netplan-all-eth.networkz#run/systemd/generator/netplan.stampcSsg|] }tj|r|qSr)ospathisfiler`rrrrZsz9removing known config '%s' and derived existing files: %s) rr_rdrerfr load_binary_fileKNOWN_SNAPD_CONFIGr@rAunlink)rctpathcontentderivedexistingrarrbr_clean_defaults$     rnnet_config_contentrcreturnc Cszddlm}ddlm}WntytdtYdSwt|}zGt dd8}| || | dt j|}|||}|||sStjt}n|}||Wdn1sdwYWnty}ztd t|WYd}~dSd}~wwtd d S) adUse netplan.State._write_yaml_file to write netplan config Where netplan python API exists, prefer to use of the private _write_yaml_file to ensure proper permissions and file locations are chosen by the netplan python bindings in the environment. By calling the netplan API, allow netplan versions to change behavior related to file permissions and treatment of sensitive configuration under the API call to _write_yaml_file. In future netplan releases, security-sensitive config may be written to separate file or directory paths than world-readable configuration parts. r)Parser)Statez.No netplan python module. Fallback to write %sFwmodeNzUUnable to render network config using netplan python module. Fallback to write %s. %sz0Rendered netplan config using netplan python APIT)netplan.parserrq netplan.staterr ImportErrorr@rACLOUDINIT_NETPLAN_FILE_maybe_strip_invalid_mturwriteflushseekioSEEK_SET load_yamlimport_parser_resultsrdrebasename_write_yaml_file ExceptionrC) rorcrqrrraparserstate_output_filefileerrrnetplan_api_write_yaml_filesJ        rcCstjr tjdd|tjd}|S)aStrip invalid MTU from the netplan config. This is a fix for https://github.com/canonical/cloud-init/issues/6239 A 0 MTU value is NOT valid, but cloud-init accepted it prior to 24.2, so rejecting it after c465de8 is a breaking change for existing releases. z^\s*mtu:\s*0\s*\n)flags)rSTRIP_INVALID_MTUresub MULTILINE)rorrrrz/srzcfg_filerkcCs.tj|sdStt|}|t|kS)zryrr _postcmdsr _features)selfrrrr__init__aszRenderer.__init__rpc Cs|jsEztj|jdd\}}t|}|dd|_W|jStjy)Y|jSttfyD}zt d|WYd}~|jSd}~ww|jS)NTcapturez netplan.iorz-Failed to list features from netplan info: %s) rr NETPLAN_INFOr rProcessExecutionError TypeErrorKeyErrorr@rA)r info_blob_errrrrrrrjs zRenderer.features network_state templatesc Cstjt||j}ttj|| |}|j r|j nd}| ds*|d7}||}|dur5|}n|}t ||}t ||dsGt|||jrOt|d|j|j|d|j|jddS)Nr rb)runconfig_changed)r)rdrejoinrr_rr ensure_dirdirname_render_contentrendswithrrrrrn_netplan_generater_net_setup_link) rrrrcfpnplanrkheadertarget_netplan_config_changedrrrrender_network_statexs&       zRenderer.render_network_staterrcCs8|s tddS|stddStj|jdddS)Nz"netplan generate postcmds disabledzEskipping call to `netplan generate`. reason: identical netplan configTr)r@rArNETPLAN_GENERATE)rrrrrrrs zRenderer._netplan_generateFc Cs|s tddSdtvrtddSgd}tdD]6}ztD]}tjt |r:t j |t |gddq$d}Wnt j yT}z|}WYd}~qd}~ww|r\t d |dS) zTo ensure device link properties are applied, we poke udev to re-evaluate networkd .link files and call the setup_link udev builtin command z'netplan net_setup_link postcmd disabledNz net.ifnames=0z%Predictable interface names disabled.)udevadmz test-builtinnet_setup_linkTrzQ'udevadm test-builtin net_setup_link' unable to run successfully for all devices.) r@rAr get_cmdlineranger rdreislinkr rr RuntimeError)rr setup_lnk_ifacelast_exceptionrrrrrs8     zRenderer._net_setup_linkc+ CsR|jdkrtdtjd|jidddSi}i}i}i}i}g}|jdg}|j} |j } | D]} | d} t t dd | } | d }|d kr| | d dd }d| vra| d|d<|d dur| dd}|durzd|i|d <n|d =|d=t| || |j|| |iq2|dkri}i}td}dD]%}t| |}| D]\}}||dd}|durq|||iqqt|dkr|d|i| dr| d|d<| d}|dkrt||| t| || |j|| |iq2|dkr| d}|durtd| q2tt|}d|i}d}t| |}i}td} | D]8\}}| |}|dur?q/|||i|dvrfi}!|D]}"|"\}#}$t|$|!|#<qO|||!iq/t|dkrv|d|i| dr| d|d<t| || |j|| |iq2|d kr| d!| d"d#}%| dd}|dur||%d<t| |%| |j|| |%iq2| s| r| | d$}&|||||fD] }'|' D]\}(})d%|)vsd&|)vrq|)d%|&iqݐqd'd(}*|d)||*d*|7}||*d+|7}||*d,|7}||*d-|7}||*d.|7}d/|S)0NzV2 to V2 passthroughr:F)explicit_start explicit_endr[rVcSs |dduS)Nr)itrrrs z*Renderer._render_content..r)physicalr)set-namerkeep_configurationcritical mac_address macaddressrbond)bond_zbond-r-r parametersz bond-slavesnonebridge bridge_portsz8Invalid config. The key'bridge_ports' is required in %s.bridge_)z path-costz port-priorityvlanvlan_idzvlan-raw-device)idlink)r;r=r<r;cSs0|rtj||idddd}t|d}|gSgS)NFT)rrnoaliasz )rdumpstextwrapindent)rVsectiondumptxtrrr_render_section[s z1Renderer._render_content.._render_sectionznetwork: version: 2 ethernetswifisbondsbridgesvlansr)versionr@rArrr_network_stater>r6dns_searchdomainsiter_interfacesrfilterrlowerrUrr?rrreplacerDr^rCr\copyr$intrBr)+rrrrrrrrkr[r<rGrrFifcfgif_typeethmacaddrr bond_config v2_bond_mapr bond_paramsparamrnewnameslave_interfacesrportsr match_prefixparams br_config v2_bridge_mapnewvaluevalportportvalrnscfgr_namerWrrrrrs                              zRenderer._render_contentr)NN)F)__name__ __module__ __qualname____doc__rrrrr#rrrrrboolrrrrrrrr[s$   ' #rcCs0dg}ddg}|D] }tj||dsdSq dS)Nrz /usr/sbinz/sbin)r=FT)rwhich)expectedr=prrr availableqsrr)-rr~loggingrdrrtempfilertypingrrr cloudinitrrrr cloudinit.netr r r r rrcloudinit.net.network_staterrryrh getLoggerrr@rrrUr^rnr#rrrzrrrrrrrrsD     9