Ë
    x[hZ  ã                   óÊ   — d dl Z d dlZd dlZd dlmZmZ d dlmc mc m	Z	 d dl
mZmZmZmZmZ d dlmZmZ d dlmZ  e j(                  e«      Z G d„ dej.                  «      Zy)é    N)ÚListÚOptional)ÚdistrosÚhelpersÚnetÚsubpÚutil)ÚPackageListÚ	bsd_utils)ÚBSDNetworkingc                   ó†  ‡ — e Zd ZU eZdZdZdZdZddddœZ	g Z
ee   ed<   g Zee   ed	<   g Zee   ed
<   dZeee      ed<   dZeee      ed<   ej(                  Zˆ fd„Zdeddfˆ fd„Zd„ Zd&d„Zd„ Zd„ Zd&d„Zd„ Zdefd„Z d„ Z!d'd„Z"d„ Z#d&d„Z$de%de&fd „Z'e(d!„ «       Z)e(d"edee   fd#„«       Z*e(d$ede+fd%„«       Z,ˆ xZ-S )(Ú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         ‰| �  |||«       t        j                  |«      | _        d|d<   d|d<   t        j                  «       j                  «       | _        t        j                  | _        d| _        y )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   zBSD.__init__"   sf   ø€ Ü‰Ñ˜˜s EÔ*ô —‘ uÓ-ˆŒØ#ˆˆMÑØ!+ˆÐÑÜ Ÿ™Ó)×/Ñ/Ó1ˆŒÜ!×+Ñ+ˆŒØˆ�ó    Úci_pkl_versionÚreturnc                 ó2   •— t         ‰| �  |«       d| _        y )NF)r   Ú	_unpickler)   )r*   r1   r.   s     €r/   r4   zBSD._unpickle.   s   ø€ Ü‰Ñ˜.Ô)ð ˆ�r0   c                 óT   — | j                  | j                  «      }| j                  |fS ©N)Ú_read_hostnameÚhostname_conf_fn)r*   Úsys_hostnames     r/   Ú_read_system_hostnamezBSD._read_system_hostname4   s)   € Ø×*Ñ*¨4×+@Ñ+@ÓAˆØ×%Ñ% |Ð4Ð4r0   c                 ó,   — t        j                  d«      S )NÚhostname)r   Úget_rc_config_value)r*   ÚfilenameÚdefaults      r/   r7   zBSD._read_hostname8   s   € Ü×,Ñ,¨ZÓ8Ð8r0   c                 ó   — t        d«      ‚)Nz&Return list cmd to add member to group©ÚNotImplementedError)r*   Úmember_nameÚ
group_names      r/   Ú_get_add_member_to_group_cmdz BSD._get_add_member_to_group_cmd;   s   € Ü!Ð"JÓKÐKr0   c                 ó4   — t        j                  d|d¬«       y )Nr<   r   )Úfn)r   Úset_rc_config_value)r*   r<   r>   s      r/   Ú_write_hostnamezBSD._write_hostname>   s   € Ü×%Ñ% j°(¸~ÖNr0   c                 óh  — t        j                  |«      rt        j                  d|«       n<| j                  |gz   }	 t        j
                  |«       t        j                  d|«       |sg }|D ]l  }t        j                  |«      st        j                  d||«       Œ0	 t        j
                  | j                  ||«      «       t        j                  d||«       Œn y # t        $ r t        j                  t        d|«       Y Œœw xY w# t        $ r t        j                  t        d||«       Y ŒÁw xY w)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_userrE   )r*   r+   ÚmembersÚgroup_add_cmdÚmembers        r/   Úcreate_groupzBSD.create_groupA   s
  € Ü�=‰=˜ÔÜ�K‰KÐBÀDÕIà ×5Ñ5¸¸Ñ>ˆMðDÜ—	‘	˜-Ô(Ü—‘Ð/°Ô6ñ ØˆGØò 	ˆFÜ—<‘< Ô'Ü—‘ð-àØô	ð ðÜ—	‘	˜$×;Ñ;¸FÀDÓIÔJÜ—‘Ð8¸&À$ÕGñ	øô ò DÜ—‘œCÐ!<¸dÖCðDûô" ò Ü—‘ÜÐ@À&È$öðús#   ¾+C Â <D	Ã$DÄDÄ	%D1Ä0D1c                 óœ   — g ddœ}t        j                  «       j                  «       D ]!  \  }}|d   j                  d||ddigdœ«       Œ# |S )Né   )ÚconfigÚversionrX   ÚphysicalÚtypeÚdhcp)r[   r+   Úmac_addressÚsubnets)r   Úget_interfaces_by_macÚitemsÚappend)r*   ÚnconfÚmacr+   s       r/   Úgenerate_fallback_configzBSD.generate_fallback_config_   sc   € Ø¨!Ñ,ˆÜ×2Ñ2Ó4×:Ñ:Ó<ò 	‰IˆC�Ø�(‰O×"Ñ"à&Ø Ø#&Ø!'¨Ð 0Ð1ñ	õð	ð ˆr0   Úpkglistc                 óJ   — | j                  «        | j                  d|¬«       y )NÚinstall)Úpkgs)Úupdate_package_sourcesÚpackage_command)r*   re   s     r/   Úinstall_packageszBSD.install_packagesl   s!   € Ø×#Ñ#Ô%Ø×Ñ˜Y¨WÐÕ5r0   c                 ó   — t        d«      ‚)z?Return environment vars used in *BSD package_command operationsz(BSD subclasses return a dict of env varsrA   )r*   s    r/   Ú_get_pkg_cmd_environzBSD._get_pkg_cmd_environp   s   € ä!Ð"LÓMÐMr0   c                 óü  — |€g }|dk(  r| j                   }nR|dk(  r| j                  }n@|dk(  r| j                  sy | j                  }n!|dk(  r| j                  sy | j                  }ng }|r"t	        |t
        «      r|j                  |«       n#|r!t	        |t        «      r|j                  |«       t        j                  d|«      }|j                  |«       t        j                  || j                  «       d¬«       y )Nrg   ÚremoveÚupdateÚupgradez%s-%sF)Ú
