
    <                         S r SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJ	r
  SSKJr  SS	K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g)zSCommands for interacting with the Cloud NetApp Files Active Directory API resource.    )absolute_import)division)unicode_literals)
list_pager)	constants)util)waiter)base)log)	resourcesc                       \ rS rSrSr\R                  R                  4S jr\	S 5       r
\	S 5       rS r                   SS jrS	 rSS
 jrS rS rS r                  SS jrS rSrg)ActiveDirectoriesClient   zQWrapper for working with Active Directories in the Cloud NetApp Files API Client.c                 l   U[         R                  R                  :X  a  [        5       U l        g U[         R                  R
                  :X  a  [        5       U l        g U[         R                  R                  :X  a  [        5       U l        g [        SR                  [        R                  U   5      5      e)Nz [{}] is not a valid API version.)r
   ReleaseTrackALPHAAlphaActiveDirectoriesAdapter_adapterBETABetaActiveDirectoriesAdapterGAActiveDirectoriesAdapter
ValueErrorformatnetapp_api_utilVERSION_MAP)selfrelease_tracks     >lib/googlecloudsdk/api_lib/netapp/active_directories/client.py__init__ ActiveDirectoriesClient.__init__!   s    ))///35dm	$++00	024dm	$++..	..0dm9@@

%
%m
46 7 7    c                 .    U R                   R                  $ N)r   clientr   s    r   r%   ActiveDirectoriesClient.client,   s    ==r"   c                 .    U R                   R                  $ r$   )r   messagesr&   s    r   r)    ActiveDirectoriesClient.messages0   s    ==!!!r"   c                     [         R                  " [         R                  " U R                  R                  5      USR                  UR                  5       5      5      $ )zWaits on the long-running operation until the done field is True.

Args:
  operation_ref: the operation reference.

Raises:
  waiter.OperationError: if the operation contains an error.

Returns:
  the 'response' field of the Operation.
zWaiting for [{0}] to finish)r	   WaitForCloudOperationPollerNoResourcesr%   projects_locations_operationsr   Name)r   operation_refs     r   WaitForOperation(ActiveDirectoriesClient.WaitForOperation4   sL     >>..KK55	78E%,,]-?-?-ABD Dr"   Nc                 z   U R                   R                  5       nUUl        UUl        UUl        UUl        UUl        UUl        UUl        UUl	        U	Ul
        U
