
    Z]                         S r SSK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rSr " S S5      r " S S5      rg)z+Functions to add flags in rollout commands.    N)Iterator)messages)util)arg_parsers)base)parser_arguments)parser_extensions)	resources)gkehub_v1alpha_messagesz8projects/([^/]+)/platforms/gke/policies/([a-zA-Z0-9_-]+))(STRAGGLER_MIGRATION_STRATEGY_UNSPECIFIED)STRAGGLER_MIGRATION_STRATEGY_NO_MIGRATION&STRAGGLER_MIGRATION_STRATEGY_LAST_WAVEc                      \ rS rSrSr\R                  R                  4S\R                  S\R                  4S jjr
\S 5       r\S 5       rS rS	 rS
 rS rS rS rS rS rS rS rS\R                  4S jrS rS rS\R                  4S jrS\R                  4S jrS\R                  4S jrS\R                  4S jrS\R                  4S jrS\R                  4S jr S\R                  4S jr!S \R                  4S! jr"S \R                  4S" jr#S\R                  4S# jr$S$\R                  4S% jr%S$\R                  4S& jr&S'r'g())RolloutFlags+   z/Add flags to the fleet rollout command surface.parserrelease_trackc                     Xl         X l        g N_parser_release_track)selfr   r   s      @lib/googlecloudsdk/command_lib/container/fleet/rollouts/flags.py__init__RolloutFlags.__init__.   s    
 L'    c                     U R                   $ r   )r   r   s    r   r   RolloutFlags.parser6   s    <<r   c                     U R                   $ r   )r   r   s    r   r   RolloutFlags.release_track:   s    r   c                 V    [         R                  R                  U R                  5        g r   )r   
ASYNC_FLAGAddToParserr   r   s    r   AddAsyncRolloutFlags.AddAsync>   s    OO,r   c                    U R                   R                  S[        R                  " [        R                  " SSS9[        R                  " SSS9[        R                  " SS9[
        S./ S9S[        R                  " S	5      S
9  g )N--custom-waver   d   )lower_boundupper_bound)r+   )upper-bound-percentageminimum-completion-percentageminimum-completion-numberstraggler-migration-strategy)specrequired_keysappendan              Comma-separated list of custom waves to be used for the rollout.
            Each custom wave is specified as `upper-bound-percentage`,
            `minimum-completion-percentage` or `minimum-completion-number`, and
            `straggler-migration-strategy`.

            In order to have multiple custom waves, use the `--custom-wave`
            flag multiple times.

            `straggler-migration-strategy` can be one of:
            - 'STRAGGLER_MIGRATION_STRATEGY_UNSPECIFIED',
            - 'STRAGGLER_MIGRATION_STRATEGY_NO_MIGRATION',
            - 'STRAGGLER_MIGRATION_STRATEGY_LAST_WAVE',
        )typeactionhelp)r   add_argumentr   ArgDict
