
    -                         S r SSKJr  SSKJr  SSKJr  SSKJ	r	   " S S\R                  5      rS rS	\S
\4S jrS rS rS rS rS rS rS rg)zBigtable backups API helper.    )util)arg_parsers)
exceptions)timesc                       \ rS rSrSrSrg)NoFieldSpecified   zDError for calling update command with no args that represent fields. N)__name__
__module____qualname____firstlineno____doc____static_attributes__r
       .lib/googlecloudsdk/api_lib/bigtable/backups.pyr   r      s    Lr   r   c                     [         R                  " U 5      R                  [         R                  " [         R                  5      5      n[         R
                  " US[         R                  S9nU$ )z5Parse flag value into Datetime format for expireTime.z%Y-%m-%dT%H:%M:%S.%6f%Ez)tzinfo)r   ParseDurationGetRelativeDateTimeNowUTCFormatDateTime)expiration_valuedatetimeparsed_datetimes      r   ParseExpireTimer      sV       !12FFii		( ((*599/ 
r   datetime_valuereturnc                 b    [         R                  R                  U 5      nUR                  S5      $ )z6Parse a string datetime value into a formatted string.z%Y-%m-%dT%H:%M:%SZ)r   DatetimeParseUtcTimestrftime)r   parsed_times     r   FormatDatetimer%   *   s*    $$11.A+			2	33r   c                     U R                   (       a  U R                   $ U R                  (       a  [        U R                  5      $ g)zParse flags for expire time.N)expiration_dateretention_periodr   argss    r   GetExpireTimer+   2   s6    	40011 r   c                 f    U R                   (       d  U R                   $ [        U R                   5      $ )z%Parse flags for hot to standard time.)hot_to_standard_timer%   r)   s    r   GetHotToStandardTimer.   :   s(    		"	"$$$	11	22r   c                 F   SU R                    SU R                   SUR                   3UR                  l        [        U5      UR                  l        [        U5      UR                  l        UR                  Ul	        U R                  5       R                  5       Ul        U$ )z3Parse argument and construct create backup request.z	projects/z/instances/z/tables/)
projectsIdinstancesIdtablebackupsourceTabler+   
expireTimer.   hotToStandardTimebackupIdParentRelativeNameparent)
backup_refr*   reqs      r   ModifyCreateRequestr=   C   s    &z'<'<&=[I_I_H``himisishtu#**'-#**!5d!;#**#,  "//1#*	*r   c                     SUl         U$ )N )
updateMask)unused_instance_refunused_argsr<   s      r   ResetDefaultMaskFieldrC   O   s    #.	*r   c                     UR                   nU(       a$  UR                  U 5      S:X  a  US-   U -   Ul         U$ Xl         U$ )Nr   ,)r@   count)fieldr<   update_masks      r   AddFieldToUpdateMaskrI   T   sE    +1$"S(50cn 
* N	*r   c                     [        U5      nUb  X2R                  l        [        SU5      n[	        U5      nUb6  [        SU5      nU(       d  SUR                  l        U$ XBR                  l        U$ )z5Add backup fields to updateMask in the patch request.Nexpire_timer-   )r+   r3   r5   rI   r.   r6   )unused_backup_refr*   r<   rK   r-   s        r   AddBackupFieldsToUpdateMaskrM   ^   so    d#+'JJ
}c
2C-d3%
5s
;C  %)cjj" 
* &:jj"	*r   c                 \   [         R                  " 5       n[         R                  " 5       nUR                  UR	                  5       U R                  5       S9n[        U5      Ul        UR                  UR                  5       R                  5       US9nUR                  R                  U5      $ )zCopy a backup.)r7   sourceBackup)r:   copyBackupRequest)r   GetAdminClientGetAdminMessagesCopyBackupRequestNamer9   r+   r5   8BigtableadminProjectsInstancesClustersBackupsCopyRequestr8   #projects_instances_clusters_backupsCopy)source_backup_refdestination_backup_refr*   clientmsgscopy_backup_requestr<   s          r   
CopyBackupr]   z   s     &				 $..%**,$113 /  $1#6 EE#**,99;+ 	F 	# 
	3	3	8	8	==r   N)r   googlecloudsdk.api_lib.bigtabler   googlecloudsdk.callioper   googlecloudsdk.corer   core_exceptionsgooglecloudsdk.core.utilr   Errorr   r   strr%   r+   r.   r=   rC   rI   rM   r]   r
   r   r   <module>re      sg    # 1 / = *M,, M
43 43 423
8>r   