
                         :   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  \R*                  \R,                  " \R.                  R0                  5       " S S\R2                  5      5       5       rg)z(Create Dataproc on GDCE cluster command.    )absolute_import)division)unicode_literalsN)dataproc)
exceptions)base)api_util)clusters)flags)gke_workload_identity)	instances)logc                   V    \ rS rSrSrSS0r\S 5       rS r\	S 5       r
\	S 5       rS	rg
)Create#   z+Create a Dataproc instance on GDCE cluster.EXAMPLESz          Create a Dataproc on GDCE cluster in us-central1 in
          the same project and region with default values:

            $ {command} my-instance --region=us-central1 --gdce-cluster=my-gdce-cluster
          c                 $   [         R                  " U R                  5       5      n[        R                  R                  U5        [        R                  " USUR                  5        [        R                  " USS9  [        R                  " U5        g )Ncreate35m)default)dpDataprocReleaseTrackr   
ASYNC_FLAGAddToParserr   AddInstanceResourceArgapi_versionAddTimeoutFlagAddGdceClusterResourceArg)clsparserr   s      (lib/surface/dataproc/instances/create.pyArgsCreate.Args2   sc    {{3++-.HOO'	  83G3GH 
/	##F+    c           
         [         R                  " U R                  5       5      nUR                  R                  R                  5       nUR                  R                  R                  5       n[        R                  X$U5      n[        R                  XU5        UR                  R                  UUR                  UR                  S9n[        R                  " UUUUR                   UR"                  SS S9n[$        R&                  " U5      $ )N)virtualClusterConfigclusterName	projectIdF)enable_create_on_gke action_on_failed_primary_workers)r   r   r   CONCEPTSinstanceParsegdce_clusterr   _GetVirtualClusterConfig_SetupWorkloadIdentitymessagesClusterr(   r)   r
   CreateClusterasync_timeoutr   ConvertClusterToInstance)selfargsr   instance_refgdce_cluster_refvirtual_cluster_configclusters          r"   Run
Create.Run=   s    {{4,,./H==))//1L}}11779#<<D* !!$6FG''3 ,,(( ( *G
 $$")-/G --g66r%   c                 "   [         R                  " SUR                  5       5      nU(       a  SR                  US   US   S9n[        R
                  " U5      nU R                  R                  UR                  5       UR                  R                  UR                  R                  S9nU R                  R                  US9nU R                  R                  US9nU$ [        R                  " S	R                  UR                  5       5      5      e)
a>  Get dataproc virtual cluster configuration for GDCE based clusters.

Args:
  dataproc: Dataproc object that contains client, messages, and resources
  gdce_cluster_ref: GDCE cluster reference.
  args: Arguments parsed from argparse.ArgParser.

Returns:
  virtual_cluster_config: Dataproc virtual cluster configuration
z*projects/(.*)/locations/(.*)/clusters/(.*)z?projects/{project_id}/locations/global/memberships/{membership}      )
project_id
membership)gdcEdgeMembershipTargetgdcEdgeWorkloadIdentityPoolgdcEdgeIdentityProvider)gdceClusterConfig)kubernetesClusterConfigzInvalid GDCE cluster: {})researchRelativeNameformatr	   GetMembershipr2   GdceClusterConfig	authorityworkloadIdentityPoolidentityProviderKubernetesClusterConfigVirtualClusterConfigr   Error)	r   r;   r9   matchesmembership_full_namecontainer_membershipgdce_cluster_configkubernetes_cluster_configr<   s	            r"   r0   Create._GetVirtualClusterConfigW   s    ii4%%'G 
K6WQZGAJ6?  &334HI$--??"2"?"?"A&:&D&D&Y&Y"6"@"@"Q"Q @  #+"3"3"K"K/ #L #  (00EE";  F   $#
$
+
+,<,I,I,K
L r%   c                 t   S/nSS/nSnSn[         R                  R                  UR                  5      n[        R
                  " SUU5        [         R                  R                  UR                  UUUS9  [        R
                  " SUU5        [         R                  R                  UR                  UUUS9  g )	Nzdataproc-operatorzspark-driverzspark-executorr   zdataproc-environment-defaultzdSetting up Workload Identity for the following GSA to operatorKSAs %s in the default "%s" namespace.)rC   	gsa_emailk8s_namespacek8s_service_accountsziSetting up Workload Identity for the following GSA to defaultspark KSAs %s in the default "%s" namespace.)r   &DefaultDataprocDataPlaneServiceAccountGet
projectsIdr   debugGkeWorkloadIdentityUpdateGsaIamPolicy)r9   cluster_refgke_cluster_refoperator_ksa	spark_ksaoperator_namespacedefault_job_env_namespacedefault_gsas           r"   r1   Create._SetupWorkloadIdentity   s    '(L!12I# > 	DDHH&&	
  II5 	 --@@"--()	 A  II; 	! --@@"--/&	 A r%    N)__name__
__module____qualname____firstlineno____doc__detailed_helpclassmethodr#   r>   staticmethodr0   r1   __static_attributes__rn   r%   r"   r   r   #   sZ     4 - , ,74 ) )V * *r%   r   )rs   
__future__r   r   r   rJ   googlecloudsdk.api_lib.dataprocr   r   r   googlecloudsdk.callioper   *googlecloudsdk.command_lib.container.fleetr	   #googlecloudsdk.command_lib.dataprocr
   r   r   r   googlecloudsdk.corer   HiddenReleaseTracksr   ALPHACreateCommandr   rn   r%   r"   <module>r      sx     / &  ' 	 : 6 ( ? 8 5 E 9 # D%%++,IT I - Ir%   