
                         ~    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  G d	 d
e      Zd Zd Zy)z"Factory class for Session message.    )absolute_import)division)unicode_literals)jupyter_config_factory)environment_config_factory)runtime_config_factory)labels_utilc                   (    e Zd ZdZdZ	 	 	 ddZd Zy)SessionMessageFactoryzFactory class for Session message.

  Factory class for configuring argument parser and creating a Session message
  from the parsed arguments.
  zInvalid session type: {}.Nc                 T   || _         | j                   j                  j                  di| _        |xs! t	        j
                  | j                   d      | _        |xs t        j                  | j                         | _	        |xs t        j                  | j                         | _        y)a7  Builder class for Session message.

    Session message factory. Only the flags added in AddArguments are handled.
    User need to provide session type specific message during message
    creation.

    Args:
      dataproc: A api_lib.dataproc.Dataproc instance.
      runtime_config_factory_override: Override the default
      RuntimeConfigFactory instance.
      environment_config_factory_override: Override the default
      EnvironmentConfigFactory instance.
      jupyter_config_factory_override: Override the default
      JupyterConfigFactory instance.
    jupyterSessionTuse_config_propertyN)dataprocmessagesJupyterConfig_session2keyrcfRuntimeConfigFactoryr   ecfEnvironmentConfigFactoryr   jcfJupyterConfigFactoryr   )selfr   runtime_config_factory_override#environment_config_factory_overridejupyter_config_factory_overrides        Klib/googlecloudsdk/command_lib/dataproc/sessions/session_message_factory.py__init__zSessionMessageFactory.__init__(   s    $ DM //==?OPD 	( 	J  DI 	
 	, 	4$$T]]3 	#
 	( 	0  / 	    c                    i }| j                   j                  |      }||| j                  t        |         <   |j                  rAt        j                  || j                  j                  j                  j                        |d<   | j                  j                  |      }|r||d<   | j                  j                  |      }|r||d<   |j                  j                  j                         j!                         |d<   |j"                  r|j"                  |d<   |sy | j                  j                  j                  di |S )a  Creates a Session message from given args.

    Create a Session message from given arguments. Only the arguments added in
    AddArguments are handled. Users need to provide session type specific
    message during message creation.

    Args:
      args: Parsed argument.

    Returns:
      A Session message instance.

    Raises:
      AttributeError: When session is invalid.
    labelsruntimeConfigenvironmentConfignamesessionTemplateN )r   
GetMessager   typer"   r	   ParseCreateArgsr   r   SessionLabelsValuer   r   CONCEPTSsessionParseRelativeNamesession_template)r   argskwargssession_configruntime_configenvironment_configs         r   r(   z SessionMessageFactory.GetMessageK   s     F00;;DAN6DF4T.123{{$44
&&..::<fX 00;;DAN .f_88CCDI$6f !]]**002??AF6N"&"7"7f)4==!!))3F33r    )NNN)__name__
__module____qualname____doc__INVALID_SESSION_TYPE_ERR_MSGr   r(   r'   r    r   r   r      s#     "=?C37/3!1F(4r    r   c                 j    | j                  dd       t        j                  |        t        |        y)zAdds arguments related to Session message.

  Add Session arguments to the given parser. Session specific arguments are not
  handled, and need to be set during factory instantiation.

  Args:
    parser: A argument parser.
  z--session_templatez5The session template to use for creating the session.)helpN)add_argumentr	   AddCreateLabelsFlags_AddDependencyparsers    r   AddArgumentsrC   v   s5     	F  
 ""6*r    c                     t        j                  | d       t        j                  |        t        j                  |        y )NTr   )r   rC   r   r   rA   s    r   r@   r@      s.    6t466r    N)r:   
__future__r   r   r   ,googlecloudsdk.command_lib.dataproc.sessionsr   r   3googlecloudsdk.command_lib.dataproc.shared_messagesr   r   r   r   $googlecloudsdk.command_lib.util.argsr	   objectr   rC   r@   r'   r    r   <module>rJ      s>     ) &  '#'# <T4F T4n$r    