a '¡Dgi*ã@s´ddlZddlZddlmZddlmZmZmZddlm Z ddl m Z ddl m Z ddlmZe e¡ZdZd ZGd d „d ejƒZdd d„Zedfdd„Zddd„Zddd„ZdS)éN)ÚList)ÚdistrosÚsubpÚutil)Ú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/localecsÈeZdZdZdedœZededœededdœdœZd Zd Z ‡fd d „Z d d„Z d(dd„Z ‡fdd„Z dd„Zdd„Zdd„Zd)dd„Zdd„Zdd „Zd*d!d"„Zd#d$„Zeeeed%œd&d'„Z‡ZS)+ÚDistroz /etc/hostnamez'/etc/network/interfaces.d/50-cloud-init)ÚeniÚnetplanr )Zeni_pathZ eni_headerr T)Z netplan_pathZnetplan_headerZpostcmdsz /var/lib/dhcpzdhclient\.\w+\.leasescs@tƒ |||¡d|_d|_d|_t |j|¡|_|jg|_ dS)NZdebianzC.UTF-8) ÚsuperÚ__init__ZosfamilyÚdefault_localeÚ system_localerZ from_configZ_runnerÚaptZpackage_managers)ÚselfÚnameZcfgÚpaths©Ú __class__©úr3r<rBrDrFrGr7rRÚ __classcell__rrrrr !s6þþýû   ;   r ú"/etc/network/interfaces.d/eth0.cfgcCs’tj |¡sdSd}zPt |¡}ddg}dd„| ¡Dƒ}||krVt |¡d|}n |d|}Wnty‚|d |}Yn0t  |¡dS) 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 dhcpcSsg|]}| d¡s| ¡‘qS)ú#)Ú startswithÚstrip)Ú.0ÚfrrrÚ üsz-_maybe_remove_legacy_eth0..zremoved %s with known contentsz* '%s' exists with user configured content.z" %s exists, but could not be read.) r!r"r#rr?Ú splitlinesZdel_fileÚ Exceptionr$Zwarning)r"ZbmsgrQZknown_contentsÚlinesÚmsgrrrr,ês  ÿ   r,rcCsDd}|std|ƒ‚tj |¡r@t |¡}t |¡}| |d¡}|S)z.Read system default locale setting, if presentr1zInvalid path: %s)r r!r"r#rr?Zload_shell_contentÚget)Úsys_pathrZsys_valZlocale_contentZ sys_defaultsrrrr s     rcCsHt d|||¡t d¡s$|dgƒtjdd|d||fgdd�dS) zUpdate system locale configz%Updating %s with locale setting %s=%sz update-localeÚlocalesz--locale-file=z%s=%sF©ZcaptureN)r$r%rÚwhich©r)rdrrrrrr(sÿ   ýúr(cCsT| ¡dvrt d||¡dSt d¡s2|dgƒt d|¡tjd|gdd�dS) z� Run locale-gen for the provided locale and set the default system variable `keyname` appropriately in the provided `sys_path`. )Úczc.utf-8Úposixz$%s=%s does not require rengenerationNz locale-genrezGenerating locales for %sFrf)r&r$r%rrgrhrrrr'+s    r')rX)rN)rN)Zloggingr!ÚtypingrZ cloudinitrrrZ(cloudinit.distros.package_management.aptrZ4cloudinit.distros.package_management.package_managerrZ"cloudinit.distros.parsers.hostnamerZcloudinit.net.netplanr Z getLoggerrSr$rVrr r,rr(r'rrrrÚ s"      J ÿ