
    g{                     >    S SK Jr  S SKJr  SSKJr   " S S\5      rg)    )Dn)DS_GUID_COMPUTERS_CONTAINER   )Userc                   \   ^  \ rS rSrSrU 4S jr\S 5       r\S 5       r\	S 5       r
SrU =r$ )Computer   zA Computer is a type of User.c                 x  > UR                  SUR                  SS5      5      nUR                  S5      nU(       a  UR                  S5      (       d  US-  nU(       a&  U(       d  UR                  S5      (       a  UnO%US-   nOU(       a  U(       d  UR                  S5      nX!S'   X1S'   [        TU ]  " S0 UD6  g)a  Computer constructor automatically adds "$" to account_name.

The various ways a Computer can be constructed:

>>> Computer(name="pc")
>>> Computer(account_name="pc$")
>>> Computer(cn="pc")
>>> Computer(account_name="pc$", name="pc")

In each case the constructor does its best to ensure the
account name ends with a "$" and the name doesn't.

Also applies to GroupManagedServiceAccount subclass.namecnNaccount_name$ )getpopendswithrstripsuper__init__)selfkwargsr   r   	__class__s       >/usr/lib/python3/dist-packages/samba/domain/models/computer.pyr   Computer.__init__!   s     zz&&**T4"89zz.1  5 5c : :CL }}S!!##cz $&&s+Dv!-~"6"    c                 J    U R                  U R                  5       [        5      $ )z_Return base Dn for Computers.

:param samdb: SamDB connection
:return: Dn to use for searching
)get_wellknown_dnget_default_basednr   )samdbs    r   get_base_dnComputer.get_base_dnG   s'     %%e&>&>&@&AC 	Cr   c                      g)Ncomputerr   r   r   r   get_object_classComputer.get_object_classQ   s    r   c                      S[        X5      0nU R                  " U40 UD6$ ! [         a&    UR                  S5      (       a  SU0n N9SUS-   0n NBf = f)zHelper function to find a computer, first by Dn then sAMAccountName.

If the Dn can't be parsed use sAMAccountName, automatically add the $.
dnr   r   )r   
ValueErrorr   r   )clsr   r   querys       r   findComputer.findU   sc    	52e?+E wwu&&&  	5}}S!!'.'4		5s   " $AAAr   )__name__
__module____qualname____firstlineno____doc__r   staticmethodr    r$   classmethodr+   __static_attributes____classcell__)r   s   @r   r   r      sJ    '$#L C C   ' 'r   r   N)ldbr   
samba.dsdbr   userr   r   r   r   r   <module>r9      s   .  2 E't E'r   