a '¡Dgìã@stddlZddlZddlmZmZmZmZddlmZm Z ddl m Z ddl m Z mZe e¡ZGdd„dejƒZdS)éN)ÚdistrosÚhelpersÚsubpÚutil)Ú PackageListÚ rhel_util)Ú HostnameConf)Ú PER_ALWAYSÚ PER_INSTANCEc@sºeZdZdZdZdZdZdZdZdZ dZ dZ d Z d d d d ddœdœiZ dZdd„Zedœdd„Zdd„Zd-dd„Zd.dd„Zdd „Zd!d"„Zd/d#d$„Zd%d&„Zd0d'd(„Zd)d*œd+d,„ZdS)1ÚDistroz/etc/sysconfig/clockz/etc/sysconfig/i18nz/etc/locale.confz/etc/sysconfig/networkz /etc/hostnamez/etc/localtimez /usr/libexecz/var/lib/NetworkManagerzdhclient-[\w-]+\.leaseZ 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<tj ||||¡t |¡|_d|_d|_d|_d|d<dS)NZredhatz en_US.UTF-8ZsshdZ ssh_svcname) rr Ú__init__rZRunnersÚ_runnerZosfamilyÚdefault_localeÚ system_locale)ÚselfÚnameZcfgÚpaths©rú:/usr/lib/python3.9/site-packages/cloudinit/distros/rhel.pyr 4s  zDistro.__init__)ÚpkglistcCs|jd|ddS)NÚinstall)Úpkgs)Úpackage_command)rrrrrÚ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)NÚLANG)Ú uses_systemdÚsystemd_locale_conf_fnÚlocale_conf_fnrÚupdate_sysconfig_file)rÚlocaleZout_fnZ locale_cfgrrrÚ apply_localeNsÿzDistro.apply_localercCsX| ¡r|j}n|j}|s&td|ƒ‚tj |¡rTt |¡\}}||vrP||SdSdS)z.Read system default locale setting, if presentzInvalid path: %sN) rrrÚ ValueErrorÚosÚpathÚexistsrÚread_sysconfig_file)rZkeynameZ locale_fnÚ_existsÚcontentsrrrrZs  zDistro._read_system_localecCs¤| ¡r8| d¡r8tdƒ}| |¡t |t|ƒd¡nh| ¡rŒt |jdd¡}|rjt   ddt|ƒg¡q t   dddt|ƒg¡t   d ¡nd |i}t   ||¡dS) Nú/previous-hostnameÚi¤Úcreate_hostname_fileTZ hostnamectlz set-hostnamez --transientz7create_hostname_file is False; hostname set transientlyÚHOSTNAME)rÚendswithrZ set_hostnamerZ write_fileÚstrZget_cfg_option_boolZ_cfgrÚLOGÚinforr )rÚhostnameÚfilenameZconfr,Zhost_cfgrrrÚ_write_hostnameks. ÿüÿÿÿzDistro._write_hostnamecCs$| ¡r|j}n|j}|| |¡fS)N)rÚsystemd_hostname_conf_fnÚhostname_conf_fnÚ_read_hostname)rZhost_fnrrrÚ_read_system_hostnameŠszDistro._read_system_hostnamecCsx| ¡r | d¡r t |¡ ¡S| ¡rRt dg¡\}}| ¡}t|ƒrL|S|Sn"t |¡\}}d|vrp|dS|SdS)Nr*r2r-) rr.rZload_text_fileÚstriprÚlenrr')rr3ÚdefaultÚoutZ_errr(r)rrrr7‘szDistro._read_hostnamecCsZ| |¡}| ¡r.t |j¡t ||j¡n(dt|ƒi}t |j |¡t  ||j¡dS)NZZONE) Z _find_tz_filerrZdel_fileÚ tz_local_fnZsym_linkr/rr Ú clock_conf_fnÚcopy)rZtzZtz_fileZ clock_cfgrrrÚ set_timezone¢s  ÿzDistro.set_timezonecCs¨|dur g}t d¡r(t d¡dg}nt d¡ddg}| d¡|r^t|tƒr^| |¡n|rvt|tƒrv| |¡| |¡t   d|¡}| |¡tj|dd dS) NZdnfz Using DNF for package managementz Using YUM for package managementZyumz-tz-yz%s-%sF)Zcapture) rÚwhichr0ÚdebugÚappendÚ isinstancer/ÚlistÚextendrZexpand_package_list)rZcommandÚargsrÚcmdrrrrr²s          zDistro.package_commandF)ÚforcecCs$|jjd|jdg|rtntddS)Nzupdate-sourcesZ makecache)Zfreq)r Úrunrr r )rrIrrrÚupdate_package_sourcesÓs  üzDistro.update_package_sources)N)r)N)NN)Ú__name__Ú __module__Ú __qualname__r>rrZnetwork_conf_fnr6r5r=Z usr_lib_execZdhclient_lease_directoryZdhclient_lease_file_regexZrenderer_configsZ prefer_fqdnr rrrr"rr4r8r7r@rrKrrrrr s<þýÿ     !r )Zloggingr$Z cloudinitrrrrZcloudinit.distrosrrZ"cloudinit.distros.parsers.hostnamerZcloudinit.settingsr r Z getLoggerrLr0r rrrrÚ s