܍~cp5ddlZddlZddlZddlmZmZddlmZddlmZm Z ddl m Z ddl m Z ejeZdZdZd d d Zd Zd ZdZgdZGddejZdZddZedfdZddZddZdS)N)distroshelpers)log)subputil) HostnameConf) PER_INSTANCE)zapt-getz(--option=Dpkg::Options::=--force-confoldz*--option=Dpkg::options::=--force-unsafe-ioz --assume-yesz--quiet eatmydataauto)commandenableda8# 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/locale)z/var/lib/dpkg/lock-frontendz/var/lib/dpkg/lockz/var/cache/apt/archives/lockz/var/lib/apt/lists/lockceZdZdZdddZededededd dZd Zd ZddZ dZ fdZ dZ dZ dZddZdZdZddZefdZddZdZdZdZxZS) Distroz /etc/hostnamerz/etc/netplan/50-cloud-init.yaml)eninetplanr)eni_path eni_headerrT) netplan_pathnetplan_headerpostcmdsctj||||tj||_d|_d|_d|_dS)Ndebianz en_US.UTF-8) rr__init__rRunners_runnerosfamilydefault_locale system_locale)selfnamecfgpathss :/usr/lib/python3/dist-packages/cloudinit/distros/debian.pyrzDistro.__init__NsNdC777u--   +!c`|jst|_|jr|jn|jS)z9Return the default locale if set, else use default locale)r read_system_localerr!s r% get_localezDistro.get_localeXs:! 6!3!5!5D #'"4 MD  $:M r&NLANGc|st}|std|}tj|}|jrdnd}||kp| p|}| p|p|}|rt|||n"t d||j||rt|||d|_dSdS)zeApply specified locale to system, regenerate if specified locale differs from system default.zFailed to provide locale value.FT)keynamez9System has '%s=%s' requested '%s', skipping regeneration.N) LOCALE_CONF_FN ValueErrorr*ospathexistsr lowerregenerate_localeLOGdebugupdate_locale_conf) r!localeout_fnr- distro_localeconf_fn_existssys_locale_unset need_regen need_confs r% apply_localezDistro.apply_localeds$ $#F @>?? ?)) //$($6@55D LLNNm1133 3 !!   '&H*H8H   ffg > > > > > IIK"      & vvw ? ? ? ?!%D    & &r&c\||d|dS)Ninstall)pkgs)update_package_sourcespackage_command)r!pkglists r%install_packageszDistro.install_packagess3 ##%%% YW55555r&cRttj|i|SN)_maybe_remove_legacy_eth0super_write_network_state)r!argskwargs __class__s r%rKzDistro._write_network_states+!###+uww+T>$'' dC !F!K  (EFFFF!!!  ! ! ! ! ! ! ! ! !!G ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ts5B,A-,B- B7BBBB B ctj}tdtj|z |kr|stjdDtdd|dd|dd}t jtj|tj| S#tj $rF|rtd tjdYnwxYwtj|z |ktd ) zWait for apt install to complete. short_cmd: Name of command like "upgrade" or "install" subp_kwargs: kwargs to pass to subp zWaiting for apt lockzapt lock availablezapt-z [ rL])logfuncmsgfuncrMz*Another process holds apt lock. Waiting...zCould not get apt lock) timer5r6rysleepjoinrlog_timerProcessExecutionError TimeoutError)r! short_cmd subp_kwargstimeout start_timelog_msgs r%_wait_for_apt_commandzDistro._wait_for_apt_commandsPY[[  ()))ikkJ&00++--  1  II* + + + IIHH[01111}I&  -   ++-- FGGG 1  #ikkJ&00@3444s A CAD/.D/c>|g}tj}d|d<|dt}t |dtd|dtd}|t|dt|r+t|tr| |n,|r*t|tr|||}|dkr|d d }| |tjd |}||||||d d dS)aYRun the given package command. On Debian, this will run apt-get (unless APT_GET_COMMAND is set). command: The command to run, like "upgrade" or "install" args: Arguments passed to apt itself in addition to any specified in APT_GET_COMMAND pkgs: Apt packages that the command will apply to NnoninteractiveDEBIAN_FRONTENDapt_get_wrapperr rapt_get_commandupgradeapt_get_upgrade_subcommandz dist-upgradez%s=%sF)rLenvcapture)rr)r0environcopy get_optionAPT_GET_WRAPPER_get_wrapper_prefixgetextendlistAPT_GET_COMMAND isinstancerUappendrexpand_package_listr) r!r rLrBewcfgcmdsubcmdrEs r%rDzDistro.package_commands <D JOO  / 0/BB! HHY : ; ; HHY : ; ;   4(9?KKLLMMM  JtS))  JJt      jt,,  JJt    i  __,nF 6*7D99 7 ""!$Q5AA #     r&cX|jd|jdgtdS)Nzupdate-sourcesupdate)freq)rrunrDr r)s r%rCzDistro.update_package_sources$s<    J      r&c(tjSrH)rget_dpkg_architecturer)s r%get_primary_archzDistro.get_primary_arch,s)+++r&cxtj||||||dddS)Nrestartz console-setup)rr set_keymapmanage_service)r!layoutmodelvariantoptionss r%rzDistro.set_keymap/s>!!$wHHH I77777r&)Nr+rH)NN)__name__ __module__ __qualname__r\network_conf_fnNETWORK_FILE_HEADERrenderer_configsrr*r?rFrKrYr^rQr[rfrlryAPT_LOCK_WAIT_TIMEOUTrrDrCrr __classcell__)rNs@r%rr<s&84O (.-  ,I61   """    "&"&"&"&H666===== 4 4 4555    HHH&/D*5*5*5*5X, , , , \   ,,,8888888r&rc t|trt|g}tj|sGt|dkr$|drt j|dr|SgS)Nr r)rrUris_truer3rwhich)rmodes r%rr7st#s3xxj |D D V##A#4:c!f3E3E#  r&"/etc/network/interfaces.d/eth0.cfgcptj|sdSd} tj|}ddg}d|D}||krtj|d|z}n|d|zz}n#t$r |d|zz}YnwxYwt |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 dhcpc`g|]+}|d|,S)#) startswithstrip).0fs r% z-_maybe_remove_legacy_eth0..UsA   ALL>$   5D A>$''%'=>  '2244    N " " M$   2T9CCELLC AAA9D@@AKKsABBBr+cd}|std|ztj|r>t j|}t j|}||d}|S)z.Read system default locale setting, if presentrPzInvalid path: %s)r/r0r1r2rr`load_shell_contentr)sys_pathr-sys_vallocale_content sys_defaultss r%r(r(csrG 8+h6777 w~~h011.~>> ""7B// Nr&ctd|||tjdd|z|d|gddS)zUpdate system locale configz%Updating %s with locale setting %s=%sz update-localez--locale-file==FrN)r5r6rr8rr-s r%r7r7qsiII/7F I  x 'ww '  r&c|dvrtd||dStd|tjd|gddS)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)r3r5r6rrs r%r4r4sk||~~222 8'6JJJII)6222I|V$e444444r&)r)r+)rqr0r cloudinitrrrloggingrr"cloudinit.distros.parsers.hostnamercloudinit.settingsr getLoggerrr5rrrrNETWORK_CONF_FNr.rorrrIr(r7r4rer&r%rs &&&&&&&&$$$$$$ ;;;;;;++++++g!! <&x8x8x8x8x8W^x8x8x8v   @!/        555555r&