
                          f    S r SSKrSSKJr  SSKJr   " S S5      r " S S\R                  5      rg)	z3Functions to add flags in cluster upgrade commands.    N)arg_parsers)parser_argumentsc                   6   \ rS rSrSrS\R                  4S jr\S 5       r	S r
S rS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S jrS	\R                  4S jrS	\R                  4S jrSrg)ClusterUpgradeFlags   z1Add flags to the cluster upgrade command surface.parserc                     Xl         g N_parser)selfr   s     Flib/googlecloudsdk/command_lib/container/fleet/clusterupgrade/flags.py__init__ClusterUpgradeFlags.__init__   s    L    c                     U R                   $ r
   r   r   s    r   r   ClusterUpgradeFlags.parser   s    <<r   c                 d    U R                   R                  SSS[        R                  " S5      S9  g)z,Adds the --show-linked-cluster-upgrade flag.z--show-linked-cluster-upgrade
store_trueNa^          Shows the cluster upgrade feature information for the current fleet as
        well as information for all other fleets linked in the same rollout
        sequence (provided that the caller has permission to view the upstream
        and downstream fleets). This displays cluster upgrade information for
        fleets in the current fleet's rollout sequence in order of furthest
        upstream to downstream.

        To view the cluster upgrade feature information for the rollout
        sequence containing the current fleet, run:

          $ {command} --show-linked-cluster-upgrade
        actiondefaulthelp)r   add_argumenttextwrapdedentr   s    r   AddShowLinkedClusterUpgrade/ClusterUpgradeFlags.AddShowLinkedClusterUpgrade"   s3    KK'__  	  r   c                     U R                   R                  S[        R                  " 5       [        R
                  " S5      S9  g)z(Adds the --default-upgrade-soaking flag.z--default-upgrade-soakingaz          Note: This flag only applies to Rollout Sequencing v1, not Rollout
        Sequencing v2 (which uses custom stages). If using Rollout
        Sequencing v1 and this flag is not provided, a default value of 7
        days will be used.

        Configures the default soaking duration for each upgrade propagating
        through the current fleet to become "COMPLETE". Soaking begins after
        all clusters in the fleet are on the target version, or after 30 days
        if all cluster upgrades are not complete. Once an upgrade state becomes
        "COMPLETE", it will automatically be propagated to the downstream
        fleet. Max is 30 days.

        To configure Rollout Sequencing for a fleet, this attribute must be
        set. To do this while specifying a default soaking duration of 7 days,
        run:

          $ {command} --default-upgrade-soaking=7d
        typer   N)r   r   r   Durationr   r   r   s    r   AddDefaultUpgradeSoakingFlag0ClusterUpgradeFlags.AddDefaultUpgradeSoakingFlag7   s9    KK#!!#__    r   c                     U(       a=  U R                   R                  5       nU R                  U5        U R                  U5        g U R                  U R                   5        g r
   )r   add_mutually_exclusive_group%_AddRemoveUpgradeSoakingOverridesFlag_AddUpgradeSoakingOverrideFlagsr   with_destructivegroups      r   AddUpgradeSoakingOverrideFlags2ClusterUpgradeFlags.AddUpgradeSoakingOverrideFlagsQ   sE    kk668e
