
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3
\¼meT  ã               @   s†   d dl Z d dlZd dlmZmZ d dljjj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„ de
jƒZdS )é    N)ÚListÚOptional)ÚdistrosÚhelpersÚnetÚsubpÚutil)ÚPackageListÚ	bsd_utils)ÚBSDNetworkingc                   sú   e Zd ZU eZdZdZdZddddœZg Z	e
e 	g Ze
e g Ze
e dZee
e  dZee
e  ejZ‡ fdd	„Zd
d„ Zd$dd„Zdd„ Zdd„ Zd%dd„Zdd„ Zedœdd„Zdd„ Zd&dd„Zdd„ Zd'dd „Z e!e"d!œd"d#„Z#‡  Z$S )(ÚBSDz/etc/rc.confz
root:wheelz-Hz-pz-r)ZhaltZpoweroffZrebootNc                sF   t ƒ j|||ƒ tj|ƒ| _d|d< d|d< tjƒ jƒ | _t	j
| _d S )NZsshdZssh_svcnameZrsyslogdZrsyslog_svcname)ÚsuperÚ__init__r   ZRunnersZ_runnerÚplatformÚsystemÚlowerZosfamilyÚ
bsd_netopsÚ	BsdNetOpsÚnet_ops)ÚselfÚnameZcfgÚpaths)Ú	__class__© ú/usr/lib/python3.6/bsd.pyr       s    zBSD.__init__c             C   s   | j | jƒ}| j|fS )N)Ú_read_hostnameÚhostname_conf_fn)r   Zsys_hostnamer   r   r   Ú_read_system_hostname+   s    zBSD._read_system_hostnamec             C   s
   t jdƒS )NÚhostname)r
   Zget_rc_config_value)r   ÚfilenameÚdefaultr   r   r   r   /   s    zBSD._read_hostnamec             C   s   t dƒ‚d S )Nz&Return list cmd to add member to group)ÚNotImplementedError)r   Úmember_nameZ
group_namer   r   r   Ú_get_add_member_to_group_cmd2   s    z BSD._get_add_member_to_group_cmdc             C   s   t jd|dd� d S )Nr   z/etc/rc.conf)Úfn)r
   Zset_rc_config_value)r   r   r   r   r   r   Ú_write_hostname5   s    zBSD._write_hostnamec             C   sà   t j|ƒrtjd|ƒ nJ| j|g }ytj|ƒ tjd|ƒ W n" tk
r`   t jtd|ƒ Y nX |sjg }xp|D ]h}t j	|ƒsŽtjd||ƒ qpy$tj| j
||ƒƒ tjd||ƒ W qp tk
rÖ   t jtd||ƒ Y qpX qpW d S )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   Zis_groupÚLOGZwarningÚgroup_add_cmd_prefixr   ÚinfoÚ	ExceptionZlogexcZis_userr#   )r   r   ÚmembersZgroup_add_cmdÚmemberr   r   r   Úcreate_group8   s.    



zBSD.create_groupc             C   sF   g ddœ}x6t jƒ jƒ D ]&\}}|d jd||ddigdœƒ qW |S )Né   )ÚconfigÚversionr.   ZphysicalÚtypeZdhcp)r0   r   Zmac_addressZsubnets)r   Zget_interfaces_by_macÚitemsÚappend)r   ZnconfZmacr   r   r   r   Úgenerate_fallback_configV   s    
zBSD.generate_fallback_config)Úpkglistc             C   s   | j ƒ  | jd|d� d S )NÚinstall)Úpkgs)Zupdate_package_sourcesÚpackage_command)r   r4   r   r   r   Úinstall_packagesc   s    zBSD.install_packagesc             C   s   t dƒ‚dS )z?Return environment vars used in *BSD package_command operationsz(BSD subclasses return a dict of env varsN)r!   )r   r   r   r   Ú_get_pkg_cmd_environg   s    zBSD._get_pkg_cmd_environc             C   s¾   |d krg }|dkr| j }nB|dkr,| j}n2|dkrF| js>d S | j}n|dkr^| jsXd S | j}|rxt|tƒrx|j|ƒ n|r�t|tƒr�|j|ƒ t	j
d|ƒ}|j|ƒ tj|| jƒ dd� d S )Nr5   ÚremoveÚupdateZupgradez%s-%sF)ÚenvZcapture)Úpkg_cmd_install_prefixÚpkg_cmd_remove_prefixÚpkg_cmd_update_prefixÚpkg_cmd_upgrade_prefixÚ
isinstanceÚstrr2   ÚlistÚextendr   Zexpand_package_listr   r9   )r   ZcommandÚargsr6   Úcmdr4   r   r   r   r7   k   s*    

zBSD.package_commandc             C   s   t j|| j|ƒd� d S )N)ÚtzZtz_file)r   Zset_etc_timezoneZ_find_tz_file)r   rG   r   r   r   Úset_timezone‡   s    zBSD.set_timezonec             C   s   t jdƒ d S )NzCannot set the locale.)r&   Údebug)r   ZlocaleZout_fnr   r   r   Úapply_localeŠ   s    zBSD.apply_locale)Úplist_inÚhashedc             C   s&   x |D ]\}}| j |||d� qW d S )N)rL   )Z
set_passwd)r   rK   rL   r   Zpasswordr   r   r   Úchpasswd�   s    zBSD.chpasswd)N)N)NN)N)%Ú__name__Ú
__module__Ú__qualname__r   Znetworking_clsr   Z
rc_conf_fnZdefault_ownerZshutdown_options_mapr'   r   rB   r=   r>   r?   r   r@   r   r   r   r   r   r   r#   r%   r,   r3   r	   r8   r9   r7   rH   rJ   rC   ÚboolrM   Ú__classcell__r   r   )r   r   r      s0   




r   )Zloggingr   Ztypingr   r   Zcloudinit.net.netops.bsd_netopsr   Znetopsr   Z	cloudinitr   r   r   r   Zcloudinit.distrosr	   r
   Zcloudinit.distros.networkingr   Z	getLoggerrN   r&   ZDistror   r   r   r   r   Ú<module>   s   