(       a  U
O/ Ul        U(       a  UO/ Ul        U(       a  UO/ Ul        UUl        UUl        UUl        UUl        UUl        UUl        UUl        U$ )a  Parses the command line arguments for Create Active Directory into a config.

Args:
  name: the name of the Active Directory
  domain: the domain name of the Active Directory
  site: the site of the Active Directory
  dns: the DNS server IP addresses for the Active Directory domain
  net_bios_prefix: the NetBIOS prefix name of the server
  organizational_unit: The organizational unit within the AD the user
    belongs to
  aes_encryption: Bool, if enabled, AES encryption will be enabled for SMB
    communication
  username: Username of the AD domain admin
  password: Password of the AD domain admin
  backup_operators: The backup operators AD group users list
  security_operators: Security operators AD domain users list
  administrators: Built-in administrators AD group users list
  kdc_hostname: Name of the AD machine
  kdc_ip: KDC Server IP address for the AD machine
  nfs_users_with_ldap: Bool, if enabled, will allow access to local users
    and LDAP users. Disable, if only needed for LDAP users
  ldap_signing: Bool that specifies whether or not LDAP traffic needs to be
    signed
  encrypt_dc_connections: Bool, if enabled, traffic between SMB server and
    DC will be encrypted
  description: the description of the Active Directory
  labels: the labels for the Active Directory

Returns:
  The configuration that will be used as the request body for creating a
  Cloud NetApp Active Directory.
)r)   ActiveDirectorynamedomainsitednsnetBiosPrefixorganizationalUnitaesEncryptionusernamepasswordbackupOperatorssecurityOperatorsadministratorsnfsUsersWithLdapkdcHostnamekdcIpldapSigningencryptDcConnectionsdescriptionlabels)r   r5   r6   r7   r8   net_bios_prefixorganizational_unitaes_encryptionr<   r=   backup_operatorssecurity_operatorsr@   kdc_hostnamekdc_ipnfs_users_with_ldapldap_signingencrypt_dc_connectionsrF   rG   active_directorys                        r   ParseActiveDirectoryConfig2ActiveDirectoriesClient.ParseActiveDirectoryConfigE   s    l }}446 $ %4"*='%3" ( (," $ 1b & )b # )<%#/ ##/ ,B)#. $r"   c                 v   U R                   R                  UR                  5       R                  5       UR	                  5       US9nU R
                  R                  R                  U5      nU(       a  U$ [        R                  R                  UR                  [        R                  S9nU R                  U5      $ )z'Create a Cloud NetApp Active Directory.)parentactiveDirectoryIdactiveDirectory
collection)r)   5NetappProjectsLocationsActiveDirectoriesCreateRequestParentRelativeNamer/   r%   $projects_locations_activeDirectoriesCreater   REGISTRYParseRelativeNamer5   r   OPERATIONS_COLLECTIONr1   )r   activedirectory_refasync_configrequest	create_opr0   s          r   CreateActiveDirectory-ActiveDirectoriesClient.CreateActiveDirectory   s     	KK&--/<<>1668" 	L 	
  @@GGPI&&889#B#B 9 DM  //r"   c                 b   U R                   R                  US9nU R                  R                  R	                  U5      nUR
                   H(  n[        R                  " SR                  U5      5        M*     [        R                  " U R                  R                  U[        R                  USS9$ )aw  Make API calls to List active Cloud NetApp Active Directories.

Args:
  location_ref: The parsed location of the listed NetApp Active Directories.
  limit: The number of Cloud NetApp Active Directories
    to limit the results to. This limit is passed to
    the server and the server does the limiting.

Returns:
  Generator that yields the Cloud NetApp Active Directories.
)rV   zLocation {} may be unreachable.pageSize)fieldlimitbatch_size_attribute)r)   3NetappProjectsLocationsActiveDirectoriesListRequestr%   r^   Listunreachabler   warningr   r   YieldFromListr   ACTIVE_DIRECTORY_RESOURCE)r   location_refrm   rf   responselocations         r   ListActiveDirectories-ActiveDirectoriesClient.ListActiveDirectories   s     mmOO P G {{??DDWMH((	kk3::8DE )##8811') )r"   c                     U R                   R                  UR                  5       S9nU R                  R                  R                  U5      $ )z.Get Cloud NetApp Active Directory information.r5   )r)   2NetappProjectsLocationsActiveDirectoriesGetRequestr]   r%   r^   Get)r   rc   rf   s      r   GetActiveDirectory*ActiveDirectoriesClient.GetActiveDirectory   sC    mmNN --/ O 1G;;;;??HHr"   c                 r    U R                   R                  UR                  5       S9nU R                  X#5      $ )z2Deletes an existing Cloud NetApp Active Directory.r{   )r)   5NetappProjectsLocationsActiveDirectoriesDeleteRequestr]   _DeleteActiveDirectory)r   rc   rd   rf   s       r   DeleteActiveDirectory-ActiveDirectoriesClient.DeleteActiveDirectory   s@     	KK$113 	L 	
 
 &&v77r"   c                     U R                   R                  R                  U5      nU(       a  U$ [        R                  R                  UR                  [        R                  S9nU R                  U5      $ )NrY   )
r%   r^   Deleter   r`   ra   r5   r   rb   r1   )r   rd   rf   	delete_opr0   s        r   r   .ActiveDirectoriesClient._DeleteActiveDirectory   sa    @@GGPI&&889#B#B 9 DM  //r"   c                 X    U R                   R                  UUUUUUUUU	U
UUUUUUUUUS9$ )/Parses updates into an active directory config.)r6   r7   r8   rH   rI   rJ   r<   r=   rK   rL   r@   rM   rN   rO   rP   rQ   rF   rG   )r   !ParseUpdatedActiveDirectoryConfigr   activedirectory_configr6   r7   r8   rH   rI   rJ   r<   r=   rK   rL   r@   rM   rN   rO   rP   rQ   rF   rG   s                       r   r   9ActiveDirectoriesClient.ParseUpdatedActiveDirectoryConfig   sY    * ==::'/%)-%!/!5' ;  r"   c                     U R                   R                  UUU5      nU(       a  U$ [        R                  R	                  UR
                  [        R                  S9nU R                  U5      $ )ah  Updates an Active Directory.

Args:
  activedirectory_ref: the reference to the active directory.
  activedirectory_config: Active Directory config, the updated active
    directory.
  update_mask: str, a comma-separated list of updated fields.
  async_: bool, if False, wait for the operation to complete.

Returns:
  An Operation or Active Directory config.
rY   )	r   UpdateActiveDirectoryr   r`   ra   r5   r   rb   r1   )r   rc   r   update_maskrd   	update_opr0   s          r   r   -ActiveDirectoriesClient.UpdateActiveDirectory  si     334G4J4?AI &&889#B#B 9 DM  //r"   )r   )NNNNNNNNNNNNNNNNNNNr$   NNNNNNNNNNNNNNNNNN)__name__
__module____qualname____firstlineno____doc__r
   r   r   r    propertyr%   r)   r1   rS   rh   rx   r~   r   r   r   r   __static_attributes__ r"   r   r   r      s    Y#'#4#4#:#: 	7     " "D& 
!)Pd0 )2I80 04-1,08<<@7;15159=;?7;59/3<@59?C48/3'(T0r"   r   c                   R    \ rS rSrSrS r                  SS jrS rSrg)	r   i  z>Adapter for the Cloud NetApp Files API for Active Directories.c                     [         R                  R                  U l        [        R
                  " U R                  S9U l        [        R                  " U R                  S9U l        g N)r   )	r
   r   r   r   r   GetClientInstancer%   GetMessagesModuler)   r&   s    r   r    !ActiveDirectoriesAdapter.__init__  sN    **--D!33((DK $55((DMr"   Nc                 R   Ub  X!l         Ub  X1l        Ub  XAl        Ub  XQl        Ub  Xal        Ub  Xql        Ub  Xl        U	b  Xl        U
b  Xl        Ub  Xl	        Ub  Xl
        Ub  Xl        Ub  Xl        Ub  Xl        Ub  UUl        Ub  UUl        Ub  UUl        Ub  UUl        U$ )r   )r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rB   rC   rA   rD   rE   rF   rG   r   s                       r   r   :ActiveDirectoriesAdapter.ParseUpdatedActiveDirectoryConfig&  s    . &,#$(!
#& "-<*&2E/!-;*(0%(0%#/?,%1C.!.<++7(%+"&0C-+7()4J1+6(&,#!!r"   c                     U R                   R                  UUR                  5       US9nU R                  R                  R                  U5      nU$ )z;Send a Patch request for the Cloud NetApp Active Directory.)rX   r5   
updateMask)r)   4NetappProjectsLocationsActiveDirectoriesPatchRequestr]   r%   r^   Patch)r   rc   r   r   update_requestr   s         r   r   .ActiveDirectoriesAdapter.UpdateActiveDirectoryc  sX     	JJ2$113" 	K 	$ 
 @@FFIr"   r%   r)   r   r   )	r   r   r   r   r   r    r   r   r   r   r"   r   r   r     sM    F 
