:mod:`airflow.contrib.operators.gcp_compute_operator`
=====================================================

.. py:module:: airflow.contrib.operators.gcp_compute_operator


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

.. py:class:: GceBaseOperator(zone, resource_id, project_id=None, gcp_conn_id='google_cloud_default', api_version='v1', *args, **kwargs)

   Bases: :class:`airflow.models.BaseOperator`

   Abstract base operator for Google Compute Engine operators to inherit from.

   
   .. method:: _validate_inputs(self)



   
   .. method:: execute(self, context)




.. py:class:: GceInstanceStartOperator(zone, resource_id, project_id=None, gcp_conn_id='google_cloud_default', api_version='v1', *args, **kwargs)

   Bases: :class:`airflow.contrib.operators.gcp_compute_operator.GceBaseOperator`

   Starts an instance in Google Compute Engine.

   .. seealso::
       For more information on how to use this operator, take a look at the guide:
       :ref:`howto/operator:GceInstanceStartOperator`

   :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
   :param gcp_conn_id: Optional, The connection ID used to connect to Google Cloud
       Platform. Defaults to 'google_cloud_default'.
   :type gcp_conn_id: str
   :param api_version: Optional, API version used (for example v1 - or beta). Defaults
       to v1.
   :type api_version: str
   :param validate_body: Optional, If set to False, body validation is not performed.
       Defaults to False.

   .. attribute:: template_fields
      :annotation: = ['project_id', 'zone', 'resource_id', 'gcp_conn_id', 'api_version']

      

   
   .. method:: execute(self, context)




.. py:class:: GceInstanceStopOperator(zone, resource_id, project_id=None, gcp_conn_id='google_cloud_default', api_version='v1', *args, **kwargs)

   Bases: :class:`airflow.contrib.operators.gcp_compute_operator.GceBaseOperator`

   Stops an instance in Google Compute Engine.

   .. seealso::
       For more information on how to use this operator, take a look at the guide:
       :ref:`howto/operator:GceInstanceStopOperator`

   :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
   :param gcp_conn_id: Optional, The connection ID used to connect to Google Cloud
       Platform. Defaults to 'google_cloud_default'.
   :type gcp_conn_id: str
   :param api_version: Optional, API version used (for example v1 - or beta). Defaults
       to v1.
   :type api_version: str
   :param validate_body: Optional, If set to False, body validation is not performed.
       Defaults to False.

   .. attribute:: template_fields
      :annotation: = ['project_id', 'zone', 'resource_id', 'gcp_conn_id', 'api_version']

      

   
   .. method:: execute(self, context)




.. data:: SET_MACHINE_TYPE_VALIDATION_SPECIFICATION
   

   

.. py:class:: GceSetMachineTypeOperator(zone, resource_id, body, project_id=None, gcp_conn_id='google_cloud_default', api_version='v1', validate_body=True, *args, **kwargs)

   Bases: :class:`airflow.contrib.operators.gcp_compute_operator.GceBaseOperator`

   Changes the machine type for a stopped instance to the machine type specified in
       the request.

   .. seealso::
       For more information on how to use this operator, take a look at the guide:
       :ref:`howto/operator:GceSetMachineTypeOperator`

   :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#request-body
   :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
   :param gcp_conn_id: Optional, The connection ID used to connect to Google Cloud
       Platform. Defaults to 'google_cloud_default'.
   :type gcp_conn_id: str
   :param api_version: Optional, API version used (for example v1 - or beta). Defaults
       to v1.
   :type api_version: str
   :param validate_body: Optional, If set to False, body validation is not performed.
       Defaults to False.
   :type validate_body: bool

   .. attribute:: template_fields
      :annotation: = ['project_id', 'zone', 'resource_id', 'gcp_conn_id', 'api_version']

      

   
   .. method:: _validate_all_body_fields(self)



   
   .. method:: execute(self, context)




.. data:: GCE_INSTANCE_TEMPLATE_VALIDATION_PATCH_SPECIFICATION
   

   

