
    +                         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g)zPCommands for interacting with the Cloud NetApp Files Backup Vaults 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 r       SS	 jrSS
 jrS rS rS rS r   SS jrS rSrg)BackupVaultsClient   zLWrapper for working with Backup Vaults in the Cloud NetApp Files API Client.c                    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BETABetaBackupVaultsAdapter_adapterGABackupVaultsAdapter
ValueErrorformatnetapp_utilVERSION_MAP)selfrelease_tracks     9lib/googlecloudsdk/api_lib/netapp/backup_vaults/client.py__init__BackupVaultsClient.__init__!   sg    ))...-/dm	$++..	.)+dm9@@

!
!-
02 3 3    c                 .    U R                   R                  $ N)r   clientr   s    r   r#   BackupVaultsClient.client*   s    ==r    c                 .    U R                   R                  $ r"   )r   messagesr$   s    r   r'   BackupVaultsClient.messages.   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#BackupVaultsClient.WaitForOperation2   sL     >>..KK55	
 	%,,]-?-?-A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 Backup Vault.)parentbackupVaultIdbackupVault
collection)r'   0NetappProjectsLocationsBackupVaultsCreateRequestParentRelativeNamer-   r#   projects_locations_backupVaultsCreater   REGISTRYParseRelativeNamenamer   OPERATIONS_COLLECTIONr/   )r   backupvault_refasync_backup_vaultrequest	create_opr.   s          r   CreateBackupVault$BackupVaultsClient.CreateBackupVaultF   s    mmLL%%'446%**,  M G
 ;;BB7KI&&889#B#B 9 M   //r    Nc                     U R                   R                  5       nXl        Ub  X(l        Ub  X8l        XHl        XXl        Ub  U R                  U5      Ul        Ub  Xxl	        U$ )a%  Parses the command line arguments for Create BackupVault into a message.

Args:
  name: The name of the Backup Vault.
  backup_vault_type: The type of the Backup Vault.
  backup_region: The location of the Backup Vault.
  description: The description of the Backup Vault.
  labels: The parsed labels value.
  backup_retention_policy: The backup retention policy of the Backup Vault.
  kms_config: The KMS Config resource name for CMEK.

Returns:
  The configuration that will be used ass the request body for creating a
  Cloud NetApp Backup Vault.
)
r'   BackupVaultr>   backupVaultTypebackupRegiondescriptionlabelsParseBackupRetentionPolicybackupRetentionPolicy	kmsConfig)	r   r>   backup_vault_typebackup_regionrK   rL   backup_retention_policy
kms_configrB   s	            r   ParseBackupVault#BackupVaultsClient.ParseBackupVaultU   sp    2 ==,,.L$%6" "/* *+/+J+J
!,l( )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$ )aX  Make API calls to List Cloud NetApp Backup Vaults.

