oB]c@sddlZddlZddlmZddlmZmZmZddlm Z ddlm Z ddlm Z ddl mZmZd Ze jeZd Zdd Zd Zdd ZdejfdYZddZddZdS(iNi(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 tfd|jDS(Nc3s0|]&\}}|jr||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} | jdr| dkr| d7} n|jit| 6qg| tkr|jitd6qg| d#krgd | jd } d | kr#| d | jd 7} nd | kr| jd r| jd } d| krp|ji| d6q|ji| d6nd| kr||| jdg7}nd| kr||| jdg7}nd| kr0d}t| rd|krd}n|ji| jd|6nx| jdgD]}d|jd|jd f}i|jd d6|d6}d|kr|ji|jddd6n|j|qCW|j| qgqgWd|kr;|jd}|r*|d|kr*tj d||d|q;|d|d\}'}(d$|(ksPd"|(krzqPn|(ji|%d$6qPWq=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(NRRtnoaliasRis (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~RRRRRRYRFR-R;RR9tifcfgtif_typetethtmacaddrRt bond_configt v2_bond_mapR t bond_paramstparamR tnewnametslave_interfacestportsRt match_prefixtparamst br_configt v2_bridge_maptnewvaluetvaltporttportvalRtnscfgRt_nameRJR((s9/usr/lib/python2.7/site-packages/cloudinit/net/netplan.pyRys                  N(t__name__t __module__t__doc__RRlR/RitpropertyR:RRSR|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 availables    cCsbd}ti|d6|d6}|s/d}n|jdsK|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_netplans   (RRORtRR~RRRt cloudinitRtloggingRRt cloudinit.netRRRTt getLoggerRR4RR/RERLR]R^RR(((s9/usr/lib/python2.7/site-packages/cloudinit/net/netplan.pyts    w