
                             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 ej                   G d dej                                Zy)z/Authenticate clusters using the Anthos client..    )absolute_import)division)unicode_literals)base)anthoscli_backend)flags)
kube_flags)messages)logc                   .    e Zd ZdZddiZed        Zd Zy)Loginz.Authenticate clusters using the Anthos client.EXAMPLESa  
      To  add credentials to default kubeconfig file:

          $ {command} --cluster=testcluster --login-config=kubectl-anthos-config.yaml

      To add credentials to custom kubeconfig file:

          $ {command}  --cluster=testcluster --login-config=kubectl-anthos-config.yaml --kubeconfig=my.kubeconfig

      To generate the commands without executing them:

          $ {command} --cluster=testcluster --login-config=kubectl-anthos-config.yaml --dry-run

      To add credentials to default kubeconfig file using server side login:

          $ {command} --cluster=testcluster --server=<server-url>


      To add credentials to custom kubeconfig file using server side login:

          $ {command}  --cluster=testcluster --server=<server-url> --kubeconfig=my.kubeconfig


      To add credentials to custom kubeconfig file with server side login using a remote-device for login:

          $ {command}  --cluster=testcluster --server=<server-url> --kubeconfig=my.kubeconfig --no-browser
            c                    t        j                  d      j                  |        t        j                         j                  |        t        j
                         j                  |        t        j                         j                  |        t        j                         j                  |        t        j                  d      j                  |        t        j                         j                  |        t        j                         j                  |        t        j                         j                  |        t        j                         j                  |        y )NzKSpecifies the destination kubeconfig file where credentials will be stored.zAPrint out the generated kubectl commands but do not execute them.)r	   GetKubeConfigFlagAddToParserr   GetUserFlagGetClusterFlagGetLoginConfigFlagGetLoginConfigCertFlagGetDryRunFlag!GetSetPreferredAuthenticationFlagGetServerFlagGetNoBrowserFlagGetRemoteBootstrapFlag)parsers     lib/surface/anthos/auth/login.pyArgsz
Login.Args>   s      	,--8[-@	##F+	&&v.	**62	  "..v6	 3 44?K4G	++-99&A	%%f-	((0	  "..v6    c                    t        j                         }|j                  }|j                  rt        j
                  j                  t        j                          |d||j                  |j                  |j                  |j                  |j                  |j                  t        j                  ddi      	      }t        j                  |      S |j                   xs |j"                  }t        j$                  ||j                        \  }}}|j&                  }t        j(                  |||||      \  }	}
}t        j
                  j                  t        j                          |d||j                  |j*                  ||j                  |j                  |j,                  |
||	t        j                  ddi            }t        j                  ||d u       S )	NloginGCLOUD_AUTH_PLUGINtrue)
extra_vars)	commandclusterkube_configlogin_config_certdry_run
server_url
no_browserremote_bootstrapenv)r%   login_configconfig_contentsforce_updateis_url)r$   r%   r&   userr-   r'   r(   show_exec_error	ldap_user	ldap_passpreferred_authr,   )list_clusters_only)r   AnthosAuthWrapperCLUSTERserverr   statusPrintr
   LOGIN_CONFIG_MESSAGE
kubeconfigr'   r(   r*   r+   GetEnvArgsForCommandLoginResponseHandlerr-   default_config_pathGetFileOrURLset_preferred_authGetPreferredAuthForClusterr1   r2   )selfargscommand_executorr%   responser-   r.   r0   r/   
authmethodldapuserldappasss               r   Runz	Login.RunN   s   (::<llG {{	jjx445!oo 22,,[[__0044.7h 33H== $$L(8(L(LL ->,J,Jd,,-.)L/6 **L44%+%	
 #J( JJX223OOYY!00,,!22,f5
H  11go8 8r   N)__name__
__module____qualname____doc__detailed_helpstaticmethodr   rK    r   r   r   r      s/    6  -< 7 7=8r   r   N)rO   
__future__r   r   r   googlecloudsdk.callioper   !googlecloudsdk.command_lib.anthosr   r   (googlecloudsdk.command_lib.anthos.commonr	   r
   googlecloudsdk.corer   DefaultUniverseOnlyBinaryBackedCommandr   rR   r   r   <module>rZ      sO    6 &  ' ( ? 3 ? = # n8D$$ n8 n8r   