o x[h@stddlZddlZddlmZmZmZmZddlmZm Z ddl m Z ddl m Z mZeeZGdddejZdS)N)distroshelperssubputil) PackageList rhel_util) HostnameConf) PER_ALWAYS PER_INSTANCEc@seZdZdZdZdZdZdZdZdZ dZ dZ d Z d d d d dddiZ dZddZdefddZddZd-ddZd.ddZdd Zd!d"Zd-d#d$Zd%d&Zd/d'd(Zd)d*d+d,ZdS)0Distroz/etc/sysconfig/clockz/etc/sysconfig/i18nz/etc/locale.confz/etc/sysconfig/networkz /etc/hostnamez/etc/localtimez /usr/libexecz/var/lib/NetworkManagerzdhclient-[\w-]+\.lease sysconfigzetc/sysconfig/networkz'%(base)s/network-scripts/ifcfg-%(name)sz'%(base)s/network-scripts/route-%(name)sz(%(base)s/network-scripts/route6-%(name)s)ipv4ipv6)controliface_templatesroute_templatesTcCs<tj||||t||_d|_d|_d|_d|d<dS)Nredhatz en_US.UTF-8sshd ssh_svcname) rr __init__rRunners_runnerosfamilydefault_locale system_locale)selfnamecfgpathsr8/usr/lib/python3/dist-packages/cloudinit/distros/rhel.pyr4s   zDistro.__init__pkglistcCs|jd|ddS)Ninstall)pkgs)package_command)rr!rrr install_packages?szDistro.install_packagescCs"|js||_|jr|jS|jS)z8Return the default locale if set, else use system locale)r_read_system_localer)rrrr get_localeBs   zDistro.get_localeNcCs6|r |s |j}n|s|j}d|i}t||dS)NLANG) uses_systemdsystemd_locale_conf_fnlocale_conf_fnrupdate_sysconfig_file)rlocaleout_fn locale_cfgrrr apply_localeNszDistro.apply_localer(cCsX|r|j}n|j}|std|tj|r*t|\}}||vr(||SdSdS)z.Read system default locale setting, if presentzInvalid path: %sN) r)r*r+ ValueErrorospathexistsrread_sysconfig_file)rkeyname locale_fn_existscontentsrrr r&Zs  zDistro._read_system_localecCs|r|drtd}||t|t|ddS|rIt|jdd}|r7t ddt|gdSt dddt|gt d dSd |i}t ||dS) N/previous-hostnameicreate_hostname_fileT hostnamectlz set-hostnamez --transientz7create_hostname_file is False; hostname set transientlyHOSTNAME)r)endswithr set_hostnamer write_filestrget_cfg_option_bool_cfgrLOGinforr,)rhostnamefilenameconfr<host_cfgrrr _write_hostnameks. zDistro._write_hostnamecCs$|r|j}n|j}|||fSN)r)systemd_hostname_conf_fnhostname_conf_fn_read_hostname)rhost_fnrrr _read_system_hostnameszDistro._read_system_hostnamecCsr|r|drt|S|r(tdg\}}|}t|r&|S|St|\}}d|vr7|dS|S)Nr:rGr>) r)r?rload_text_filestriprlenrr5)rrHdefaultout_errr8r9rrr rOszDistro._read_hostnamecCs\||}|rt|jt||jdSdt|i}t|j |t ||jdS)NZONE) _find_tz_filer)rdel_file tz_local_fnsym_linkrBrr, clock_conf_fncopy)rtztz_file clock_cfgrrr set_timezones  zDistro.set_timezonecCs|durg}tdrtddg}n tdddg}|d|r/t|tr/||n |r;t|tr;||||t d|}||tj|dd dS) Ndnfz Using DNF for package managementz Using YUM for package managementyumz-tz-yz%s-%sF)capture) rwhichrEdebugappend isinstancerBlistextendrexpand_package_list)rcommandargsr#cmdr!rrr r$s          zDistro.package_commandF)forcecCs$|jjd|jdg|r tntddS)Nzupdate-sources makecache)freq)rrunr$r r )rrprrr update_package_sourcess   zDistro.update_package_sourcesrL)r()NN)__name__ __module__ __qualname__r]r+r*network_conf_fnrNrMr[ usr_lib_execdhclient_lease_directorydhclient_lease_file_regexrenderer_configs prefer_fqdnrrr%r'r0r&rKrQrOrbr$rtrrrr r s>     !r )loggingr2 cloudinitrrrrcloudinit.distrosrr"cloudinit.distros.parsers.hostnamercloudinit.settingsr r getLoggerrurEr rrrr s