BoundedIntstrtextwrapdedentr   s    r   AddCustomWavesRolloutFlags.AddCustomWavesA   s    KK  *5*@*@ !s+ 2=1G1G !s2 .9-C-C !. 14 
 __  %   r   c                 j    U R                   R                  S[        [        R                  " S5      S9  g )Nz--display-namez            Display name of the rollout to be created (optional). 4-30
            characters, alphanumeric and [ '"!-] only.
        r4   r6   )r   r7   r:   r;   r<   r   s    r   AddDisplayNameRolloutFlags.AddDisplayNamed   s0    KK__    r   c                     U R                   R                  S[        R                  " 5       S[        R
                  " S5      S9  g )N--exclude-membership-namesMEMBERSHIP_NAMEa_              Comma-separated list of full names of memberships to exclude
            from the rollout. The memberships must use the following format:

            `projects/<PROJECT_NUMBER>/locations/global/memberships/<MEMBERSHIP_ID>`.

            Either this flag or `--include-membership-names` can be specified,
            but not both.
        r4   metavarr6   r   r7   r   ArgListr;   r<   r   s    r   AddExcludeMembershipNames&RolloutFlags.AddExcludeMembershipNamesn   <    KK$  "!__  	  r   c                     U R                   R                  S[        R                  " 5       S[        R
                  " S5      S9  g )N--include-membership-namesrE   a^              Comma-separated list of full names of memberships to include in
            the rollout. The memberships must use the following format:

            `projects/<PROJECT_NUMBER>/locations/global/memberships/<MEMBERSHIP_ID>`.

            Either this flag or `--excluded-membership-names` can be specified,
            but not both.
        rF   rH   r   s    r   AddIncludeMembershipNames&RolloutFlags.AddIncludeMembershipNames~   rL   r   c                 b    U R                   R                  SSS[        R                  " 5       S9  g )N--labelszLabels for the rollout.z	KEY=VALUE)r6   rG   r4   )r   r7   r   r8   r   s    r   	AddLabelsRolloutFlags.AddLabels   s.    KK&  "	  r   c                     U R                   R                  S[        R                  R                  [
        R                  " S5      S9  g )N--start-timez            Start time (in the future) of the rollout.

            See $ gcloud topic datetimes for information on datetime formats.
        r@   )r   r7   r   DatetimeParser;   r<   r   s    r   AddScheduledStartTime"RolloutFlags.AddScheduledStartTime   s<    KK!!''__    r   c                     U R                   R                  S[        R                  " 5       [        R
                  " S5      S9  g )N--schedule-offsetz            Offset to shift the schedule by when resuming a paused rollout, e.g. `8h`, `7d12h`.

            See $ gcloud topic datetimes for information on duration formats.
        r@   )r   r7   r   Durationr;   r<   r   s    r   AddScheduleOffsetRolloutFlags.AddScheduleOffset   s9    KK!!#__    r   c                 b    U R                   R                  SS[        R                  " S5      S9  g )Nz--validate-only
store_truezS            Generate a new schedule without actually resuming the rollout.
        )r5   r6   )r   r7   r;   r<   r   s    r   AddValidateOnlyRolloutFlags.AddValidateOnly   s0    KK__    r   c                 X    U R                   R                  SS9nU R                  U5        g )NzAConfigurations for the Rollout. Waves are assigned automatically.r6   )r   	add_group_AddSoakDurationr   managed_rollout_config_groups     r   AddManagedRolloutConfig$RolloutFlags.AddManagedRolloutConfig   s0    #';;#8#8P $9 $  	67r   ri   c                 v    UR                  S[        R                  " S5      [        R                  " 5       SS9  g )N--soak-durationz          Soak time before starting the next wave. e.g. `4h`, `2d6h`.
          Soak duration is required for Rollouts.

          See $ gcloud topic datetimes for information on duration formats.Tr6   r4   required)r7   r;   r<   r   r]   rh   s     r   rg   RolloutFlags._AddSoakDuration   s>     !--__ O P
 !!# . 	r   c                 x    [         R                  " U R                  [        R                  U R
                     S9  g )N)r   api_version)fleet_resourcesAddRolloutResourceArgr   r   VERSION_MAPr   r   s    r   rt   "RolloutFlags.AddRolloutResourceArg   s+    )){{$$T%7%78r   c                 z    U R                   R                  SS9nU R                  U5        U R                  U5        g )Nz)Configuration for specific rollout types.re   )r   add_mutually_exclusive_group_AddVersionUpgrade_AddFeatureUpdate)r   rollout_type_mutex_groups     r   AddRolloutTypeConfig!RolloutFlags.AddRolloutTypeConfig   s@    #{{GG8  H   	4534r   r{   c                 f    UR                  SS9nU R                  U5        U R                  U5        g )NzVersion upgrade rollout config.re   )rf   _AddVersionUpgradeType_AddTargetVersion)r   r{   version_upgrade_config_groups      r   ry   RolloutFlags._AddVersionUpgrade   s>     $<#E#E. $F $  	 <=78r   c                 f    UR                  SS9nU R                  U5        U R                  U5        g )Nz,Version upgrade type to use for the Rollout.re   )rx   _AddControlPlaneUpgrade_AddConfigSyncUpgrade)r   r{    version_upgrade_type_mutex_groups      r   r   #RolloutFlags._AddVersionUpgradeType   s?     	!==? 	> 	
 % 	  !AB?@r   r   c                 N    UR                  S[        R                  " S5      SS9  g )N--control-plane-upgradezA          Upgrade the control plane of the clusters in the fleet.ra   r6   r5   r7   r;   r<   r   r   s     r   r   $RolloutFlags._AddControlPlaneUpgrade   s0     !--!__ E F	 . r   c                 N    UR                  S[        R                  " S5      SS9  g )N--config-sync-upgradez?          Upgrade the config sync of the clusters in the fleet.ra   r   r   r   s     r   r   "RolloutFlags._AddConfigSyncUpgrade   s0     !--__ C D	 . r   c                 X    UR                  S[        R                  " S5      [        SS9  g )N--target-versionz<          The version to upgrade clusters from the fleet to.Trn   )r7   r;   r<   r:   r   s     r   r   RolloutFlags._AddTargetVersion   s3     !--__ @ A . r   c                 f    UR                  SS9nU R                  U5        U R                  U5        g )Nz"Feature config to use for Rollout.re   )rx   _AddSecurityPostureConfig_AddBinaryAuthorizationConfig)r   r{   feature_update_mutex_groups      r   rz   RolloutFlags._AddFeatureUpdate
  s?     	!==5 	> 	
  	""#=>&&'ABr   r   c                 f    UR                  SS9nU R                  U5        U R                  U5        g )NzSecurity posture config.re   )rf   _AddSecurityPostureMode%_AddWorkloadVulnerabilityScanningMode)r   r   security_posture_config_groups      r   r   &RolloutFlags._AddSecurityPostureConfig  s>     %?$H$H' %I %! 	  !>?../LMr   r   c                 T    UR                  SSS/S [        R                  " S5      S9  g )N--security-posturedisabledstandardz          To apply standard security posture to clusters in the fleet,

            $ {command} --security-posture=standard

          choicesdefaultr6   r   r   r   s     r   r   $RolloutFlags._AddSecurityPostureMode  s6     "..Z(__  	 / 
