Viewing File: /usr/lib/python2.7/site-packages/cloudinit/distros/freebsd.pyc


oB]c@sddlZddlZddlmZddlZddlmZddlmZddlmZddlm	Z	ddlm
Z
ddlmZdd	l
mZdd
lmZejeZdejfdYZdS(
iN(tStringIO(tdistros(thelpers(tlog(tssh_util(tutil(tnet_util(t
ResolvConf(tPER_INSTANCEtDistrocBseZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
Zd)dZdZdZdZdZedZdZdZedZedZedZedZedZedZ dZ!dZ"e#dZ$dZ%d Z&e'd!Z(d"Z)d)d#Z*d$Z+d%Z,d)d)d&Z-d'Z.d(Z/RS(*s/usr/local/libs/etc/rc.confs/etc/login.confs/etc/login.conf.origs/etc/resolv.confs,/usr/local/etc/sudoers.d/90-cloud-init-usersthn0cCsTtjj||||tj||_d|_tjd|_	d|d<dS(Ntfreebsds\s+inet\s+\d+[.]\d+[.]\d+[.]\d+tsshdtssh_svcname(
RR	t__init__RtRunnerst_runnertosfamilytretcompiletipv4_pat(tselftnametcfgtpaths((s=/usr/lib/python2.7/site-packages/cloudinit/distros/freebsd.pyR$s
	cCs,tjd|j|||j}t}||krctjd|j|||||<t}n_x\|jD]N}||krp|||krp|||<tjd|j||t}qpqpW|r(tjd|jt}x%|j	D]}|j
d|qWtj|j|j
ndS(NsChecking %s for: %s = %ssAdding key in %s: %s = %ssChanging key in %s: %s = %ss
Writing %ss%s="%s"
(tLOGtdebugt
rc_conf_fnt
loadrcconftFalsetTruetkeystinfoRtitemstwriteRt
write_filetgetvalue(Rtkeytvaluetconftconfig_changedtitemtbuftkeyval((s=/usr/lib/python2.7/site-packages/cloudinit/distros/freebsd.pytupdatercconf/s(
	


	cCstjd}i}tj|jj}x|D]}|j|}|setjd|q4n|j	dj
}|j	dj
}|dd
kr|d}n|ddkr|dd!}nt|dkrtjd	|q4n|||<q4W|S(Ns^(\w+)\s*=\s*(.*)\s*s#Skipping line from /etc/rc.conf: %siiit"t'is*Skipping empty value from /etc/rc.conf: %s(R-R.(R-R.(RRRt	load_fileRt
splitlinestmatchRRtgrouptrstriptlen(RtRE_MATCHR'tlinestlinetmR%tval((s=/usr/lib/python2.7/site-packages/cloudinit/distros/freebsd.pyRJs&

cCs8|j}y||}Wntk
r3d}nX|S(N(RtKeyErrortNone(RR%R'R9((s=/usr/lib/python2.7/site-packages/cloudinit/distros/freebsd.pyt
readrcconfas

cCs%tjd||jdr#|Stjd|}|jd}tjddg\}}g|jj	D]$}t
|jdkrr|^qr}d}xW|D]O}	tjd|	}
|
r|
jdjdrqn|
jd}PqqWtj
d||}tjd	||S(
Ns Translating network interface %stlos\d+$itifconfigs-at	NOT_FOUNDs^\w+sUsing network interface %s(RRt
startswithRtsearchR2RtsubptstripR0R4tsplitR1tsub(Rtdevtntindextoutt_errtxtifconfigoutputtbsddevR7R8((s=/usr/lib/python2.7/site-packages/cloudinit/distros/freebsd.pytgetnetifnamems&$
cCs|r
|S|S(N((Rthostnametfqdn((s=/usr/lib/python2.7/site-packages/cloudinit/distros/freebsd.pyt_select_hostnamescCs|jdd}d|fS(Ntfilenamesrc.conf(t_read_hostnameR;(Rtsys_hostname((s=/usr/lib/python2.7/site-packages/cloudinit/distros/freebsd.pyt_read_system_hostnamescCs;d}y|jd}Wntk
r,nX|s7|S|S(NRO(R;R<tIOError(RRRtdefaultRO((s=/usr/lib/python2.7/site-packages/cloudinit/distros/freebsd.pyRSs
cCs|jd|dS(NRO(R,(RRORR((s=/usr/lib/python2.7/site-packages/cloudinit/distros/freebsd.pyt_write_hostnamescCs3dd|g}tj|r1tjd|nPy!tj|tjd|Wn,tk
r}tjtd||nXt|dkr/x|D]}tj	|stjd||qny6tjddd|d	|gtjd
||Wqtk
r'tjtd||qXqWndS(Ntpws-ns(Skipping creation of existing group '%s'sCreated new group %ssFailed to create group %sisCUnable to add group member '%s' to group '%s'; user does not exist.tusermods-GsAdded user '%s' to group '%s's%Failed to add user '%s' to group '%s'(
Rtis_groupRtwarningRBR t	ExceptiontlogexcR4tis_user(RRtmemberst
group_add_cmdtetmember((s=/usr/lib/python2.7/site-packages/cloudinit/distros/freebsd.pytcreate_groups*


	

cKs&tj|r#tjd|tSddd|g}ddd|g}idd6dd6d	d
6dd6d
d6dd6}idd6dd6dd6}x|jD]\}}||kr|rt|tjr|j	|||gq||kr|r|j
|||j
||qqWd|ks<d|krY|j
d|j
dn<|j
d||j
d|j
d||j
dtjd|ytj|d|Wn,tk
r}	tj
td||	nX|jdd}
|
dk	r"|j||
dtndS( Ns!User %s already exists, skipping.RYtuseradds-ns-dthomedirs-ctgecoss-gt
primary_groups-Gtgroupss-stshells-Etinactives--no-user-groupt
no_user_groups--systemtsystems
--no-log-inittno_log_inittno_create_homes-d/nonexistents-d/usr/home/%ss-msAdding user %st	logstringsFailed to create user %stpasswdthashed(RR_RR RR!t
isinstancetsixtstring_typestextendtappendRBR]R^tgetR;t
set_passwdR(RRtkwargstpw_useradd_cmdtlog_pw_useradd_cmdtpw_useradd_optstpw_useradd_flagsR%R9Rbt
passwd_val((s=/usr/lib/python2.7/site-packages/cloudinit/distros/freebsd.pytadd_usersN





cCsSy tjdd|ddgWn,tk
rN}tjtd||nXdS(NRYRZs-ps01-Jan-1970s"Failed to set pw expiration for %s(RRBR]R^R(RtuserRb((s=/usr/lib/python2.7/site-packages/cloudinit/distros/freebsd.pyt
expire_passwds
 cCsx|rd}nd}y0tjdd||dgd|dd|Wn,tk
rs}tjtd	||nXdS(
Ns-Hs-hRYRZt0tdataRpschpasswd for %ssFailed to set password for %s(RRBR]R^R(RRRqRrthash_optRb((s=/usr/lib/python2.7/site-packages/cloudinit/distros/freebsd.pyRys	cCsSy tjdd|ddgWn,tk
rN}tjtd||nXdS(NRYRZs-ht-sFailed to lock user %s(RRBR]R^R(RRRb((s=/usr/lib/python2.7/site-packages/cloudinit/distros/freebsd.pytlock_passwds
 cKs|j||d|kr=|dr=|j||dn|jdtr_|j|nd|kr|dtk	r|j||dnd|krt|dpg}tj	||ddndS(Ntplain_text_passwdRtsudotssh_authorized_keystoptions(RRyRxRRRtwrite_sudo_rulestsetRtsetup_user_keysR;(RRRzR((s=/usr/lib/python2.7/site-packages/cloudinit/distros/freebsd.pytcreate_userscCsTddg}tj|dddg\}}t|rPtjd||dS|S(NR>s-ltrcsiisError running %s: %s(RRBR4RR\R;(tcmdtnicsterr((s=/usr/lib/python2.7/site-packages/cloudinit/distros/freebsd.pytget_ifconfig_lists!cCsTd|g}tj|dddg\}}t|rPtjd||dS|S(NR>RiisError running %s: %s(RRBR4RR\R;(tifnameRt	if_resultR((s=/usr/lib/python2.7/site-packages/cloudinit/distros/freebsd.pytget_ifconfig_ifname_out&s!cCsWdddg}tj|dddg\}}t|rStjd||dS|S(NR>s-ltetherRiisError running %s: %s(RRBR4RR\R;(RRR((s=/usr/lib/python2.7/site-packages/cloudinit/distros/freebsd.pytget_ifconfig_ether/s!cCsbtj|}xL|jD]>}|jddkrt|jd}|rZ|SqqWdS(Nsether ii(R	RR0tfindtstrRD(RRR)tmac((s=/usr/lib/python2.7/site-packages/cloudinit/distros/freebsd.pytget_interface_mac8scCstj}|jS(N(R	RRD(R((s=/usr/lib/python2.7/site-packages/cloudinit/distros/freebsd.pytget_devicelistAscCsg}tj}xn|D]f}tj|}xN|jD]@}|jddkr;|jddkr;|j|q;q;WqW|S(Nsinet6 itscopeid(R	RRR0RRw(tipv6RtnicRR)((s=/usr/lib/python2.7/site-packages/cloudinit/distros/freebsd.pytget_ipv6Fs
*cCstg}tj}x[|D]S}tj|}x;|jD]-}|GH|jj|r;|j|q;q;WqW|S(N(R	RRR0RR1Rw(Rtipv4RRRR)((s=/usr/lib/python2.7/site-packages/cloudinit/distros/freebsd.pytget_ipv4Qs
cCstj|}d|}xb|jD]T}tj||r&|jddjdd}|jddkrztSq&q&WdS(Nt^t<it>itUPi(R	RR0RR1RDRR(RRRtpatR)tflags((s=/usr/lib/python2.7/site-packages/cloudinit/distros/freebsd.pytis_up\s
 cCstj}i}x?|D]7}i|d6|j|d6dd6|tj|<qWt}|rt|j|j}nx8|jD]*}|dt	kp|d|k|d<qW|S(s4Collect information necessary for rename_interfaces.RtuptdownableN(
R	RRR;RRRRtvaluesR(Rtcheck_downabletnamestbymacRGtnics_with_addressestd((s=/usr/lib/python2.7/site-packages/cloudinit/distros/freebsd.pyt_get_current_rename_infoes
2	cCst|stjddS|j}i}x:|jD],\}}|j}||d<|||<q<Wd}d}d}	d}
g}g}g}
||}d}d}x;|D]3\}}|j|i}|jd	}g}||krqn|s)|jd
||fqn|drd}|d
sc|j||||fqnt|d<|jd|||ff|
jd|||ffn||kr||}|drd}|d
s|j||||fqq|jd|||ffnd}x0|dks8||krO|d7}||}q W|jd||||ff||d	<||}|dr|
jd|||ffqn|jd|||d	|ff||d	<||}||7}qWi|d6|	d6|
d6}t|t|
dkrat|rNtjd|qtjd|ntjd|||
xk||
D]_\}}}}y|j||Wqt
k
r}|jd|||||fqXqWt|r
t
dj|ndS(Nsno interfaces to renameRcSstd|jDS(Ncss|]}|d|fVqdS(RN((t.0R((s=/usr/lib/python2.7/site-packages/cloudinit/distros/freebsd.pys	<genexpr>s(tdictR(R((s=/usr/lib/python2.7/site-packages/cloudinit/distros/freebsd.pyt
update_bynames	cSs#tjd|d|gdtdS(NR>Rtcapture(RRBR(tcurtnew((s=/usr/lib/python2.7/site-packages/cloudinit/distros/freebsd.pytrenamescSs tjd|dgdtdS(NR>tdownR(RRBR(R((s=/usr/lib/python2.7/site-packages/cloudinit/distros/freebsd.pyRscSs tjd|dgdtdS(NR>RR(RRBR(R((s=/usr/lib/python2.7/site-packages/cloudinit/distros/freebsd.pyRss
cirename%diRs<[nic not present] Cannot rename mac=%s to %s, not available.Rs*[busy] Error renaming mac=%s from %s to %sRRs2[busy-target] Error renaming mac=%s from %s to %s.iRis(unable to do any work for renaming of %ss$no work necessary for renaming of %ss$achieving renaming of %s with ops %ss.[unknown] Error performing %s%s for %s, %s: %ss
(R4RRRR!tcopyRxRwRR;R]tjoin(Rtrenamestcurrent_infot	cur_bymacRRRRRRRtopsterrorstupst
cur_bynamettmpname_fmtttmpitnew_nametcur_nametcur_opstmsgttargetttmp_nametopmaptoptparamsRb((s=/usr/lib/python2.7/site-packages/cloudinit/distros/freebsd.pyt_rename_interfacesws

					








"#
	cCsg}xr|jdiD]^}|jddkr:qn|jd}|jd}|sdqn|j||gqW|j|S(Ntconfigttypetphysicaltmac_addressR(RxRwR(RtnetcfgRtentRR((s=/usr/lib/python2.7/site-packages/cloudinit/distros/freebsd.pytapply_network_config_namesscCstj}|dkr)tjddS|j}g}x|D]}d|}tj|}xq|jdD]`}tj||rq|jddjdd}|j	dd	kr|j
|qqqqqWqBW|r|}ntt|}	tj
}
|
|	kr/|	j|
|	jd|
nd}d}x3|	D]+}
tj|
}|rB|
}|}PqBqBW|r|rigd
6dd6}|d
j
idd
6|d6|d6idd
6gd6|SdSdS(NsFail to get network interfacesRs
RiRitRUNNINGiRtversionRRRRtdhcptsubnets(R	RR;RRRDRRR1RRwtlisttsortedtdefault_primary_nictremovetinsertR(RRtpotential_interfacest	connectedRRRR)RRtdefault_pri_nicttarget_namet
target_macRRtnconf((s=/usr/lib/python2.7/site-packages/cloudinit/distros/freebsd.pytgenerate_fallback_configsH


 		


c
Csctj|}g}g}|j}x!|jD]\}}|jdrUq4n|j|}tjd||jddkr-tj	d||jd|jd|jdd|jd}	|j
d	|jd
d|kr
|j|dnd|kr3|j|dq3nd
}	|j
d||	q4Wy&tt
j|j}
|
jWn=tk
rt
jtd|jtd}
|
jnXxF|D]>}y|
j|Wqtk
rt
jtd|qXqWxF|D]>}y|
j|Wqtk
r>t
jtd|qXqWt
j|jt|
d|S(NR=sConfiguring interface %st	bootprototstaticsConfiguring dev %s with %s / %staddresstnetmasks	 netmask t
defaultroutertgatewaysdns-nameserverss
dns-searchtDHCPt	ifconfig_s&Failed to parse %s, use new empty filetsFailed to add nameserver %ssFailed to add search domain %si(Rttranslate_networkRR!R@RNRR RxRR,RvRRR/tresolv_conf_fntparseRVR^tadd_nameservert
ValueErrortadd_search_domainR#R(
Rtsettingstentriestnameserverst
searchdomainst	dev_namestdeviceR RFR>t
resolvconftservertdomain((s=/usr/lib/python2.7/site-packages/cloudinit/distros/freebsd.pyt_write_networksR





cCs$t}xMtj|jjD]3}|jtjdd|||jdq"Wtj|j|j	tj
|j|jy*tj
d|tjd|jgWnktjk
rtjtd|ytj|j	|jWq tk
rtjtd|jq XnXdS(Ns	^default:sdefault:lang=%s:s
sRunning cap_mkdb for %stcap_mkdbsFailed to apply locale %ssFailed to restore %s backup(RRR/t
login_conf_fnR0R"RRERtlogin_conf_fn_bakR#R$RRRBtProcessExecutionErrorR^RV(Rtlocaletout_fntnewconfR7((s=/usr/lib/python2.7/site-packages/cloudinit/distros/freebsd.pytapply_localeMs"	
cCs|jdrdS|j|}dd|g}tjd||tj|dddg\}}t|rtjd||ndS(	NR=s/etc/rc.d/netiftstarts4Attempting to bring up interface %s using command %sRiisError running %s: %s(R@RNRRRRBR4R\(Rtdevice_nameRFRt_outR((s=/usr/lib/python2.7/site-packages/cloudinit/distros/freebsd.pyt_bring_up_interfacegs	
!cCs!|j|jdd|dS(Ntinstalltpkgs(tupdate_package_sourcestpackage_command(Rtpkglist((s=/usr/lib/python2.7/site-packages/cloudinit/distros/freebsd.pytinstall_packagests
cCs|dkrg}ntjj}d|d<dg}|r\t|tr\|j|n%|rt|tr|j|n|r|j|nt	j
d|}|j|t	j|d|dtdS(NtYEStASSUME_ALWAYS_YEStpkgs%s-%stenvR(
R;tostenvironRRsRRwRRvRtexpand_package_listRBR(RtcommandtargsRRbRR((s=/usr/lib/python2.7/site-packages/cloudinit/distros/freebsd.pyRxs	
	
cCs#tjd|d|j|dS(Nttzttz_file(Rtset_etc_timezonet
_find_tz_file(RR((s=/usr/lib/python2.7/site-packages/cloudinit/distros/freebsd.pytset_timezonescCs&|jjd|jdgdtdS(Nsupdate-sourcestupdatetfreq(RtrunRR(R((s=/usr/lib/python2.7/site-packages/cloudinit/distros/freebsd.pyRsN(0t__name__t
__module__tusr_lib_execRRRRt
ci_sudoers_fnRRR,RR<RNRQRUR;RSRXRdRRRRyRRtstaticmethodRRRRRRRRRRRRtclassmethodRRR	R
RRR!R(((s=/usr/lib/python2.7/site-packages/cloudinit/distros/freebsd.pyR	sR							
			5	
										e	(	=	
		(RRtRRt	cloudinitRRRtloggingRRtcloudinit.distrosRt%cloudinit.distros.parsers.resolv_confRtcloudinit.settingsRt	getLoggerR%RR	(((s=/usr/lib/python2.7/site-packages/cloudinit/distros/freebsd.pyt<module>s
Back to Directory File Manager