
    Idv                         d dl Z d dlmZ d dlmZ d dlmZmZ d dl	m
Z
mZmZ d dlmZ d dlmZ d dlmZ  G d d	e
      Zy)
    N)system_session)DS_DOMAIN_FUNCTION_2008DS_DOMAIN_FUNCTION_2008_R2)CommandCommandErrorOption)get_fsmo_roleowner)SamDB)functional_levelc                       e Zd ZdZdZej                  ej                  ej                  dZ	 e
dddedd	       e
d
ddd       e
dddd       e
dddg ddd       e
ddd       e
ddd      gZd Zy) cmd_domain_functional_prepz#Domain functional level preparationz%prog [options])	sambaoptsversionoptscredoptsz-Hz--URLz%LDB URL for database or target serverURLH)helptypemetavardestz-qz--quietzBe quiet
store_true)r   actionz-vz	--verbosez
Be verbosez--function-levelchoiceFUNCTION_LEVEL)2008_R220122012_R22016z?The functional level to prepare for. Default is (Windows) 2016.r   )r   r   choicesr   defaultz--forest-prepzJRun the forest prep (by default, both the domain and forest prep are run).)r   r   z--domain-prepzJRun the domain prep (by default, both the domain and forest prep are run).c                    d}|j                  d      }|j                  d      }|j                         }|j                  |      }|j                  d      }|j                  d      }	 t        j                  |      }	|j                  d      }
|j                  d	      }t        |t               ||
      }|j                  d      |j                  dd       t        d       d}|
|d}
d}t        j                  ||j                               }|
r4t        |t        |j!                               d      }||k7  rt        d      |r2|j#                         }d|z   }t        ||d      }||k7  rt        d      d }|
r^|\|j%                          	 ddlm}  ||d      }|j+                  g d       |j-                  |	t.        d       |j1                          |rK|I|j%                          	 ddlm}  ||d      }|j-                  |	t:        d       |j1                          |r|j                  dd       |t        d|z        y # t
        $ r t        d| d      w xY w# t2        $ r*}t        d|z         |j5                          |}Y d }~d }~ww xY w# t2        $ r*}t        d|z         |j5                          |}Y d }~d }~ww xY w)NFr   r   r   function_level'z1' is not known to Samba as an AD functional levelforest_prepdomain_prep)urlsession_infocredentialslpzdsdb:schema update allowedyesz;Temporarily overriding 'dsdb:schema update allowed' settingTschemaz%This server is not the schema master.zCN=Infrastructure,infrastructurez-This server is not the infrastructure master.r   )ForestUpdate)fix)   6   O   P   Q   R   S   )update_revisionzException: %s)DomainUpdatenoz%Failed to perform functional prep: %r)getget_loadparmget_credentialsr   string_to_levelKeyErrorr   r
   r   setprintldbDnget_dsServiceNamer	   strget_schema_basedn	domain_dntransaction_startsamba.forest_updater-   check_updates_iteratorcheck_updates_functional_levelr   transaction_commit	Exceptiontransaction_cancelsamba.domain_updater7   r   )selfkwargsupdates_allowed_overriddenr   r   r)   credsr   r"   target_levelr$   r%   samdbown_dnmasterrE   infrastructure_dnexception_encounteredr-   forester7   domains                          E/usr/lib/python3/dist-packages/samba/netcmd/domain/functional_prep.pyrunzcmd_domain_functional_prep.run>   s   %*"JJ{+	::j)##%((,JJsO$45	f+;;NKL jj/jj/!.*:RTU 66./7FF/7OP)-&;#6KKu6689's53J3J3L/M(02F"#JKK)I 4y @'/@(8:F"#RSS $08##%*<%e6--.JK55l6PFJ 6 L ((* 08##%*<%e655l6MFJ 6 L ((* &FF/6 ,F4 5 6 6 -O  	f>"22cdee	f^  *o)*((*()%*   *o)*((*()%*s=   )I AI- 48J# I*-	J 6 JJ #	K, KKN)__name__
__module____qualname____doc__synopsisoptionsSambaOptionsVersionOptionsCredentialsOptionstakes_optiongroupsr   rC   takes_optionsr\        r[   r   r   $   s    - H ))--.. 	tW#JQT3	(tYZEt[|LI!:J=U	 	|`	b|`	bMS6ri   r   )r@   samba.getoptgetoptrb   
samba.authr   
samba.dsdbr   r   samba.netcmdr   r   r   samba.netcmd.fsmor	   samba.samdbr
   sambar   r   rh   ri   r[   <module>rr      s0   2   % J 6 6 0  "m6 m6ri   