r   c                 T    UR                  S/ SQS [        R                  " S5      S9  g )N!--workload-vulnerability-scanningr   r   
enterprisez            To apply standard vulnerability scanning to clusters in the fleet,

              $ {command} --workload-vulnerability-scanning=standard

            r   r   r   s     r   r   2RolloutFlags._AddWorkloadVulnerabilityScanningMode.  s1     "..+6__  	 / 
r   c                 f    UR                  SS9nU R                  U5        U R                  U5        g )NzBinary Authorization config.re   )rf   _AddBinauthzEvaluationMode_AddBinauthzPolicyBindings)r   r   !binary_authorization_config_groups      r   r   *RolloutFlags._AddBinaryAuthorizationConfig=  s?     )C(L(L+ )M )% 	##$EF##$EFr   r   c           	      X    UR                  SSS/S S [        R                  " S5      S9  g )N--binauthz-evaluation-moder   policy-bindingsc                 B    U R                  SS5      R                  5       $ )N_-)replacelower)xs    r   <lambda>9RolloutFlags._AddBinauthzEvaluationMode.<locals>.<lambda>O  s    qyyc*002r   z          Configure binary authorization mode for clusters to onboard the fleet,

            $ {command} --binauthz-evaluation-mode=policy-bindings

          )r   r4   r   r6   r   )r   r   s     r   r   'RolloutFlags._AddBinauthzEvaluationModeF  s<     &22$./ 3__   3 r   c                     [         R                  " [        S5      nUR                  SS SS[        R
                  " S5      [         R                  " SU0S/SS9S	9  g )
