
    ,                     r    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  G d d	e      Zd
 Zd Zy)z Factory class for Batch message.    )absolute_import)division)unicode_literals)environment_config_factory)runtime_config_factory)labels_utilc                   *    e Zd ZdZdZdZ	 	 ddZd Zy)BatchMessageFactoryzFactory class for Batch message.

  Factory class for configuring argument parser and creating a Batch message
  from the parsed arguments.
  zInvalid batch job type: {}.zMissing batch job.Nc           
      D   || _         | j                   j                  j                  d| j                   j                  j                  d| j                   j                  j                  d| j                   j                  j
                  d| j                   j                  j                  di| _        || _        | j                  s't        j                  | j                   dd      | _        || _        | j                  s%t        j                  | j                         | _        yy)	a  Builder class for Batch message.

    Batch message factory. Only the flags added in AddArguments are handled.
    User need to provide batch job 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.
    
sparkBatchsparkRBatchsparkSqlBatchpysparkBatchrayBatchTinclude_autotuninginclude_cohortN)dataprocmessages
SparkBatchSparkRBatchSparkSqlBatchPySparkBatchRayBatch
_batch2keyr   rcfRuntimeConfigFactoryr   ecfEnvironmentConfigFactory)selfr   runtime_config_factory_override#environment_config_factory_overrides       Hlib/googlecloudsdk/command_lib/dataproc/batches/batch_message_factory.py__init__zBatchMessageFactory.__init__)   s    & DM 	))<**M,,o++^''DO #BD&&$'$<$<
--D%d! 'JD#**(+(D(D
--)d% +    c                    |st        t        j                        t        |t	        | j
                  j                                     s1t        t        j                  j                  t        |                  i }||| j
                  t        |         <   |j                  rAt        j                  || j                  j                  j                  j                         |d<   | j"                  j%                  |      }|r||d<   | j&                  j%                  |      }|r||d<   |sy | j                  j                  j                  di |S )a  Creates a Batch message from given args.

    Create a Batch message from given arguments. Only the arguments added in
    AddAddArguments are handled. User need to provide bath job type specific
    message during message creation.

    Args:
      args: Parsed argument.
      batch_job: Batch type job instance.

    Returns:
      A Batch message instance.

    Raises:
      AttributeError: When batch_job is invalid.
    labelsruntimeConfigenvironmentConfigN )AttributeErrorr
   MISSING_BATCH_ERR_MSG
isinstancetupler   keysINVALID_BATCH_TYPE_ERR_MSGformattyper'   r   ParseCreateArgsr   r   BatchLabelsValuer   
GetMessager   )r    args	batch_jobkwargsruntime_configenvironment_configs         r#   r6   zBatchMessageFactory.GetMessageS   s   " .DDEEit';';'=!>?

8
8
?
?Y
P  F/8F4??4	?+,{{$44
&&,,88fX 00;;DAN .f_88CCDI$6f !'4==!!''1&11r%   )NN)__name__
__module____qualname____doc__r0   r,   r$   r6   r*   r%   r#   r
   r
      s(      =.
 '+*.	(T-2r%   r
   c                 D    t        j                  |        t        |        y)zAdds arguments related to Batch message.

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

  Args:
    parser: A argument parser.
  N)r   AddCreateLabelsFlags_AddDependencyparsers    r#   AddArgumentsrE      s     ""6*r%   c                 ^    t        j                  | dd       t        j                  |        y )NTr   )r   rE   r   rC   s    r#   rB   rB      s"    6d4H6r%   N)r?   
__future__r   r   r   3googlecloudsdk.command_lib.dataproc.shared_messagesr   r   r   r   $googlecloudsdk.command_lib.util.argsr   objectr
   rE   rB   r*   r%   r#   <module>rK      s;     ' &  ' =a2& a2Hr%   