!);"z
r"   r   c                   ,   ^  \ rS rSrSrU 4S jrSrU =r$ )r   ip  zCAdapter for the Beta Cloud NetApp Files API for Active Directories.c                    > [         [        U ]  5         [        R                  R
                  U l        [        R                  " U R                  S9U l	        [        R                  " U R                  S9U l        g r   )superr   r    r
   r   r   r   r   r   r%   r   r)   r   	__class__s    r   r    %BetaActiveDirectoriesAdapter.__init__s  s]    	
&68**//D!33((DK $55((DMr"   r   r   r   r   r   r   r    r   __classcell__r   s   @r   r   r   p  s    K r"   r   c                   ,   ^  \ rS rSrSrU 4S jrSrU =r$ )r   i~  zDAdapter for the Alpha Cloud NetApp Files API for Active Directories.c                    > [         [        U ]  5         [        R                  R
                  U l        [        R                  " U R                  S9U l	        [        R                  " U R                  S9U l        g r   )r   r   r    r
   r   r   r   r   r   r%   r   r)   r   s    r   r    &AlphaActiveDirectoriesAdapter.__init__  s]    	
'79**00D!33((DK $55((DMr"   r   r   r   s   @r   r   r   ~  s    L r"   r   N)r   
__future__r   r   r   apitools.base.pyr   googlecloudsdk.api_lib.netappr   r   r   googlecloudsdk.api_lib.utilr	   googlecloudsdk.callioper
   googlecloudsdk.corer   r   objectr   r   r   r   r   r"   r   <module>r      sa    Z &  ' ' 3 A . ( # )y0f y0xSv Sl#; $@ r"   