
    g79                         S SK Jr  S SKrS SKJr  S SKJrJrJ	r	J
r
  S SKJr  S SKJr   " S S\5      r " S S	\5      r " S
 S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\
5      rg)    N)system_session)CommandCommandErrorOptionSuperCommand)SamDB)
attrgetterc            	           \ rS rSrSrSr\" SSS\SSS	9/rS
S/r	\
R                  \
R                  \
R                  S.r  SS jrSrg)
cmd_rename!   a  Rename an organizational unit.

The name of the organizational units can be specified as a full DN
or without the domainDN component.

Examples:
samba-tool ou rename 'OU=OrgUnit,DC=samdom,DC=example,DC=com' \
    'OU=NewNameOfOrgUnit,DC=samdom,DC=example,DC=com'
samba-tool ou rename 'OU=OrgUnit' 'OU=NewNameOfOrgUnit'

The examples show how an administrator would rename an ou 'OrgUnit'
to 'NewNameOfOrgUnit'. The new DN would be
'OU=NewNameOfOrgUnit,DC=samdom,DC=example,DC=com'
z'%prog <old_ou_dn> <new_ou_dn> [options]-H--URL%LDB URL for database or target serverURLHhelptypemetavardest	old_ou_dn	new_ou_dn	sambaoptscredoptsversionoptsNc                    UR                  5       nUR                  USS9n[        U[        5       XS9n	 U	R	                  U5      n
 U	R	                  U5      n U	R                  U
S[        R                  / S9n[        U5      S	:X  a  U R                  R                  S
U-  5        g U	R                  X5        U R                  R                  SU
< SU< S35        g ! [
         a  n[        SU< SU< 35      eS nAff = f! [
         a  n[        SU< SU< 35      eS nAff = f! [
         a  n[        SU
-  U5      eS nAff = f)NTfallback_machineurlsession_infocredentialslpInvalid old_ou_dn "": zInvalid new_ou_dn " (objectclass=organizationalUnit)base
expressionscopeattrsr   Unable to find ou "%s"
zFailed to rename ou "%s"zRenamed ou "z" to ""
)get_loadparmget_credentialsr   r   normalize_dn_in_domain	Exceptionr   searchldb
SCOPE_BASElenoutfwriterename)selfr   r   r   r   r   r   r$   credssamdbfull_old_ou_dnefull_new_ou_dnress                 1/usr/lib/python3/dist-packages/samba/netcmd/ou.pyruncmd_rename.run?   sQ   ##%((d(C!.*:"'0	/"99)DN	/"99)DN

	O,,N*L%(^^2  ?C 3x1}		 :Y FGLL8 			~7EG 	H)  	/ )1 . / /	/
  	/ )1 . / /	/  	O9NJANN	OsN   C D AD' 'D' 
C?'C::C?
D$DD$'
E1E  E NNNN__name__
__module____qualname____firstlineno____doc__synopsisr   strtakes_options
takes_argsoptionsSambaOptionsCredentialsOptionsVersionOptionstakes_optiongroupsrB   __static_attributes__rD       rA   r   r   !   sl     9H 	tW#JS	2M
 {+J))..-- BF $HrV   r   c            	           \ rS rSrSrSr\" SSS\SSS	9/rS
S/r	\
R                  \
R                  \
R                  S.r  SS jrSrg)cmd_move`   a=  Move an organizational unit.

The name of the organizational units can be specified as a full DN
or without the domainDN component.

Examples:
samba-tool ou move 'OU=OrgUnit,DC=samdom,DC=example,DC=com' \
    'OU=NewParentOfOrgUnit,DC=samdom,DC=example,DC=com'
samba-tool ou rename 'OU=OrgUnit' 'OU=NewParentOfOrgUnit'

The examples show how an administrator would move an ou 'OrgUnit'
into the ou 'NewParentOfOrgUnit'. The ou 'OrgUnit' would become
a child of the 'NewParentOfOrgUnit' ou. The new DN would be
'OU=OrgUnit,OU=NewParentOfOrgUnit,DC=samdom,DC=example,DC=com'
z+%prog <old_ou_dn> <new_parent_dn> [options]r   r   r   r   r   r   r   new_parent_dnr   Nc                 ,   UR                  5       nUR                  USS9n[        U[        5       XS9n	 U	R	                  U5      n
 U	R	                  U5      n[        R                  " U	[        U
5      5      nUR                  [        U
5      S-
  5        UR                  U5         U	R                  U
S[        R                  / S	9n[        U5      S
:X  a  U R                  R!                  SU
-  5        g U	R#                  X5        U R                  R!                  SU
< SU< S35        g ! [
         a  n[        SU< SU< 35      eS nAff = f! [
         a  n[        SU< SU< 35      eS nAff = f! [
         a  n[        SU
-  U5      eS nAff = f)NTr   r    r%   r&   zInvalid new_parent_dn "   r'   r(   r   r-   zFailed to move ou "%s"z
Moved ou "z" into "r.   )r/   r0   r   r   r1   r2   r   r4   DnrM   remove_base_componentsr6   add_baser3   r5   r7   r8   r9   )r:   r   rZ   r   r   r   r   r$   r;   r<   r=   r>   full_new_parent_dnr?   r@   s                  rA   rB   cmd_move.run   s   ##%((d(C!.*:"'0	/"99)DN	3!&!=!=m!L
 s>':;--c..AA.EF 23		M,,N*L%(^^2  ?C 3x1}		 :^ KLLL8 			');= 	>/  	/ )1 . / /	/
  	3 -q 2 3 3	3   	M7.H!LL	MsN   D+ E 'AE5 5E5 +
E5EE
E2E--E25
F?FFrD   rE   rF   rD   rV   rA   rX   rX   `   sk      =H 	tW#JS	2M
 /J))..-- FJ $!>rV   rX   c            	           \ rS rSrSrSr\" SSS\SSS	9\" S