NzsGKE policy resource names have the following format: `projects/{project_number}/platforms/gke/policies/{policy_id}`--binauthz-policy-bindingsr3   zname=BINAUTHZ_POLICYz          The relative resource name of the Binary Authorization policy to audit
          and/or enforce. GKE policies have the following format:
          `projects/{project_number}/platforms/gke/policies/{policy_id}`.name   )r1   r2   
max_length)r   r5   rG   r6   r4   )r   RegexpValidator_BINAUTHZ_GKE_POLICY_REGEXr7   r;   r<   r8   )r   r   platform_policy_types      r   r   'RolloutFlags._AddBinauthzPolicyBindingsY  sw     '66"	I
 &22$&__ M N   , "(
 3 r   r   N)(__name__
__module____qualname____firstlineno____doc__r   ReleaseTrackALPHAr   ArgumentInterceptorr   propertyr   r   r&   r=   rA   rJ   rO   rS   rY   r^   rb   rj   rg   rt   r|   ry   r   r   r   r   rz   r   r   r   r   r   r   __static_attributes__ r   r   r   r   +   s   7
 *.):):)@)@(22( &&(    -!F  		8*:*N*N59&6&J&J9
A&6&J&J
A*:*N*N*:*N*N	*:*N*N	
C&6&J&J
CN(8(L(LN+;+O+O+;+O+OG(8(L(LG)9)M)M&)9)M)Mr   r   c                   <   \ rS rSrSrS\R                  S\R                  4S jr	S\
R                  S\4S jrS\
R                  4S	 jrS\R                   4S
 jrS\4S jrS\R                   R&                  4S jrS\4S jrS\R,                  4S jrS\4S jrS\R2                  4S jrS\R2                  R6                  4S jrS\4S jrS\R<                  4S jrS\R@                  4S jr!S\R@                  RD                  4S jr#S\R@                  RH                  4S jr%S\RL                  4S jr'S\RL                  RP                  4S jr)S\*\RV                     4S jr,S\-R\                  4S jr/S\4S jr0S\4S jr1S\4S jr2S\4S jr3S\4S jr4S r5g!)"RolloutFlagParseriu  z1Parse flags during fleet rollout command runtime.argsr   c                 R    Xl         X l        [        R                  " U5      U l        g r   )r   r   r   GetMessagesModuler   )r   r   r   s      r   r   RolloutFlagParser.__init__x  s!     I&**=9DMr   messagereturnc                 (    U[        U5      " 5       :H  $ )zDetermines if a message is empty.

Args:
  message: A message to check the emptiness.

Returns:
  A bool indictating if the message is equivalent to a newly initialized
  empty message instance.
)r4   r   r   s     r   IsEmptyRolloutFlagParser.IsEmpty  s     d7mo%%r   c                 4    U R                  U5      (       d  U$ g)z/Trim empty messages to avoid cluttered request.N)r   r   s     r   	TrimEmptyRolloutFlagParser.TrimEmpty  s     <<  nr   c                 v   [         R                  " 5       n[        R                  " U R                  5      Ul        U R                  5       Ul        U R                  5       Ul	        U R                  5       Ul        U R                  5       Ul        U R                  5       Ul        U R!                  5       Ul        U$ r   )fleet_messagesRolloutr   RolloutNamer   r   _DisplayNamedisplayName_Labelslabels_ManagedRolloutConfigmanagedRolloutConfig_VersionUpgradeversionUpgrade_FeatureUpdatefeature_ScheduledStartTimescheduledStartTime)r   rollouts     r   r   RolloutFlagParser.Rollout  s    $$&G##DII.GL++-G\\^GN#'#=#=#?G !113G))+GO!%!9!9!;GNr   c                 .    U R                   R                  $ r   )r   display_namer   s    r   r   RolloutFlagParser._DisplayName  s    99!!!r   c                 ^   SU R                   R                  5       ;  a  gU R                   R                  n[        R                  R                  5       nUR                  5        HE  u  p4UR                  R                  [        R                  R
                  R                  X4S95        MG     U$ )zParses --labels.rR   N)keyvalue)
