܍~c#ddlmZmZddlmZddlmZmZddlmZddl m Z ddl m Z ej eZGddejZd Zd S) )distroshelpers)log)subputil)net_util) HostnameConf) PER_INSTANCEceZdZdZdZdZdZdgZdZddgZ d Z dd Z d Z d Z edZdZdZdZdZedZddZdZddZdZd S)Distroz/etc/env.d/02localez/etc/locale.genz/etc/conf.d/netz/etc/conf.d/hostnamez rc-servicez en_US.UTF-8z C.UTF8 UTF-8zen_US.UTF-8 UTF-8ctj||||tj||_d|_d|d<tjrt ddSdS)Ngentooz/etc/init.d/sshd ssh_svcnamez/Cloud-init does not support systemd with gentoo) rr __init__rRunners_runnerosfamily uses_systemdLOGerror)selfnamecfgpathss :/usr/lib/python3/dist-packages/cloudinit/distros/gentoo.pyrzDistro.__init__sydC777u--   /M   ! ! I IIG H H H H H I INctj|jd|jdt jdgdt jddd |jgdd S) zrc-only - not compatible with systemd Locales need to be added to /etc/locale.gen and generated prior to selection. Default to en_US.UTF-8 for simplicity.  i)modez locale-genFcaptureeselectlocalesetN)r write_file locale_gen_fnjoinlocalesrdefault_locale)r_out_fns r apply_localezDistro.apply_locale+s{ *DIIdl,C,C#NNNN <.%0000 %)< =u      rc\||d|dS)N)pkgs)update_package_sourcespackage_command)rpkglists rinstall_packageszDistro.install_packages;s3 ##%%% Rg.....rc tj|}td|||}g}|D]O\}}d|vr||d|dkr,|jdz|z}|d}t|ttfr0tt| dd}d} |ddkr| d | z } n| d ||d |d |dz } | d||dz } |dr| d||z } tj|| |||drddd| dg} t%j| \} } t'| rtd| | #t$j$rtjtd| YKwxYwQ|r'tj|jt1||S)Nz3Translated ubuntu style network settings %s into %szdns-nameserverslo.,r. bootprotodhcpzconfig_{name}="dhcp"rzEconfig_{name}="{ip_address} netmask {netmask}" mac_{name}="{hwaddr}" addressnetmask hwaddress)r ip_addressr<hwaddrz&routes_{name}="default via {gateway}" gateway)rr@z"dns_servers_{name}="{dnsservers}" )r dnsserversautoz rc-updateaddz net.{name}default(Running %s resulted in stderr output: %s#Running interface command %s failed)rtranslate_networkrdebugkeysitemsextendnetwork_conf_fnget isinstancelisttuplestrreplaceformatrr%_create_network_symlinkrlenwarningProcessExecutionErrorlogexcresolve_conf_fnconvert_resolv_conf) rsettingsentries dev_names nameserversdevinfonet_fndns_nameserversresultscmd_outerrs r_write_networkzDistro._write_network?s,X66 A     LLNN  "==??3 3 KS$ D((""4(9#:;;;d{{)C/#5F"hh'899O/D%=99 O"%eO&<&<"="="E"Ec2"N"NGxx $$..188c8BBB.&#xx 22 HHY//88K00 DKKdhhy&9&9Lxx)** @GGH OFG , , ,  ( ( - - -xx  ''S'11  "&)C..KT33xx F 1KBC (   O$&9+&F&F   s5AI99*J'&J'cd|}tj|stjd|dSdS)Nz/etc/init.d/net.{name}r:z/etc/init.d/net.lo)rSris_linksym_link)interface_name file_paths rrTzDistro._create_network_symlinksM,333HH |I&& ; M. : : : : : ; ;rc4d|zdg}td|| tj|\}}t|rtd||dS#tj$rt jtd|YdSwxYw)Nz/etc/init.d/net.%srestartz8Attempting to run bring up interface %s using command %srETrFF)rrHrrUrVrWrrX)r device_namerdrerfs r_bring_up_interfacezDistro._bring_up_interfaces#k19= F     )C..KT33xx  >S4)    KBC H H H55 sAA))*BBcd}|D] }|dkrd} |rddg} tj|\}}t|rtd||n1#tj$rt jtd|YdSwxYwd|d D}tj ||Stj ||S) NFallTlsz/etc/init.d/net.*rErFcDg|]}|ddS)r6)split).0xs r z/Distro._bring_up_interfaces..s&AAA1qwws||AAAArz ) rrUrrVrWrrXrvrr _bring_up_interfaces)r device_namesuse_alldrdrerfdevicess rrzzDistro._bring_up_interfacess   AEzz  K,-C "inn ss88KKBC-    C!FLLLuu BA 40@0@AAAG>66tWEE E>66t\JJ JsAA*BBcd} ||}n#t$rYnwxYw|std}|d|zt j|t |ddS)Nr.z hostname="%s"i)_read_hostname_confIOErrorr set_hostnamerr%rQ)rhostnamefilenameconfs r_write_hostnamezDistro._write_hostnames ++H55DD    D  $##D /H4555 #d))U33333s  ''cH||j}|j|fSN)_read_hostnamehostname_conf_fn)r sys_hostnames r_read_system_hostnamezDistro._read_system_hostnames&**4+@AA $l22rcpttj|}||Sr)r r load_fileparse)rrs rrzDistro._read_hostname_confs+DN84455  rcnd} ||}|j}n#t$rYnwxYw|s|S|Sr)rrr)rrrDrrs rrzDistro._read_hostnamesZ ++H55D}HH    D  Ns ! ..cXtj|||dS)N)tztz_file)rset_etc_timezone _find_tz_file)rrs r set_timezonezDistro.set_timezones, B0B0B20F0FGGGGGGrctd}|d|dkr|ddgn|g}|r+t|tr||n,|r*t|tr|||r||t jd|}||tj|ddS) Nemergez--quietupgradez--updateworldz%s-%sFr )rOappendrKrNrQrexpand_package_listr)rcommandargsr/rdr2s rr1zDistro.package_commands8nn 9 i   JJ G, - - - -| ! 4-- ! 4     !*T400 ! 4    $ 7###.w==G JJw    #u%%%%%%rcX|jd|jdgtdS)Nzupdate-sourcesz--sync)freq)rrunr1r )rs rr0zDistro.update_package_sourcess<    J      rr)NN)__name__ __module__ __qualname__locale_conf_fnr&rLrinit_cmdr)r(rr,r3rg staticmethodrTrprzrrrrrr1r0rrr r sH*N%M'O-~H"N23G I I I    ///DDDL;;\; $KKK,444"333\    HHH&&&&2     rr cNd}t|tr |D] }|d|zz } |S)z4Returns a settings string formatted for resolv.conf.r.znameserver %s )rNrO)r[resultnss rrZrZs? F(D!!- - -B '", ,FF MrN) cloudinitrrrloggingrrcloudinit.distrosr"cloudinit.distros.parsers.hostnamer cloudinit.settingsr getLoggerrrr rZrrrrs'&&&&&&&$$$$$$ &&&&&&;;;;;;++++++g!!h h h h h W^h h h Vr