�
܍~c� � � � d dl Z d dlZd dlZd dlZd dlmZ d dlmZmZ ej e
� � Z G d� dej j
j � � Z G d� de� � ZdS )� N)�log)�subp�utilc �f � � e Zd ZdZdZdgZ� fd�Zd� Zd� Zdd�Z d � Z
d
� Zd� Zdd
�Z
d� Zd� Z� xZS )�NetBSDzS
Distro subclass for NetBSD.
(N.B. OpenBSD inherits from this class.)
z*/usr/pkg/etc/sudoers.d/90-cloud-init-users�groupaddc � �� t � � � |||� � t j � d� � r&g d�| _ g d�| _ g d�| _ g d�| _ d S ddg| _ dg| _ d S ) Nz/usr/pkg/bin/pkgin)�pkgin�-y�install)r
r �remove)r
r �update)r
r zfull-upgrade�pkg_addz-U�
pkg_delete) �super�__init__�os�path�exists�pkg_cmd_install_prefix�pkg_cmd_remove_prefix�pkg_cmd_update_prefix�pkg_cmd_upgrade_prefix)�self�name�cfg�paths� __class__s ��:/usr/lib/python3/dist-packages/cloudinit/distros/netbsd.pyr zNetBSD.__init__ s� �� �
������s�E�*�*�*�
�7�>�>�.�/�/� 8�*D�*D�*D�D�'�)B�)B�)B�D�&�)B�)B�)B�D�&�*I�*I�*I�D�'�'�'�+4�d�*;�D�'�*6��D�&�&�&� c � � dd||gS )N�usermod�-G� )r �member_name�
group_names r �_get_add_member_to_group_cmdz#NetBSD._get_add_member_to_group_cmd% s � ��4��[�9�9r c � � t j |� � rt � d|� � dS dg}dg}dddddd �}d
ddd
�}|� � � D ]z\ }}||v r5|r3t |t � � r|� || |g� � �>||v r8|r6|� || � � |� || � � �{d|vsd|vr|dgz
}|dgz
}||gz
}||gz
}t � d|� � t j ||�� � n*# t $ r t j t d|� � � w xY w|� dd � � } | �| �
|| d�� � d S d S )Nz!User %s already exists, skipping.F�useraddz-dz-cz-gr# z-s)�homedir�gecos�
primary_group�groups�shellz--no-user-groupz--systemz
--no-log-init)�
no_user_group�system�no_log_init�no_create_homer0 z-mzAdding user %s)� logstringzFailed to create user %s�passwdT)�hashed)r �is_user�LOG�info�items�
isinstance�str�extend�appendr � Exception�logexc�get�
set_passwd)
r r �kwargs�adduser_cmd�log_adduser_cmd�adduser_opts�
adduser_flags�key�val�
passwd_vals
r �add_userzNetBSD.add_user( s� � ��<���� ��H�H�8�$�?�?�?��5� �k��$�+�� ��!���
�
�� /� �*�
�
�
� ����� ;� ;�H�C���l�"�"�s�"�z�#�s�/C�/C�"��"�"�L��$5�s�#;�<�<�<�<��
�%�%�#�%��"�"�=��#5�6�6�6��&�&�}�S�'9�:�:�:���6�)�)�X�V�-C�-C��D�6�!�K���v�%�O���v����D�6�!�� ���!�4�(�(�(� ��I�k�_�=�=�=�=�=��� � � ��K��7��>�>�>�� ����
�Z�Z��$�/�/�
��!��O�O�D�*�T�O�:�:�:�:�:� "�!s �D( �('EFc �( � |r|}n3t j }t j |t j |� � � � } t j dd||g� � n*# t $ r t j t d|� � � w xY w| � |� � d S )Nr" |