x[hi*ddlZddlZddlmZddlmZmZmZddlm Z ddl m Z ddl m Z ddlmZej eZdZd ZGd d ej*Zdd Zed fdZ ddZddZy)N)List)distrossubputil)Apt)PackageManager) HostnameConf)CLOUDINIT_NETPLAN_FILEa8# This file is generated from information provided by the datasource. Changes # to it will not persist across an instance reboot. To disable cloud-init's # network configuration capabilities, write a file # /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following: # network: {config: disabled} z/etc/default/localeceZdZdZdedZededededddZd Zd Z fd Z d Z dd Z fdZ dZdZdZddZdZdZddZdZdedededefdZxZS)Distroz /etc/hostnamez'/etc/network/interfaces.d/50-cloud-init)eninetplanr )eni_path eni_headerrT) netplan_pathnetplan_headerpostcmdsz /var/lib/dhcpzdhclient\.\w+\.leasesct||||d|_d|_d|_t j |j||_|jg|_ y)NdebianzC.UTF-8) super__init__osfamilydefault_locale system_localer from_config_runneraptpackage_managers)selfnamecfgpaths __class__s :/usr/lib/python3/dist-packages/cloudinit/distros/debian.pyrzDistro.__init__7sQ sE*! '!??4<<57;xxjc|jst|_|jr |jS|jS)z9Return the default locale if set, else use default locale)rread_system_localerrs r$ get_localezDistro.get_localeBs>!!!3!5D #'"4"4D   :>:M:M r%cl|st}|s td|j}tjj |}|j }|r&tjdt|jn%tjd|j t|j|jk7xs| xs|}| xs|xs|}|rt||||jn"tjd||j ||r!t||||jd|_yy)zeApply specified locale to system, regenerate if specified locale differs from system default.zFailed to provide locale value.zVSystem locale not found in %s. Assuming system locale is %s based on hardcoded defaultzSystem locale set to %s via %s)keynameinstall_functionz9System has '%s=%s' requested '%s', skipping regeneration.N)LOCALE_CONF_FN ValueErrorr)ospathexistsrLOGdebugrlowerregenerate_localeinstall_packagesupdate_locale_conf) rlocaleout_fnr+ distro_localeconf_fn_existssys_locale_unset need_regen need_confs r$ apply_localezDistro.apply_localeMs9#F>? ?) /#111  IIJ##   II0""  LLNm113 3 !!   '&H*H8H  !%!6!6   IIK""    !%!6!6  "&D  r%c6tt||i|SN)_maybe_remove_legacy_eth0r_write_network_state)rargskwargsr#s r$rCzDistro._write_network_states!#w+Ttj|jdd}|rnt j dYyYwxYw)Ncreate_hostname_fileTz8create_hostname_file is False; hostname file not created) _read_hostname_confIOErrorrget_cfg_option_bool_cfgr2infor set_hostname write_filestr)rhostnamefilenameconfrGs r$_write_hostnamezDistro._write_hostnames ++H5D#D (# #d)U3 #'#;#; 14$ $N  sAABBcT|j|j}|j|fSrA)_read_hostnamehostname_conf_fn)r sys_hostnames r$_read_system_hostnamezDistro._read_system_hostnames)**4+@+@A %%|44r%cbttj|}|j|SrA)r rload_text_fileparse)rrSrTs r$rJzDistro._read_hostname_confs%D//9:  r%cld} |j|}|j}|s|S|S#t$rYwxYwrA)rJrRrK)rrSdefaultrRrTs r$rWzDistro._read_hostnamesH ++H5D}}HN    s ' 33cy)Nz 127.0.1.1r(s r$_get_localhost_ipzDistro._get_localhost_ipsr%cPtj||j|y)N)tztz_file)rset_etc_timezone _find_tz_file)rrds r$ set_timezonezDistro.set_timezones  B0B0B20FGr%cb|dk7rtd|d|jjdy)NupgradezUnable to handle z command) RuntimeErrorrrun_package_command)rcommandrDpkgss r$package_commandzDistro.package_commands3 i !27)8DE E $$Y/r%c*tjSrA)rget_dpkg_architecturer(s r$get_primary_archzDistro.get_primary_archs))++r%layoutmodelvariantoptionsc djddd|dd|dd|dd|ddd dg }tjd |d d |jddy)N z'# This file was generated by cloud-initrHz XKBMODEL=""z XKBLAYOUT="z XKBVARIANT="z XKBOPTIONS="zBACKSPACE="guess"z/etc/default/keyboardrIw)rScontentmodeomoderestartz console-setup)joinrrPmanage_service)rrsrtrurvcontentss r$ set_keymapzDistro.set_keymaps999UG1%fXQ'wiq)wiq)#    ,   I7r%)NLANGrA)NN)__name__ __module__ __qualname__rXr network_conf_fnNETWORK_FILE_HEADERrenderer_configsdhclient_lease_directorydhclient_lease_file_regexrr)r?rCrUrZrJrWrbrhrorrrQr __classcell__)r#s@r$r r !s&8)O (.- ,I61  / 8 A  9&v=4,5 H0, 8 8S 83 8 8r%r ctjj|syd} tj|}ddg}|j Dcgc]$}|j dr|j&}}||k(rtj|d|z}n|d|zz}tj|ycc}w#t$r |d|zz}Y.wxYw) aOUbuntu cloud images previously included a 'eth0.cfg' that had hard coded content. That file would interfere with the rendered configuration if it was present. if the file does not exist do nothing. If the file exists: - with known content, remove it and warn - with unknown content, leave it and warn Nz(Dynamic networking config may not apply.z auto eth0ziface eth0 inet dhcp#zremoved %s with known contentsz* '%s' exists with user configured content.z" %s exists, but could not be read.) r/r0r1rr\ splitlines startswithstripdel_file Exceptionr2warning)r0bmsgrknown_contentsflinesmsgs r$rBrBs 77>>$  5D A&&t,%'=>'224 ALL ""7B/ Nr%ctjd|||tjds |dgtjdd|z|d|gdy) zUpdate system locale configz%Updating %s with locale setting %s=%sz update-localelocalesz--locale-file==FcaptureN)r2r3rwhichr8rr+r,s r$r7r7sZII/7F ::o &)%II  x ' '  r%c|jdvrtjd||ytjds |dgtjd|tjd|gdy) z Run locale-gen for the provided locale and set the default system variable `keyname` appropriately in the provided `sys_path`. )czc.utf-8posixz$%s=%s does not require rengenerationNz locale-genrzGenerating locales for %sFr)r4r2r3rrrs r$r5r5+sa||~22 8'6J ::l #)%II)62II|V$e4r%)z"/etc/network/interfaces.d/eth0.cfg)rN)loggingr/typingr cloudinitrrr(cloudinit.distros.package_management.aptr4cloudinit.distros.package_management.package_managerr"cloudinit.distros.parsers.hostnamer cloudinit.net.netplanr getLoggerrr2rr-r rBr'r7r5rar%r$rsw ))8O;8g!'F8W^^F8R@!/ 8<&5r%