S\SS9/rS/r	\
R                  \
R                  \
R                  S.r  SS jrSrg)cmd_add   a`  Add a new organizational unit.

The name of the new ou can be specified as a full DN or without the
domainDN component.

Examples:
samba-tool ou add 'OU=OrgUnit'
samba-tool ou add 'OU=SubOU,OU=OrgUnit,DC=samdom,DC=example,DC=com'

The examples show how an administrator would add a new ou 'OrgUnit'
and a new ou 'SubOU' as a child of the ou 'OrgUnit'.
%prog <ou_dn> [options]r   r   r   r   r   r   z--descriptionzOU's descriptiondescription)r   r   r   ou_dnr   Nc                 v   UR                  5       nUR                  USS9n[        U[        5       XS9n	 U	R	                  U5      n
 U	R                  XS9  U R                  R                  SU
-  5        g ! [
         a  n[        SU< SU< 35      eS nAff = f! [
         a  n[        SU
-  U5      eS nAff = f)	NTr   r    Invalid ou_dn "r&   )rf   zFailed to add ou "%s"zAdded ou "%s"
)
r/   r0   r   r   r1   r2   r   	create_our7   r8   )r:   rg   r   r   r   r   rf   r$   r;   r<   
full_ou_dnr>   s               rA   rB   cmd_add.run   s    ##%((d(C!.*:"'0	F55e<J	HOOJO@ 			)J67  	F5!DEE	F
  	H6CQGG	Hs/   A5 B 5
B?BB
B8$B33B8rD   )NNNNNrF   rD   rV   rA   rc   rc      sz     )H 	tW#JS	2%7m	-M J))..-- EI $8rV   rc   c                       \ rS rSrSrSr\" SSS\SSS	9\" S
SSSSS9\" SSSSSSS9/rS/r	\
R                  \
R                  \
R                  S.r  SS jrSrg)cmd_listobjects   aa  List all objects in an organizational unit.

The name of the organizational unit can be specified as a full DN
or without the domainDN component.

Examples:
samba-tool ou listobjects 'OU=OrgUnit,DC=samdom,DC=example,DC=com'
samba-tool ou listobjects 'OU=OrgUnit'

The examples show how an administrator would list all child objects
of the ou 'OrgUnit'.
re   r   r   r   r   r   r   	--full-dnfull_dnF
store_true"Display DNs including the base DN.r   defaultactionr   z-rz--recursive	recursivezList objects recursively.rg   r   Nc                 8   UR                  5       nUR                  USS9n	[        U[        5       XS9n
[        R
                  " XR                  5       5      n U
R                  U5      nSn[        R                  nU(       a  Sn[        R                  n U
R                  USU/ S	9n[        U5      U::  a  U R                  R                  S
U-  5        g [!        U[#        S5      S9 Hh  nUR$                  U:X  a  M  U(       d$  UR$                  R'                  [        U5      5        U R                  R                  SUR$                  -  5        Mj     g ! [         a  n[        SU< SU< 35      eS nAff = f! [         a  n[        SU-  U5      eS nAff = f)NTr   r    ri   r&   r   r\   z(objectclass=*)r(   zou "%s" is empty
dnkey%s
z"Failed to list contents of ou "%s")r/   r0   r   r   r4   r]   	domain_dnr1   r2   r   SCOPE_ONELEVELSCOPE_SUBTREEr3   r6   r7   r8   sortedr	   ry   r^   )r:   rg   r   r   r   r   rq   rw   r$   r;   r<   r}   rk   r>   minchildrenr+   childrenchilds                     rA   rB   cmd_listobjects.run   sz   ##%((d(C!.*:"'0FF5//"34		F55e<J ""K%%E	.||/@*/r $ ;H 8}+		 4u <=j.>?88z)HH33C	NC		 12 @#  	F5!DEE	F0  	.C) *+,. .	.s7   E ?E; A?E; 
E8 E33E8;
FFFrD   )NNNNFFrF   rD   rV   rA   rn   rn      s     )H 	tW#JS	2{E,8	:t]e")D	FM J))..-- EI-2$.rV   rn   c            
           \ rS rSrSrSr\" SSS\SSS	9\" S
SS\S9\" SSSSSS9/r\	R                  \	R                  \	R                  S.r      SS jrSrg)cmd_listi  zList all organizational units.

Example:
samba-tool ou listobjects

The example shows how an administrator would list all organizational
units.
z%prog [options]r   r   r   r   r   r   z-bz	--base-dnzSpecify base DN to use.)r   r   rp   rq   Frr   rs   rt   r   Nc                 v   UR                  5       nUR                  USS9n[        U[        5       XS9n	[        R
                  " XR                  5       5      n
U(       a  U	R                  U5      n
U	R                  U
[        R                  S/ S9n[        U5      S:X  a  g [        U[        S5      S9 H  nU(       dH  [        R
                  " XR                  5       5      nUR                  R                  [        U5      5        U R                  R!                  S	[#        UR                  5      -  5        M     g )
NTr   r    z (objectClass=organizationalUnit))r+   r*   r,   r   ry   rz   r|   )r/   r0   r   r   r4   r]   r}   r1   r3   r   r6   r   r	   ry   r^   r7   r8   rM   )r:   r   r   r   r   base_dnrq   r$   r;   r<   	search_dnr@   msgr}   s                 rA   rB   cmd_list.run7  s     ##%((d(C!.*:"'0 FF5//"34	44W=Ill9!$!2!2&H!#  % HM#:d#34CFF5//*;<	--c)n=IIOOFS[01	 5rV   rD   )NNNNNF)rG   rH   rI   rJ   rK   rL   r   rM   rN   rP   rQ   rR   rS   rT   rB   rU   rD   rV   rA   r   r     s     !H 	tW#JS	2t[-	 	{E,8	:M ))..-- 2rV   r   c            	           \ rS rSrSrSr\" SSS\SSS	9\" S
SSSSS9/rS/r	\
R                  \
R                  \
R                  S.r  SS jrSrg)
cmd_deleteiU  a7  Delete an organizational unit.

The name of the organizational unit can be specified as a full DN
or without the domainDN component.

Examples:
samba-tool ou delete 'OU=OrgUnit,DC=samdom,DC=example,DC=com'
samba-tool ou delete 'OU=OrgUnit'

The examples show how an administrator would delete the ou 'OrgUnit'.
re   r   r   r   r   r   r   z--force-subtree-deleteforce_subtree_deleteFrr   z7Delete organizational unit and all children recursivelyrt   rg   r   Nc                 .   UR                  5       nUR                  USS9n[        U[        5       XS9n	 U	R	                  U5      n
/ nU(       a  S/n U	R                  U
S[        R                  / S9n[        U5      S	:X  a  U R                  R                  S
U-  5        g U	R                  X5        U R                  R                  SU
-  5        g ! [
         a  n[        SU< SU< 35      eS nAff = f! [
         a  n[        SU
-  U5      eS nAff = f)NTr   r    ri   r&   ztree_delete:1r'   r(   r   r-   zFailed to delete ou "%s"zDeleted ou "%s"
)r/   r0   r   r   r1   r2   r   r3   r4   r5   r6   r7   r8   delete)r:   rg   r   r   r   r   r   r$   r;   r<   rk   r>   controlsr@   s                 rA   rB   cmd_delete.runs  s   ##%((d(C!.*:"'0	F55e<J '(H		K,,J*L%(^^2  ?C 3x1}		 :U BCLL. 			+j89%  	F5!DEE	F  	K9JFJJ	Ks6   C AC6 !C6 
C3C..C36
D DDrD   )NNNNFrF   rD   rV   rA   r   r   U  s    
 )H 	tW#JS	2'.D\M	OM J))..-- EI).:rV   r   c                       \ rS rSrSr0 r\" 5       \S'   \" 5       \S'   \" 5       \S'   \" 5       \S'   \	" 5       \S'   \
" 5       \S'   \" 5       \S	'   S
rg)cmd_oui  z%Organizational Units (OU) management.addcreater   mover9   listlistobjectsrD   N)rG   rH   rI   rJ   rK   subcommandsrc   r   rX   r   r   rn   rU   rD   rV   rA   r   r     s_    /K K#IK&LK"*K&LK"*K!0!2KrV   r   )samba.getoptgetoptrP   r4   
samba.authr   samba.netcmdr   r   r   r   samba.samdbr   operatorr	   r   rX   rc   rn   r   r   r   rD   rV   rA   <module>r      s   &  
 %   <H <H~@>w @>F/8g /8dC.g C.L72w 72t9: 9:x
3\ 
3rV   