Viewing File: /usr/lib/python2.7/site-packages/cloudinit/net/sysconfig.pyc


jbc@sddlZddlZddlZddlmZddlmZddlmZddlm	Z	ddl
mZddlm
Z
dd	lmZmZmZmZejeZd
Zddd
dgZddZdZdZdZdefdYZdefdYZdefdYZde
j fdYZ dZ!e"dZ#e"dZ$e"dZ%dS( iN(tnetworkmanager_conf(tresolv_conf(tlog(tutil(t	ConfigObji(trenderer(tis_ipv6_addrtnet_prefix_to_ipv4_masktsubnet_is_ipv6tIPV6_DYNAMIC_TYPESs'/etc/NetworkManager/NetworkManager.conftcentostfedoratrheltsuset#cCsfddg}xJtdt|D]3}||rK|d||||<q"|||<q"Wdj|S(NsBCreated by cloud-init on instance boot automatically, do not edit.tit s
(trangetlentjoin(tseptlinesti((s;/usr/lib/python2.7/site-packages/cloudinit/net/sysconfig.pyt_make_headers	
cCs$d}|ddko#|d|kS(Ns::s0.0.0.0tprefixitnetwork(s::s0.0.0.0((troutetdefault_nets((s;/usr/lib/python2.7/site-packages/cloudinit/net/sysconfig.pyt_is_default_route%scCsGtjd|r?|jdr4|jdr4|Sd|Sn|SdS(Ns\st"s"%s"(tretsearcht
startswithtendswith(tvalue((s;/usr/lib/python2.7/site-packages/cloudinit/net/sysconfig.pyt_quote_value*s
cCst|}d|krd|dkrCd|ddkrQdSng|dd<t|ddtr|ddjdn|dddg|dd<|jtjdndS(sEAdd ifcfg-rh to NetworkManager.cfg plugins if main section is presenttmaintpluginssifcfg-rhNs'Enabled ifcfg-rh NetworkManager plugins(Rt
isinstancetlisttappendtwritetLOGtdebug(tpathtconfig((s;/usr/lib/python2.7/site-packages/cloudinit/net/sysconfig.pytenable_ifcfg_rh5s
t	ConfigMapcBsjeZdZide6de6ZdZdZdZdZ	dZ
dZd	Zd
Z
RS(s!Sysconfig like dictionary object.tyestnocCs
i|_dS(N(t_conf(tself((s;/usr/lib/python2.7/site-packages/cloudinit/net/sysconfig.pyt__init__PscCs||j|<dS(N(R2(R3tkeyR"((s;/usr/lib/python2.7/site-packages/cloudinit/net/sysconfig.pyt__setitem__SscCs|j|S(N(R2(R3R5((s;/usr/lib/python2.7/site-packages/cloudinit/net/sysconfig.pyt__getitem__VscCs
||jkS(N(R2(R3R5((s;/usr/lib/python2.7/site-packages/cloudinit/net/sysconfig.pyt__contains__YscCs|jj|ddS(N(R2tpoptNone(R3R5((s;/usr/lib/python2.7/site-packages/cloudinit/net/sysconfig.pytdrop\scCs
t|jS(N(RR2(R3((s;/usr/lib/python2.7/site-packages/cloudinit/net/sysconfig.pyt__len___scCstS(s6Skip the pair key, value if it matches a certain rule.(tFalse(R3R5tval((s;/usr/lib/python2.7/site-packages/cloudinit/net/sysconfig.pytskip_key_valuebscCstj}|jt|jr5|jdnxt|jjD]}|j|}|j||rvqKnt|t	r|j
|}nt|tjst|}n|jd|t
|fqKW|jS(Ns
s%s=%s
(tsixtStringIOR)RR2tsortedtkeysR?R&tboolt	_bool_maptstring_typeststrR#tgetvalue(R3tbufR5R"((s;/usr/lib/python2.7/site-packages/cloudinit/net/sysconfig.pyt	to_stringfs	
!(t__name__t
__module__t__doc__tTrueR=RER4R6R7R8R;R<R?RJ(((s;/usr/lib/python2.7/site-packages/cloudinit/net/sysconfig.pyR/Gs
							tRoutecBsSeZdZdZdZedZedZdZddZ	RS(s!Represents a route configuration.cCsVtt|jd|_t|_t|_||_||_||_	||_
dS(Ni(tsuperROR4tlast_idxR=thas_set_default_ipv4thas_set_default_ipv6t_route_namet_base_sysconf_dirtroute_fn_tpl_ipv4troute_fn_tpl_ipv6(R3t
route_nametbase_sysconf_dirtipv4_tpltipv6_tpl((s;/usr/lib/python2.7/site-packages/cloudinit/net/sysconfig.pyR4zs						cCs[t|j|j|j|j}|jj|_|j|_|j|_|j	|_	|S(N(
RORTRURVRWR2tcopyRQRRRS(R3tr((s;/usr/lib/python2.7/site-packages/cloudinit/net/sysconfig.pyR\scCs|ji|jd6|jd6S(Ntbasetname(RVRURT(R3((s;/usr/lib/python2.7/site-packages/cloudinit/net/sysconfig.pyt	path_ipv4scCs|ji|jd6|jd6S(NR^R_(RWRURT(R3((s;/usr/lib/python2.7/site-packages/cloudinit/net/sysconfig.pyt	path_ipv6scCs
d|kS(Nt:((R3taddress((s;/usr/lib/python2.7/site-packages/cloudinit/net/sysconfig.pyt
is_ipv6_routestipv4c
Cs|dkr%tdt|ntj}|jt|jrZ|jdnd}xt|jjD]}d|krv|j	dd}t|j|}|dkr|j
|rt|jd|}t|jd	|}|d
}|jddt|t|f|jdd	t|t|f|jddt|t|fd|}	|	|jkrvt|jd|}
|jddt|t|
fqvqy|dkry|j
|ryt|jd|}t|jd	|}d||jkrJd
t|jd|nd}
|jd||||
|jfqyqvqvW|j
S(NRetipv6sUnknown protocol '%s's
itADDRESSRtNETMASKtGATEWAYis%s=%s
tMETRICsmetric s%s/%s via %s %s dev %s
(ReRf(t
ValueErrorRGR@RAR)RR2RBRCtreplaceRdR#RTRH(R3tprotoRItreindexR5tindext
address_valuet
netmask_valuet
gateway_valuet
metric_keytmetric_value((s;/usr/lib/python2.7/site-packages/cloudinit/net/sysconfig.pyRJsJ	

4(
RKRLRMR4R\tpropertyR`RaRdRJ(((s;/usr/lib/python2.7/site-packages/cloudinit/net/sysconfig.pyROws				tNetInterfacecBseZdZidd6dd6dd6dd6d	d
6ZddZedZejd
ZedZejdZedZ	e
e
dZdZRS(sERepresents a sysconfig/networking-script (and its config + children).tEthernettethernettBondtbondtBridgetbridget
InfiniBandt
infinibandtVlantvlancCstt|jg|_||_|jjd}t||d|jdd|jd|_|jjd|_||_	||_
||jd<||_dS(Ntroute_templatesRZReR[Rftiface_templatestDEVICE(
RPRvR4tchildrent	templatestgetROtroutestiface_fn_tpltkindt_iface_nameR2RU(R3t
iface_nameRYRRt	route_tpl((s;/usr/lib/python2.7/site-packages/cloudinit/net/sysconfig.pyR4s				
cCs|jS(N(R(R3((s;/usr/lib/python2.7/site-packages/cloudinit/net/sysconfig.pyR_scCs||_||jd<dS(NR(RR2(R3R((s;/usr/lib/python2.7/site-packages/cloudinit/net/sysconfig.pyR_s	cCs|jS(N(t_kind(R3((s;/usr/lib/python2.7/site-packages/cloudinit/net/sysconfig.pyRscCs?||jkrt|n||_|j||jd<dS(NtTYPE(tiface_typesRkRR2(R3R((s;/usr/lib/python2.7/site-packages/cloudinit/net/sysconfig.pyRs	cCs|ji|jd6|jd6S(NR^R_(RRUR_(R3((s;/usr/lib/python2.7/site-packages/cloudinit/net/sysconfig.pyR,scCspt|j|j|jd|j}|jj|_|rQt|j|_n|rl|j	j|_	n|S(NR(
RvR_RURRR2R\R'RR(R3t
copy_childrentcopy_routestc((s;/usr/lib/python2.7/site-packages/cloudinit/net/sysconfig.pyR\scCs |dkr|dkrtStS(NRR(RNR=(R3R5R>((s;/usr/lib/python2.7/site-packages/cloudinit/net/sysconfig.pyR?s(
RKRLRMRR4RuR_tsetterRR,R=R\R?(((s;/usr/lib/python2.7/site-packages/cloudinit/net/sysconfig.pyRvs

tRenderercBs^eZdZedefdefd9d:gZed;d<d=d>d?d@dAdBdCdDdEdFdGdHdIgZedJdKdLgZiZ	dMd+Zed,Z
ed-Zed.Zed/Zed0Zed1Zed2ZedMd3ZedMd4Zed5Zed6ZedMd7ZdMdMd8ZRS(Ns7Renders network information in a /etc/sysconfig format.tONBOOTtUSERCTLt	BOOTPROTOtnonet	STARTMODEtautot	bond_modesmode=%stbond_xmit_hash_policysxmit_hash_policy=%stbond_miimons	miimon=%stbond_min_linkssmin_links=%stbond_arp_intervalsarp_interval=%stbond_arp_ip_targetsarp_ip_target=%stbond_arp_validatesarp_validate=%stbond_ad_selectsad_select=%stbond_num_grat_arpsnum_grat_arp=%stbond_downdelaysdowndelay=%stbond_updelays
updelay=%stbond_lacp_rateslacp_rate=%stbond_fail_over_macsfail_over_mac=%stbond_primarys
primary=%stbond_primary_reselectsprimary_reselect=%st
bridge_stptSTPt
bridge_ageingtAGEINGtbridge_bridgepriotPRIOcCs|si}n|jdd|_|jdd|_|jdd|_d}|jd||_i|jd	d	6|jd
d
6|jdd6|_dS(Ntsysconf_dirs
etc/sysconfigt
netrules_paths(etc/udev/rules.d/70-persistent-net.rulestdns_pathsetc/resolv.confs,etc/NetworkManager/conf.d/99-cloud-init.conftnetworkmanager_conf_pathtcontrolRR(RRRRRR(R3R-tnm_conf_path((s;/usr/lib/python2.7/site-packages/cloudinit/net/sysconfig.pyR4?s		cCsx!|jD]\}}|||<q
Wxdd
dgD]V\}}|j|}|dk	r1|dkrz|ddkrzq1n|||<q1q1W|ddk	r|d|d	<ndS(
Ntmac_addresstHWADDRtmtutMTUttypetphysicalR~s	accept-ratIPV6_FORCE_ACCEPT_RA(RR(RR(Rs
infiniband(tiface_defaultsRR:(tclstifacet	iface_cfgtktvtold_keytnew_keyt	old_value((s;/usr/lib/python2.7/site-packages/cloudinit/net/sysconfig.pyt_render_iface_sharedOsc	Csd|d<xt|dt|jD]\}}d}|jd}|dks_|dkrvt|d<t|d	<nF|d
krt|d<t|d<t|d	<d|d
<n|dkrt|d<t|d<n|d6krd|d<n|dkrt|rd}t|d<nd|krt||ko@|d||k}|rptjd|j	|||dn|d||<qn8|dkr||k|d<nt
d||j	f|jddkr&t|d<d|d<q&q&Wd}	d}
xt|dt|jD]k\}}|jd}d|krL|d|d<n|d7kr|r|ddkrt|d<qqq|tkrqq|dkrt|r8|
d}
d|d |d!f}|
d"kr||d#<||d$<q|
dkr||d%<||d&<q|d%cd'|7<||d(|
<nR|	d}	|	d"krTd)n	t
|	}|d |d*|<t|d!|d+|<d,|krt|d-<t|d,r|d,|d.<q|d,|d/<nd0|krd'j|d0|d1<nd2|krt|d2d3kr=tjd4|j	t|d2nx<t|d2d3 dD] \}}
|
|d5t
|<qUWqqqWdS(8NRRtstartRRtdhcp6sipv6_dhcpv6-statefultIPV6INITtDHCPV6Csipv6_dhcpv6-statelesst
IPV6_AUTOCONFs-StDHCPV6C_OPTIONSt
ipv6_slaactdhcp4tdhcptstatictIPV6_MTURsZNetwork config: ignoring %s device-level mtu:%s because ipv4 subnet-level mtu:%s provided.tmanualRs1Unknown subnet type '%s' found for interface '%s'RRitmetricRjtDHCLIENT_SET_DEFAULT_ROUTEis%s/%sRcRitIPV6ADDRtIPADDR6tIPV6ADDR_SECONDARIESt	IPADDR6_0Rs
IPADDR6_%dRtIPADDRRhtgatewaytDEFROUTEtIPV6_DEFAULTGWRit
dns_searchtDOMAINtdns_nameserversis6%s has %d entries in dns_nameservers. Only 3 are used.tDNS(RR(RRR(t	enumerateRRRRNRRDR*twarningR_RkR=R	RGRRRR+(RRtsubnetsthas_default_routeRtsubnettmtu_keytsubnet_typetmtu_mismatcht
ipv4_indext
ipv6_indext	ipv6_cidrtsuffR((s;/usr/lib/python2.7/site-packages/cloudinit/net/sysconfig.pyt_render_subnets`s
(










(







	$cCsxt|dt|jD]\}}|jd}x|jdgD]}|jdplt|d}t|rl|tkrl|jdr|js|jdr|jrt	d|j
nd}	d	}
d
}t|d<|ddkrt|d<nd|krL|r2|d|d<t|_qL|d|d<t|_nd|kr|d|d<qqJd|j}	d|j}
d|j}d|j}|jd7_xUd|	fd|fd|
fd|fgD])\}
}|
|kr||
||<qqWqJWqWdS(NRRRRfRRes?Duplicate declaration of default route found for interface '%s'tGATEWAY0tNETMASK0tADDRESS0RRRRRRRRiRRjs	GATEWAY%ss	NETMASK%ss	ADDRESS%ssMETRIC%sitnetmaskR(sdhcpsdhcp4sdhcp6(
RRRRRRR	RRRSRkR_RNRQ(RRt	route_cfgRt_RRRtis_ipv6tgw_keytnm_keytaddr_keyRsRR((s;/usr/lib/python2.7/site-packages/cloudinit/net/sysconfig.pyt_render_subnet_routessJ(			





		cCsg}x|jD]\}}||jddg}x`|D]X}||kr;||}t|ttfr~dj|}n|j||Pq;q;WqW|rdj||d<ndS(NRt-RtBONDING_OPTS(t
bond_tpl_optsRlR&ttupleR'RR((RRRt	bond_optstbond_keyt	value_tplt	bond_keyst
bond_value((s;/usr/lib/python2.7/site-packages/cloudinit/net/sysconfig.pyt_render_bonding_optss

c	Cstj}xo|j|D]^}|d}|jdg}||}|j}|j|||j|j|||qWdS(NR_R(Rtfilter_by_physicaltiter_interfacesRRRRR(	Rt
network_statetiface_contentstphysical_filterRRt
iface_subnetsRR((s;/usr/lib/python2.7/site-packages/cloudinit/net/sysconfig.pyt_render_physical_interfaces's	

	cCstjd}tjd}xl|j|D][}|d}||}|j|||g}|j|jx!|D]}	t|	d<d|	_qxW|j	dr|j	d|d<n|j	dg}
|j
}|j||
|j|j
|||
tg|j|D] }|d|kr|d^q}
xLt|
D]>\}}d|}|||<||}||d	<t|d
<qGWq.WdS(NRzsbond-masterR_tBONDING_MASTERRtMACADDRRsBONDING_SLAVE%stMASTERtSLAVE(Rtfilter_by_typetfilter_by_attrRRtextendRRNRRRRRRRBR(RRRtbond_filtertslave_filterRRRtmaster_cfgst
master_cfgRRtslave_ifacetbond_slavesRot
bond_slavetslavestrt	slave_cfg((s;/usr/lib/python2.7/site-packages/cloudinit/net/sysconfig.pyt_render_bond_interfaces5s8

	


	#



cCstjd}x|j|D]}|d}||}t|d<d|_|d}t||d}||krtjd||dj|n||d<|j	d	g}	|j
}
|j||	|j|j
||
|	qWdS(
NRR_tVLANsvlan-raw-devicetvlan_idsIName '%s' for vlan '%s' is not officially supportedby RHEL. Supported: %sRtPHYSDEVR(RRRRNRt_supported_vlan_namesR*tinfoRRRRRR(RRRtvlan_filterRRRtrdevt	supportedRR((s;/usr/lib/python2.7/site-packages/cloudinit/net/sysconfig.pyt_render_vlan_interfaces_s$


	

	cCstt|jt|jgs(dStjd}|rjtjj	|rjtjt
j|}nx|jD]}|j|qtWx|jD]}|j
|qWtd}t|}|j|s|d|}n|S(NRt;s
(tanyRRtdns_searchdomainsR:Rt
ResolvConftosR,tisfileRt	load_filetadd_nameservertadd_search_domainRRGR (Rtexisting_dns_pathtcontentt
nameservertsearchdomaintheadertcontent_str((s;/usr/lib/python2.7/site-packages/cloudinit/net/sysconfig.pyt_render_dnsxscCsutjd}|jr.|jdddnt|dkrDdSdjtddj|jdg}|S(NRR$tdnsRis
(	RtNetworkManagerConfRtset_section_keypairRR:RRR)(RRR.tout((s;/usr/lib/python2.7/site-packages/cloudinit/net/sysconfig.pyt_render_networkmanager_confs	-cCsEtjd}x/|j|D]}|d}||}d|_x4|jD])\}}||krL||||<qLqLW|jdr|jd|d<nxX|jdgD]D}	||	}
|
g}|j|
jx|D]}||d<qWqW|jdg}
|j}|j	||
|j
|j|||
qWdS(NR|R_RRtbridge_portstBRIDGER(RRRRtbridge_opts_keysRRRRRRR(RRRt
bridge_filterRRRRRtbridged_iface_nametbridged_cfgtbridged_cfgst
bridge_cfgRR((s;/usr/lib/python2.7/site-packages/cloudinit/net/sysconfig.pyt_render_bridge_interfacess*

	
	
	c	Cstjd}xx|j|D]g}|d}||}d|_|jdg}|j}|j|||j|j|||qWdS(NR~R_R(	RRRRRRRRR(	RRRt	ib_filterRRRRR((s;/usr/lib/python2.7/site-packages/cloudinit/net/sysconfig.pyt_render_ib_interfacess

		cCs|s|j}ni}x`|jD]R}|ddkrAq%n|d}t|||}|j|||||<q%W|j|||j|||j|||j|||j||i}x|j	D]\}}|s|j
r?|j||j<x0|j
D]"}|r|j||j<qqWn|j
rx]t|j
j|j
jgddgD]1\}	}
|	|krp|j
j|
||	<qpqpWqqW|S(s3Given state, return /etc/sysconfig files + contentsRtloopbackR_ReRf(RRRvRR	RR#RARCtitemsRRJR,RtzipR`Ra(RRYRRRRRRtcontentstcpathRm((s;/usr/lib/python2.7/site-packages/cloudinit/net/sysconfig.pyt_render_sysconfigs:
	$cCs|s|j}nd}tj||j}x?|j||d|jD]\}}tj|||qLW|jrtj||j}|j|d|}	|	rtj||	|qn|j	rtj||j	}
|j
||}|rtj|
||qn|jrS|j|}tj||j}
tj|
||nt
d|r~ttj|dtntj||jd}|jdr~tjtjj|g}xUtj|dtjd	D]5}d
|krPn|jds|j|qqW|jtdg|jr[|jd|jdntj|d	j|d	|ndS(NiRR-ttargetR,RRtquiets
s
cloud-initsNETWORKING=sIPV6_AUTOCONF=sNETWORKING_IPV6=sNETWORKING=yessNETWORKING_IPV6=yessIPV6_AUTOCONF=no(sNETWORKING=sIPV6_AUTOCONF=sNETWORKING_IPV6=(RRttarget_pathRRIREt
write_fileRR3RR8Rt_render_persistent_nettavailable_nmR.tNM_CFG_FILERR!t
ensure_dirR(R,tdirnameR*RNtsplitR R(RRtuse_ipv6R(R3RRRJt	file_modeRYR,tdataRtresolv_contentRtnm_conf_contenttnetrules_contentRtsysconfig_pathtnetcfgtline((s;/usr/lib/python2.7/site-packages/cloudinit/net/sysconfig.pytrender_network_statesX							%		
	(s	BOOTPROTOsnone(s	STARTMODER(Rsmode=%s(Rsxmit_hash_policy=%s(Rs	miimon=%s(Rsmin_links=%s(Rsarp_interval=%s(Rsarp_ip_target=%s(Rsarp_validate=%s(Rsad_select=%s(Rsnum_grat_arp=%s(Rsdowndelay=%s(Rs
updelay=%s(Rslacp_rate=%s(Rsfail_over_mac=%s(Rs
primary=%s(Rsprimary_reselect=%s(RR(RR(RRN(RKRLRMRRNR=RRR;RR:R4tclassmethodRRRRR	RR#tstaticmethodR3R8RARCRIR](((s;/usr/lib/python2.7/site-packages/cloudinit/net/sysconfig.pyRsX		x?* cCs/gdD]$}|jd|dt|^qS(siReturn list of supported names for vlan devices per RHEL doc
    11.5. Naming Scheme for VLAN Interfaces.s{rdev}{vid:04}s{rdev}{vid}s{rdev}.{vid:04}s{rdev}.{vid}R!tvid(s{rdev}{vid:04}s{rdev}{vid}s{rdev}.{vid:04}s{rdev}.{vid}(tformattint(R!R`R((s;/usr/lib/python2.7/site-packages/cloudinit/net/sysconfig.pyRscCsDtd|}td|}tjdtkoCt||gS(NRJtvariant(tavailable_sysconfigRORtsystem_infot
KNOWN_DISTROSR%(RJt	sysconfigtnm((s;/usr/lib/python2.7/site-packages/cloudinit/net/sysconfig.pyt	available$scCsddg}ddg}x-|D]%}tj|d|d|stSqWddg}x0|D](}tjjtj||r[tSq[WtS(	Ntifuptifdowns/sbins	/usr/sbinRRJs/etc/sysconfig/network-scripts/network-functionssetc/sysconfig/config(RtwhichR=R(R,R)RLRN(RJtexpectedRtptexpected_paths((s;/usr/lib/python2.7/site-packages/cloudinit/net/sysconfig.pyRd+s
	
cCs)tjjtj|dts%tStS(NR,(R(R,R)RRLRPR=RN(RJ((s;/usr/lib/python2.7/site-packages/cloudinit/net/sysconfig.pyRO;s!(&R(RR@tcloudinit.distros.parsersRRt	cloudinitRtloggingRt	configobjRRRRRRRR	t	getLoggerRKR*RPRfRRR#R.tobjectR/RORvRRR:RiRdRO(((s;/usr/lib/python2.7/site-packages/cloudinit/net/sysconfig.pyt<module>s4"
			0YD			
Back to Directory File Manager