007
**51
**4;;7r   r,   c                 P    UR                  SSS[        R                  " S5      S9  g)zjAdds the --remove-upgrade-soaking-overrides flag.

Args:
  group: The group that should contain the flag.
z"--remove-upgrade-soaking-overridesr   Na          Removes soaking time overrides for all upgrades propagating through the
        current fleet. Consequently, all upgrades will follow the soak time
        configured by `--default-upgrade-soaking` until new overrides are
        configured with `--add_upgrade_soaking_override` and
        `--upgrade_selector`.

        To remove all configured soaking time overrides, run:

          $ {command} --remove-upgrade-soaking-overrides
        r   r   r   r   r   r,   s     r   r(   9ClusterUpgradeFlags._AddRemoveUpgradeSoakingOverridesFlagY   s1     
,__ 
 
	  r   c                     UR                  [        R                  " S5      S9nU R                  U5        U R	                  U5        g)zwAdds upgrade soaking override flags.

Args:
  group: The group that should contain the upgrade soaking override flags.
a4          Upgrade soaking override.

        Defines a specific soaking time override for a particular upgrade
        propagating through the current fleet that supercedes the default
        soaking duration configured by `--default-upgrade-soaking`.

        To set an upgrade soaking override of 12 hours for the upgrade with
        name, `k8s_control_plane`, and version, `1.23.1-gke.1000`, run:

          $ {command}               --add-upgrade-soaking-override=12h               --upgrade-selector=name="k8s_control_plane",version="1.23.1-gke.1000"
        )r   N)	add_groupr   r   !_AddAddUpgradeSoakingOverrideFlag_AddUpgradeSelectorFlagr1   s     r   r)   3ClusterUpgradeFlags._AddUpgradeSoakingOverrideFlagsr   sB     OO 2 "O E 	**51  'r   c                 v    UR                  S[        R                  " 5       S[        R                  " S5      S9  g)zfAdds the --add-upgrade-soaking-override flag.

Args:
  group: The group that should contain the flag.
z--add-upgrade-soaking-overrideTa7          Overrides the soaking time for a particular upgrade name and version
        propagating through the current fleet. Set soaking to 0 days to bypass
        soaking and fast-forward the upgrade to the downstream fleet.

        See `$ gcloud topic datetimes` for information on duration formats.
        r"   requiredr   N)r   r   r#   r   r   r1   s     r   r5   5ClusterUpgradeFlags._AddAddUpgradeSoakingOverrideFlag   s:     
(!!#__  	  r   c                 `    UR                  S[        5       S[        R                  " S5      S9  g)zZAdds the --ugprade-selector flag.

Args:
  group: The group that should contain the flag.
z--upgrade-selectorTz        Name and version of the upgrade to be overridden where version is a
        full GKE version. Currently, name can be either `k8s_control_plane` or
        `k8s_node`.
        r9   N)r   UpgradeSelectorr   r   r1   s     r   r6   +ClusterUpgradeFlags._AddUpgradeSelectorFlag   s4     
__  	  	r   c                     U(       a=  U R                   R                  5       nU R                  U5        U R                  U5        gU R                  U R                   5        g)zAdds upstream fleet flags.N)r   r'   _AddUpstreamFleetFlag_AddResetUpstreamFleetFlagr*   s      r   AddUpstreamFleetFlags)ClusterUpgradeFlags.AddUpstreamFleetFlags   sE    kk668e
  '
%%e,
  -r   c                 V    UR                  S[        [        R                  " S5      S9  g)zXAdds the --upstream-fleet flag.

Args:
  group: The group that should contain the flag.
z--upstream-fleeta          The upstream fleet. GKE will finish upgrades on the upstream fleet
        before applying the same upgrades to the current fleet.

        To configure the upstream fleet, run:

        $ {command}             --upstream-fleet={upstream_fleet}
        r!   N)r   strr   r   r1   s     r   r@   )ClusterUpgradeFlags._AddUpstreamFleetFlag   s.     
__    r   c                 P    UR                  SSS[        R                  " S5      S9  g)z^Adds the --reset-upstream-fleet flag.

Args:
  group: The group that should contain the flag.
z--reset-upstream-fleetr   Na          Clears the relationship between the current fleet and its upstream
        fleet in the rollout sequence.

        To remove the link between the current fleet and its upstream fleet,
        run:

          $ {command} --reset-upstream-fleet
        r   r0   r1   s     r   rA   .ClusterUpgradeFlags._AddResetUpstreamFleetFlag   s1     
 __  	  r   r   N)F)__name__
__module____qualname____firstlineno____doc__r   ArgumentInterceptorr   propertyr   r   r$   r-   r(   r)   r5   r6   rB   r@   rA   __static_attributes__ r   r   r   r      s    9-AA   *48#772(#77(2#77*#77(.)9)M)M *#77r   r   c                   ,   ^  \ rS rSrSrU 4S jrSrU =r$ )r=      zGExtends the ArgDict type to properly parse --upgrade-selector argument.c                 F   > [         [        U ]  [        [        S.SS/SS9  g )N)nameversionrU   rV      )specrequired_keys
max_length)superr=   r   rE   )r   	__class__s    r   r   UpgradeSelector.__init__   s*    	/4)c*y) * r   rQ   )rI   rJ   rK   rL   rM   r   rP   __classcell__)r\   s   @r   r=   r=      s    O r   r=   )rM   r   googlecloudsdk.callioper   r   r   ArgDictr=   rQ   r   r   <module>ra      s4    :  / 4O Odk)) r   