+
    iZ                         ^ RI t ^ RIt^ RIt^ RIHtHt ^ RIHu Hu H	t	 ^ RI
HtHtHtHtHt ^ RIHtHt ^ RIHt ] P(                  ! ]4      t ! R R]P.                  4      tR# )    N)ListOptional)distroshelpersnetsubputil)PackageList	bsd_utils)BSDNetworkingc                   ^  a a ] tR t^t o]tRtRtRtRt	RRRRRR	/t
. t. t. tR
tR
t]P"                  tV 3R ltV3R lV 3R lltR tR#R ltR tR tR#R ltR tV3R lR ltR tR$R ltR tR#R ltV3R lR lt ]!R 4       t"]!V3R lR l4       t#]!V3R lR  l4       t$V3R! lt%R"t&Vt'V ;t(# )%BSD/etc/rc.confz/etc/master.passwdz
root:wheelhaltz-Hpoweroff-prebootz-rNc                   < \         SV `  WV4       \        P                  ! V4      V n        R VR&   RVR&   \
        P                  ! 4       P                  4       V n        \        P                  V n        RV n        R# )sshdssh_svcnamersyslogdrsyslog_svcnameFN)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!++    c                $   < V ^8  d   QhRS[ RR/# )   ci_pkl_versionreturnN)int)format__classdict__s   "r*   __annotate__BSD.__annotate__.   s        r,   c                4   < \         SV `  V4       R V n        R# )FN)r   	_unpickler$   )r%   r/   r)   s   &&r*   r7   BSD._unpickle.   s    .) r,   c                T    V P                  V P                  4      pV P                  V3# N)_read_hostnamehostname_conf_fn)r%   sys_hostnames   & r*   _read_system_hostnameBSD._read_system_hostname4   s)    **4+@+@A%%|44r,   c                .    \         P                  ! R 4      # )hostname)r   get_rc_config_value)r%   filenamedefaults   &&&r*   r;   BSD._read_hostname8   s    ,,Z88r,   c                    \        R 4      h)z&Return list cmd to add member to groupNotImplementedError)r%   member_name
