a '¡Dgnã@slddlZddlmZmZmZmZmZddlmZddlm Z ddl m Z m Z e e¡ZGdd„dejƒZdS)éN)ÚdistrosÚhelpersÚnetÚsubpÚutil)Ú PackageList)Ú rhel_util)Ú PER_ALWAYSÚ PER_INSTANCEc@s¢eZdZdZdZdZdZdeedœiZdZdd „Z d$d d „Z d d „Z d%dd„Z e dœdd„Zdd„Zdd„Zd&dd„Zdd„Zdd„Zd'dd„Zd d!œd"d#„ZdS)(ÚDistroz /etc/hostnamez/etc/systemd/network/z/etc/locale.confz/etc/systemd/resolved.confZnetworkd)Zresolv_conf_fnÚnetwork_conf_dirTcCs0tj ||||¡t |¡|_d|_dg|_dS)NZphotonÚ systemctl)rr Ú__init__rZRunnersÚ_runnerZosfamilyZinit_cmd)ÚselfÚnameZcfgÚpaths©rút d||¡d||fWSd||fWStjylt td|¡YdS0dS)NzAttempting to run: %s)Úcapturez(Running %s resulted in stderr output: %sTFzCommand %s failed)TNN)ÚLOGÚdebugrÚwarningZProcessExecutionErrorrZlogexc)rÚcmdrÚoutÚerrrrrÚexec_cmd(s ÿ  zDistro.exec_cmdcCs:d}|j |d¡}t d||¡|s,t ¡St d¡dS)NÚdisable_fallback_netcfgTz%s value is: %szJSkipping generate_fallback_config. Rely on PhotonOS default network config)Ú_cfgÚgetrrrÚgenerate_fallback_configÚinfo)rÚkeyrrrrr 6sÿzDistro.generate_fallback_configNcCs4|s |j}d|i}t ||¡gd¢}| |¡dS)NÚLANG)r Zrestartzsystemd-localed)Úsystemd_locale_conf_fnÚrhutilZupdate_sysconfig_filer)rÚlocaleZout_fnZ locale_cfgrrrrÚ apply_localeDsÿ zDistro.apply_locale)ÚpkglistcCs|jd|ddS)NÚinstall)Úpkgs)Úpackage_command)rr(rrrÚinstall_packagesVszDistro.install_packagescCsŽ|r| d¡rt ||¡nnd}t |jdd¡}|rP| ddt|ƒg¡\}}}n&| dddt|ƒg¡\}}}t d¡|rŠt  d||f¡dS) Nú/previous-hostnameÚcreate_hostname_fileTZ hostnamectlz set-hostnamez --transientz7create_hostname_file is False; hostname set transientlyz3Error while setting hostname: %s Given hostname: %s) ÚendswithrZ write_fileZget_cfg_option_boolrrÚstrrr!r)rÚhostnameÚfilenameÚretr.Ú_outrrrrÚ_write_hostnameZs6ÿ ÿ üÿ ÿýÿzDistro._write_hostnamecCs| |j¡}|j|fS)N)Ú_read_hostnameÚsystemd_hostname_conf_fn)rZ sys_hostnamerrrÚ_read_system_hostname{s zDistro._read_system_hostnamecCs@|r| d¡rt |¡ ¡S| ddg¡\}}}|r<| ¡S|S)Nr-r1z-f)r/rZload_text_fileÚstripr)rr2ÚdefaultZ_retrZ_errrrrr6szDistro._read_hostnamecCsdS)Nz 127.0.1.1r)rrrrÚ_get_localhost_ip†szDistro._get_localhost_ipcCstj|| |¡ddS)N)ÚtzZtz_file)rZset_etc_timezoneZ _find_tz_file)rr<rrrÚ set_timezone‰szDistro.set_timezonec Cs†|sg}ddg}|r*t|tƒr*| |¡n|rBt|tƒrB| |¡| |¡t d|¡}| |¡| |¡\}}}|r‚t  d|¡dS)NZtdnfz-yz%s-%sz#Error while installing packages: %s) Ú isinstancer0ÚappendÚlistÚextendrZexpand_package_listrrÚerror) rZcommandÚargsr*rr(r3r4rrrrr+Œs     zDistro.package_commandF)ÚforcecCs$|jjd|jdg|rtntddS)Nzupdate-sourcesZ makecache)Zfreq)rÚrunr+r r )rrDrrrÚupdate_package_sourcesŸs  üzDistro.update_package_sources)T)N)N)NN)Ú__name__Ú __module__Ú __qualname__r7r r$Zresolve_conf_fnZrenderer_configsZ prefer_fqdnrrr r'rr,r5r8r6r;r=r+rFrrrrr s,þÿ  !  r )ZloggingZ cloudinitrrrrrZcloudinit.distrosrrr%Zcloudinit.settingsr r Z getLoggerrGrr rrrrÚs