x[hdaddlZddlZddlZddlZddlmZddlmZmZmZddl m Z m Z m Z m Z mZddlmZddlmZmZej(eZdZGdd e j0Zy) N)datetime)AnyDictOptional)distroshelpers lifecyclesubputil) HostnameConf) PER_ALWAYS PER_INSTANCEa7# 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} cpeZdZdZdZdZdZdZdeediZ dZ d Z d Z d Z d0d Zdej fdZdZdZdZd0dZdZdedededefdZdZd1dZdddZedZd effd! Zfd"Z d#effd$ Z!fd%Z"d0fd& Z#d2d'Z$e%d(Z&e'd d)d*ed+ed,efd-Z(e%d.ed e)efd/Z*xZ+S)3Distrozpy3-pipz/usr/share/bkeymaps/z&/etc/profile.d/50-cloud-init-locale.shz/etc/network/interfacesz /etc/shadoweni)eni_path eni_headerz /var/lib/dhcpzdhclient\.leasesctjj||||tj||_d|_d|_d|d<y)NzC.UTF-8alpinesshd ssh_svcname)rr__init__rRunners_runnerdefault_localeosfamily)selfnamecfgpathss :/usr/lib/python3/dist-packages/cloudinit/distros/alpine.pyrzDistro.__init__.sEdC7u- '  #Mc|jS)zgThe default locale for Alpine Linux is different than cloud-init's DataSource default. )rrs r! get_localezDistro.get_locale8s"""r"Nc|s |j}|s |j}ddddd|zddg}tj|dj |dy) N#z?# This file is created by cloud-init once per new instance bootzexport CHARSET=UTF-8zexport LANG=%szexport LC_COLLATE=C )rlocale_conf_fnr write_filejoin)rlocaleout_fnliness r! apply_localezDistro.apply_locale>s^((F((F  M  " v % !    % 0%8r"pkglistcJ|j|jd|y)Nadd)pkgs)update_package_sourcespackage_command)rr2s r!install_packageszDistro.install_packagesQs! ##% U1r"c<d} |j|}|s td}|j|tj|t|dy#t$r>tj|jdd}|rnt j dYyYwxYw)Ncreate_hostname_fileTz8create_hostname_file is False; hostname file not createdr(r*) _read_hostname_confIOErrorr get_cfg_option_bool_cfgLOGinfor set_hostnamer,str)rhostnamefilenameconfr:s r!_write_hostnamezDistro._write_hostnameUs ++H5D#D (# #d)U3 #'#;#; 14$ $N  sAABBcT|j|j}|j|fSN)_read_hostnamehostname_conf_fn)r sys_hostnames r!_read_system_hostnamezDistro._read_system_hostnameks)**4+@+@A %%|44r"cbttj|}|j|SrH)r r load_text_fileparse)rrDrEs r!r;zDistro._read_hostname_confos%D//9:  r"cld} |j|}|j}|s|S|S#t$rYwxYwrH)r;rCr<)rrDdefaultrCrEs r!rIzDistro._read_hostnametsH ++H5D}}HN    s ' 33cy)Nz 127.0.1.1r$s r!_get_localhost_ipzDistro._get_localhost_ipsr"layoutmodelvariantoptionsc|s"d}tj|t|tjj |j |}tjj|s%d|z}tj|t||s"d}tj|t|tjj |d|z}tjj|s%d|z}tj|t||rtjd|rtjdtjd||gy) NzKeyboard layout not specified.z,Keyboard layout directory %s does not exist.zKeyboard variant not specified.z %s.bmap.gzz(Keyboard variant file %s does not exist.z+Keyboard model is ignored for Alpine Linux.z.Keyboard options are ignored for Alpine Linux.z setup-keymap) r?error RuntimeErrorospathr- keymap_pathisdirisfilewarningr )rrUrVrWrXmsgkeymap_layout_pathkeymap_variant_paths r! set_keymapzDistro.set_keymaps2C IIcNs# #WW\\$*:*:FCww}}/0>$%  IIcNs# #3C IIcNs# # ggll  w 6 ww~~12:%&  IIcNs# #  KKE F  KKH I >6734r"cPtj||j|y)N)tztz_file)rset_etc_timezone _find_tz_file)rrgs r! set_timezonezDistro.set_timezones  B0B0B20FGr"c|g}dg}|jd|r"t|tr|j|n#|r!t|tr|j ||r|j||dk(r|j ddgt j d|}|j |tj|dy) Napkz--quietupgradez--update-cachez --availablez%s-%sF)capture)append isinstancerBlistextendr expand_package_listr )rcommandargsr5cmdr2s r!r7zDistro.package_commands <Dg 9 JtS) JJt  jt, JJt   JJw  i  JJ(-8 9**7D9 7 #u%r"F)forcec||jjd|jdg|r tyty)Nzupdate-sourcesupdate)freq)rrunr7r r)rrxs r!r6zDistro.update_package_sourcess>    J$  +7  r"cD|js ddg|_|jS)z7Allow distro to determine the preferred ntp client listchronyntp)_preferred_ntp_clientsr$s r!preferred_ntp_clientszDistro.preferred_ntp_clientss&**+3U*;D '***r"returnc R tj|rtjd|yd|vrtj d|d=t j drt| |fi|S|jdd}dd g}d d d d dd}ddi}|jd}|rt|tr|jd}n,t|trtj d|ddd|Dcgc]}|j#}}dj%||d<|jdr|j'|d|rG|rE|D]@} tj(| r|j+| tj-d| |Bd|vrt|d|d<gdddd} t/|j1D]\} } | |vr)| r't| tr|j3|| | g3| | vr2| r0t| tr | dk(r| jd| | <c| | | <i| |vsn| sq|j'|| |jds|jdr|j'd|j'|tj-d | t j || dD]1}tj-d"| t j d#||g3| d%rt|q|| d%d&| d'}| d(}d}|j:} tj<|}d}|jAD]}|jd*}|d+|k(s|}n|rd,}d,d-<d,|d.<d,|d/<d0}|RtCjD|tCjDd1z jF}t||d2<|d,k7r|d3z}|d4z}|||d5<|d,k7r|d3z}|d6z}|jI|d*j%|}tj-d7|| tjJ||d8d9ytj6td;||ycc}w#t j4$r} tj d!|| d} ~ wwxYw#t j4$r#} tj6td$||| d} ~ wwxYw#t>$r} tj d)|| d} ~ wwxYw#tL$r"} tj6td:|| d} ~ wwxYw)O  #..0 D!ZZ_Na D( $    K!#N1  "N1  "N1 *K%**:6,,\:;$%(Iq!"$"-"5K),BB #$,q!"$"-"5K),?? .55sxx7O II/d C 4 KK6 T  C1l))  KK2D 9G --  O  #..0 D!ZZ_Na D( CTJ $     a C'%(q!"1"9"9!388N#;Q# 94@ OO#'!&*  CTJ KK u G s3u:?34  &+. s&; AAAcy)z1 Alpine uses OpenRC, not systemd FrSrSr"r! uses_systemdzDistro.uses_systemdZs r"ractionservice extra_argsc Tddg}ddg}t||dgzt||dgzt|d|gzt|d|gzt||dgzt||dgzt||dgzt||d gzd }t||}tj|d | S) a< Perform the requested action on a service. This handles OpenRC specific implementation details. OpenRC has two distinct commands relating to services, 'rc-service' and 'rc-update' and the order of their argument lists differ. May raise ProcessExecutionError z rc-servicez --nocolorz rc-updatestopstartdelr4restartstatus)rrdisableenablerreloadz try-reloadrT)ror)rrr ) rrrrrinit_cmd update_cmdcmdsrws r!manage_servicezDistro.manage_serviceas!+.!;/ Ngv%66(^w&88J'5'*:::&%)99H~)(<<8n';;x.GY+??8n'::  4< yyd44r"blockdevctjj|}|jdrtjtj |j }tjtj |j }tjd5}|D]}|jjds tj|j}t j|js_tjtj |jj |k(stjtj |jj |k(stjj|j}nddd|jdrtjd|||Sy#1swY4xYw)aReturns underlying block device for a mapped device. If it is mapped, blockdev will usually take the form of /dev/mapper/some_name If blockdev is a symlink pointing to a /dev/dm-* device, return the device pointed to. Otherwise, return None. z /dev/mapperz/dev/zdm-Nz/dev/dm-z$%s is a mapped device pointing to %s)r\r]realpath startswithmajorstatst_rdevminorscandirrlstatS_ISBLKst_moder?r)rr r ritdeventryress r!get_mapped_devicezDistro.get_mapped_device}sb77##H-   } - HHRWWX.667EHHRWWX.667EG$ & " &H}}//6 hhx}}5<< 4 ")?)G)G H#(!)$&HHRWWX]]-C-K-K$L#(%),.77+;+;HMM+J % & &   z * II6( O' & &s$+"G,>G, ?G, ?G, ,G,,G5rH)NN)poweroffrN),__name__ __module__ __qualname__pip_package_namer^r+network_conf_fnrNETWORK_FILE_HEADERrenderer_configsdhclient_lease_directorydhclient_lease_file_regexrr%r1r PackageListr8rFrLr;rIrTrBrerkr7r6propertyrboolrrrrrr staticmethodr classmethodrrr __classcell__)rs@r!rr s_ (K=N/OI O;NO / 3$# 9&2(;(;24,5  5 5S 53 5 5DH&2/4 ++X$Xt8#<7Dr!HF4 ?C55$'569556(C(HSM((r"r)loggingr\rr rtypingrrr cloudinitrrr r r "cloudinit.distros.parsers.hostnamer cloudinit.settingsr r getLoggerrr?rrrSr"r!r.sT &&==;7g!F W^^F r"