
    r                     <   S r SSKJr  SSKJr  SSKJ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SKJr  SSKJr  SS	KJr  SSKJr  SSKJr  \R4                  " S5      r    S5S jrS rS6S jrS6S jr       S7S jr S6S jr!  S8S jr"S9S jr#S r$S6S jr%S r&S:S jr'S:S jr(S r)S;S jr*S6S  jr+     S<S! jr,    S=S" jr-S>S# jr.S>S$ jr/S% r0S& r1S' r2S( r3S) r4S* r5S+ r6S, r7S- r8S>S. jr9S/ r:S?S0 jr;S?S1 jr<S2 r=S?S3 jr>S4 r?g)@z3Functions for resource arguments in fleet commands.    )absolute_import)division)unicode_literalsN)util)arg_parsers)base)
exceptions)concepts)deps)api_util)concept_parsers)
properties)
console_ioz/locations/([a-z0-9-]+)/c                    [         R                  " 5       (       d&  [        R                  " USR	                  U5      5      eU cC  [
        R                  " 5       u  pU(       a%  [        R                  " SR	                  U5      5      eU (       d  [        R                  " S5      e[         R                  " [        U 5      UUS9nUb  X   $ S$ )a  Prompt the user for a membership from a list of memberships in the fleet.

This method is referenced by fleet and feature commands as a fallthrough
for getting the memberships when required.

Args:
  memberships: List of memberships to prompt from
  flag: The name of the membership flag, used in the error message
  message: The message given to the user describing the prompt.
  cancel: Whether to include a "cancel" option.

Returns:
  The membership specified by the user (str), or None if unable to prompt.

Raises:
  OperationCancelledError if the prompt is cancelled by user
  RequiredArgumentException if the console is unable to prompt
zvCannot prompt a console for membership. Membership is required. Please specify `{}` to select at least one membership.NLocations {} are currently unreachable. Please specify memberships using `--location` or the full resource name (projects/*/locations/*/memberships/*)z&No Memberships available in the fleet.)messagecancel_option)r   	CanPromptcalliope_exceptionsRequiredArgumentExceptionformatr   ListMembershipsFullr	   ErrorPromptChoiceMembershipPartialNames)membershipsflagr   cancelunreachableidxs         ;lib/googlecloudsdk/command_lib/container/fleet/resources.pyPromptForMembershipr"   '   s    , 
				

7
7 ''-vd|6 6 ';;=K45;VK5HJ J 



C
DD[)	# !_	6$6    c                 Z    U  Vs/ s H  n[         R                  " U5      PM     sn$ s  snf )z?Converts a list of full membership names to LOCATION/ID format.)r   MembershipPartialName)r   ms     r!   r   r   U   s%    1<	=A$
$
$Q
'	==	=s    (c                     [         R                  " S5      [         R                  " [        R                  R
                  R                  5      /n[        R                  " SU (       a  U US9$ SUS9$ )zCreate location attributes in resource argument.

Args:
  help_text: If set, overrides default help text for `--location`

Returns:
  Location resource argument parameter config
z
--locationlocationzLocation for the {resource}.)name	help_textfallthroughs)	r   ArgFallthroughPropertyFallthroughr   VALUESgkehubr(   r
    ResourceParameterAttributeConfig)r*   r+   s     r!   _LocationAttributeConfigr1   Z   si     ,'
z0077@@A, 
	2	2&	
! !-K
! !r#   c                 B    [         R                  " U U(       a  US9$ SS9$ )zCreate basic attributes in resource argument.

Args:
  attr_name: Name of the resource
  help_text: If set, overrides default help text

Returns:
  Resource argument parameter config
Name of the {resource}.)r)   r*   )r
   r0   )	attr_namer*   s     r!   _BasicAttributeConfigr5   m   s0     
	2	2&	
I I-F
I Ir#   c                 >   SnU(       a  UnOU(       a  SnO	U(       a  Sn[         R                  " SUSSS[         R                  [        U5      [	        U(       a  SOSU5      S9n	[
        R                  R                  UU	U(       a  S	OS
UUS9R                  U 5        g)=Add resource arg for projects/{}/locations/{}/memberships/{}.--membershipMEMBERSHIP_NAMEz--membershipsz%gkehub.projects.locations.memberships
membershipr   T)api_versionresource_nameplural_namedisable_auto_completers
projectsIdlocationsIdmembershipsIdz8The group of arguments defining one or more memberships.z-The group of arguments defining a membership.pluralrequiredN	r
   ResourceSpec DEFAULT_PROJECT_ATTRIBUTE_CONFIGr1   r5   r   ConceptParserForResourceAddToParser)
parserr;   
positionalrC   membership_requiredflag_overridemembership_helplocation_help	flag_namespecs
             r!   AddMembershipResourceArgrS   }   s     )I!II			- "::*=9)!-|_F	
G$ ++
	 AD" , $ %0K$7r#   c                 D   U R                  S5      (       a  gU R                  S5      (       a"  [        R                  U R                  5       b  gU R                  S5      (       a"  [        R                  U R
                  5       b  gU R                  S5      (       aA  [        U R                   Vs/ s H  n[        R                  U5      SLPM     sn5      (       a  gU R                  U5      (       a'  [        R                  U R                  U5      5       b  ggs  snf )z;Returns whether a membership location is specified in args.r(   Tr:   Nr9   r   F)	IsSpecifiedIsKnownAndSpecified_LOCATION_REsearchr:   r9   allr   GetValue)argsrN   r&   s      r!   MembershipLocationSpecifiedr\      s   	j!!	l++0C0C
oo1"1#	/00\5H5H
6#'6(	m,,373C3CD3Ca|1T)3CD2F 2F	m,,1D1D
mmM"2$+/20	 Es   1!Dc                    [        U 5      (       a/  [        R                  " [        U 5      5      (       a  [        U 5      $ U R	                  U5      (       a  [        X5      nOGU R	                  S5      (       a  U R                  nO$U R	                  S5      (       a  U R                  nOg[        R                  " US9u  pEU(       a%  [        R                  " SR                  U5      5      eU(       d  [        R                  " S5      e/ nU H0  nU[        R                  " U5      :X  d  M  UR                  U5        M2     U(       d%  [        R                  " SR                  U5      5      e[        U5      S:  a  [!        U5      eUS	   $ )
a$  Searches the fleet for an ambiguous membership provided in args.

Only necessary if location is ambiguous, i.e.
MembershipLocationSpecified(args) is False, or this behavior is necessary for
backwards compatibility. If flag_override is unset, the argument must be
called `MEMBERSHIP_NAME` if positional and  `--membership` otherwise. Runs a
ListMemberships API call to verify the membership exists.

Args:
  args: arguments provided to a command, including a membership resource arg
  flag_override: a custom membership flag
  filter_cluster_missing: whether to filter out memberships that are missing
  a cluster.

Returns:
  A membership resource name string
    (e.g. projects/x/locations/y/memberships/z)

Raises:
  googlecloudsdk.core.exceptions.Error: unable to find the membership
    in the fleet
r9   r:   Nfilter_cluster_missingr   &No memberships available in the fleet.%Membership {} not found in the fleet.   r   )r\   r   GetMembershipMembershipResourceNamerV   getattrr9   r:   r   r	   r   r   r   MembershipShortnameappendlenAmbiguousMembershipError)r[   rN   r_   arg_membershipall_membershipsunavailablefoundexisting_memberships           r!   SearchMembershipResourcero      sW   2 !&&8+A+AT",$ ,$!$''	m,,T1N 122))N--__N!)!=!=3"5/



2396+3FH H 



C
DD %,112EFFll&' - 



/66~FH H
5zA~
">
22	q/r#   c                 F   U R                  S5      (       a  U R                  nOg[        R                  " US9u  p4U(       a%  [        R
                  " SR                  U5      5      eU(       d  [        R
                  " S5      e/ nU H  n/ nU H0  nU[        R                  " U5      :X  d  M  UR                  U5        M2     U(       d%  [        R
                  " SR                  U5      5      e[        U5      S:  a  [        U5      eUR                  US   5        M     U$ )	a  Searches the fleet for the membership resources provided in args.

Only necessary if location is ambiguous, i.e.
MembershipLocationSpecified(args) is
False. Assumes the argument is called `--membership`, `--memberships` if
plural, or `MEMBERSHIP_NAME` if positional. Runs ListMemberships API call to
verify the membership exists.

Args:
  args: arguments provided to a command, including a membership resource arg
  filter_cluster_missing: whether to filter out memberships that are missing
  a cluster.

Returns:
  A list of membership resource names
    (e.g. ["projects/x/locations/y/memberships/z"])

Raises:
  googlecloudsdk.core.exceptions.Error: unable to find a membership
    in the fleet
r   Nr^   zLocations [{}] are currently unreachable. Please specify memberships using `--location` or the full resource name (projects/*/locations/*/memberships/*)r`   ra   rb   r   )rV   r   r   r   r	   r   r   r   rf   rg   rh   ri   )	r[   r_   arg_membershipsrk   rl   r   rj   rm   rn   s	            r!   SearchMembershipResourcesPluralrr      s   , 
m,,&&O!)!=!=3"5/



2396+3FH H 



C
DD+'nE.	4334GH	H()  / 
1
8
8
HJ J	Ua$^44uQx  ( 
r#   c                 L    [         R                  " SR                  U 5      5      $ )NzMultiple memberships named {} found in the fleet. Please use `--location` or full resource name (projects/*/locations/*/memberships/*) to specify.)r	   r   r   )r:   s    r!   ri   ri   %  s&    			<=CVJ=O
Q Qr#   c                    U R                  U5      (       a7  U R                  R                  U5      R                  5       R	                  5       $ U R                  S5      (       a2  U R                  R
                  R                  5       R	                  5       $ U R                  R                  R                  5       R	                  5       $ )a  Gets a membership resource name from a membership resource argument.

If flag_override is unset, the argument must be `MEMBERSHIP_NAME` if
positional and `--membership` otherwise.

Args:
  args: arguments provided to a command, including a membership resource arg
  flag_override: a custom membership flag name

Returns:
  The membership resource name (e.g. projects/x/locations/y/memberships/z)
r9   )rV   CONCEPTSrZ   ParseRelativeNamemembership_namer:   )r[   rN   s     r!   rd   rd   ,  s     
m,,==!!-0668EEGG	/00==((..0==??		!	!	'	'	)	6	6	88r#   c                     U R                   R                  R                  5        Vs/ s H  oR                  5       PM     sn$ s  snf )a
  Gets a list of membership resource names from a --memberships resource arg.

Args:
  args: arguments provided to a command, including a plural memberships
    resource arg

Returns:
  A list of membership resource names (e.g.
  projects/x/locations/y/memberships/z)
)ru   r   rv   rw   )r[   r&   s     r!   PluralMembershipsResourceNamesrz   @  s6     %)MM$=$=$C$C$E	F$Eq..
$E	FF	Fs   Ac                     U [         R                  R                  L =(       a&    [        R                  " 5       [        R
                  :H  $ )aE  Returns whether regional memberships should be included.

This will be updated as regionalization is released, and eventually deleted
when it is fully rolled out.

Args:
  track: The release track of the command

Returns:
  A bool, whether regional memberships are supported for the release track in
  the active environment
)calliope_baseReleaseTrackALPHAcmd_utilAPIEndpointAUTOPUSH_API)tracks    r!   UseRegionalMembershipsr   N  s9     =--33
3 
7 5 557r#   c                 X    / SQnU[         R                  R                  L =(       a    X;   $ )al  Returns whether project is allowlisted for regional memberships in Prod.

This will be updated as regionalization is released, and eventually deleted
when it is fully rolled out.

Args:
   project: The parent project ID of the membership
  track: The release track of the command

Returns:
  A bool, whether project is allowlisted for regional memberships in Prod
)zgkeconnect-proberzgkeconnect-e2ezgkehub-cep-testzconnectgateway-gke-testingzxuebinz-gkezkolber-anthos-testingzanthonytong-hub2
wenjuntoy2zhub-regionalisation-testzhub-regionalisation-test-2za4vm-ui-tests-3m4a-ui-playground-1zanthos-cl-e2e-testsza4vm-ui-playgroundr   )r|   r}   r~   )projectr   prod_regional_allowlists      r!   InProdRegionalAllowlistr   _  s0    " 
-,,22	2 
*(*r#   c                    [        5       nU  Hf  n[        R                  " SU5      nU(       d%  [        R                  " SR                  U5      5      eUR                  UR                  S5      5        Mh     [        U5      $ )a  Returns all unique project identifiers of the given membership names.

ListMemberships should use the same identifier (all number or all ID) in
membership names. Users can convert their own project identifiers for manually
entering arguments.

Args:
  memberships: A list of full membership resource names

Returns:
  A list of project identifiers in the parents of the memberships

Raises: googlecloudsdk.core.exceptions.Error if unable to parse any membership
name
z2projects\/(.*)\/locations\/(.*)\/memberships\/(.*)zMUnable to parse membership {} (expected projects/*/locations/*/memberships/*)rb   )	setrematchr	   r   r   addgrouplist)r   projectsr&   r   s       r!   GetMembershipProjectsr     sm      U(aHHJANE EEKVAYP PLLQ   
hr#   c                     U R                  U5      (       a&  [        U 5      (       a  [        U 5      $ [        U 5      $ [        R
                  " US5      e)a  Returns a membership on which to run the command, given the arguments.

This function is currently only used by the unregister command. This logic
should be combined with the feature ParseMembership function in a later CL.
Allows for `MEMBERSHIP_NAME` positional flag.

Args:
  args: object containing arguments passed as flags with the command
  membership_flag: the membership flag used to pass in the memberhip resource

Returns:
  membership: A membership resource name string

Raises:
  exceptions.Error: no memberships were found or memberships are invalid
  calliope_exceptions.RequiredArgumentException: membership was not provided
z(membership is required for this command.)rV   r\   rd   ro   r   r   )r[   membership_flags     r!   ParseMembershipArgr     sQ    ( 
o.."4((#D))%d++55A	C Cr#   c                     [         R                  " S[        R                  " [        R
                  SS9/U (       a  U S9$ SS9$ )zCreate basic attributes that fallthrough location to global in resource argument.

Args:
  help_text: If set, overrides default help text

Returns:
  Resource argument parameter config
r(   z%global is the only supported location)functionhintr3   )r)   r+   r*   )r
   r0   r   Fallthroughr   DefaultToGlobal)r*   s    r!   '_DefaultToGlobalLocationAttributeConfigr     sP     
	2	2


//: '		
 	 .G	
 	r#   c                     [         R                  " SUSSS[         R                  [        5       [	        SU5      S9n[
        R                  R                  UUSSUUSS	0S
9R                  U 5        g)z8Add resource arg for projects/{}/locations/{}/scopes/{}.z gkehub.projects.locations.scopesscopescopesT)r;   r<   r=   r>   r?   r@   scopesIdz0The group of arguments defining the Fleet Scope.Fr(    )rC   rD   r   flag_name_overridesN	r
   rF   rG   r   r5   r   rH   rI   rJ   )rK   rQ   r;   
scope_helprD   r   rR   s          r!   AddScopeResourceArgr     s}     
		("::9;$Wj9	
$ ++
8%r* , 	 Kr#   c                     [         R                  " SUSSS[         R                  [        5       [	        SS5      [	        SU5      S9	n[
        R                  R                  UUSS	US
S0S9R                  U 5        g)zFAdd resource arg for projects/{}/locations/{}/scopes/{}/namespaces/{}.z+gkehub.projects.locations.scopes.namespaces	namespace
namespacesTr   the)r;   r<   r=   r>   r?   r@   r   namespacesIdz4The group of arguments defining the Fleet Namespace.Fr(   r   )rC   rD   r   Nr   )rK   rQ   r;   namespace_helprD   rR   s         r!   AddScopeNamespaceResourceArgr     s     
		3"::9;$We4(nE

$ ++
<%r* ,  Kr#   c                     Sn[         R                  " SUSSS[         R                  [        5       [	        SS5      [	        SU5      S9	n[
        R                  R                  UUS	S
SS9R                  U 5        g)zLAdd resource arg for projects/{}/locations/{}/scopes/{}/rbacrolebindings/{}.NAMEz1gkehub.projects.locations.scopes.rbacrolebindingsrbacrolebindingrbacrolebindingsTr   r   )r;   r<   r=   r>   r?   r@   r   rbacrolebindingsId3The group of arguments defining an RBACRoleBinding.FrB   NrE   rK   r;   rbacrb_helprQ   rR   s        r!   AddScopeRBACResourceArgr     s     )			9%$"::*,$Wb1./@+N

$ ++
; ,  Kr#   c                     Sn[         R                  " SUSSS[         R                  [        5       [	        SS5      [	        SU5      S9	n[
        R                  R                  UUS	S
SS9R                  U 5        g)r7   r   z5gkehub.projects.locations.namespaces.rbacrolebindingsr   r   Tr   r   )r;   r<   r=   r>   r?   r@   r   r   r   FrB   NrE   r   s        r!   AddRBACResourceArgr   #  s     )			=%$"::*,(b9./@+N	
P$ ++
; , 
 ![(r#   c                     [        S5      R                  U 5        U R                  5       n[        S5      R                  U5        [	        S5      R                  U5        g)zzAdds flags to an argparse parser for updating namespace labels.

Args:
  parser: The argparse parser to add the flags to.
r   N)_GetUpdateNamespaceLabelsFlagrJ   add_mutually_exclusive_group_GetClearNamespaceLabelsFlag_GetRemoveNamespaceLabelsFlag)rK   remove_groups     r!   AddUpdateNamespaceLabelsFlagsr   9  sP      ,88@446,{+77  ,88Fr#   c                      [         R                  " SS9n U R                  [        S5      5        U R                  [	        S5      5        [        S5      U /$ )NT)mutexr   )r|   ArgumentGroupAddArgumentr   r   r   )r   s    r!   UpdateScopeLabelsFlagsr   G  sW    ,,48,"7+ #G, $G,
 r#   c                 8    [        S5      R                  U 5        g)zzAdds flags to an argparse parser for creating namespace labels.

Args:
  parser: The argparse parser to add the flags to.
r   N)_GetCreateNamespaceLabelsFlagrJ   )rK   s    r!   AddCreateNamespaceLabelsFlagsr   U  s      ,88@r#   c                      [        S5      /$ )Nr   )r    r#   r!   CreateScopeLabelsFlagsr   ^  s    
'
0	11r#   c           	      j    Sn[         R                  " SR                  U5      SSR                  XS9S9$ )Nnamespace-labelsz
--clear-{}
store_truea            Remove all {resource_type}-level labels from the cluster namespace. If `--update-{labels}` is also specified then
          `--clear-{labels}` is applied first.

          For example, to remove all labels:

              $ {{command}} {resource_type}_name --clear-{labels}

          To remove all existing {resource_type}-level labels and create two new labels,
          ``foo'' and ``baz'':

              $ {{command}} {resource_type}_name --clear-{labels} --update-{labels} foo=bar,baz=qux
          labelsresource_type)actionhelp)r|   Argumentr   r   labels_names     r!   r   r   b  s@    "+			+& fKfE
G Gr#   c                     Sn[         R                  " SR                  U5      S[        R                  " 5       [        R
                  SR                  XS9S9$ )Nr   z--remove-{}KEYz      List of {resource_type}-level label keys to remove in the cluster namespace. If a label does not exist it is
      silently ignored. If `--update-{labels}` is also specified then
      `--update-{labels}` is applied first.
      r   metavartyper   r   )r|   r   r   r   ArgListUpdateActionr   s     r!   r   r   v  sU    "+			;' %%
 &&
A	
C 	Cr#   c           
          Sn[         R                  " SR                  U5      S[        R                  " 5       [        R
                  SR                  U S9S9$ )z?Makes a base.Argument for the `--update-namespace-labels` flag.r   z--update-{}	KEY=VALUEz      List of {resource_type}-level label KEY=VALUE pairs to update in the cluster namespace. If a
      label exists, its value is modified. Otherwise, a new label is'
      created.r   r   r|   r   r   r   ArgDictr   r   s     r!   r   r     sS    "+			;' %% &}&5
7 7r#   c           
          Sn[         R                  " SR                  U5      S[        R                  " 5       [        R
                  SR                  U S9S9$ )Nr   z--{}r   zH      List of {resource_type}-level label KEY=VALUE pairs to add.
      r   r   r   r   s     r!   r   r     sO    "+			mmK  %%

&}&
-
/ /r#   c                 f    U R                   R                  R                  5       R                  5       $ )a[  Gets an RBACRoleBinding resource name from a resource argument.

Assumes the argument is called NAME.

Args:
  args: arguments provided to a command, including an rbacRB resource arg

Returns:
  The rbacRB resource name (e.g.
  projects/x/locations/global/namespaces/y/rbacrolebindings/z
  projects/x/locations/global/scopes/y/rbacrolebindings/z)
)ru   r)   rv   rw   r[   s    r!   RBACResourceNamer     s&     
			!	!	#	0	0	22r#   c                     Sn[         R                  " SUSSS[         R                  [        5       [	        SS5      [	        SU5      S9	n[
        R                  R                  UUS	S
SS9R                  U 5        g)zIAdd resource arg for projects/{}/locations/{}/memberships/{}/bindings/{}.BINDINGz.gkehub.projects.locations.memberships.bindingsbindingbindingsTr:   r   )r;   r<   r=   r>   r?   r@   rA   
bindingsIdz5The group of arguments defining a Membership Binding.FrB   NrE   )rK   r;   binding_helprQ   rR   s        r!   AddMembershipBindingResourceArgr     s     )			6"::*,),;&y,?	
A$ ++
= , 
 ![(r#   c                 f    U R                   R                  R                  5       R                  5       $ )a  Gets a Membership-Binding resource name from a resource argument.

Assumes the argument is called BINDING.

Args:
  args: arguments provided to a command, including a Binding resource arg

Returns:
  The Binding resource name (e.g.
  projects/x/locations/l/memberships/y/bindings/z)
)ru   r   rv   rw   r   s    r!   MembershipBindingResourceNamer     s&     
			$	$	&	3	3	55r#   c                     [         R                  " SUSSS[         R                  [        5       [	        S5      S9n[
        R                  R                  SUSSSSS	0S
9R                  U 5        g)z:Add resource arg for projects/{}/locations/{}/rollouts/{}.z"gkehub.projects.locations.rolloutsrolloutrolloutsT)r;   r<   r=   r>   r?   r@   
rolloutsIdz0The group of arguments defining a Fleet Rollout.Fr(   r   r)   resource_spec
group_helprC   rD   r   Nr   rK   r;   rR   s      r!   AddRolloutResourceArgr     sx     
		*"::9;&y1	
$ ++C%r* ,  Kr#   c                     [         R                  " SUSSS[         R                  [        5       [	        S5      S9n[
        R                  R                  SUSSSS	S
0S9R                  U 5        g)zBAdd resource arg for projects/{}/locations/{}/rolloutSequences/{}.z*gkehub.projects.locations.rolloutSequencesrolloutSequencerolloutSequencesTrollout_sequence)r;   r<   r=   r>   r?   r@   rolloutSequencesIdz3The group of arguments defining a Rollout Sequence.Fr(   r   r   Nr   r   s      r!   AddRolloutSequenceResourceArgr     sy     
		2%$"::9;./AB	
$ ++F%r* ,  Kr#   c                 f    U R                   R                  R                  5       R                  5       $ )a.  Gets a RolloutSequence resource name from a resource argument.

Assumes the argument is called ROLLOUTSEQUENCE.

Args:
  args: arguments provided to a command, including a RolloutSequence resource
    arg

Returns:
  The RolloutSequence resource name (e.g.
  projects/x/locations/l/rolloutSequences/z)
)ru   rolloutsequencerv   rw   r   s    r!   RolloutSequenceResourceNamer     s&     
	&	&	,	,	.	;	;	==r#   c                     Sn[         R                  " SUSS[         R                  [        5       [	        S5      S9n[
        R                  R                  UUSSSS	S
0S9R                  U 5        g)zGAdd resource arg for projects/{}/locations/{}/workloadidentitypools/{}.WORKLOAD_IDENTITY_POOLz,iam.projects.locations.workloadIdentityPoolsworkloadidentitypoolworkloadidentitypools)r;   r<   r=   r?   r@   workloadIdentityPoolsIdz9The group of arguments defining a Workload Identity Pool.FTr(   r   r   NrE   )rK   r;   rQ   rR   s       r!   "AddWorkloadIdentityPoolResourceArgr    s{     ')			4*)::*,34JK
$ ++L%r* ,  Kr#   c                 f    U R                   R                  R                  5       R                  5       $ )aG  Gets a WorkloadIdentityPool resource name from a resource argument.

Assumes the argument is called WORKLOAD_IDENTITY_POOL.

Args:
  args: arguments provided to a command,
  including a WorkloadIdentityPool resource arg

Returns:
  The WorkloadIdentityPool resource name (e.g.
  projects/x/locations/l/workloadidentitypools/z)
)ru   workload_identity_poolrv   rw   r   s    r!    WorkloadIdentityPoolResourceNamer  ,  s&     
	-	-	3	3	5	B	B	DDr#   )Nr8   zPlease specify a membership:
T)r   )v1FFFr   r   r   )r   F)F)N)r9   )r   r  r   FN)	NAMESPACEr  r   F)r  r   )r  )@__doc__
__future__r   r   r   r   &googlecloudsdk.api_lib.container.fleetr   googlecloudsdk.callioper   r   r|   r	   r    googlecloudsdk.calliope.conceptsr
   r   *googlecloudsdk.command_lib.container.fleetr   r   (googlecloudsdk.command_lib.util.conceptsr   googlecloudsdk.corer   googlecloudsdk.core.consoler   compilerW   r"   r   r1   r5   rS   r\   ro   rr   ri   rd   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r   r#   r!   <module>r     sX   : &  ' 	 7 / 9 E 5 1 ? G D * * 2zz45 %)+ @#(7\>
!&I" *.(-$)16+--/+-!8H( ,.499x2jQ9(G7"*D4C<. 
B <0),GA2G(C7	/3 ),600> 2Er#   