
    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         Nf = 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   ==KKBD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::<IC(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!    ##%YW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JtS))JJtjt,,JJt**7D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      B0B0B20F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    &NDOOD6O: '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    
 ))T9dC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.D6NE		BE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 %)ddK ')$s)((*DI*')49)158DI.526HT#Y/6""G
  59LO<6 6NN<H,; ;t ; ! ! C HSM   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   