
                             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  G d	 d
ej                        Zd ZdedefdZd Zd Zd Zd Zd Zd Zd Zy)zBigtable backups API helper.    )absolute_import)division)unicode_literals)util)arg_parsers)
exceptions)timesc                       e Zd ZdZy)NoFieldSpecifiedzDError for calling update command with no args that represent fields.N)__name__
__module____qualname____doc__     .lib/googlecloudsdk/api_lib/bigtable/backups.pyr   r      s    Lr   r   c                     t        j                  |       j                  t        j                  t         j                              }t        j
                  |dt         j                        }|S )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    t         j                  j                  |       }|j                  d      S )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                 v    | j                   r| j                   S | j                  rt        | j                        S y)zParse flags for expire time.N)expiration_dateretention_periodr   argss    r   GetExpireTimer+   5   s6    	40011 r   c                 \    | j                   s| j                   S t        | j                         S )z%Parse flags for hot to standard time.)hot_to_standard_timer%   r)   s    r   GetHotToStandardTimer.   =   s(    		"	"$$$	11	22r   c                 F   d| j                    d| j                   d|j                   |j                  _        t        |      |j                  _        t        |      |j                  _        |j                  |_	        | j                         j                         |_        |S )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=   F   s    &z'<'<&=[I_I_H``himisishtu#**'-#**!5d!;#**#,  "//1#*	*r   c                     d|_         |S )N )
updateMask)unused_instance_refunused_argsr<   s      r   ResetDefaultMaskFieldrC   R   s    #.	*r   c                 v    |j                   }|r#|j                  |       dk(  r|dz   | z   |_         |S | |_         |S )Nr   ,)r@   count)fieldr<   update_masks      r   AddFieldToUpdateMaskrI   W   sG    +1$"S(50cn 
* CN	*r   c                     t        |      }|||j                  _        t        d|      }t	        |      }|2t        d|      }|sd|j                  _        |S ||j                  _        |S )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   a   ss    d#+'CJJ
}c
2C-d3%
5s
;C  %)cjj" 
* &:cjj"	*r   c                 d   t        j                         }t        j                         }|j                  |j	                         | j                               }t        |      |_        |j                  |j                         j                         |      }|j                  j                  |      S )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]   }   s     &				 $..%**,$113 /  $1#6 EE#**,99;+ 	F 	# 
	3	3	8	8	==r   N)r   
__future__r   r   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>rf      sn    # &  ' 0 / = *M,, M
43 43 423
8>r   