
    %                         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 Policy 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g)BackupPoliciesClient   zNWrapper for working with Backup Policies 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BetaBackupPoliciesAdapter_adapterGABackupPoliciesAdapter
ValueErrorformatnetapp_utilVERSION_MAP)selfrelease_tracks     ;lib/googlecloudsdk/api_lib/netapp/backup_policies/client.py__init__BackupPoliciesClient.__init__!   sg    )).../1dm	$++..	.+-dm9@@

!
!-
02 3 3    c                 .    U R                   R                  $ N)r   clientr   s    r   r#   BackupPoliciesClient.client*   s    ==r    c                 .    U R                   R                  $ r"   )r   messagesr$   s    r   r'   BackupPoliciesClient.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%BackupPoliciesClient.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 Policy.)parentbackupPolicyIdbackupPolicy
collection)r'   2NetappProjectsLocationsBackupPoliciesCreateRequestParentRelativeNamer-   r#   !projects_locations_backupPoliciesCreater   REGISTRYParseRelativeNamenamer   OPERATIONS_COLLECTIONr/   )r   backuppolicy_refasync_backup_policyrequest	create_opr.   s          r   CreateBackupPolicy'BackupPoliciesClient.CreateBackupPolicyF   s    mmNN&&(557',,." O G
 ==DDWMI&&889#B#B 9 M   //r    Nc                     U R                   R                  5       nXl        X(l        X8l        XHl        XXl        Xhl        Xxl        U$ )ah  Parses the command line arguments for Create Backup Policy into a message.

Args:
  name: the name of the Backup Policy
  enabled: the Boolean value indicating whether or not backups are made
    automatically according to schedule.
  daily_backup_limit: the number of daily backups to keep.
  weekly_backup_limit: the number of weekly backups to keep.
  monthly_backup_limit: the number of monthly backups to keep.
  description: the description of the Backup Policy.
  labels: the parsed labels value

Returns:
  The configuration that will be used as the request body for creating a
  Cloud NetApp Backup Policy.
)	r'   BackupPolicyr>   enableddailyBackupLimitweeklyBackupLimitmonthlyBackupLimitdescriptionlabels)	r   r>   rI   daily_backup_limitweekly_backup_limitmonthly_backup_limitrM   rN   rB   s	            r   ParseBackupPolicy&BackupPoliciesClient.ParseBackupPolicyU   sF    4 MM..0M#%7"&9#';$ +!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$ )ad  Make API calls to List Cloud NetApp Backup Policies.

Args:
  location_ref: The parsed location of the listed NetApp Backup Policies.
  limit: The number of Cloud NetApp Backup Policies
    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 Policies.
)r2   zLocation {} may be unreachable.pageSize)fieldlimitbatch_size_attribute)r'   0NetappProjectsLocationsBackupPoliciesListRequestr#   r:   Listunreachabler   warningr   r   YieldFromListr   BACKUP_POLICY_RESOURCE)r   location_refrW   rC   responselocations         r   ListBackupPolicies'BackupPoliciesClient.ListBackupPoliciesy   s     mmLL M G {{<<AA'JH((	kk3::8DE )##55..') )r    c                     U R                   R                  UR                  5       S9nU R                  R                  R                  U5      $ )z+Get Cloud NetApp Backup Policy information.r>   )r'   /NetappProjectsLocationsBackupPoliciesGetRequestr9   r#   r:   Get)r   r@   rC   s      r   GetBackupPolicy$BackupPoliciesClient.GetBackupPolicy   sC    mmKK**, L .G;;88<<WEEr    c                 r    U R                   R                  UR                  5       S9nU R                  X#5      $ )z/Deletes an existing Cloud NetApp Backup Policy.re   )r'   2NetappProjectsLocationsBackupPoliciesDeleteRequestr9   _DeleteBackupPolicy)r   r@   rA   rC   s       r   DeleteBackupPolicy'BackupPoliciesClient.DeleteBackupPolicy   s@     	HH!..0 	I 	
 
 ##F44r    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   rl   (BackupPoliciesClient._DeleteBackupPolicy   sb    ==DDWMI&&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      $ )aI  Updates a Backup Policy.

Args:
  backuppolicy_ref: the reference to the Backup Policy.
  backup_policy: Backup Policy message, the updated Backup Policy.
  update_mask: str, a comma-separated list of updated fields.
  async_: bool, if False, wait for the operation to complete.
Returns:
  an Operation or Backup Policy message.
r5   )	r   UpdateBackupPolicyr   r<   r=   r>   r   r?   r/   )r   r@   rB   update_maskrA   	update_opr.   s          r   rt   'BackupPoliciesClient.UpdateBackupPolicy   se     00I &&889#B#B 9 M   //r    c           
      @    U R                   R                  UUUUUUUS9$ )z%Parses updates into an Backup Policy.)rB   rI   rO   rP   rQ   rM   rN   )r   ParseUpdatedBackupPolicy)r   rB   rI   rO   rP   rQ   rM   rN   s           r   ry   -BackupPoliciesClient.ParseUpdatedBackupPolicy   s5     ==11#-/1 2  r    )r   )NNNNNNNr"   NNNNNN)__name__
__module____qualname____firstlineno____doc__r
   r   r   r   propertyr#   r'   r/   rE   rR   rb   rh   rm   rl   rt   ry   __static_attributes__ r    r   r   r      s    V#'#4#4#9#9 3     " "(0" "H)2F5004 r    r   c                   2    \ rS rSrSrS r  SS jrS rSrg)	r      z>Adapter for the GA Cloud NetApp Files API for Backup Policies.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   BackupPoliciesAdapter.__init__   sN    **--D//((DK  11((DMr    Nc                 r    Ub  XQl         Ub  X!l        Ub  X1l        Ub  XAl        Ub  Xal        Ub  Xql        U$ )z(Parses updates into a new Backup Policy.)rI   rJ   rK   rL   rM   rN   )r   rB   rO   rP   rQ   rI   rM   rN   s           r   ry   .BackupPoliciesAdapter.ParseUpdatedBackupPolicy   sR    
 %%'9$&(;%')=&"-#r    c                     U R                   R                  UUR                  5       US9nU R                  R                  R                  U5      nU$ )z8Send a Patch request for the Cloud NetApp Backup Policy.)r4   r>   
updateMask)r'   1NetappProjectsLocationsBackupPoliciesPatchRequestr9   r#   r:   Patch)r   r@   rB   ru   update_requestrv   s         r   rt   (BackupPoliciesAdapter.UpdateBackupPolicy   sX     	GG&!..0" 	H 	$ 
 ==CCIr    r#   r'   r   r{   )	r|   r}   r~   r   r   r   ry   rt   r   r   r    r   r   r      s    F IMHL&	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 Policies.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   "BetaBackupPoliciesAdapter.__init__  s]    	
#T35**//D//((DK  11((DMr    r   )r|   r}   r~   r   r   r   r   __classcell__)r   s   @r   r   r     s    H 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 = . ( # )v6 vr(F (V 5 r    