܍~cY!ddlZddlmZmZddlmZddlmZmZddlm Z ddl m Z ddl m Z ddlmZdd lmZejeZGd d ejZ ddZdZdZdS)N)distroshelpers)log)subputil)net_util) HostnameConf)Renderer)RendererNotFoundError) PER_INSTANCEceZdZdZdZdgZdddddiZd Zdd Zd Z d e ffd Z dZ dZ dZdZdZdZddZdZdZddZdZxZS)Distroz/etc/locale.genz /etc/netctl systemctlnetplanz/etc/netplan/50-cloud-init.yamlz# generated by cloud-init T) netplan_pathnetplan_headerpostcmdsctj||||tj||_d|_d|d<dS)Narchsshd ssh_svcname)rr__init__rRunners_runnerosfamily)selfnamecfgpathss 8/usr/lib/python3/dist-packages/cloudinit/distros/arch.pyrzDistro.__init__!sHdC777u--  #MNc8|!|dkrtd|tjd|zdg}tj|jd|tjdgdtjd d |gddS) Nz/etc/locale.confzFInvalid locale_configfile %s, only supported value is /etc/locale.confz%s UTF-8 z locale-genFcapture localectlz set-locale)LOGwarningr make_header write_file locale_gen_fnjoinr)rlocaleout_fnliness r apply_localezDistro.apply_locale*s  &,>">"> KK,        & !    *DIIe,<,<=== <.%0000 ; f5uEEEEEEr!c\||d|dS)Nr#)pkgs)update_package_sourcespackage_command)rpkglists r install_packageszDistro.install_packages=s3 ##%%% Rg.....r!returncz tS#t$r }t|d}~wwxYwN)super _get_rendererr NotImplementedError)re __class__s r r<zDistro._get_rendererAsE -77((** *$ - - -%1 , -s# :5:ctj|}td||t ||j|j|jS)Nz3Translated ubuntu style network settings %s into %s) resolv_confconf_dir enable_func)rtranslate_networkr(debug_render_networkresolve_conf_fnnetwork_conf_dir_enable_interface)rsettingsentriess r _write_networkzDistro._write_networkHs_,X66 A      ,*.     r!cdd|g} tj|\}}t|rtd||dSdS#tj$rt jtd|YdSwxYw)Nnetctlreenable(Running %s resulted in stderr output: %s#Running interface command %s failed)rlenr(r)ProcessExecutionErrorrlogexcr device_namecmd_outerrs r rIzDistro._enable_interfaceVs[1 I)C..KT33xx  >S  ) I I I KBC H H H H H H IsAA *A;:A;c0dd|g}td|| tj|\}}t|rtd||dS#tj$rt jtd|YdSwxYw)NrNrestartz8Attempting to run bring up interface %s using command %srPTrQF)r(rErrRr)rSrrTrUs r _bring_up_interfacezDistro._bring_up_interfaceasK0 F     )C..KT33xx  >S4)    KBC H H H55 sAA''*BBcd} ||}n#t$rYnwxYw|std}||t j|t |dddS)Nr#wi)omodemode)_read_hostname_confIOErrorr set_hostnamerr+str)rhostnamefilenameconfs r _write_hostnamezDistro._write_hostnamess ++H55DD    D  $##D (### #d))3UCCCCCCs  ''cH||j}|j|fSr:)_read_hostnamehostname_conf_fn)r sys_hostnames r _read_system_hostnamezDistro._read_system_hostnames&**4+@AA %|44r!cpttj|}||Sr:)r r load_fileparse)rrfrgs r razDistro._read_hostname_confs+DN84455  r!cnd} ||}|j}n#t$rYnwxYw|s|S|Sr:)rarerb)rrfdefaultrergs r rjzDistro._read_hostnamesZ ++H55D}HH    D  Ns ! ..ctd| tjddd|gdS#tj$rt jtd|YdSwxYw)Nz2Non-persistently setting the system hostname to %s hostnamectlz --transientz set-hostnamez;Failed to non-persistently adjust the system hostname to %s)r(rErrSrrT)rres r _apply_hostnamezDistro._apply_hostnames @(     I}m^XN O O O O O)    KM       s7*A%$A%cXtj|||dS)N)tztz_file)rset_etc_timezone _find_tz_file)rrws r set_timezonezDistro.set_timezones, B0B0B20F0FGGGGGGr!c|g}gd}|r+t|tr||n,|r*t|tr|||dkrd}|r||t jd|}||tj|ddS)N)pacmanz-Syz--quietz --noconfirmupgradez-uz%s-%sFr%) isinstancerdappendlistextendrexpand_package_listr)rcommandargsr3rWr6s r r5zDistro.package_commands <D999  JtS))  JJt      jt,,  JJt    i  G  JJw   *7D99 7 #u%%%%%%r!cX|jd|jdgtdS)Nzupdate-sourcesz-y)freq)rrunr5r )rs r r4zDistro.update_package_sourcess9  d2TF      r!r:)NN)__name__ __module__ __qualname__r,rHinit_cmdrenderer_configsrr1r7r r<rLrIr\rhrmrarjrur{r5r4 __classcell__)r?s@r rrsb%M$}H=;  $$$FFFF&///-x------     I I I$ D D D555       HHH&&&&.       r!r/ etc/netctletc/resolv.confc g}g}tj||}tj||}|D]\}}|dkr ||tj||} d||d|dd|d|d|dgd } tj | t| |r |d r ||d|vr| |d|r"tj |t||S) znRender the translate_network format into netctl files in target. Paths will be rendered under target. loethernet bootprotoaddressrnetmaskgatewayzdns-nameservers) Connection InterfaceIPAddressGatewayDNSauto) r target_pathitemsrospathr-getrr+convert_netctlrconvert_resolv_conf) rKtargetrBrArCdevs nameserversdevinfonet_fnnet_cfgs r rFrFs DK"6;77K11H}}88 d $;;  Ch,,$((;''"&((9"5"5"5"5txx 7J7J7JKxx **88-r22    w 7 7888  488F++  K     $ $   t$56 7 7 7G  %8%E%EFFF Kr!c&g}t|D]k}||}|d}nAt|ttfr%ddd|Dzdz}||d|dld|S) zGiven a dictionary, returns a string in netctl profile format. netctl profile is described at: https://git.archlinux.org/netctl.git/tree/docs/netctl.profile.5.txt Note that the 'Special Quoting Rules' are not handled here.Nr#( c3 K|] }d|zV dS)z'%s'N).0vs r z!convert_netctl..s& 9 9! 9 9 9 9 9 9r!)=r$)sortedrtuplerr-r)rJresultkeyvals r rrsFh..sm ;CC eT] + + @ 9 9S 9 9 9999C?C 333,---- 776??r!cNd}t|tr |D] }|d|zz} |S)z4Returns a settings string formatted for resolv.conf.r#znameserver %s )rr)rJrnss r rrs? F(D!!5 5 5B/"44FF Mr!)rrrN)r cloudinitrrrloggingrrcloudinit.distrosr"cloudinit.distros.parsers.hostnamer cloudinit.net.rendererr cloudinit.net.renderersr cloudinit.settingsr getLoggerrr(rrFrrrr!r rs> &&&&&&&&$$$$$$ &&&&&&;;;;;;++++++999999++++++g!!k k k k k W^k k k `  ! &&&&R$r!