:py:mod:`airflow.providers.google.cloud.links.dataproc`
=======================================================

.. py:module:: airflow.providers.google.cloud.links.dataproc

.. autoapi-nested-parse::

   This module contains Google Dataproc links.



Module Contents
---------------

Classes
~~~~~~~

.. autoapisummary::

   airflow.providers.google.cloud.links.dataproc.DataprocLink
   airflow.providers.google.cloud.links.dataproc.DataprocListLink




Attributes
~~~~~~~~~~

.. autoapisummary::

   airflow.providers.google.cloud.links.dataproc.DATAPROC_BASE_LINK
   airflow.providers.google.cloud.links.dataproc.DATAPROC_JOB_LOG_LINK
   airflow.providers.google.cloud.links.dataproc.DATAPROC_CLUSTER_LINK
   airflow.providers.google.cloud.links.dataproc.DATAPROC_WORKFLOW_TEMPLATE_LINK
   airflow.providers.google.cloud.links.dataproc.DATAPROC_WORKFLOW_LINK
   airflow.providers.google.cloud.links.dataproc.DATAPROC_BATCH_LINK
   airflow.providers.google.cloud.links.dataproc.DATAPROC_BATCHES_LINK


.. py:data:: DATAPROC_BASE_LINK
   :annotation: = https://console.cloud.google.com/dataproc

   

.. py:data:: DATAPROC_JOB_LOG_LINK
   

   

.. py:data:: DATAPROC_CLUSTER_LINK
   

   

.. py:data:: DATAPROC_WORKFLOW_TEMPLATE_LINK
   

   

.. py:data:: DATAPROC_WORKFLOW_LINK
   

   

.. py:data:: DATAPROC_BATCH_LINK
   

   

.. py:data:: DATAPROC_BATCHES_LINK
   

   

.. py:class:: DataprocLink

   Bases: :py:obj:`airflow.models.BaseOperatorLink`

   Helper class for constructing Dataproc resource link

   .. py:attribute:: name
      :annotation: = Dataproc resource

      

   .. py:attribute:: key
      :annotation: = conf

      

   .. py:method:: persist(context, task_instance, url, resource)
      :staticmethod:


   .. py:method:: get_link(self, operator, dttm = None, ti_key = None)

      Link to external system.

      Note: The old signature of this function was ``(self, operator, dttm: datetime)``. That is still
      supported at runtime but is deprecated.

      :param operator: airflow operator
      :param ti_key: TaskInstance ID to return link for
      :return: link to external system



.. py:class:: DataprocListLink

   Bases: :py:obj:`airflow.models.BaseOperatorLink`

   Helper class for constructing list of Dataproc resources link

   .. py:attribute:: name
      :annotation: = Dataproc resources

      

   .. py:attribute:: key
      :annotation: = list_conf

      

   .. py:method:: persist(context, task_instance, url)
      :staticmethod:


   .. py:method:: get_link(self, operator, dttm = None, ti_key = None)

      Link to external system.

      Note: The old signature of this function was ``(self, operator, dttm: datetime)``. That is still
      supported at runtime but is deprecated.

      :param operator: airflow operator
      :param ti_key: TaskInstance ID to return link for
      :return: link to external system



