:mod:`airflow.contrib.hooks.gcp_compute_hook`
=============================================

.. py:module:: airflow.contrib.hooks.gcp_compute_hook

.. autoapi-nested-parse::

   This module contains a Google Compute Engine Hook.



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

.. data:: TIME_TO_SLEEP_IN_SECONDS
   :annotation: = 1

   

.. py:class:: GceOperationStatus

   Class with GCE operations statuses.

   .. attribute:: PENDING
      :annotation: = PENDING

      

   .. attribute:: RUNNING
      :annotation: = RUNNING

      

   .. attribute:: DONE
      :annotation: = DONE

      


.. py:class:: GceHook(api_version='v1', gcp_conn_id='google_cloud_default', delegate_to=None)

   Bases: :class:`airflow.contrib.hooks.gcp_api_base_hook.GoogleCloudBaseHook`

   Hook for Google Compute Engine APIs.

   All the methods in the hook where project_id is used must be called with
   keyword arguments rather than positional.

   .. attribute:: _conn
      

      

   
   .. method:: get_conn(self)

      Retrieves connection to Google Compute Engine.

      :return: Google Compute Engine services object
      :rtype: dict



   
   .. method:: start_instance(self, zone, resource_id, project_id=None)

      Starts an existing instance defined by project_id, zone and resource_id.
      Must be called with keyword arguments rather than positional.

      :param zone: Google Cloud Platform zone where the instance exists
      :type zone: str
      :param resource_id: Name of the Compute Engine instance resource
      :type resource_id: str
      :param project_id: Optional, Google Cloud Platform project ID where the
          Compute Engine Instance exists. If set to None or missing,
          the default project_id from the GCP connection is used.
      :type project_id: str
      :return: None



   
   .. method:: stop_instance(self, zone, resource_id, project_id=None)

      Stops an instance defined by project_id, zone and resource_id
      Must be called with keyword arguments rather than positional.

      :param zone: Google Cloud Platform zone where the instance exists
      :type zone: str
      :param resource_id: Name of the Compute Engine instance resource
      :type resource_id: str
      :param project_id: Optional, Google Cloud Platform project ID where the
          Compute Engine Instance exists. If set to None or missing,
          the default project_id from the GCP connection is used.
      :type project_id: str
      :return: None



   
   .. method:: set_machine_type(self, zone, resource_id, body, project_id=None)

      Sets machine type of an instance defined by project_id, zone and resource_id.
      Must be called with keyword arguments rather than positional.

      :param zone: Google Cloud Platform zone where the instance exists.
      :type zone: str
      :param resource_id: Name of the Compute Engine instance resource
      :type resource_id: str
      :param body: Body required by the Compute Engine setMachineType API,
          as described in
          https://cloud.google.com/compute/docs/reference/rest/v1/instances/setMachineType
      :type body: dict
      :param project_id: Optional, Google Cloud Platform project ID where the
          Compute Engine Instance exists. If set to None or missing,
          the default project_id from the GCP connection is used.
      :type project_id: str
      :return: None



   
   .. method:: _execute_set_machine_type(self, zone, resource_id, body, project_id)



   
   .. method:: get_instance_template(self, resource_id, project_id=None)

      Retrieves instance template by project_id and resource_id.
      Must be called with keyword arguments rather than positional.

      :param resource_id: Name of the instance template
      :type resource_id: str
      :param project_id: Optional, Google Cloud Platform project ID where the
          Compute Engine Instance exists. If set to None or missing,
          the default project_id from the GCP connection is used.
      :type project_id: str
      :return: Instance template representation as object according to
          https://cloud.google.com/compute/docs/reference/rest/v1/instanceTemplates
      :rtype: dict



   
   .. method:: insert_instance_template(self, body, request_id=None, project_id=None)

      Inserts instance template using body specified
      Must be called with keyword arguments rather than positional.

      :param body: Instance template representation as object according to
          https://cloud.google.com/compute/docs/reference/rest/v1/instanceTemplates
      :type body: dict
      :param request_id: Optional, unique request_id that you might add to achieve
          full idempotence (for example when client call times out repeating the request
          with the same request id will not create a new instance template again)
          It should be in UUID format as defined in RFC 4122
      :type request_id: str
      :param project_id: Optional, Google Cloud Platform project ID where the
          Compute Engine Instance exists. If set to None or missing,
          the default project_id from the GCP connection is used.
      :type project_id: str
      :return: None



   
   .. method:: get_instance_group_manager(self, zone, resource_id, project_id=None)

      Retrieves Instance Group Manager by project_id, zone and resource_id.
      Must be called with keyword arguments rather than positional.

      :param zone: Google Cloud Platform zone where the Instance Group Manager exists
      :type zone: str
      :param resource_id: Name of the Instance Group Manager
      :type resource_id: str
      :param project_id: Optional, Google Cloud Platform project ID where the
          Compute Engine Instance exists. If set to None or missing,
          the default project_id from the GCP connection is used.
      :type project_id: str
      :return: Instance group manager representation as object according to
          https://cloud.google.com/compute/docs/reference/rest/beta/instanceGroupManagers
      :rtype: dict



   
   .. method:: patch_instance_group_manager(self, zone, resource_id, body, request_id=None, project_id=None)

      Patches Instance Group Manager with the specified body.
      Must be called with keyword arguments rather than positional.

      :param zone: Google Cloud Platform zone where the Instance Group Manager exists
      :type zone: str
      :param resource_id: Name of the Instance Group Manager
      :type resource_id: str
      :param body: Instance Group Manager representation as json-merge-patch object
          according to
          https://cloud.google.com/compute/docs/reference/rest/beta/instanceTemplates/patch
      :type body: dict
      :param request_id: Optional, unique request_id that you might add to achieve
          full idempotence (for example when client call times out repeating the request
          with the same request id will not create a new instance template again).
          It should be in UUID format as defined in RFC 4122
      :type request_id: str
      :param project_id: Optional, Google Cloud Platform project ID where the
          Compute Engine Instance exists. If set to None or missing,
          the default project_id from the GCP connection is used.
      :type project_id: str
      :return: None



   
   .. method:: _wait_for_operation_to_complete(self, project_id, operation_name, zone=None)

      Waits for the named operation to complete - checks status of the async call.

      :param operation_name: name of the operation
      :type operation_name: str
      :param zone: optional region of the request (might be None for global operations)
      :type zone: str
      :return: None



   
   .. staticmethod:: _check_zone_operation_status(service, operation_name, project_id, zone, num_retries)



   
   .. staticmethod:: _check_global_operation_status(service, operation_name, project_id, num_retries)