Args:
  location_ref: The parsed location of the listed NetApp Backup Vaults.
  limit: The number of Cloud NetApp Backup Vaults 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 Backup Vaults.
)r2   zLocation {} may be unreachable.pageSize)fieldlimitbatch_size_attribute)r'   .NetappProjectsLocationsBackupVaultsListRequestr#   r:   Listunreachabler   warningr   r   YieldFromListr   BACKUP_VAULT_RESOURCE)r   location_refrY   rC   responselocations         r   ListBackupVaults#BackupVaultsClient.ListBackupVaults~   s     mmJJ K G {{::??HH((	kk3::8DE )##33--') )r    c                     U R                   R                  UR                  5       S9nU R                  R                  R                  U5      $ )z*Get Cloud NetApp Backup Vault information.r>   )r'   -NetappProjectsLocationsBackupVaultsGetRequestr9   r#   r:   Get)r   r@   rC   s      r   GetBackupVault!BackupVaultsClient.GetBackupVault   sC    mmII))+ J -G;;66::7CCr    c                 r    U R                   R                  UR                  5       S9nU R                  X#5      $ )z.Deletes an existing Cloud NetApp Backup Vault.rg   )r'   0NetappProjectsLocationsBackupVaultsDeleteRequestr9   _DeleteBackupVault)r   r@   rA   rC   s       r   DeleteBackupVault$BackupVaultsClient.DeleteBackupVault   s@     	FF --/ 	G 	
 
 ""633r    c                     U R                   R                  R                  U5      nU(       a  U$ [        R                  R                  UR                  [        R                  S9nU R                  U5      $ )Nr5   )
r#   r:   Deleter   r<   r=   r>   r   r?   r/   )r   rA   rC   	delete_opr.   s        r   rn   %BackupVaultsClient._DeleteBackupVault   sb    ;;BB7KI&&889#B#B 9 M   //r    c                     U R                   R                  XU5      nU(       a  U$ [        R                  R	                  UR
                  [        R                  S9nU R                  U5      $ )a8  Updates a Backup Vault.

Args:
  backupvault_ref: The reference to the backup vault.
  backup_vault: Backup Vault message, the updated backup vault.
  update_mask: A comma-separated list of updated fields.
  async_: If False, wait for the operation to complete.

Returns:
  An Operation or Backup Vault message.
r5   )	r   UpdateBackupVaultr   r<   r=   r>   r   r?   r/   )r   r@   rB   update_maskrA   	update_opr.   s          r   rv   $BackupVaultsClient.UpdateBackupVault   se     //{I &&889#B#B 9 M   //r    c                 :    U R                   R                  UUUUS9$ )z!Parses updates into a kms config.)rB   rK   rL   rR   )r   ParseUpdatedBackupVaultr   rB   rK   rL   rR   s        r   r{   *BackupVaultsClient.ParseUpdatedBackupVault   s,     ==00! 7	 1  r    c                    U R                   R                  5       nUR                  S5      Ul        UR                  S5      Ul        UR                  S5      Ul        UR                  S5      Ul        UR                  S5      Ul        U$ zIParses the command line arguments for Backup Vault Policy into a message.z&backup-minimum-enforced-retention-dayszdaily-backup-immutablezweekly-backup-immutablezmonthly-backup-immutablezmanual-backup-immutabler'   BackupRetentionPolicyget"backupMinimumEnforcedRetentionDaysdailyBackupImmutableweeklyBackupImmutablemonthlyBackupImmutablemanualBackupImmutabler   rR   backup_retention_policy_messages      r   rM   -BackupVaultsClient.ParseBackupRetentionPolicy       &*mm&I&I&K###$LM $F 	 ##$<= $8 	 ##$=> $9 	 ##$>? $: 	 ##$=> $9 +*r    )r   )NNNNNNNr"   NNN)__name__
__module____qualname____firstlineno____doc__r
   r   r   r   propertyr#   r'   r/   rE   rT   rd   rj   ro   rn   rv   r{   rM   __static_attributes__ r    r   r   r      s    T#'#4#4#9#9 3     " "(0" "'R)0D4006 "+r    r   c                   :    \ rS rSrSrS r   S	S jrS rS rSr	g)
r      z<Adapter for the GA Cloud NetApp Files API for Backup Vaults.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   BackupVaultsAdapter.__init__   sN    **--D//((DK  11((DMr    Nc                 \    Ub  X!l         Ub  X1l        Ub  U R                  U5      Ul        U$ )z'Parses updates into a new Backup Vault.)rK   rL   rM   rN   r|   s        r   r{   +BackupVaultsAdapter.ParseUpdatedBackupVault   s@     !,"*+/+J+J
!,l( r    c                     U R                   R                  UUR                  5       US9nU R                  R                  R                  U5      $ )z7Send a Patch request for the Cloud NetApp Backup Vault.)r4   r>   
updateMask)r'   /NetappProjectsLocationsBackupVaultsPatchRequestr9   r#   r:   Patch)r   r@   rB   rw   update_requests        r   rv   %BackupVaultsAdapter.UpdateBackupVault  sU     	EE$ --/" 	F 	$ 
 ;;66<< r    c                    U R                   R                  5       nUR                  S5      Ul        UR                  S5      Ul        UR                  S5      Ul        UR                  S5      Ul        UR                  S5      Ul        U$ r   r   r   s      r   rM   .BackupVaultsAdapter.ParseBackupRetentionPolicy  r   r    r#   r'   r   r   )
r   r   r   r   r   r   r{   rv   rM   r   r   r    r   r   r      s$    D "$	+r    r   c                   ,   ^  \ rS rSrSrU 4S jrSrU =r$ )r   i(  z>Adapter for the Beta Cloud NetApp Files API for Backup Vaults.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    BetaBackupVaultsAdapter.__init__+  s]    	
!413**//D//((DK  11((DMr    r   )r   r   r   r   r   r   r   __classcell__)r   s   @r   r   r   (  s    F 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   <module>r      sR    W &  ' ' 3 = . ( # )I+ I+X;+& ;+|1 r    