update_envÚcapture)r   r   r   r   Ú
isinstanceÚstrra   ÚlistÚextendr	   Úexpand_package_listr   rm   )r*   ÚcommandÚargsrh   Úcmdre   s         r/   rj   z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ÖMr0   c                 óP   — t        j                  || j                  |«      ¬«       y )N)ÚtzÚtz_file)r   Úset_etc_timezoneÚ_find_tz_file)r*   r}   s     r/   Úset_timezonezBSD.set_timezone’   s   € Ü× Ñ  B°×0BÑ0BÀ2Ó0FÖGr0   c                 ó.   — t         j                  d«       y )NzCannot set the locale.)rL   Údebug)r*   ÚlocaleÚout_fns      r/   Úapply_localezBSD.apply_locale•   s   € Ü�	‰	Ð*Õ+r0   Úplist_inÚhashedc                 ó@   — |D ]  \  }}| j                  |||¬«       Œ y )N)rˆ   )Ú
set_passwd)r*   r‡   rˆ   r+   Úpasswords        r/   ÚchpasswdzBSD.chpasswd˜   s'   € Ø&ò 	;‰NˆD�(Ø�O‰O˜D (°6ˆOÕ:ñ	;r0   c                 ó~   — t        j                   dddt        | «      g«      \  }}t        |j                  «       «      S )zC
        Return the parent pid of a process by checking ps
        Úpsz-oppid=r   )r   ru   ÚintÚstrip)ÚpidÚppidÚ_s      r/   Úget_proc_ppidzBSD.get_proc_ppidœ   s4   € ô
 —)‘)˜T 9¨d´C¸³HÐ=Ó>‰ˆˆaÜ�4—:‘:“<Ó Ð r0   Úblockdevc                  ó   — y r6   © )r•   s    r/   Úget_mapped_devicezBSD.get_mapped_device¤   s   € àr0   Údevpathc                 óœ   — t        j                  | «      }|r'd|› �}t        j                  d|«      }|r
|d   |d   fS t	        d| › d�«      ‚)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       r/   Údevice_part_infozBSD.device_part_info¨   sd   € ô ×%Ñ% gÓ.ˆÙØ˜D˜6�NˆEä—	‘	ØBÀEóˆAñ Ø˜‘x  <¡Ð0Ð0ô Ð7¸°yÀÐBÓCÐCr0   r6   )NN).Ú__name__Ú
__module__Ú__qualname__r   Únetworking_clsr8   Ú
rc_conf_fnÚ	shadow_fnÚdefault_ownerÚshutdown_options_mapr   r   ru   Ú__annotations__r   r   r   r   r   r&   r'   r(   r   r�   r4   r:   r7   rE   rI   rU   rd   r
   rk   rm   rj   r�   r†   rv   ÚboolrŒ   Ústaticmethodr”   r˜   Útupler¥   Ú__classcell__)r.   s   @r/   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r0   r   )Úloggingr"   rŸ   Útypingr   r   Úcloudinit.net.netops.bsd_netopsr   Únetopsr&   Ú	cloudinitr   r   r   r	   Úcloudinit.distrosr
   r   Úcloudinit.distros.networkingr   Ú	getLoggerr¦   rL   ÚDistror   r—   r0   r/   ú<module>r¼      sI   ðÛ Û Û 	ß !ç 4Ó 4ß 7Õ 7ß 4Ý 6à€g×Ñ˜Ó!€ôiDˆ'�.‰.õ iDr0   