.. data:: GCE_INSTANCE_TEMPLATE_FIELDS_TO_SANITIZE
   :annotation: = ['kind', 'id', 'name', 'creationTimestamp', 'properties.disks.sha256', 'properties.disks.kind', 'properties.disks.sourceImageEncryptionKey.sha256', 'properties.disks.index', 'properties.disks.licenses', 'properties.networkInterfaces.kind', 'properties.networkInterfaces.accessConfigs.kind', 'properties.networkInterfaces.name', 'properties.metadata.kind', 'selfLink']

   

.. py:class:: GceInstanceTemplateCopyOperator(resource_id, body_patch, project_id=None, request_id=None, gcp_conn_id='google_cloud_default', api_version='v1', validate_body=True, *args, **kwargs)

   Bases: :class:`airflow.contrib.operators.gcp_compute_operator.GceBaseOperator`

   Copies the instance template, applying specified changes.

   .. seealso::
       For more information on how to use this operator, take a look at the guide:
       :ref:`howto/operator:GceInstanceTemplateCopyOperator`

   :param resource_id: Name of the Instance Template
   :type resource_id: str
   :param body_patch: Patch to the body of instanceTemplates object following rfc7386
       PATCH semantics. The body_patch content follows
       https://cloud.google.com/compute/docs/reference/rest/v1/instanceTemplates
       Name field is required as we need to rename the template,
       all the other fields are optional. It is important to follow PATCH semantics
       - arrays are replaced fully, so if you need to update an array you should
       provide the whole target array as patch element.
   :type body_patch: 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
   :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 gcp_conn_id: Optional, The connection ID used to connect to Google Cloud
       Platform. Defaults to 'google_cloud_default'.
   :type gcp_conn_id: str
   :param api_version: Optional, API version used (for example v1 - or beta). Defaults
       to v1.
   :type api_version: str
   :param validate_body: Optional, If set to False, body validation is not performed.
       Defaults to False.
   :type validate_body: bool

   .. attribute:: template_fields
      :annotation: = ['project_id', 'resource_id', 'request_id', 'gcp_conn_id', 'api_version']

      

   
   .. method:: _validate_all_body_fields(self)



   
   .. method:: execute(self, context)




.. py:class:: GceInstanceGroupManagerUpdateTemplateOperator(resource_id, zone, source_template, destination_template, project_id=None, update_policy=None, request_id=None, gcp_conn_id='google_cloud_default', api_version='beta', *args, **kwargs)

   Bases: :class:`airflow.contrib.operators.gcp_compute_operator.GceBaseOperator`

   Patches the Instance Group Manager, replacing source template URL with the
   destination one. API V1 does not have update/patch operations for Instance
   Group Manager, so you must use beta or newer API version. Beta is the default.

   .. seealso::
       For more information on how to use this operator, take a look at the guide:
       :ref:`howto/operator:GceInstanceGroupManagerUpdateTemplateOperator`

   :param resource_id: Name of the Instance Group Manager
   :type resource_id: str
   :param zone: Google Cloud Platform zone where the Instance Group Manager exists.
   :type zone: str
   :param source_template: URL of the template to replace.
   :type source_template: str
   :param destination_template: URL of the target template.
   :type destination_template: 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
   :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 gcp_conn_id: Optional, The connection ID used to connect to Google Cloud
       Platform. Defaults to 'google_cloud_default'.
   :type gcp_conn_id: str
   :param api_version: Optional, API version used (for example v1 - or beta). Defaults
       to v1.
   :type api_version: str
   :param validate_body: Optional, If set to False, body validation is not performed.
       Defaults to False.
   :type validate_body: bool

   .. attribute:: template_fields
      :annotation: = ['project_id', 'resource_id', 'zone', 'request_id', 'source_template', 'destination_template', 'gcp_conn_id', 'api_version']

      

   
   .. method:: _possibly_replace_template(self, dictionary)



   
   .. method:: execute(self, context)




