8889841có oBú]c@sþddlZddlZddlmZddlmZmZmZddlm Z ddlm Z ddlm Z ddl mZmZd Ze jeƒZd „Zdd „Zd „Zdd „Zdejfd„ƒYZdd„Zdd„ZdS(iÿÿÿÿNi(trenderer(tsubnet_is_ipv6tNET_CONFIG_TO_V2tIPV6_DYNAMIC_TYPES(tlog(tutil(tsafeyaml(t SYS_CLASS_NETtget_devicelists4# 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 cs t‡fd†|jƒDƒƒS(Nc3s0|]&\}}|jˆƒr||fVqdS(N(t startswith(t.0tkeytvalue(tmatch(s9/usr/lib/python2.7/site-packages/cloudinit/net/netplan.pys "s (tdicttitems(tconfigR ((R s9/usr/lib/python2.7/site-packages/cloudinit/net/netplan.pyt_get_params_dict_by_match!sc Cs[dd„}|d"kr!g}ng}g}g}g}|jdgƒ} | d"kr`g} nxy| D]q} | jdƒ} | jdƒr»| dkr¤| d7} n|jit| 6ƒqg| tkrÞ|jitd6ƒqg| d#krgd | jd ƒ} d | kr#| d | jd ƒ7} nd | kr‡| jd ƒr‡| jd ƒ} d| krp|ji| d6ƒq‡|ji| d6ƒnd| kr²||| jdgƒƒ7}nd| krÝ||| jdgƒƒ7}nd| kr0d}t| ƒrd|krd}n|ji| jdƒ|6ƒnx•| jdgƒD]}d|jdƒ|jd ƒf}i|jd ƒd6|d6}d|kr·|ji|jddƒd6ƒn|j|ƒqCW|j| ƒqgqgWd|kr;|jdƒ}|r*|d|kr*tj d||d|ƒq;|d|d\}'}(d$|(ksPd"|(krzqPn|(ji|%d$6ƒqPWq=Wnd%„})|jd&ƒ||)d'|ƒ7}||)d(|ƒ7}||)d)|ƒ7}||)d*|ƒ7}||)d+|ƒ7}d,j|ƒS(.NisV2 to V2 passthroughR(texplicit_startt explicit_endRFRIcss-|]#\}}|dk r||fVqdS(N(R/(R R R ((s9/usr/lib/python2.7/site-packages/cloudinit/net/netplan.pys s Rtphysicalsset-nameR t mac_addresst macaddresstbondtbond_sbond-t_t-it parameterss bond-slavestnonetbridget bridge_portstbridge_s path-costs port-prioritytvlantvlan_idtidsvlan-raw-devicetlinkR,R.R-cSsK|rGtji||6dtdtdtƒ}tj|dƒ}|gSgS(NRŠR‹tnoaliasRis (RtdumpsRSR2Rtindent(RItsectiontdumpttxt((s9/usr/lib/python2.7/site-packages/cloudinit/net/netplan.pyt_render_sections snetwork: version: 2 t ethernetstwifistbondstbridgestvlansRt(s path-costs port-priority(tversionR4RURRRRSt_network_stateR0R$tdns_searchdomainstiter_interfacesRRR/tlowerRER:R1RRtreplaceR6RLRGtcopyRtintR3Rv(*RhR~R£R¤R¦R¥R§RYRFR-R;RR9tifcfgtif_typetethtmacaddrRt bond_configt v2_bond_mapR t bond_paramstparamR tnewnametslave_interfacestportsR•t match_prefixtparamst br_configt v2_bridge_maptnewvaluetvaltporttportvalR˜tnscfgRŸt_nameRJR¢((s9/usr/lib/python2.7/site-packages/cloudinit/net/netplan.pyRysÆ                  N(t__name__t __module__t__doc__RƒRlR/RitpropertyR:R‚RSR|R}Ry(((s9/usr/lib/python2.7/site-packages/cloudinit/net/netplan.pyR^ºs     cCsIdg}ddg}x-|D]%}tj|d|d|ƒstSqWtS(NR_s /usr/sbins/sbinR.RW(RtwhichRSR2(RWtexpectedR.tp((s9/usr/lib/python2.7/site-packages/cloudinit/net/netplan.pyt available•s    cCsbd}ti|d6|d6ƒ}|s/d}n|jdƒsK|d7}n|j|ƒ}||S(Nsetc/network/50-cloud-init.yamlRbRcRts (R^RzRy(R~RRbRtcontents((s9/usr/lib/python2.7/site-packages/cloudinit/net/netplan.pytnetwork_state_to_netplanžs   (R®RORtRR~RRRt cloudinitRtloggingRRt cloudinit.netRRRTt getLoggerRÅR4RR/RERLR]R^RÌRÎ(((s9/usr/lib/python2.7/site-packages/cloudinit/net/netplan.pyts    w  Û