r   GetSpecifiedArgsr   r   r   LabelsValueitemsadditionalPropertiesr3   AdditionalProperty)r   r   labels_valuer   r   s        r   r   RolloutFlagParser._Labels  s    3355YYF!))557Llln
''..

 
 
,
,
?
? @  % r   c                     SU R                   R                  5       ;  a  gU R                   R                  R                  S5      $ )zParses --start-time.

Accepts ISO 8601 datetime format. To read more,
https://cloud.google.com/sdk/gcloud/reference/topic/

Returns:
  str, in ISO 8601 datetime format.
rV   Nz%Y-%m-%dT%H:%M:%SZ)r   r   
start_timestrftimer   s    r   r   %RolloutFlagParser._ScheduledStartTime  s8     TYY779999(()=>>r   c                    [         R                  " 5       nU R                  5       Ul        [         R                  " 5       nSU R
                  R                  5       ;   a)  SU R
                  R                  5       ;   a  [        S5      eSU R
                  R                  5       ;   a8  U R
                  R                   H  nUR                  R                  U5        M      SU R
                  R                  5       ;   a8  U R
                  R                   H  nUR                  R                  U5        M      SU R
                  R                  5       ;   a  / nU R
                  R                   H  nSU;   a  SU;   a  [        S5      e[         R                  " 5       nSU;   a
  US   Ul        SU;   a
  US   Ul        SU;   a
  US   Ul        S	U;   aM  US	   [$        ;  a  [        S
US	    S[$         S35      e[         R                  R'                  US	   5      Ul        UR                  U5        M     XBl        X!l        U R/                  U5      $ )a  Constructs message ManagedRolloutConfig.

Parses arguments related to the managed rollout configuration, such as
`--soak-duration` and `--exclude-membership-names`.

Returns:
  A fleet_messages.ManagedRolloutConfig instance or None if no related
  flags were specified.
rD   rN   z]`--exclude-membership-names` and `--include-membership-names` cannot be set at the same time.r)   r.   r/   zExactly one of `minimum-completion-percentage` or `minimum-completion-number` must be specified for each wave in --custom-wave.r-   r0   z2Invalid value for `straggler-migration-strategy`: z. Must be one of .)r   ManagedRolloutConfig_SoakDurationsoakDurationUIPRRolloutConfigr   r   
ValueErrorexclude_membership_namesexcludedMembershipNamesr3   include_membership_namesincludeMembershipNamescustom_waveWaveTemplateupperBoundPercentageminimumCompletionPercentageminimumCompletionNumber#_STRAGGLER_MIGRATION_STRATEGY_ENUMS)StragglerMigrationStrategyValueValuesEnumstragglerMigrationStrategycustomWavesuiprRolloutConfigr   )r   managed_rollout_configuipr_rollout_config
membershipcustom_waveswaver  s          r   r   'RolloutFlagParser._ManagedRolloutConfig  s<    ,@@B*.*<*<*>'(::< 	%		(B(B(DD(DII,F,F,HH& 
 $tyy'A'A'CC		::*33:::F ; $tyy'A'A'CC		::*2299*E ; $))4466l))''$+t3'4/ 
 %113#t+-12J-K+
**d248-5+
1 '$.04)1+
- *T11289 789 :78; 
 4B3N3N3x3x124+
0 	K(K (N )5%/B,>>011r   c                     SU R                   R                  5       ;  a  gSR                  U R                   R                  5      $ )zParses --soak-duration.

Accepts ISO 8601 durations format. To read more,
https://cloud.google.com/sdk/gcloud/reference/topic/

Returns:
  str, in standard duration format, in unit of seconds.
rm   N{}s)r   r   formatsoak_durationr   s    r   r  RolloutFlagParser._SoakDuration  s5     		 : : <<<<		//00r   c                     [         R                  " 5       nU R                  5       Ul        U R	                  5       Ul        U R                  U5      $ )z"Constructs message VersionUpgrade.)r   VersionUpgrade_VersionUpgradeTyper4   _VersionUpgradeDesiredVersiondesiredVersionr   )r   version_upgrades     r   r   !RolloutFlagParser._VersionUpgrade  sA    $335O335O%)%G%G%IO">>/**r   c                    [         R                  R                  nSU R                  R	                  5       ;   a)  SU R                  R	                  5       ;   a  [        S5      eSU R                  R	                  5       ;   a  UR                  $ SU R                  R	                  5       ;   a  UR                  $ UR                  $ )z9Parses --control-plane-upgrade and --config-sync-upgrade.r   r   zQ--control-plane-upgrade and --config-sync-upgrade cannot be set at the same time.)	r   r$  TypeValueValuesEnumr   r   r	  TYPE_CONTROL_PLANETYPE_CONFIG_SYNCTYPE_UNSPECIFIED)r   	enum_types     r   r%  %RolloutFlagParser._VersionUpgradeType  s     --AAI!TYY%?%?%AA#tyy'A'A'CC  !DII$>$>$@@)))$))"<"<">>'''%%%r   c                 l    SU R                   R                  5       ;  a  gU R                   R                  $ )zParses --target-version.r   N)r   r   target_versionr   s    r   r&  /RolloutFlagParser._VersionUpgradeDesiredVersion2  s*    !;!;!==99###r   c                     [         R                  " 5       nU R                  5       Ul        U R	                  5       Ul        U R                  U5      $ )z!Constructs message FeatureUpdate.)r   FeatureUpdate_SecurityPostureConfigsecurityPostureConfig_BinaryAuthorzationConfigbinaryAuthorizationConfigr   )r   feature_updates     r   r    RolloutFlagParser._FeatureUpdate8  sA    #113N+/+F+F+HN(/3/M/M/ON,>>.))r   c                     [         R                  " 5       nU R                  5       Ul        U R	                  5       Ul        U R                  U5      $ r   )r   SecurityPostureConfig_SecurityPostureModemode!_VulnerabilityModeValueValuesEnumvulnerabilityModer   )r   security_posture_configs     r   r6  (RolloutFlagParser._SecurityPostureConfig?  sI    ,BBD#'#<#<#> ..0 - >>122r   c                     SU R                   R                  5       ;  a  g[        R                  R                  nUR
                  UR                  S.nX R                   R                     $ )zParses --security-posture.r   N)r   r   )r   r   r   r=  ModeValueValuesEnumDISABLEDBASICsecurity_posturer   r/  mappings      r   r>  &RolloutFlagParser._SecurityPostureModeG  sY     499#=#=#??44HHI&&OOG 99--..r   c                     SU R                   R                  5       ;  a  gU R                  R                  R                  nUR
                  UR                  UR                  S.nX R                   R                     $ )z)Parses --workload-vulnerability-scanning.r   Nr   )	r   r   r   r=   VulnerabilityModeValueValuesEnumVULNERABILITY_DISABLEDVULNERABILITY_BASICVULNERABILITY_ENTERPRISEworkload_vulnerability_scanningrI  s      r   r@  3RolloutFlagParser._VulnerabilityModeValueValuesEnumU  so     +$))2L2L2NN 	++LL  441188G
 99<<==r   c                     [         R                  " 5       nU R                  5       Ul        [	        U R                  5       5      Ul        U R                  U5      $ r   )r   BinaryAuthorizationConfig_EvaluationModeevaluationModelist_PolicyBindingspolicyBindingsr   )r   binary_authorization_configs     r   r8  +RolloutFlagParser._BinaryAuthorzationConfigf  sL     #1"J"J"L151E1E1G.15d6J6J6L1M.>>566r   c                     SU R                   R                  5       ;  a  gU R                  R                  R                  nUR
                  UR                  S.nX R                   R                     $ )z"Parses --binauthz-evaluation-mode.r   N)r   r   )r   r   r   rT  EvaluationModeValueValuesEnumrF  POLICY_BINDINGSbinauthz_evaluation_moderI  s      r   rU  !RolloutFlagParser._EvaluationModen  sf     $499+E+E+GG 	//MM  &&$44G 995566r   c                     SU R                   R                  5       ;  a  / $ U R                   R                  nS U 5       $ )z"Parses --binauthz-policy-bindings.r   c              3   P   #    U  H  n[         R                  " US    S9v   M     g7f)r   )r   N)r   PolicyBinding).0bindings     r   	<genexpr>4RolloutFlagParser._PolicyBindings.<locals>.<genexpr>  s&      &G 	$$'&/:&s   $&)r   r   binauthz_policy_bindings)r   policy_bindingss     r   rX  !RolloutFlagParser._PolicyBindings~  s=    #499+E+E+GGiii88O& r   c                 ^    U R                   R                  R                  R                  5       $ )z#Parses resource argument operation.)r   CONCEPTS	operationrX   r   s    r   OperationRefRolloutFlagParser.OperationRef  s!    99''--//r   c                 .    U R                   R                  $ r   )r   projectr   s    r   ProjectRolloutFlagParser.Project  s    99r   c                 .    U R                   R                  $ r   )r   locationr   s    r   LocationRolloutFlagParser.Location  s    99r   c                 .    U R                   R                  $ )zParses --async flag.

