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

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







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






.. data:: NUM_RETRIES
   :annotation: = 5 

   









.. data:: TIME_TO_SLEEP_IN_SECONDS
   :annotation: = 1 

   









.. py:class:: GceOperationStatus

   

   .. 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)

      



   

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