3 \me@spddlZddlZddlmZmZmZmZddlmZm Z ddl m Z ddl m Z ejeZGdddejZdS)N)distroshelperssubputil) PackageList rhel_util) HostnameConf) PER_INSTANCEc@seZdZdZdZdZdZdZdZdZ dZ dZ d d d d d ddiZ dZ ddZedddZddZd*ddZd+ddZddZd d!Zd,d"d#Zd$d%Zd-d&d'Zd(d)ZdS).Distroz/etc/sysconfig/clockz/etc/sysconfig/i18nz/etc/locale.confz/etc/sysconfig/networkz /etc/hostnamez'/etc/sysconfig/network-scripts/ifcfg-%sz/etc/localtimez /usr/libexec sysconfigzetc/sysconfig/networkz'%(base)s/network-scripts/ifcfg-%(name)sz'%(base)s/network-scripts/route-%(name)sz(%(base)s/network-scripts/route6-%(name)s)Zipv4Zipv6)ZcontrolZiface_templatesZroute_templatesTcCs<tjj||||tj||_d|_d|_d|_d|d<dS)NZredhatz en_US.UTF-8ZsshdZ ssh_svcname) rr __init__rZRunners_runnerZosfamilydefault_locale system_locale)selfnameZcfgpathsr/usr/lib/python3.6/rhel.pyr /s  zDistro.__init__)pkglistcCs|jd|ddS)NZinstall)pkgs)package_command)rrrrrinstall_packages:szDistro.install_packagescCs"|js|j|_|jr|jS|jS)z8Return the default locale if set, else use system locale)r_read_system_localer)rrrr get_locale=s zDistro.get_localeNcCs6|jr|s|j}n |s|j}d|i}tj||dS)NLANG) uses_systemdsystemd_locale_conf_fnlocale_conf_fnrupdate_sysconfig_file)rZlocaleZout_fnZ locale_cfgrrr apply_localeIszDistro.apply_localercCsX|jr|j}n|j}|s&td|tjj|rTtj|\}}||krP||SdSdS)z.Read system default locale setting, if presentzInvalid path: %sN) rrr ValueErrorospathexistsrread_sysconfig_file)rZkeynameZ locale_fn_existscontentsrrrrUs  zDistro._read_system_localecCs|jr8|jdr8td}|j|tj|t|dn^|jrtj|jdd}|rjt j ddt|gqt j dddt|gnd |i}t j ||dS) Nz/previous-hostnameicreate_hostname_fileTZ hostnamectlz set-hostnamez --transientHOSTNAME) rendswithrZ set_hostnamerZ write_filestrZget_cfg_option_boolZ_cfgrrr)rhostnamefilenameZconfr)Zhost_cfgrrr_write_hostnamefs   zDistro._write_hostnamecCs$|jr|j}n|j}||j|fS)N)rsystemd_hostname_conf_fnhostname_conf_fn_read_hostname)rZhost_fnrrr_read_system_hostnameszDistro._read_system_hostnamecCsx|jr |jdr tj|jS|jrRtjdg\}}|j}t|rL|S|Sn"tj|\}}d|krp|dS|SdS)Nz/previous-hostnamer-r*) rr+rZ load_filestriprlenrr%)rr.defaultoutZ_errr&r'rrrr2szDistro._read_hostnamecCsZ|j|}|jr.tj|jtj||jn(dt|i}tj|j |tj ||jdS)NZZONE) Z _find_tz_filerrZdel_file tz_local_fnZsym_linkr,rr clock_conf_fncopy)rZtzZtz_fileZ clock_cfgrrr set_timezones   zDistro.set_timezonecCs|dkr g}tjdr(tjddg}ntjdddg}|jd|r^t|tr^|j|n|rvt|trv|j||j|t j d|}|j|tj|dd dS) NZdnfz Using DNF for package managementz Using YUM for package managementZyumz-tz-yz%s-%sF)Zcapture) rZwhichLOGdebugappend isinstancer,listextendrZexpand_package_list)rZcommandargsrcmdrrrrrs          zDistro.package_commandcCs|jjd|jdgtddS)Nzupdate-sourcesZ makecache)Zfreq)r Zrunrr )rrrrupdate_package_sourcess zDistro.update_package_sources)N)r)N)NN)__name__ __module__ __qualname__r9rrZnetwork_conf_fnr1r0Znetwork_script_tplr8Z usr_lib_execZrenderer_configsZ prefer_fqdnr rrrr rr/r3r2r;rrDrrrrr s4    !r )Zloggingr"Z cloudinitrrrrZcloudinit.distrosrrZ"cloudinit.distros.parsers.hostnamerZcloudinit.settingsr Z getLoggerrEr<r rrrr s