class_docstr: Hook for Azure Batch APIs.
  
  :param azure_batch_conn_id: :ref:`Azure Batch connection id<howto/connection:azure_batch>`
      of a service principal which will be used to start the container instance.
class_docstr_tok: ["Hook","for","Azure","Batch","APIs",".",":","param","azure_batch_conn_id",":",":","ref",":","`","Azure","Batch","connection","id","<","howto\/connection",":","azure_batch",">","`","of","a","service","principal","which","will","be","used","to","start","the","container","instance","."]
docstr: Creates a job in the pool.
  
  :param job: The job object to create
docstr_tok: ["Creates","a","job","in","the","pool",".",":","param","job",":","The","job","object","to","create"]
code: def create_job(self, job: JobAddParameter) -> None:
      """
      Creates a job in the pool.
  
      :param job: The job object to create
      """
      try:
          self.connection.job.add(job)
          self.log.info("Job %s created", job.id)
      except batch_models.BatchErrorException as err:
          if not err.error or err.error.code != "JobExists":
              raise
          else:
              self.log.info("Job %s already exists", job.id)
  
imports: from __future__ import annotations
  import time
  from datetime import timedelta
  from functools import cached_property
  from typing import TYPE_CHECKING, Any
  from azure.batch import BatchServiceClient, batch_auth, models
  from airflow.exceptions import AirflowException
  from airflow.hooks.base import BaseHook
  from airflow.providers.microsoft.azure.utils import AzureIdentityCredentialAdapter, add_managed_identity_connection_widgets, get_field
  from airflow.utils import timezone
label_desc: Use image node_id 12 for calling the AzureBatchHook obj's underlying member method code with example usage: obj.create_job(job) without return types