
                             d Z ddl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ad
Zd Zd Zd Zy)z'Util package for memberships debug API.    N)
exceptions)network_services)
kubeconfig)util)api_util)base)
propertiesz0connectgateway_{project}_{location}_{membership}c                    t        j                  | ddd      }t        j                  |      }| j                  }| j
                  a|2t        j                  j                  j                  j                         }t
        t        j                  |      a	 t        j                  |      }|t%        d       y|j&                  j(                  s*t        j                   dj#                  |t
        |            |j&                  j(                  j*                  }t-        j.                  d|      }|$t        j                   dj#                  |            |j1                  d	      }|j1                  d
      }|j1                  d      }	t%        d|	z          t2        j4                  j7                  |	||      }
t8        j:                  j=                         }|
|j>                  vr't%        d       t@        j#                  |t
        |      }
|
|j>                  vr$t        j                   dj#                  |
            t%        d|
z          |
S # t        j                  $ r+ t        j                   dj#                  |t
        |            w xY w)z;Generate k8s context from membership, location and project.T)prompt
autoselectsearchNz~Failed finding membership. Please verify the membership, and location passed is valid.  membership={}, location={}, project={}zMembership resource is nonezThe cluster to the input membership does not belong to gke. Please verify the membership and location passed is valid.  membership={}, location={}, project={}.z&.*/projects/(.*)/.*/(.*)/clusters/(.*)z<Failed to parse gke cluster resource link. resourceLink = {}         zFound cluster=z+GKE cluster context not found in kubeconfig)projectlocation
membershipzFailed to find kube context of your cluster in your local kubeconfig file. Please make sure the kube context is generated. kube_context={}zUsing kube context=)!r   ParseMembership
fleet_utilMembershipShortnamer   r   r	   VALUEScoreGetMembershipLocationhubapi_utilGetMembershipapitools_exceptionsHttpNotFoundErrorr   Errorformatprintendpoint
gkeClusterresourceLinkrematchgroupcontainer_utilClusterConfigKubeContextkconfig
KubeconfigDefaultcontexts"CONNECT_GATEWAY_KUBECONTEXT_FORMAT)argsmembership_resource_namemembership_id
project_idmembership_resourcecluster_resourcelinkmatchercluster_project_idcluster_locationcluster_namecluster_contextr   s               8lib/googlecloudsdk/api_lib/container/fleet/debug_util.pyContextGeneratorr<   "   sp   !11
4D 001IJ-||*]](""''//335J,,-EFH%334LM  	
'(
		%	%	0	0


	EEKV8ZF
  -55@@MMHH/1E' _


F	$	%  }}Q']]1%q!,<'("00<<$&8/   "  J///	
788??X- @ O J/// 

	!6/2 
 /0	m 
	.	. 


	DDJF8ZE
 s   I >Jc                     t        j                         } | j                  j                  | j                  j                  dj                  t        j                  j                  j                  j                                           S )Nzprojects/{}/locations/global)parent)r   GetClientInstanceprojects_locations_meshesListMESSAGES_MODULE1NetworkservicesProjectsLocationsMeshesListRequestr    r	   r   r   r   r   )clients    r;   
ListMeshesrE   n   so    --/&		)	)	.	.NN/66$$,,002 O 
     c                    d}d}t               }|j                  D ]  }|j                  t        j                  d|j                        }|3|j                  d      t        k7  s|j                  d      | j                  k7  rjt        j                  d|j                        }||j                  d      }|j                  d      } ||fS  ||fS )z8Generate meshName from membership, location and project. z1.*projects/(.*)/locations/(.*)/memberships/(.*): r   r   z.+/meshes/(.*)r   )	rE   meshesdescriptionr%   r&   r'   r   r   name)r0   target_mesh_nametarget_project_numberrI   	mesh_infor6   matcher_news          r;   MeshInfoGeneratorrP   z   s    <&==i$hh<G }}Q8#w}}Q'74??'JHH.	?k		h$**1-%mmA. 
0	00) !( 
0	00rF   )__doc__r%   apitools.base.pyr   r   googlecloudsdk.api_libr    googlecloudsdk.api_lib.containerr   r+   r   r(   &googlecloudsdk.api_lib.container.fleetr   *googlecloudsdk.command_lib.container.fleetr   r   3googlecloudsdk.command_lib.container.fleet.featuresr   googlecloudsdk.corer	   r   r/   r<   rE   rP    rF   r;   <module>rZ      sF    . 	 > 3 B C E N D * * %W "IX1rF   