ó
    x[hZ  ã                   óÊ   • S SK r S SKrS SKrS SKJrJr  S SKJs  Js  J	r	  S SK
JrJrJrJrJr  S SKJrJr  S SKJr  \ R(                  " \5      r " S S\R.                  5      rg)é    N)ÚListÚOptional)ÚdistrosÚhelpersÚnetÚsubpÚutil)ÚPackageListÚ	bsd_utils)ÚBSDNetworkingc                   ó¤  ^ • \ rS rSr% \rSrSrSrSr	SSSS.r
/ r\\   \S	'   / r\\   \S
'   / r\\   \S'   Sr\\\      \S'   Sr\\\      \S'   \R*                  rU 4S jrS\SS4U 4S jjrS rS(S jrS rS rS(S jrS rS\ 4S jr!S r"S)S jr#S r$S(S jr%S\&S \'4S! jr(\)S" 5       r*\)S#\S\\   4S$ j5       r+\)S%\S\,4S& j5       r-S'r.U =r/$ )*ÚBSDé   ú/etc/rc.confz/etc/master.passwdz
root:wheelz-Hú-pz-r)ÚhaltÚpoweroffÚrebootÚgroup_add_cmd_prefixÚpkg_cmd_install_prefixÚpkg_cmd_remove_prefixNÚpkg_cmd_update_prefixÚpkg_cmd_upgrade_prefixc                 óø   >• [         TU ]  XU5        [        R                  " U5      U l        SUS'   SUS'   [
        R                  " 5       R                  5       U l        [        R                  U l        SU l        g )NÚsshdÚssh_svcnameÚrsyslogdÚrsyslog_svcnameF)ÚsuperÚ__init__r   ÚRunnersÚ_runnerÚplatformÚsystemÚlowerÚosfamilyÚ
bsd_netopsÚ	BsdNetOpsÚnet_opsÚis_linux)ÚselfÚnameÚcfgÚpathsÚ	__class__s       €Ú7/usr/lib/python3/dist-packages/cloudinit/distros/bsd.pyr    ÚBSD.__init__"   sd   ø€ Ü‰Ñ˜ EÔ*ô —’ uÓ-ˆŒØ#ˆˆMÑØ!+ˆÐÑÜ ŸšÓ)×/Ñ/Ó1ˆŒÜ!×+Ñ+ˆŒØˆ�ó    Úci_pkl_versionÚreturnc                 ó2   >• [         TU ]  U5        SU l        g )NF)r   Ú	_unpickler*   )r+   r3   r/   s     €r0   r6   ÚBSD._unpickle.   s   ø€ Ü‰Ñ˜.Ô)ð ˆ�r2   c                 óT   • U R                  U R                  5      nU R                  U4$ ©N)Ú_read_hostnameÚhostname_conf_fn)r+   Úsys_hostnames     r0   Ú_read_system_hostnameÚBSD._read_system_hostname4   s)   € Ø×*Ñ*¨4×+@Ñ+@ÓAˆØ×%Ñ% |Ð4Ð4r2   c                 ó.   • [         R                  " S5      $ )NÚhostname)r   Úget_rc_config_value)r+   ÚfilenameÚdefaults      r0   r:   ÚBSD._read_hostname8   s   € Ü×,Ò,¨ZÓ8Ð8r2   c                 ó   • [        S5      e)Nz&Return list cmd to add member to group©ÚNotImplementedError)r+   Úmember_nameÚ
group_names      r0   Ú_get_add_member_to_group_cmdÚ BSD._get_add_member_to_group_cmd;   s   € Ü!Ð"JÓKÐKr2   c                 ó0   • [         R                  " SUSS9  g )Nr@   r   )Úfn)r   Úset_rc_config_value)r+   r@   rB   s      r0   Ú_write_hostnameÚBSD._write_hostname>   s   € Ü×%Ò% j°(¸~ÓNr2   c                 ó˜  • [         R                  " U5      (       a  [        R                  SU5        O=U R                  U/-   n [
        R
                  " U5        [        R                  SU5        U(       d  / nU Hs  n[         R                  " U5      (       d  [        R                  SUU5        M7   [
        R
                  " U R                  XA5      5        [        R                  SXA5        Mu     g ! [         a    [         R                  " [        SU5         N«f = f! [         a     [         R                  " [        SXA5         MÍ  f = f)Nz(Skipping creation of existing group '%s'zCreated new group %szFailed to create group %szCUnable to add group member '%s' to group '%s'; user does not exist.zAdded user '%s' to group '%s'z%Failed to add user '%s' to group '%s')r	   Úis_groupÚLOGÚwarningr   r   ÚinfoÚ	ExceptionÚlogexcÚis_userrJ   )r+   r,   ÚmembersÚgroup_add_cmdÚmembers        r0   Úcreate_groupÚBSD.create_groupA   s  € Ü�=Š=˜×ÑÜ�K‰KÐBÀDÕIà ×5Ñ5¸¸Ñ>ˆMðDÜ—	’	˜-Ô(Ü—‘Ð/°Ô6ö ØˆGÛˆFÜ—<’< ×'Ñ'Ü—‘ð-àØô	ñ ðÜ—	’	˜$×;Ñ;¸FÓIÔJÜ—‘Ð8¸&ÖGò øô ó DÜ—’œCÐ!<¸dÖCðDûô" ó Ü—’ÜÐ@À&÷ðús$   Á,C3 Â3;DÃ3&DÄDÄ&E	ÅE	c                 ó    • / SS.n[         R                  " 5       R                  5        H!  u  p#US   R                  SUUSS0/S.5        M#     U$ )Né   )ÚconfigÚversionr`   ÚphysicalÚtypeÚdhcp)rc   r,   Úmac_addressÚsubnets)r   Úget_interfaces_by_macÚitemsÚappend)r+   ÚnconfÚmacr,   s       r0   Úgenerate_fallback_configÚBSD.generate_fallback_config_   s\   € Ø¨!Ñ,ˆÜ×2Ò2Ó4×:Ñ:Ö<‰IˆCØ�(‰O×"Ñ"à&Ø Ø#&Ø!'¨Ð 0Ð1ñ	öñ =ð ˆr2   Úpkglistc                 óD   • U R                  5         U R                  SUS9  g )NÚinstall)Úpkgs)Úupdate_package_sourcesÚpackage_command)r+   rn   s     r0   Úinstall_packagesÚBSD.install_packagesl   s!   € Ø×#Ñ#Ô%Ø×Ñ˜Y¨WÐÒ5r2   c                 ó   • [        S5      e)z?Return environment vars used in *BSD package_command operationsz(BSD subclasses return a dict of env varsrF   )r+   s    r0   Ú_get_pkg_cmd_environÚBSD._get_pkg_cmd_environp   s   € ä!Ð"LÓMÐMr2   c                 ó>  • Uc  / nUS:X  a  U R                   nO_US:X  a  U R                  nOLUS:X  a  U R                  (       d  g U R                  nO'US:X  a  U R                  (       d  g U R                  nO/ nU(       a'  [	        U[
        5      (       a  UR                  U5        O-U(       a&  [	        U[        5      (       a  UR                  U5        [        R                  " SU5      nUR                  U5        [        R                  " X@R                  5       SS9  g )Nrp   ÚremoveÚupdateÚupgradez%s-%sF)Ú
update_envÚcapture)r   r   r   r   Ú
isinstanceÚstrri   ÚlistÚextendr	   Úexpand_package_listr   rw   )r+   ÚcommandÚargsrq   Úcmdrn   s         r0   rs   ÚBSD.package_commandt   sâ   € Ø‰<ØˆDà�iÓØ×-Ñ-‰CØ˜Ó Ø×,Ñ,‰CØ˜Ó Ø×-×-ØØ×,Ñ,‰CØ˜	Ó!Ø×.×.ØØ×-Ñ-‰CàˆCæ”J˜t¤S×)Ñ)Ø�J‰J�tÕÞ”j ¤t×,Ñ,Ø�J‰J�tÔä×*Ò*¨7°DÓ9ˆØ�
‰
�7Ôô 	�	Š	�#×";Ñ";Ó"=ÀuÓMr2   c                 óJ   • [         R                  " XR                  U5      S9  g )N)ÚtzÚtz_file)r   Úset_etc_timezoneÚ_find_tz_file)r+   r‰   s     r0   Úset_timezoneÚBSD.set_timezone’   s   € Ü× Ò  B×0BÑ0BÀ2Ó0FÓGr2   c                 ó.   • [         R                  S5        g )NzCannot set the locale.)rS   Údebug)r+   ÚlocaleÚout_fns      r0   Úapply_localeÚBSD.apply_locale•   s   € Ü�	‰	Ð*Õ+r2   Úplist_inÚhashedc                 ó:   • U H  u  p4U R                  X4US9  M     g )N)r–   )Ú
set_passwd)r+   r•   r–   r,   Úpasswords        r0   ÚchpasswdÚBSD.chpasswd˜   s   € Û&‰NˆDØ�O‰O˜D°6ˆOÓ:ò 'r2   c                 ó~   • [         R                   " SSS[        U 5      /5      u  p[        UR                  5       5      $ )z3
Return the parent pid of a process by checking ps
Úpsz-oppid=r   )r   r€   ÚintÚstrip)ÚpidÚppidÚ_s      r0   Úget_proc_ppidÚBSD.get_proc_ppidœ   s2   € ô
 —)’)˜T 9¨d´C¸³HÐ=Ó>‰ˆÜ�4—:‘:“<Ó Ð r2   Úblockdevc                 ó   • g r9   © )r¥   s    r0   Úget_mapped_deviceÚBSD.get_mapped_device¤   s   € àr2   Údevpathc                 ó´   • [         R                  " U 5      nU(       a-  SU 3n[        R                  " SU5      nU(       a
  US   US   4$ [	        SU  S35      e)Nz/dev/z/^(?P<dev>/dev/.+)[sp](?P<part_slice>\d+[a-z]*)$ÚdevÚ
part_slicezInvalid value for devpath: 'Ú')r	   Úfind_freebsd_partÚreÚsearchÚ
ValueError)rª   ÚpartÚfpartÚms       r0   Údevice_part_infoÚBSD.device_part_info¨   sd   € ô ×%Ò% gÓ.ˆÞØ˜D˜6�NˆEä—	’	ØBÀEóˆAö Ø˜‘x  <¡Ð0Ð0ô Ð7¸°yÀÐBÓCÐCr2   )r"   r*   r)   r&   r9   )NN)0Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   Únetworking_clsr;   Ú
rc_conf_fnÚ	shadow_fnÚdefault_ownerÚshutdown_options_mapr   r   r€   Ú__annotations__r   r   r   r   r   r'   r(   r)   r    rž   r6   r=   r:   rJ   rO   r\   rl   r
   rt   rw   rs   r�   r“   r�   Úboolrš   Ústaticmethodr£   r¨   Útupler¶   Ú__static_attributes__Ú__classcell__)r/   s   @r0   r   r      s\  ø‡ Ø"€NØ%ÐØ€JØ$€IØ €Mð %)°dÀdÑKÐð ')Ð˜$˜s™)Ó(Ø(*Ð˜D ™IÓ*Ø')Ð˜4 ™9Ó)à15Ð˜8 D¨¡IÑ.Ó5Ø26Ð˜H T¨#¡YÑ/Ó6Ø×"Ñ"€Gõ
ð¨ð °÷ ò5ô9òLòOôò<ð6¨ô 6òNôNò<Hô,ð; ð ;¨tô ;ð ñ!ó ð!ð ð Cð ¨H°S©Mó ó ðð ðD #ð D¨%ó Dó öDr2   r   )Úloggingr#   r°   Útypingr   r   Úcloudinit.net.netops.bsd_netopsr   Únetopsr'   Ú	cloudinitr   r   r   r	   Úcloudinit.distrosr
   r   Úcloudinit.distros.networkingr   Ú	getLoggerr¸   rS   ÚDistror   r§   r2   r0   Ú<module>rÐ      sG   ðÛ Û Û 	ß !ç 4Ó 4ß 7Õ 7ß 4Ý 6à×Ò˜Ó!€ôiDˆ'�.‰.õ iDr2   