
    +                         d Z ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlm	Z
 ddlmZ dd	lmZ dd
lmZ ddlmZ  G d de      Z G d de      Z G d de      Zy)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                       e Zd ZdZej
                  j                  fdZed        Z	ed        Z
d Zd Z	 	 	 	 	 	 ddZdd	Zd
 Zd Zd Zd Z	 	 	 ddZd Zy)BackupVaultsClientzLWrapper for working with Backup Vaults in the Cloud NetApp Files API Client.c                    |t         j                  j                  k(  rt               | _        y |t         j                  j
                  k(  rt               | _        y t        dj                  t        j                  |               )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__zBackupVaultsClient.__init__!   sg    ))...-/dm	$++..	.)+dm9@@

!
!-
02 3 3    c                 .    | j                   j                  S N)r   clientr   s    r   r!   zBackupVaultsClient.client*   s    ==r   c                 .    | j                   j                  S r    )r   messagesr"   s    r   r$   zBackupVaultsClient.messages.   s    ==!!!r   c                     t        j                  t        j                  | j                  j                        |dj                  |j                                     S )a  Waits 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   WaitForOperationz#BackupVaultsClient.WaitForOperation2   sL     >>..KK55	
 	%,,]-?-?-AB r   c                 x   | j                   j                  |j                         j                         |j	                         |      }| j
                  j                  j                  |      }|r|S t        j                  j                  |j                  t        j                        }| j                  |      S )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   CreateBackupVaultz$BackupVaultsClient.CreateBackupVaultF   s    mmLL%%'446%**,  M G
 ;;BB7KI&&889#B#B 9 M   //r   Nc                     | j                   j                         }||_        |||_        |||_        ||_        ||_        || j                  |      |_        |S )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.

    Returns:
      The configuration that will be used ass the request body for creating a
      Cloud NetApp Backup Vault.
    )	r$   BackupVaultr9   backupVaultTypebackupRegiondescriptionlabelsParseBackupRetentionPolicybackupRetentionPolicy)r   r9   backup_vault_typebackup_regionrE   rF   backup_retention_policyr=   s           r   ParseBackupVaultz#BackupVaultsClient.ParseBackupVaultU   sn    . ==,,.LL$%6l" "/l*L L*+/+J+J
!,l( r   c                 f   | j                   j                  |      }| j                  j                  j	                  |      }|j
                  D ]&  }t        j                  dj                  |             ( t        j                  | j                  j                  |t        j                  |d      S )at  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.
    )r-   zLocation {} may be unreachable.pageSize)fieldlimitbatch_size_attribute)r$   .NetappProjectsLocationsBackupVaultsListRequestr!   r5   Listunreachabler   warningr   r   YieldFromListr   BACKUP_VAULT_RESOURCE)r   location_refrP   r>   responselocations         r   ListBackupVaultsz#BackupVaultsClient.ListBackupVaultsz   s     mmJJ K G {{::??HH((	kk3::8DE )##33--') )r   c                     | j                   j                  |j                               }| j                  j                  j                  |      S )z*Get Cloud NetApp Backup Vault information.r9   )r$   -NetappProjectsLocationsBackupVaultsGetRequestr4   r!   r5   Get)r   r;   r>   s      r   GetBackupVaultz!BackupVaultsClient.GetBackupVault   sC    mmII))+ J -G;;66::7CCr   c                 z    | j                   j                  |j                               }| j                  ||      S )z.Deletes an existing Cloud NetApp Backup Vault.r]   )r$   0NetappProjectsLocationsBackupVaultsDeleteRequestr4   _DeleteBackupVault)r   r;   r<   r>   s       r   DeleteBackupVaultz$BackupVaultsClient.DeleteBackupVault   sB     	FF --/ 	G 	
 
 ""6733r   c                     | j                   j                  j                  |      }|r|S t        j                  j                  |j                  t        j                        }| j                  |      S )Nr0   )
