
                         T   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lmZ  ej,                  ej.                  j0                  ej.                  j2                         G d dej4                  ej4                               Zy)z0The command to update Config Management Feature.    )absolute_import)division)unicode_literals)util)base)	resources)utils)convert)log)
console_ioc                   \    e Zd ZdZej
                  Zej
                  Zed        Z	d Z
d Zy)Upgradea  Upgrade the version of the Config Management feature.

  Upgrade a specified membership to any supported version of the Config
  Management feature.

  ## EXAMPLES

  To upgrade a membership named `MEMBERSHIP_NAME`, run:

    $ {command} --membership=MEMBERSHIP_NAME --version=VERSION
  c                 `    t        j                  |       |j                  dt        dd       y )Nz	--versionz The version of ACM to change to.T)typehelprequired)r   AddMembershipResourceArgadd_argumentstr)clsparsers     8lib/surface/container/fleet/config_management/upgrade.pyArgszUpgrade.Args1   s/    &&v.
/	      c                 8   | j                         }|j                  }t        j                  |ddd      }t	        j
                  ||      \  }}| j                  |||      sy t        j                  dj                  | j                  j                  |||      dd       | j                  j                         }| j                  j                  |j                         j#                         D ]6  \  }}	t%        j&                  |      t%        j&                  |      k(  s2|	5|	}8 |j(                  | j                  j+                         |_        ||j(                  _        |}
t-        j.                  | |
| j0                  |      }| j3                  |
dg|       y )NT)prompt
autoselectsearchz[You are about to change the {} feature for membership {} from version "{}" to version "{}".)throw_if_unattendedcancel_on_nospec)
GetFeatureversionfeatures_baseParseMembershipr	   versions_for_member_validate_versionsr   PromptContinueformatfeaturedisplay_namemessagesMembershipFeatureSpec	hubclientToPyDictmembershipSpecsitemsr   MembershipPartialNameconfigmanagementConfigManagementMembershipSpecr
   ToV2MembershipFeaturemf_nameUpdateV2)selfargsfnew_version
membership_	cluster_vpatch	full_namer!   membership_keymembershipfeatures               r   RunzUpgrade.Run;   sk   A,,K..Td4J ,,Q
;LAy"":y+F	!!'LL%%z9k"
 ! MM//1E>>2213D3DEKKM	4

$
$Y
/''
34 N %#}}KKMe%0E"N55ndllE 	MM.6(,=>r   c                     ||k(  rEt         j                  j                  dj                  ||| j                  j
                               yy)NzAMembership {} already has version {} of the {} feature installed.FT)r   statusPrintr)   r*   r+   )r8   r<   r>   new_vs       r   r'   zUpgrade._validate_versionsb   s?    E	jj
M6*i)B)BC r   N)__name__
__module____qualname____doc__r	   CONFIG_MANAGEMENT_FEATURE_NAMEfeature_namer6   classmethodr   rC   r'    r   r   r   r       s<    
 55,00' %?Nr   r   N)rK   
__future__r   r   r   &googlecloudsdk.api_lib.container.fleetr   googlecloudsdk.callioper   *googlecloudsdk.command_lib.container.fleetr   <googlecloudsdk.command_lib.container.fleet.config_managementr	   3googlecloudsdk.command_lib.container.fleet.featuresr$   =googlecloudsdk.command_lib.container.fleet.membershipfeaturesmf_baser
   googlecloudsdk.corer   googlecloudsdk.core.consoler   ReleaseTracksReleaseTrackALPHABETAUpdateCommandr   rO   r   r   <module>r_      s    7 &  ' 7 ( @ N U Y Q # 2 D%%++T->->-C-CDIm))7+@+@ I EIr   