
                             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\	R                   5      rS rS rS rg)z(Utils for GKE Hub Service Mesh commands.    )absolute_import)division)unicode_literals)
exceptions)file_parsers)base)log)
console_ioc                   ,    \ rS rSrSrSrSrS rS rSr	g)	FleetDefaultMemberConfigObject   z(Fleet Default Member Config abstraction.
management	configapic                 D     X R                      nU$ ! [         a     g f = fN)MANAGEMENT_KEYKeyError)selfr   s     <lib/googlecloudsdk/command_lib/container/fleet/mesh/utils.pyGetManagement,FleetDefaultMemberConfigObject.GetManagement"   s1    ++,j       
c                 D     X R                      nU$ ! [         a     g f = fr   )CONFIGAPI_KEYr   )r   r   s     r   GetConfigapi+FleetDefaultMemberConfigObject.GetConfigapi*   s1    ))*i   r    N)
__name__
__module____qualname____firstlineno____doc__r   r   r   r   __static_attributes__r       r   r   r      s    0.-r$   r   c                    [        U R                  5      S:w  a  [        R                  " S5      eU R                  S   nUR	                  5       nUc  [        R                  " S5      eUR                  5       nUS:X  a"  UR
                  R                  S5      Ul        U$ US:X  a"  UR
                  R                  S5      Ul        U$ US	:X  a"  UR
                  R                  S
5      Ul        U$ Ub  US:X  a"  UR
                  R                  S5      Ul        U$ SR                  U5      n[        R                  R                  U5        U$ )Parses the ASM Fleet Default Member Config from a yaml file.

Args:
  yaml_config: Object containing arguments passed as flags with the command.
  msg: The gkehub messages package.

Returns:
  member_config: The Membership spec configuration
   1Input config file must contain one YAML document.r   z"Missing required field .management	automaticMANAGEMENT_AUTOMATICmanualMANAGEMENT_MANUALnot_installedMANAGEMENT_NOT_INSTALLEDunspecifiedMANAGEMENT_UNSPECIFIED!management [{}] is not supported.)lendatar   Errorr   ServiceMeshMembershipSpecManagementValueValuesEnumr   formatr	   statusPrint)yaml_configmsgconfigr   member_config
status_msgs         r   ParseFleetDefaultMemberConfigr?   2   sb    			a


N
OOA&##%*


?
@@ //1-
 ;%%??"	
 : 
/ X%%??	
 , 
# _$%%??&	
   
 Z=8%%??$	
  
 6==jIJJJZ 	r$   c                 0   [        U R                  5      S:w  a  [        R                  " S5      eU R                  S   nUR	                  5       nUR                  5       nUc  Uc  [        R                  " S5      eUb  Ub  [        R                  " S5      eUR                  5       nUS:X  a!  UR                  R                  S5      Ul        OUS:X  a!  UR                  R                  S	5      Ul        OUS
:X  a!  UR                  R                  S5      Ul        OZUb  US:X  a!  UR                  R                  S5      Ul        O0SR                  U5      n[        R                  R                  U5        US:X  a"  UR                  R                  S5      Ul        U$ US:X  a"  UR                  R                  S5      Ul        U$ Ub  US:X  a"  UR                  R                  S5      Ul        U$ SR                  U5      n[        R                  " U5      e)r&   r'   r(   r   z0Missing required field .management or .configapiz?Both .management and .configapi cannot be set at the same time.r)   r*   r+   r,   r-   r.   r/   r0   r1   istioCONFIG_API_ISTIOgatewayCONFIG_API_GATEWAYCONFIG_API_UNSPECIFIEDz<configapi [{}] is not supported. Use one of istio or gateway)r2   r3   r   r4   r   r   r5   r6   r   r7   r	   r8   r9   ConfigApiValueValuesEnum	configApi)r:   r;   r<   r   r   r=   r>   s          r   ParseFleetDefaultMemberConfigV2rH   m   s0    			a


N
OOA&##%*!!#)I-


M
NN	 5


I 
 //1-
 ;%%??"	
  X%%??	
 
 _$%%??&	
 
 Z=8%%??$	
  6==jIJJJZ  '%%>>	
 . 
% I%%>> 	
 " 
 I6%%>>$	
  
	 	GfY  

:
&&r$   c                    / n[         R                  " 5       nU(       d  [        R                  " S5      e[	        U S5      (       a-  U R
                  (       a  UR                  U R
                  5        OU R                  (       a  U R                  R                  S5      nO[[        R                  " 5       (       a*  [        R                  " USSS9nUR                  X#   5        O[        R                  " SS5      eU(       d  [        R                  " S	5      eU H-  nXB;  d  M
  [        R                  " S
R                  U5      5      e   U$ )aJ  Returns a list of memberships to which to apply the command, given the arguments.

When membership regionalization is complete, this will be deleted and replaced
with resources.ParseMemberships.

Args:
  args: object containing arguments passed as flags with the command

Returns:
  memberships: A list of membership name strings
z&No Memberships available in the fleet.
membership,zPlease specify a Membership:
T)optionsmessagecancel_optionz--membershipzCannot prompt a console for membership. Membership is required. Please specify `--memberships` to select at least one membership.z5At least one membership is required for this command.z*Membership {} does not exist in the fleet.)r   ListMembershipsr   r4   hasattrrJ   appendmembershipssplitr
   	CanPromptPromptChoicecalliope_exceptionsRequiredArgumentExceptionr7   )argsrR   all_membershipsindexrJ   s        r   ParseMembershipsr[      s#    +((*/	


C
DDT<  T__t'""((-K%%!2e /099
OQ Q
 



?A A  j(
6
=
=j
IK K  
 
r$   N)r"   
__future__r   r   r   googlecloudsdk.callioper   rV   (googlecloudsdk.command_lib.anthos.commonr   3googlecloudsdk.command_lib.container.fleet.featuresr   googlecloudsdk.corer	   googlecloudsdk.core.consoler
   YamlConfigObjectr   r?   rH   r[   r   r$   r   <module>rc      sI    / &  ' E A D * # 2\%B%B ,8vXv,r$   