:py:mod:`airflow.providers.google.cloud.hooks.gdm`
==================================================

.. py:module:: airflow.providers.google.cloud.hooks.gdm


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

Classes
~~~~~~~

.. autoapisummary::

   airflow.providers.google.cloud.hooks.gdm.GoogleDeploymentManagerHook




.. py:class:: GoogleDeploymentManagerHook(gcp_conn_id = 'google_cloud_default', delegate_to = None, impersonation_chain = None)

   Bases: :py:obj:`airflow.providers.google.common.hooks.base_google.GoogleBaseHook`

   Interact with Google Cloud Deployment Manager using the Google Cloud connection.
   This allows for scheduled and programmatic inspection and deletion of resources managed by GDM.

   .. py:method:: get_conn()

      Returns a Google Deployment Manager service object.

      :rtype: googleapiclient.discovery.Resource


   .. py:method:: list_deployments(project_id = None, deployment_filter = None, order_by = None)

      Lists deployments in a google cloud project.

      :param project_id: The project ID for this request.
      :param deployment_filter: A filter expression which limits resources returned in the response.
      :param order_by: A field name to order by, ex: "creationTimestamp desc"
      :rtype: list


   .. py:method:: delete_deployment(project_id, deployment = None, delete_policy = None)

      Deletes a deployment and all associated resources in a google cloud project.

      :param project_id: The project ID for this request.
      :param deployment: The name of the deployment for this request.
      :param delete_policy: Sets the policy to use for deleting resources. (ABANDON | DELETE)

      :rtype: None



