f(ddlZddlZddlmZmZmZmZddlmZddlm Z ddl m Z ddl mZejeZGddej$Zy) N)distroshelperssubputil) PackageList) rhel_util) HostnameConf) PER_INSTANCEceZdZdZdZdgZdZdZdZdZ dZ d Z d Z d d d ddddddiZ dZd"dZdefdZd#dZdZdZd"dZdZdZdZdZd Zed!Zy)$Distroz/etc/sysconfig/clockz /etc/HOSTNAMEservicez/etc/sysconfig/languagez/etc/sysconfig/network/configz/etc/sysconfig/network/ifcfg-%sz!/etc/sysconfig/network/ifroute-%sz /etc/hostnamez/etc/locale.confz/etc/localtime sysconfigzetc/sysconfig/network/configsusez%(base)s/network/ifcfg-%(name)sz3etc/udev/rules.d/85-persistent-net-cloud-init.rulesz!%(base)s/network/ifroute-%(name)s)ipv4ipv6)controlflavoriface_templates netrules_pathroute_templatesctjj||||tj||_d|_d|_d|_d|d<|jrdg|_ d|d<yy)NrFsshd ssh_svcname systemctlz sshd.service) rr __init__rRunners_runnerosfamily update_methodread_only_root uses_systemdinit_cmd)selfnamecfgpathss --drop-if-no-changepkgupgradeupdateup)r?r>r@refreshz%s-%sF)capturez8To use/activate the installed packages reboot the system)_set_update_methodr rLOGerrorappend isinstancestrlistextendrexpand_package_listrinfo)r#commandr7r8cmdr4s r'r9zDistro.package_commandLs= <D !   t'9'9_'L II9      )01CC i G""o58#GC i 01C 7 JtS) JJt  jt, JJt **7D9 7 #u%    0 HHJ  1r(c`|j|}|jr@tj|jtj ||jydt |i}tj|j|tj||jy)NTIMEZONE) _find_tz_filer!rdel_file tz_local_fnsym_linkrLr.r/ clock_conf_fncopy)r#tztz_file clock_cfgs r' set_timezonezDistro.set_timezones$$R(     MM$** + MM'4#3#3 4CGI  ( (););Y G IIgt// 0r(c`|jjd|jdgty)Nzupdate-sourcesrE)freq)rrunr9r r#s r'update_package_sourceszDistro.update_package_sourcess-    K  r(c`|jr4|jdr#tj|j S|jr(t j dg\}}t |r|S|S |j|}|j}s|S|S#t$rYwxYw)N/previous-hostnamehostname) r!endswithrload_text_filestriprlen_read_hostname_confrfIOError)r#filenamedefaultout_errconfrfs r'_read_hostnamezDistro._read_hostnames    8#4#45I#J&&x0668 8    ))ZL1KS$3x  //9==O   s>B!! B-,B-cy)Nz 127.0.1.1rbs r'_get_localhost_ipzDistro._get_localhost_ipsr(cbttj|}|j|SN)r rrhparse)r#rmrqs r'rkzDistro._read_hostname_confs%D//9:  r(cz|jr |j}n |j}||j|fSrw)r!systemd_hostname_conf_fnhostname_conf_fnrr)r#host_fns r'_read_system_hostnamezDistro._read_system_hostnames:    33G++G,,W566r(c|jtjd}d}|r|\}}}tjdj d}|D]G}|j |s|j }|d|k7r.|dj d|_n|jd k(r'tjjd rd |_yd |_ytjd d |_yy)z7Decide if we want to use transactional-update or zypperN/z /proc/mounts robtrfsz/usr/sbin/transactional-updater<r=z7Could not determine filesystem type of '/' using zypper) rrget_mount_inforhsplit startswithr lowerospathexistsrHrP)r#resultfs_typedevpth mount_pointmountsmount mount_infos r'rGzDistro._set_update_methods    %((-FG17.+,,^<BB4H#E''/%*[[] %a=K7$.8m.F.Ft.L+ ==?g-"''..43*9D&)1D&M&."1 &r(cZtj|jdd}|jr(|j drtj ||y|jrG|r"t j ddt|gyt j dddt|gyd} |j|}|s td}|j|tj |t|d y#t$r|rntjdYyYdwxYw) Ncreate_hostname_fileTre hostnamectlz set-hostnamez --transientz7create_hostname_file is False; hostname file notcreatedri)rget_cfg_option_bool_cfgr!rg write_filerrLrkrlrHrPr set_hostname)r#rfrmrrqs r'_write_hostnamezDistro._write_hostnames#77 II-t     8#4#45I#J OOHh /    # =.#h-HI %&%H D //9#B'   h ' OOHc$i 7 'HH"  s4D!D*)D*c|jsqtjd}|d}t|dj dd}|dk\rd|vs|dk\rd|vr|dk7rgd|_|jSgd |_|jS) z5The preferred ntp client is dependent on the version.distrr.openSUSE*)chronysystemd-timesyncdntp)rrr)_preferred_ntp_clientsr system_infointr)r# distro_infor$ major_vers r'preferred_ntp_clientszDistro.preferred_ntp_clientss ****,V4Kq>DKN005a89IRJd$:RJ$$69?/+*** /+ ***r(rw)NN)__name__ __module__ __qualname__rYr{r"r-network_conf_fnnetwork_script_tplroute_conf_tplrzr,rWrenderer_configsrr3rr:r9r^rcrrrurkr}rGrpropertyrrtr(r'r r s*M&{H.N5O:8N./"K5@E<;     0 9  ;z1  & 7.8$8L++r(r )loggingr cloudinitrrrrcloudinit.distrosrrr."cloudinit.distros.parsers.hostnamer cloudinit.settingsr getLoggerrrHr rtr(r'rsC 22)1;+g!I+W^^I+r(