
    u                     ~   S 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\	R*                  " \	R,                  R.                  \	R,                  R0                  \	R,                  R2                  5       " S S\R4                  5      5       r " S S\R8                  5      rg)zBCommand to update Cluster Ugprade Feature information for a Fleet.    )absolute_import)division)unicode_literals)
exceptions)base)flags)	arg_utils)iso_duration)timesclusterupgradec                   j   ^  \ rS rSrSrSS0r\r\S 5       r	S r
U 4S jr\S 5       rS	 rS
 rSrU =r$ )Update"   zEUpdate the clusterupgrade feature for a fleet within a given project.EXAMPLESz            To update the clusterupgrade feature for the current fleet, run:

            $ {command} --default-upgrade-soaking=DEFAULT_UPGRADE_SOAKING
        c                     [         R                  " U 5      nUR                  5         UR                  SS9  UR	                  SS9  g )NT)with_destructive)clusterupgrade_flagsClusterUpgradeFlagsAddDefaultUpgradeSoakingFlagAddUpgradeSoakingOverrideFlagsAddUpstreamFleetFlags)parserr   s     4lib/surface/container/fleet/clusterupgrade/update.pyArgsUpdate.Args0   s@     44V<E	&&(	(($(?	6    c                     [         R                  " USSS9n[        U5      nUR                  U5      nU R	                  XA5        g )Nz	--projectT)use_defaults)r	   GetFromNamespace_EnableCommandGetWithForceEnabler   )selfargsproject
enable_cmdfeatures        r   Run
Update.Run7   s<    (({NG%J++G4GKKr   c                   > UR                   R                  =(       d    U R                  R                  5       n[        R                  X#5        U R                  X#5        U R                  X#5        U R                  R                  U R                  R                  US9S9nUR                   R                  b  SOSn[        [        U ]  U/U5      $ )z8Updates Cluster Upgrade Feature information for a fleet.)r   )speczspec.clusterupgrader*   )r*   r   messagesClusterUpgradeFleetSpecr   _HandleUpstreamFleets_HandleDefaultSoakTime_HandleUpgradeSoakingOverridesFeatureCommonFeatureSpecsuper)r"   r&   r#   cluster_upgrade_specpatchpath	__class__s         r   r   Update.Update=   s     	##Nt}}'L'L'N    <;''CMM!!]],,/ - 
 " E <<&&2 	 	
 %tfe44r   c                     U R                  S5      (       a  U R                  (       a  / Ul        gU R                  S5      (       a!  U R                  b  U R                  /Ul        ggg)z;Updates the Cluster Upgrade Feature's upstreamFleets field.reset_upstream_fleetupstream_fleetN)IsKnownAndSpecifiedr9   upstreamFleetsr:   )r#   r3   s     r   r-   Update._HandleUpstreamFleetsQ   sb     	  !788%%,.)  !122+-1-@-@,A) , 	3r   c                 "   UR                  S5      (       a  UR                  c  g[        R                  " [        R
                  " UR                  S95      nUR                  =(       d    U R                  R                  5       nX4l	        XBl        g)zCUpdates the Cluster Upgrade Feature's postConditions.soaking field.default_upgrade_soakingNseconds)
r;   r?   r   FormatDurationForJsonr
   DurationpostConditionsr+   ClusterUpgradePostConditionssoaking)r"   r#   r3   default_soakingpost_conditionss        r   r.   Update._HandleDefaultSoakTime_   s|     $$%>??''/11d&B&BCO 	++ 	8==557  .*9'r   c                    UR                  S5      (       a  UR                  (       a  / Ul        gUR                  S5      (       a  UR                  S5      (       a  UR                  b  UR                  b  [
        R                  " [        R                  " UR                  S95      nUR                  =(       d    / nU R                  R                  5       nU R                  R                  US9Ul        UR                  S   nUR                  S   nU R                  R                  XgS	9Ul        UU/-   nXl        ggggg)
z?Updates the ClusterUpgrade Feature's gkeUpgradeOverrides field. remove_upgrade_soaking_overridesadd_upgrade_soaking_overrideupgrade_selectorNr@   )rF   nameversion)rN   rO   )r;   rK   gkeUpgradeOverridesrL   rM   r   rB   r
   rC   r+    ClusterUpgradeGKEUpgradeOverriderE   rD   ClusterUpgradeGKEUpgradeupgrade)	r"   r#   r3   rF   existing_gke_upgrade_overridesnew_gke_upgrade_overrideupgrade_nameupgrade_versionnew_gke_upgrade_overridess	            r   r/   %Update._HandleUpgradeSoakingOverridesq   sK    	  !CDD1113.  !?@@$$%788--9!!-++


(I(I
Jg 
2
2
8b % --
8
8
:  --
4
4W
4
E - **62l--i8o)-)O)O *P *& #A
"D # 2K./ . : 9 	Ar    )__name__
__module____qualname____firstlineno____doc__detailed_helpCLUSTER_UPGRADE_FEATUREfeature_namestaticmethodr   r'   r   r-   r.   r/   __static_attributes____classcell__)r6   s   @r   r   r   "   sb     N   - ),7 75( B B:$"K "Kr   r   c                   *    \ rS rSrSrS rS rS rSrg)r       z4Base class for enabling the Cluster Upgrade Feature.c                 &    [         U l        Xl        g )N)ra   rb   r#   )r"   r#   s     r   __init___EnableCommand.__init__   s    /DIr   c                 J    U R                   R                  R                  5       $ )z:Required to initialize HubClient. See calliope base class.)r#   calliope_commandReleaseTrack)r"   s    r   rm   _EnableCommand.ReleaseTrack   s    99%%2244r   c                      U R                   R                  U R                  US95      $ ! [        R                   a<    U R                  U R                  R                  5       5        U R                  5       s $ f = f)zBGets the project's Cluster Upgrade Feature, enabling if necessary.)r$   )	hubclient
GetFeatureFeatureResourceNameapitools_exceptionsHttpNotFoundErrorEnabler+   r0   )r"   r$   s     r   r!   !_EnableCommand.GetWithForceEnable   sn    
^^&&

"
"7
"
3  00  kk$--'')*__s   '* AA:9A:)r#   rb   N)	r[   r\   r]   r^   r_   ri   rm   r!   rd   rZ   r   r   r    r       s    <5r   r    N)r_   
__future__r   r   r   apitools.base.pyr   rs   googlecloudsdk.callioper   9googlecloudsdk.command_lib.container.fleet.clusterupgrader   r   3googlecloudsdk.command_lib.container.fleet.featuresfeature_base$googlecloudsdk.command_lib.util.apisr	   googlecloudsdk.core.utilr
   r   ra   ReleaseTracksrm   ALPHABETAGAUpdateCommandr   EnableCommandMixinr    rZ   r   r   <module>r      s     I &  ' > ( c T : 1 * +  T..33T5F5F5I5InK\'' nKnKb\44 r   