
    w                        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 ddlmZ ddZ ej(                  ej*                  j,                         G d dej.                               Z ej(                  ej*                  j2                  ej*                  j4                         G d de             Zy)z*Cloud Pub/Sub subscription modify command.    )absolute_import)division)unicode_literals)
exceptions)subscriptions)base)flags)resource_args)util)log)
propertiesc                 4   t        j                         }| j                  j                  j	                         }|s|j                  ||| j                        }t        j                  j                  dj                  | j                  dj                  |      |j                                      |r |j                         || j                  di fS |i fS d}i }	 |j                  ||| j                        }t        j"                  ||      \  }	}
t        j                  j                  dj                  | j                  dj                  |
      |j                                      |	rWt        j                  j                  dj                  | j                  dj                  |	      |j                                      |r|j                         || j                  d}||fS # t        j                  $ r }t        j                   |      }Y d}~d}~ww xY w)z3Modifies the ack deadline for one or more messages.zUSet ackDeadlineSeconds to [{0}] for messages with ackId [{1}]] for subscription [{2}],)subscriptionIdackIdackDeadlineSecondsNz\Set ackDeadlineSeconds to [{0}] for messages with ackId [{1}]] failed for subscription [{2}])r   SubscriptionsClientCONCEPTSsubscriptionParseModifyAckDeadlineack_deadliner   statusPrintformatjoinRelativeNameapi_ex	HttpErrorr   HandleExactlyOnceDeliveryError'ParseExactlyOnceAckIdsAndFailureReasons)argsack_idslegacy_outputcapture_failuresclientsubscription_refresultack_ids_and_failure_reasonserrorfailed_ack_idssuccessfully_processed_ack_idss              ?lib/surface/pubsub/subscriptions/modify_message_ack_deadline.py_Runr.       s   ,,.&]]//557	%%&6&*&7&79F JJ 55;V**CHHW,=)6686:;
 ,99; $ 1 1 
	  RZ& "M%%&6&*&7&79F
 483_3_!74,0.0 ** 3396((xx >?'446489
 JJ <<BF**CHH^,D)668=:; *779"//F
 
,	,,- 
		 M"&"E"Ee"LMs   G$ $H7HHc                   .    e Zd ZdZddiZed        Zd Zy)ModifyMessageAckDeadline?Modifies the ACK deadline for a specific Cloud Pub/Sub message.DESCRIPTIONz          This method is useful to indicate that more time is needed to process
          a message by the subscriber, or to make the message available for
          redelivery if the processing was interrupted.c                     t        j                  | d       t        j                  | d       t        j                  | d       y )Nmessages belong to.modify the deadline for.Trequiredr
   AddSubscriptionResourceArgr	   AddAckIdFlagAddAckDeadlineFlagparsers    r-   ArgszModifyMessageAckDeadline.Argsa   s4    ,,V5JK	v9:	Vd3    c                 D    t        ||j                  d      \  }}|r|S |S )NT)r%   )r.   r#   )selfr"   r(   r)   s       r-   RunzModifyMessageAckDeadline.Rung   s+    *.dllT+3'F'"((Mr?   N)__name__
__module____qualname____doc__detailed_helpstaticmethodr>   rB    r?   r-   r0   r0   U   s/    G ;- 4 4
r?   r0   c                   &    e Zd ZdZed        Zd Zy)ModifyMessageAckDeadlineBetar1   c                     t        j                  | d       t        j                  | dd       t        j                  | d       y )Nr4   r5   T)add_deprecatedr6   r8   r<   s    r-   r>   z!ModifyMessageAckDeadlineBeta.Argss   s6    ,,V5JK	v9$O	Vd3r?   c                     t        j                  |      }t        j                  j                  j
                  j                         }t        |||d      \  }}|r|S |S )NT)r$   r%   )r	   ParseAckIdsArgsr   VALUESpubsubr$   GetBoolr.   )rA   r"   r#   r$   r(   r)   s         r-   rB   z ModifyMessageAckDeadlineBeta.Runy   sZ    ##D)G%%,,::BBDM*.g]T+K'F'"((Mr?   N)rC   rD   rE   rF   rH   r>   rB   rI   r?   r-   rK   rK   o   s    G4 4
r?   rK   N)FF)rF   
__future__r   r   r   apitools.base.pyr   r   googlecloudsdk.api_lib.pubsubr   googlecloudsdk.callioper   !googlecloudsdk.command_lib.pubsubr	   r
   r   googlecloudsdk.corer   r   r.   ReleaseTracksReleaseTrackGACommandr0   BETAALPHArK   rI   r?   r-   <module>r_      s    1 &  ' 1 7 ( 3 ; 2 # *2-j D%%(()t||  *2 D%%**D,=,=,C,CD#;  Er?   