The internal representation of --async is set to args.async_, defined in
calliope/base.py file.

Returns:
  bool, True if specified, False if unspecified.
)r   async_r   s    r   AsyncRolloutFlagParser.Async  s     99r   c                     SU R                   R                  5       ;  a  gSR                  U R                   R                  5      $ )zParses --schedule-offset.

Accepts ISO 8601 durations format. To read more,
https://cloud.google.com/sdk/gcloud/reference/topic/

Returns:
  str, in standard duration format, in unit of seconds.
r\   Nr  )r   r   r   schedule_offsetr   s    r   ScheduleOffset RolloutFlagParser.ScheduleOffset  s5     $))"<"<">><<		1122r   c                 .    U R                   R                  $ )zParses --validate-only flag.)r   validate_onlyr   s    r   ValidateOnlyRolloutFlagParser.ValidateOnly  s    99"""r   )r   r   r   N)6r   r   r   r   r   r	   	Namespacer   r   r   r   Messageboolr   r   r   r   r:   r   r   r   r   r  r   r  r$  r   r+  r%  r&  r5  r   r=  r6  rE  r>  rM  r@  rT  r8  r]  rU  r   rc  rX  r
   Resourcern  rr  rv  rz  r~  r  r   r   r   r   r   r   u  s   9:#--:>B>O>O:
&X-- 
&$ 
&x// 	~-- 	"C "~--99 ?3 ?M2^%H%H M2^1S 1+~<< +&$$88&&$S $*n:: *3n&J&J 3/++??/>++LL>"7//77//MM7 
x(D(DE 
0I.. 0s  	T 	3c 3#D #r   r   )r   r;   typingr   apitools.base.protorpcliter   &googlecloudsdk.api_lib.container.fleetr   googlecloudsdk.callioper   r   r   r	   *googlecloudsdk.command_lib.container.fleetr
   rs   googlecloudsdk.core4googlecloudsdk.generated_clients.apis.gkehub.v1alphar   r   r   r  r   r   r   r   r   <module>r     sX    2   / 7 / ( 4 5 S ) j ? ' #G GT
y# y#r   