group_names   &&&r*   _get_add_member_to_group_cmd BSD._get_add_member_to_group_cmd;   s    !"JKKr,   c                8    \         P                  ! R VRR7       R# )rA   r   )fnN)r   set_rc_config_value)r%   rA   rC   s   &&&r*   _write_hostnameBSD._write_hostname>   s    %%j(~Nr,   c                   \         P                  ! V4      '       d   \        P                  R V4       MAV P                  V.,           p \
        P
                  ! V4       \        P                  RV4       V'       g   . pV Ft  p\         P                  ! V4      '       g   \        P                  RVV4       K8   \
        P
                  ! V P                  WA4      4       \        P                  RWA4       Kv  	  R#   \         d     \         P                  ! \        RT4        Li ; i  \         d!    \         P                  ! \        RYA4        K  i ; i)z(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'N)r	   is_groupLOGwarninggroup_add_cmd_prefixr   info	Exceptionlogexcis_userrK   )r%   r&   membersgroup_add_cmdmembers   &&&  r*   create_groupBSD.create_groupA   s   ==KKBDI 55>MD		-(/6 GF<<''-	 		$;;FIJ8&G   DC!<dCD"  @&s$   	,C; :;D(;'D%$D%('EEc                    R . R^/p\         P                  ! 4       P                  4        F(  w  r#VR ,          P                  RRRVRVRRR/./4       K*  	  V# )configversiontypephysicalr&   mac_addresssubnetsdhcp)r   get_interfaces_by_macitemsappend)r%   nconfmacr&   s   &   r*   generate_fallback_configBSD.generate_fallback_config_   sh    2y!,224::<IC(O""JD!3 01	 = r,   c                    < V ^8  d   QhRS[ /# )r.   pkglist)r
   )r2   r3   s   "r*   r4   r5   l   s     6 6 6r,   c                L    V P                  4        V P                  R VR7       R# )install)pkgsN)update_package_sourcespackage_command)r%   rp   s   &&r*   install_packagesBSD.install_packagesl   s!    ##%YW5r,   c                    \        R4      h)z?Return environment vars used in *BSD package_command operationsz(BSD subclasses return a dict of env varsrG   )r%   s   &r*   _get_pkg_cmd_environBSD._get_pkg_cmd_environp   s    !"LMMr,   c                `   Vf   . pVR8X  d   V P                   pMfVR8X  d   V P                  pMRVR8X  d"   V P                  '       g   R # V P                  pM*VR8X  d"   V P                  '       g   R # V P                  pM. pV'       d)   \	        V\
        4      '       d   VP                  V4       M/V'       d(   \	        V\        4      '       d   VP                  V4       \        P                  ! RV4      pVP                  V4       \        P                  ! W@P                  4       RR7       R # )Nrr   removeupdateupgradez%s-%sF)
update_envcapture)pkg_cmd_install_prefixpkg_cmd_remove_prefixpkg_cmd_update_prefixpkg_cmd_upgrade_prefix
isinstancestrrj   listextendr	   expand_package_listr   ry   )r%   commandargsrs   cmdrp   s   &&&&  r*   ru   BSD.package_commandt   s    <Di--C ,,C ---,,C	!...--CCJtS))JJtjt,,JJt**7D9

7 			#";";"=uMr,   c                R    \         P                  ! WP                  V4      R 7       R# ))tztz_fileN)r   set_etc_timezone_find_tz_file)r%   r   s   &&r*   set_timezoneBSD.set_timezone   s      B0B0B20FGr,   c                0    \         P                  R 4       R# )zCannot set the locale.N)rT   debug)r%   localeout_fns   &&&r*   apply_localeBSD.apply_locale   s    		*+r,   c                &   < V ^8  d   QhRS[ RS[/# )r.   plist_inhashed)r   bool)r2   r3   s   "r*   r4   r5      s     ; ; ;t ;r,   c                B    V F  w  r4V P                  W4VR 7       K  	  R# ))r   N)
set_passwd)r%   r   r   r&   passwords   &&&  r*   chpasswdBSD.chpasswd   s    &NDOOD6O: 'r,   c                ~    \         P                   ! RRR\        V 4      .4      w  r\        VP                  4       4      # )z3
Return the parent pid of a process by checking ps
psz-oppid=r   )r   r   r1   strip)pidppid_s   &  r*   get_proc_ppidBSD.get_proc_ppid   s2    
 ))T9dCH=>4::<  r,   c                6   < V ^8  d   QhRS[ RS[S[ ,          /# )r.   blockdevr0   )r   r   )r2   r3   s   "r*   r4   r5      s      C HSM r,   c                    R # r:    )r   s   &r*   get_mapped_deviceBSD.get_mapped_device   s    r,   c                &   < V ^8  d   QhRS[ RS[/# )r.   devpathr0   )r   tuple)r2   r3   s   "r*   r4   r5      s     D D# D% Dr,   c                    \         P                  ! V 4      pV'       d7   R V 2p\        P                  ! RV4      pV'       d   VR,          VR,          3# \	        RV  R24      h)z/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_infoBSD.device_part_info   sd     %%g.D6NE		BEA x<00 7yBCCr,   c                   < V ^8  d   Qh/ S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[S[ S[,          ,          ;R&   S[S[ S[,          ,          ;R&   # )r.   rV   r   r   r   r   )r   r   r   )r2   r3   s   "r*   r4   r5      sd      s)(  !I*   9)   $DI.5! " %T#Y/6# r,   )r   r$   r#   r    r:   )NN))__name__
__module____qualname____firstlineno__r   networking_clsr<   
rc_conf_fn	shadow_fndefault_ownershutdown_options_maprV   r   r   r   r   r!   r"   r#   r   r7   r>   r;   rK   rP   r^   rm   rv   ry   ru   r   r   r   staticmethodr   r   r   __annotate_func____static_attributes____classdictcell____classcell__)r)   r3   s   @@r*   r   r      s     "N%J$I M #D*dHdK ')(*')1526""G
 59LO<6 6NN<H,; ; ! !   D Dw  r,   r   )loggingr   r   typingr   r   cloudinit.net.netops.bsd_netopsr   netopsr!   	cloudinitr   r   r   r	   cloudinit.distrosr
   r   cloudinit.distros.networkingr   	getLoggerr   rT   Distror   r   r,   r*   <module>r      sG      	 ! 4 4 7 7 4 6!iD'.. iDr,   