
                         r    S r SSKJr  SSKJr  SSKJr  SSKJr  S r	  SS\4S	 jjr
S
 rS rS rS rS rg)z*Cloud Spanner backup schedules API helper.    )
list_pager)apis)CloudKmsKeyName)timesc                 V    [         R                  " [         R                  " U 5      5      $ )N)r   FormatDurationForJsonParseDuration)retention_durations    6lib/googlecloudsdk/api_lib/spanner/backup_schedules.pyParseAndFormatRetentionDurationr      s    		$	$U%8%89K%L	MM    Nkms_keyc                    UR                  U R                  5       S9nUR                  (       a  [        UR                  5      Ul        U(       d  U(       ao  UR                  5       nU(       a  X6l        U(       aE  UR                  (       a  UR                  Ul        O"UR                  (       a  UR                  Ul
        Xel        UR                  (       a+  UR                  UR                  UR                  S9S9Ul        U$ )a  Create a backup schedule message.

Args:
  backup_schedule_ref: resource argument for a cloud spanner backup schedule.
  args: an argparse namespace. All the arguments that were provided to command
    invocation.
  msgs: contains the definitions of messages for the spanner v1 API.
  encryption_type: encryption type for the backup encryption.
  kms_key: contains the encryption keys for the backup encryption.

Returns:
  BackupSchedule message.
name)text)cronSpec)BackupScheduleRelativeNamer
   r   retentionDurationCreateBackupEncryptionConfigencryptionTypekms_key_name
kmsKeyNamekms_key_nameskmsKeyNamesencryptionConfigcronBackupScheduleSpecCrontabSpecspec)backup_schedule_refargsmsgsencryption_typer   backup_scheduleencryption_configs          r   CreateBackupScheduleMessager(      s    ( ''-@-M-M-O'P/	(G)O% 99;)8&			'.';';$  (/(=(=%'8$	YY22!!tyy!1 3 O 
r   c                     [         R                  " SS5      n[         R                  " SS5      nUR                  U R	                  5       S9nUR
                  R                  U5      $ )zGet a backup schedule.spannerv1r   )r   GetClientInstanceGetMessagesModule:SpannerProjectsInstancesDatabasesBackupSchedulesGetRequestr   ,projects_instances_databases_backupSchedulesGetr"   clientr$   reqs       r   r0   r0   I   sa    !!)T2&				4	0$GG++- 	H 	# 
	<	<	@	@	EEr   c                     [         R                  " SS5      n[         R                  " SS5      nUR                  U R	                  5       S9nUR
                  R                  U5      $ )zDelete a backup schedule.r*   r+   r   )r   r,   r-   =SpannerProjectsInstancesDatabasesBackupSchedulesDeleteRequestr   r/   Deleter1   s       r   r6   r6   S   sa    !!)T2&				4	0$JJ++- 	K 	# 
	<	<	C	CC	HHr   c                    [         R                  " SS5      n[         R                  " SS5      nUR                  U R	                  5       R                  5       S9n[        XXRU5      Ul        UR                  S   S:X  a   UR                  5       UR                  l
        O2UR                  S   S:X  a  UR                  5       UR                  l        U R                  5       Ul        UR                  R!                  U5      $ )zCreate a new backup schedule.r*   r+   parentr   zfull-backupzincremental-backup)r   r,   r-   =SpannerProjectsInstancesDatabasesBackupSchedulesCreateRequestParentr   r(   backupSchedulebackup_typeFullBackupSpecfullBackupSpecIncrementalBackupSpecincrementalBackupSpecNamebackupScheduleIdr/   Create)r"   r#   r%   r   r2   r$   r3   s          r   rD   rD   ]   s     !!)T2&				4	0$JJ '')668 	K 	# 3# 
aM)(,(;(;(=C%22/3/I/I/KC,,113#		<	<	C	CC	HHr   c                     [         R                  " SS5      n[         R                  " SS5      nUR                  U R	                  5       S9n[
        R                  " UR                  USSS9$ )z&List backup schedules in the database.r*   r+   r8   backupSchedulespageSize)fieldbatch_size_attribute)r   r,   r-   ;SpannerProjectsInstancesDatabasesBackupSchedulesListRequestr   r   YieldFromListr/   )database_refr2   r$   r3   s       r   ListrM   t   so    !!)T2&				4	0$HH&&( 	I 	# 
	!	!99	%	
 r   c                    [         R                  " SS5      n[         R                  " SS5      nUR                  U R	                  5       S9n[        XXRU5      Ul        / nUR                  (       a  UR                  S5        UR                  (       a  UR                  S5        U(       d  U(       a  UR                  S5        SR                  U5      Ul        UR                  R                  U5      $ )zUpdate a backup schedule.r*   r+   r   zspec.cron_spec.textr
   r'   ,)r   r,   r-   <SpannerProjectsInstancesDatabasesBackupSchedulesPatchRequestr   r(   r<   r   appendr
   join
updateMaskr/   Patch)r"   r#   r%   r   r2   r$   r3   update_mask_pathss           r   UpdaterV      s     !!)T2&				4	0$II++- 	J 	# 3# 	YY23	120188-.#.		<	<	B	B3	GGr   )NN)__doc__apitools.base.pyr   googlecloudsdk.api_lib.utilr   0googlecloudsdk.command_lib.spanner.resource_argsr   googlecloudsdk.core.utilr   r   r(   r0   r6   rD   rM   rV    r   r   <module>r]      sS    1 ( , L *N #*
 *ZFII.Hr   