
                         d   S r SSKJr  SSKJr  SSKJr  SSK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r\R,                  " \R.                  R0                  \R.                  R2                  \R.                  R4                  5       " S S\R6                  5      5       rg)z@Command to show Cluster Ugprade Feature information for a Fleet.    )absolute_import)division)unicode_literalsN)base)flags)	arg_utils)
exceptions)log)timesclusterupgradec                       \ rS rSrSr\R
                  " SSS.5      r\r\	S 5       r
S r\	S 5       r\	S	 5       r\	S
 5       rS r\	S 5       rS rSrg)Describe%   zGDescribe the clusterupgrade feature for a fleet within a given project.z}          Describe the Fleet clusterupgrade feature used for configuring
          fleet-based rollout sequencing.
          z{          To view the cluster upgrade feature information for the current fleet, run:

              $ {command}
          )DESCRIPTIONEXAMPLESc                 P    [         R                  " U 5      nUR                  5         g )N)clusterupgrade_flagsClusterUpgradeFlagsAddShowLinkedClusterUpgrade)parserr   s     6lib/surface/container/fleet/clusterupgrade/describe.pyArgsDescribe.Args9   s     44V<E	%%'    c                 p    [         R                  " USSS9nU R                  US9nU R                  X#U5      $ )Nz	--projectT)use_defaultsproject)r   GetFromNamespace
GetFeatureGetFleetClusterUpgradeInfo)selfargsr   features       r   RunDescribe.Run>   s9    (({NGoogo.G**7TBBr   c                     U $ )z'Extracts the project ID from the fleet. )fleets    r   GetProjectIDFromFleetDescribe.GetProjectIDFromFleetC   s	     Lr   c                 \   U R                   b=  U R                   R                  nUb$  [        R                  U5      U R                   l        U R                   HQ  nUR                   c  M  UR                   R                  nUc  M-  [        R                  U5      UR                   l        MS     U $ )z@Formats display strings for all cluster upgrade duration fields.)postConditionssoakingr   DisplayDurationgkeUpgradeOverrides)cluster_upgrade_specdefault_soakingoverrideoverride_soakings       r   FormatDurationsDescribe.FormatDurationsH   s     **6,;;CCo		$6>6N6N7
++3 )<<		 	 	,#22::',4,D,D-(
!
!
)	 =  r   c                     [         R                  " U 5      n[         R                  " U5      n[        R                  " SSU5      R                  5       $ )z0Returns the display string for a duration value.z[-PT] )r   ParseDurationFormatDurationresublower)proto_duration_stringdurationiso_durations      r   r/   Describe.DisplayDurationZ   sA     ""#89H''1L66'2|,2244r   c                     UR                  S5      (       a"  UR                  (       a  U R                  X5      $ [        R	                  X5      $ )@Gets Cluster Upgrade Feature information for the provided Fleet.show_linked_cluster_upgrade)IsKnownAndSpecifiedrD   GetLinkedClusterUpgradesr   GetClusterUpgradeInfo)r"   r)   r$   r#   s       r   r!   #Describe.GetFleetClusterUpgradeInfoa   sA     	  !>??,,**5::))%99r   c                 8   UR                   R                  nU(       d'  SR                  U 5      n[        R                  " U5      eU [
        R                  U5      S.nUR                  b0  UR                  R                  b  UR                  R                  US'   U$ )rC   z8Cluster Upgrade feature is not configured for Fleet: {}.)r)   specstate)rJ   r   formatr	   Errorr   r5   rK   )r)   r$   
fleet_specmsgress        r   rG   Describe.GetClusterUpgradeInfoj   s     ,,JGOO
c S!! ((4C }} W]]%A%A%M]]11c'lJr   c                    ^ ^^^^^	 [         R                  U5      m[        U/5      m	UUUU U	4S jmUUUU U	4S jm[         R                  UT5      nT" U5      SS nT" U5      SS nUU/-   U-   $ )zAGets Cluster Upgrade Feature information for the entire sequence.c                   > U R                  SS5      nU(       a  UR                  OSnU(       d  U /$ US   nUT;   a  U /$ TR                  U5        [        R	                  U5      nUT	:X  a  T
OTR                  US9n [        R                  X55      nT" U5      U /-   $ ! [        R                   a#  n[        R                  " U5        U /s SnA$ SnAff = f)z5Recursively gets information for the upstream Fleets.rJ   Nr   r   )getupstreamFleetsaddr   r*   r    rG   r	   rM   r
   warning)cluster_upgradeupstream_specupstream_fleetsupstream_fleetupstream_fleet_projectupstream_featureupstream_cluster_upgradee_UpTheStreamcurrent_projectr$   r"   visiteds           r   r`   7Describe.GetLinkedClusterUpgrades.<locals>._UpTheStream   s    %))&$7m8E444o   'q)n	7	"  kk.!'==nM $6 '=> 
!#+#A#A$
  236GGG  !A  !s   ?B   C4CCCc                 >  > U R                  SS5      nU(       a  UR                  OSnU(       d  U /$ US   nUT;   a  U /$ TR                  U5        [        R	                  U5      nUT:X  a  T	OT
R                  US9n[        R                  X55      nU /T" U5      -   $ )z7Recursively gets information for the downstream Fleets.rK   Nr   r   )rT   downstreamFleetsrV   r   r*   r    rG   )rX   downstream_statedownstream_fleetsdownstream_fleetdownstream_scope_projectdownstream_featuredownstream_cluster_upgrade_DownTheStreamra   r$   r"   rb   s          r   rl   9Describe.GetLinkedClusterUpgrades.<locals>._DownTheStream   s    (,,Wd;/?

+
+T     +1-	W	$  kk"#!)!?!?
"
 &8 '?@ 
 $,#A#A
$  0J!KKKr   N   )r   r*   setrG   )
r"   r)   r$   current_cluster_upgradeupstream_cluster_upgradesdownstream_cluster_upgradesrl   r`   ra   rb   s
   ` `   @@@@r   rF   !Describe.GetLinkedClusterUpgrades|   s     44U;O5'lGH H>L L> '<<UGL ,-D Ecr J"01H"I!""M!"
#	$
%	&r   r(   N)__name__
__module____qualname____firstlineno____doc__
frozendictdetailed_helpCLUSTER_UPGRADE_FEATUREfeature_namestaticmethodr   r%   r*   r5   r/   r!   rG   rF   __static_attributes__r(   r   r   r   r   %   s     P''
) 
- ),( (C
      " 5 5:  "Kr   r   )ry   
__future__r   r   r   r;   rz   googlecloudsdk.callioper   9googlecloudsdk.command_lib.container.fleet.clusterupgrader   r   3googlecloudsdk.command_lib.container.fleet.featuresfeature_base$googlecloudsdk.command_lib.util.apisr   googlecloudsdk.corer	   r
   googlecloudsdk.core.utilr   r|   ReleaseTracksReleaseTrackALPHABETAGADescribeCommandr   r(   r   r   <module>r      s     G &  ' 	  ( c T : * # * +  T..33T5F5F5I5I_|++ __r   