r!   r5   Deleter   r7   r8   r9   r   r:   r+   )r   r<   r>   	delete_opr*   s        r   rc   z%BackupVaultsClient._DeleteBackupVault   sb    ;;BB7KI&&889#B#B 9 M   //r   c                     | j                   j                  |||      }|r|S t        j                  j	                  |j
                  t        j                        }| j                  |      S )aX  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.
    r0   )	r   UpdateBackupVaultr   r7   r8   r9   r   r:   r+   )r   r;   r=   update_maskr<   	update_opr*   s          r   ri   z$BackupVaultsClient.UpdateBackupVault   sg     //{I &&889#B#B 9 M   //r   c                 @    | j                   j                  ||||      S )z"Parses updates into an kms config.)r=   rE   rF   rK   )r   ParseUpdatedBackupVaultr   r=   rE   rF   rK   s        r   rm   z*BackupVaultsClient.ParseUpdatedBackupVault   s,     ==00! 7	 1  r   c                    | j                   j                         }|j                  d      |_        |j                  d      |_        |j                  d      |_        |j                  d      |_        |j                  d      |_        |S 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   rK   backup_retention_policy_messages      r   rG   z-BackupVaultsClient.ParseBackupRetentionPolicy       &*mm&I&I&K###$LM $F 	 ##$<= $8 	 ##$=> $9 	 ##$>? $: 	 ##$=> $9 +*r   )NNNNNNr    NNN)__name__
__module____qualname____doc__r
   r   r   r   propertyr!   r$   r+   r@   rL   r[   r`   rd   rc   ri   rm   rG    r   r   r   r      s    T#'#4#4#9#9 3     " "(0" "#J)0D4006 "+r   r   c                   0    e Zd ZdZd Z	 	 	 ddZd Zd Zy)r   z<Adapter for the GA Cloud NetApp Files API for Backup Vaults.c                     t         j                  j                  | _        t	        j
                  | j                        | _        t	        j                  | j                        | _        y N)r   )	r
   r   r   r   r   GetClientInstancer!   GetMessagesModuler$   r"   s    r   r   zBackupVaultsAdapter.__init__   sN    **--D//((DK  11((DMr   Nc                 Z    |||_         |||_        || j                  |      |_        |S )z'Parses updates into a new Backup Vault.)rE   rF   rG   rH   rn   s        r   rm   z+BackupVaultsAdapter.ParseUpdatedBackupVault   sD     !,l"l*+/+J+J
!,l( r   c                     | j                   j                  ||j                         |      }| j                  j                  j                  |      S )z7Send a Patch request for the Cloud NetApp Backup Vault.)r/   r9   
updateMask)r$   /NetappProjectsLocationsBackupVaultsPatchRequestr4   r!   r5   Patch)r   r;   r=   rj   update_requests        r   ri   z%BackupVaultsAdapter.UpdateBackupVault  sU     	EE$ --/" 	F 	$ 
 ;;66<< r   c                    | j                   j                         }|j                  d      |_        |j                  d      |_        |j                  d      |_        |j                  d      |_        |j                  d      |_        |S rp   rq   ry   s      r   rG   z.BackupVaultsAdapter.ParseBackupRetentionPolicy  r{   r   r|   )r}   r~   r   r   r   rm   ri   rG   r   r   r   r   r      s$    D "$	+r   r   c                   "     e Zd ZdZ fdZ xZS )r   z>Adapter for the Beta Cloud NetApp Files API for Backup Vaults.c                     t         t        |           t        j                  j
                  | _        t        j                  | j                        | _	        t        j                  | j                        | _        y r   )superr   r   r
   r   r   r   r   r   r!   r   r$   )r   	__class__s    r   r   z BetaBackupVaultsAdapter.__init__'  s]    	
!413**//D//((DK  11((DMr   )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 = . ( # )E+ E+P;+& ;+|1 r   