f(ddlZddlZddlmZddlmZmZmZddlm Z ddl m Z ddl m Z ddlmZej eZdZd Zd ZGd d ej,Zdd ZedfdZddZddZy)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} '/etc/network/interfaces.d/50-cloud-initz/etc/default/localeceZdZdZdedZededededddZd Zd Z fd Z d Z dd Z fdZ dZdZdZddZdZdZddZdZdedededefdZxZS)Distroz /etc/hostnamer )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__8sQ sE*! '!??4<<57;xxjc|jst|_|jr |jS|jS)z9Return the default locale if set, else use default locale)rread_system_localerr s r% get_localezDistro.get_localeCs>!!!3!5D #'"4"4D   :>:M:M r&c@|st}|s td|j}tjj |}|j }|r&tjdt|jn%tjd|j t|j|jk7xs| xs|}| xs|xs|}|rt|||n"tjd||j ||rt|||d|_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)keynamez9System has '%s=%s' requested '%s', skipping regeneration.N) LOCALE_CONF_FN ValueErrorr*ospathexistsrLOGdebugrlowerregenerate_localeupdate_locale_conf) r localeout_fnr, distro_localeconf_fn_existssys_locale_unset need_regen need_confs r% apply_localezDistro.apply_localeNs#F>? ?) /#111  IIJ##   II0""  LLNm113 3 !!   '&H*H8H  ffg > IIK""    vvw ?!%D  r&c6tt||i|SN)_maybe_remove_legacy_eth0r_write_network_state)r argskwargsr$s r%rBzDistro._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)r hostnamefilenameconfrFs r%_write_hostnamezDistro._write_hostnames ++H5D#D (# #d)U3 #'#;#; 14$ $N  sAABBcT|j|j}|j|fSr@)_read_hostnamehostname_conf_fn)r sys_hostnames r%_read_system_hostnamezDistro._read_system_hostnames)**4+@+@A %%|44r&cbttj|}|j|Sr@)r rload_text_fileparse)r rRrSs r%rIzDistro._read_hostname_confs%D//9:  r&cld} |j|}|j}|s|S|S#t$rYwxYwr@)rIrQrJ)r rRdefaultrQrSs r%rVzDistro._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)r rcs r% set_timezonezDistro.set_timezones  B0B0B20FGr&cb|dk7rtd|d|jjdy)NupgradezUnable to handle z command) RuntimeErrorrrun_package_command)r commandrCpkgss r%package_commandzDistro.package_commands3 i !27)8DE E $$Y/r&c*tjSr@)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-initrGz XKBMODEL=""z XKBLAYOUT="z XKBVARIANT="z XKBOPTIONS="zBACKSPACE="guess"z/etc/default/keyboardrHw)rRcontentmodeomoderestartz console-setup)joinrrOmanage_service)r rrrsrtrucontentss r% set_keymapzDistro.set_keymaps999UG1%fXQ'wiq)wiq)#    ,   I7r&)NLANGr@)NN)__name__ __module__ __qualname__rWr network_conf_fnNETWORK_FILE_HEADERrenderer_configsdhclient_lease_directorydhclient_lease_file_regexrr*r>rBrTrYrIrVrargrnrqrPr __classcell__)r$s@r%r r "s&8)O (.- ,I61  / 8 A  /&b=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%rArAs 77>>$  5D A&&t,%'=>'224 ALL ""7B/ Nr&cxtjd|||tjdd|z|d|gdy)zUpdate system locale configz%Updating %s with locale setting %s=%sz update-localez--locale-file==FcaptureN)r2r3rr7rr,s r%r6r6sBII/7F II  x ' '  r&c|jdvrtjd||ytjd|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 rengenerationNzGenerating locales for %sz locale-genFr)r4r2r3rrs r%r5r5sK||~22 8'6JII)62II|V$e4r&)z"/etc/network/interfaces.d/eth0.cfg)r)loggingr/typingr cloudinitrrr(cloudinit.distros.package_management.aptr4cloudinit.distros.package_management.package_managerr"cloudinit.distros.parsers.hostnamer cloudinit.net.netplanr getLoggerrr2rNETWORK_CONF_FNr-r rAr(r6r5r`r&r%rsw ))8O;8g!<&|8W^^|8~@!/  5r&