
                             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  G d
 de	j                         Zd Zd Zd Zy)z(Utils for GKE Hub Service Mesh commands.    )absolute_import)division)unicode_literals)
exceptions)file_parsers)base)log)
console_ioc                   $    e Zd ZdZdZdZd Zd Zy)FleetDefaultMemberConfigObjectz(Fleet Default Member Config abstraction.
management	configapic                 D    	 | | j                      }|S # t        $ r Y y w xY wN)MANAGEMENT_KEYKeyError)selfr   s     <lib/googlecloudsdk/command_lib/container/fleet/mesh/utils.pyGetManagementz,FleetDefaultMemberConfigObject.GetManagement"   s3    ++,j       	c                 D    	 | | j                      }|S # t        $ r Y y w xY wr   )CONFIGAPI_KEYr   )r   r   s     r   GetConfigapiz+FleetDefaultMemberConfigObject.GetConfigapi*   s3    t))*i   r   N)__name__
__module____qualname____doc__r   r   r   r        r   r   r      s    0.-r   r   c                    t        | j                        dk7  rt        j                  d      | j                  d   }|j	                         }|t        j                  d      |j                         }|dk(  r"|j
                  j                  d      |_        |S |dk(  r"|j
                  j                  d      |_        |S |d	k(  r"|j
                  j                  d
      |_        |S ||dk(  r"|j
                  j                  d      |_        |S dj                  |      }t        j                  j                  |       |S )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                    t        | j                        dk7  rt        j                  d      | j                  d   }|j	                         }|j                         }||t        j                  d      ||t        j                  d      |j                         }|dk(  r!|j                  j                  d      |_        n|dk(  r!|j                  j                  d	      |_        n~|d
k(  r!|j                  j                  d      |_        nX||dk(  r!|j                  j                  d      |_        n0dj                  |      }t        j                  j                  |       |dk(  r"|j                  j                  d      |_        |S |dk(  r"|j                  j                  d      |_        |S ||dk(  r"|j                  j                  d      |_        |S dj                  |      }t        j                  |      )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*   r+   r,   istioCONFIG_API_ISTIOgatewayCONFIG_API_GATEWAYCONFIG_API_UNSPECIFIEDz<configapi [{}] is not supported. Use one of istio or gateway)r-   r.   r   r/   r   r   r0   r1   r   r2   r	   r3   r4   ConfigApiValueValuesEnum	configApi)r5   r6   r7   r   r   r8   r9   s          r   ParseFleetDefaultMemberConfigV2rC   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                 R   g }t        j                         }|st        j                  d      t	        | d      r(| j
                  r|j                  | j
                         n| j                  r| j                  j                  d      }nWt        j                         r-t        j                  |dd      }|j                  ||          nt        j                  dd      |st        j                  d	      |D ]*  }||vst        j                  d
j                  |             |S )aX  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   r/   hasattrrE   appendmembershipssplitr
   	CanPromptPromptChoicecalliope_exceptionsRequiredArgumentExceptionr2   )argsrM   all_membershipsindexrE   s        r   ParseMembershipsrV      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   rQ   (googlecloudsdk.command_lib.anthos.commonr   3googlecloudsdk.command_lib.container.fleet.featuresr   googlecloudsdk.corer	   googlecloudsdk.core.consoler
   YamlConfigObjectr   r:   rC   rV   r   r   r   <module>r^      sI    / &  ' E A D * # 2\%B%B ,8vXv,r   