o
    i                     @   sD   d dl Z d dlmZmZ d dlmZ e eZG dd dej	Z	dS )    N)netsubp)debianc                       sR   e Zd Zdedededef fddZdd	d
Zdef fddZdd Z  Z	S )Distrolayoutmodelvariantoptionsc                    sZ   t  |||| tg d tg d | dd tdr+tg d d S d S )N)/usr/bin/raspi-confignonintupdate_labwc_keyboard)r
   r   update_squeekboardrestartr   zkeyboard-setupudevadm)r   triggerz--subsystem-match=inputz--action=change)super
set_keymapr   manage_servicewhich)selfr   r   r   r	   	__class__ C/usr/lib/python3/dist-packages/cloudinit/distros/raspberry_pi_os.pyr      s   
zDistro.set_keymapNLANGc              
   C   sr   zt  ddd| g W d S  t jy8   |ds/td| t  ddd| dg Y d S td| Y d S w )Nr
   r   do_change_localez.UTF-8zTrying to set locale %s.UTF-8zFailed to set locale %s)r   ProcessExecutionErrorendswithLOGinfoerror)r   localeout_fnkeynamer   r   r   apply_locale.   s(   


	zDistro.apply_localereturnc              
      sn   t  j|fi |}|s|S ztjg dd|id W dS  tjy6 } ztd| W Y d}~dS d}~ww )z
        Add a user to the system using standard GNU tools

        This should be overridden on distros where useradd is not desirable or
        not available.

        Returns False if user already exists, otherwise True.
        )z/usr/bin/rename-userz-fz-s	SUDO_USER)
update_envzFailed to setup user: %sNFT)r   add_userr   r   r   r    )r   namekwargsresulter   r   r   r(   F   s   	zDistro.add_userc                 C   s:   d}| j |d}td|| |st S td d S )Ndisable_fallback_netcfgTz%s value is: %sz}Skipping generation of fallback network config as per configuration. Rely on Raspberry Pi OS's default network configuration.)_cfggetr   debugr   generate_fallback_configr   )r   keyr-   r   r   r   r1   d   s   zDistro.generate_fallback_config)Nr   )
__name__
__module____qualname__strr   r$   boolr(   r1   __classcell__r   r   r   r   r      s
    
r   )
logging	cloudinitr   r   cloudinit.distrosr   	getLoggerr3   r   r   r   r   r   r   <module>   s
   
