diff --git a/lib/ansible/modules/cloud/google/gcp_appengine_firewall_rule.py b/lib/ansible/modules/cloud/google/gcp_appengine_firewall_rule.py
index 2f03577d07d..367a34b5c60 100644
--- a/lib/ansible/modules/cloud/google/gcp_appengine_firewall_rule.py
+++ b/lib/ansible/modules/cloud/google/gcp_appengine_firewall_rule.py
@@ -34,7 +34,7 @@ description:
 - A single firewall rule that is evaluated against incoming traffic and provides an
   action to take on matched requests.
 short_description: Creates a GCP FirewallRule
-version_added: 2.9
+version_added: '2.9'
 author: Google Inc. (@googlecloudplatform)
 requirements:
 - python >= 2.6
@@ -75,10 +75,56 @@ options:
       by the user.
     required: false
     type: int
-extends_documentation_fragment: gcp
+  project:
+    description:
+    - The Google Cloud Platform project to use.
+    type: str
+  auth_kind:
+    description:
+    - The type of credential used.
+    type: str
+    required: true
+    choices:
+    - application
+    - machineaccount
+    - serviceaccount
+  service_account_contents:
+    description:
+    - The contents of a Service Account JSON file, either in a dictionary or as a
+      JSON string that represents it.
+    type: jsonarg
+  service_account_file:
+    description:
+    - The path of a Service Account JSON file if serviceaccount is selected as type.
+    type: path
+  service_account_email:
+    description:
+    - An optional service account email address if machineaccount is selected and
+      the user does not wish to use the default email.
+    type: str
+  scopes:
+    description:
+    - Array of scopes to be used
+    type: list
+  env_type:
+    description:
+    - Specifies which Ansible environment you're running this module within.
+    - This should not be set unless you know what you're doing.
+    - This only alters the User Agent string for any API requests.
+    type: str
 notes:
 - 'API Reference: U(https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.firewall.ingressRules)'
 - 'Official Documentation: U(https://cloud.google.com/appengine/docs/standard/python/creating-firewalls#creating_firewall_rules)'
+- for authentication, you can set service_account_file using the c(gcp_service_account_file)
+  env variable.
+- for authentication, you can set service_account_contents using the c(GCP_SERVICE_ACCOUNT_CONTENTS)
+  env variable.
+- For authentication, you can set service_account_email using the C(GCP_SERVICE_ACCOUNT_EMAIL)
+  env variable.
+- For authentication, you can set auth_kind using the C(GCP_AUTH_KIND) env variable.
+- For authentication, you can set scopes using the C(GCP_SCOPES) env variable.
+- Environment variables values will only be used if the playbook values are not set.
+- The I(service_account_email) and I(service_account_file) options are mutually exclusive.
 '''
 
 EXAMPLES = '''
diff --git a/lib/ansible/modules/cloud/google/gcp_appengine_firewall_rule_info.py b/lib/ansible/modules/cloud/google/gcp_appengine_firewall_rule_info.py
index e2b6317a444..9fb088d6b91 100644
--- a/lib/ansible/modules/cloud/google/gcp_appengine_firewall_rule_info.py
+++ b/lib/ansible/modules/cloud/google/gcp_appengine_firewall_rule_info.py
@@ -33,14 +33,61 @@ module: gcp_appengine_firewall_rule_info
 description:
 - Gather info for GCP FirewallRule
 short_description: Gather info for GCP FirewallRule
-version_added: 2.9
+version_added: '2.9'
 author: Google Inc. (@googlecloudplatform)
 requirements:
 - python >= 2.6
 - requests >= 2.18.4
 - google-auth >= 1.3.0
-options: {}
-extends_documentation_fragment: gcp
+options:
+  project:
+    description:
+    - The Google Cloud Platform project to use.
+    type: str
+  auth_kind:
+    description:
+    - The type of credential used.
+    type: str
+    required: true
+    choices:
+    - application
+    - machineaccount
+    - serviceaccount
+  service_account_contents:
+    description:
+    - The contents of a Service Account JSON file, either in a dictionary or as a
+      JSON string that represents it.
+    type: jsonarg
+  service_account_file:
+    description:
+    - The path of a Service Account JSON file if serviceaccount is selected as type.
+    type: path
+  service_account_email:
+    description:
+    - An optional service account email address if machineaccount is selected and
+      the user does not wish to use the default email.
+    type: str
+  scopes:
+    description:
+    - Array of scopes to be used
+    type: list
+  env_type:
+    description:
+    - Specifies which Ansible environment you're running this module within.
+    - This should not be set unless you know what you're doing.
+    - This only alters the User Agent string for any API requests.
+    type: str
+notes:
+- for authentication, you can set service_account_file using the c(gcp_service_account_file)
+  env variable.
+- for authentication, you can set service_account_contents using the c(GCP_SERVICE_ACCOUNT_CONTENTS)
+  env variable.
+- For authentication, you can set service_account_email using the C(GCP_SERVICE_ACCOUNT_EMAIL)
+  env variable.
+- For authentication, you can set auth_kind using the C(GCP_AUTH_KIND) env variable.
+- For authentication, you can set scopes using the C(GCP_SCOPES) env variable.
+- Environment variables values will only be used if the playbook values are not set.
+- The I(service_account_email) and I(service_account_file) options are mutually exclusive.
 '''
 
 EXAMPLES = '''
diff --git a/lib/ansible/modules/cloud/google/gcp_bigquery_dataset.py b/lib/ansible/modules/cloud/google/gcp_bigquery_dataset.py
index 7b3355f94eb..875be8bff9d 100644
--- a/lib/ansible/modules/cloud/google/gcp_bigquery_dataset.py
+++ b/lib/ansible/modules/cloud/google/gcp_bigquery_dataset.py
@@ -33,7 +33,7 @@ module: gcp_bigquery_dataset
 description:
 - Datasets allow you to organize and control access to your tables.
 short_description: Creates a GCP Dataset
-version_added: 2.8
+version_added: '2.8'
 author: Google Inc. (@googlecloudplatform)
 requirements:
 - python >= 2.6
@@ -167,7 +167,7 @@ options:
       the default partition expiration time indicated by this property.'
     required: false
     type: int
-    version_added: 2.9
+    version_added: '2.9'
   description:
     description:
     - A user-friendly description of the dataset.
@@ -200,7 +200,43 @@ options:
     required: false
     default: US
     type: str
-extends_documentation_fragment: gcp
+  project:
+    description:
+    - The Google Cloud Platform project to use.
+    type: str
+  auth_kind:
+    description:
+    - The type of credential used.
+    type: str
+    required: true
+    choices:
+    - application
+    - machineaccount
+    - serviceaccount
+  service_account_contents:
+    description:
+    - The contents of a Service Account JSON file, either in a dictionary or as a
+      JSON string that represents it.
+    type: jsonarg
+  service_account_file:
+    description:
+    - The path of a Service Account JSON file if serviceaccount is selected as type.
+    type: path
+  service_account_email:
+    description:
+    - An optional service account email address if machineaccount is selected and
+      the user does not wish to use the default email.
+    type: str
+  scopes:
+    description:
+    - Array of scopes to be used
+    type: list
+  env_type:
+    description:
+    - Specifies which Ansible environment you're running this module within.
+    - This should not be set unless you know what you're doing.
+    - This only alters the User Agent string for any API requests.
+    type: str
 '''
 
 EXAMPLES = '''
diff --git a/lib/ansible/modules/cloud/google/gcp_bigquery_dataset_info.py b/lib/ansible/modules/cloud/google/gcp_bigquery_dataset_info.py
index 1ede9424502..a149192ac1c 100644
--- a/lib/ansible/modules/cloud/google/gcp_bigquery_dataset_info.py
+++ b/lib/ansible/modules/cloud/google/gcp_bigquery_dataset_info.py
@@ -35,14 +35,61 @@ description:
 - This module was called C(gcp_bigquery_dataset_facts) before Ansible 2.9. The usage
   has not changed.
 short_description: Gather info for GCP Dataset
-version_added: 2.8
+version_added: '2.8'
 author: Google Inc. (@googlecloudplatform)
 requirements:
 - python >= 2.6
 - requests >= 2.18.4
 - google-auth >= 1.3.0
-options: {}
-extends_documentation_fragment: gcp
+options:
+  project:
+    description:
+    - The Google Cloud Platform project to use.
+    type: str
+  auth_kind:
+    description:
+    - The type of credential used.
+    type: str
+    required: true
+    choices:
+    - application
+    - machineaccount
+    - serviceaccount
+  service_account_contents:
+    description:
+    - The contents of a Service Account JSON file, either in a dictionary or as a
+      JSON string that represents it.
+    type: jsonarg
+  service_account_file:
+    description:
+    - The path of a Service Account JSON file if serviceaccount is selected as type.
+    type: path
+  service_account_email:
+    description:
+    - An optional service account email address if machineaccount is selected and
+      the user does not wish to use the default email.
+    type: str
+  scopes:
+    description:
+    - Array of scopes to be used
+    type: list
+  env_type:
+    description:
+    - Specifies which Ansible environment you're running this module within.
+    - This should not be set unless you know what you're doing.
+    - This only alters the User Agent string for any API requests.
+    type: str
+notes:
+- for authentication, you can set service_account_file using the c(gcp_service_account_file)
+  env variable.
+- for authentication, you can set service_account_contents using the c(GCP_SERVICE_ACCOUNT_CONTENTS)
+  env variable.
+- For authentication, you can set service_account_email using the C(GCP_SERVICE_ACCOUNT_EMAIL)
+  env variable.
+- For authentication, you can set auth_kind using the C(GCP_AUTH_KIND) env variable.
+- For authentication, you can set scopes using the C(GCP_SCOPES) env variable.
+- Environment variables values will only be used if the playbook values are not set.
+- The I(service_account_email) and I(service_account_file) options are mutually exclusive.
 '''
 
 EXAMPLES = '''
diff --git a/lib/ansible/modules/cloud/google/gcp_bigquery_table.py b/lib/ansible/modules/cloud/google/gcp_bigquery_table.py
index cdf262ba84a..fdbd25caa11 100644
--- a/lib/ansible/modules/cloud/google/gcp_bigquery_table.py
+++ b/lib/ansible/modules/cloud/google/gcp_bigquery_table.py
@@ -33,7 +33,7 @@ module: gcp_bigquery_table
 description:
 - A Table that belongs to a Dataset .
 short_description: Creates a GCP Table
-version_added: 2.8
+version_added: '2.8'
 author: Google Inc. (@googlecloudplatform)
 requirements:
 - python >= 2.6
@@ -77,7 +77,7 @@ options:
       determines the sort order of the data.
     required: false
     type: list
-    version_added: 2.9
+    version_added: '2.9'
   description:
     description:
     - A user-friendly description of the dataset.
@@ -105,7 +105,7 @@ options:
       buffer.
     required: false
     type: int
-    version_added: 2.9
+    version_added: '2.9'
   view:
     description:
     - The view definition.
@@ -155,7 +155,7 @@ options:
           or REQUIRED.
         required: false
         type: str
-        version_added: 2.9
+        version_added: '2.9'
       type:
         description:
         - The only type supported is DAY, which will generate one partition per day.
@@ -460,7 +460,43 @@ options:
     - Name of the dataset.
     required: false
     type: str
-extends_documentation_fragment: gcp
+  project:
+    description:
+    - The Google Cloud Platform project to use.
+    type: str
+  auth_kind:
+    description:
+    - The type of credential used.
+    type: str
+    required: true
+    choices:
+    - application
+    - machineaccount
+    - serviceaccount
+  service_account_contents:
+    description:
+    - The contents of a Service Account JSON file, either in a dictionary or as a
+      JSON string that represents it.
+    type: jsonarg
+  service_account_file:
+    description:
+    - The path of a Service Account JSON file if serviceaccount is selected as type.
+    type: path
+  service_account_email:
+    description:
+    - An optional service account email address if machineaccount is selected and
+      the user does not wish to use the default email.
+    type: str
+  scopes:
+    description:
+    - Array of scopes to be used
+    type: list
+  env_type:
+    description:
+    - Specifies which Ansible environment you're running this module within.
+    - This should not be set unless you know what you're doing.
+    - This only alters the User Agent string for any API requests.
+    type: str
 '''
 
 EXAMPLES = '''
diff --git a/lib/ansible/modules/cloud/google/gcp_bigquery_table_info.py b/lib/ansible/modules/cloud/google/gcp_bigquery_table_info.py
index 1491deeabcd..e3b78d6ef2f 100644
--- a/lib/ansible/modules/cloud/google/gcp_bigquery_table_info.py
+++ b/lib/ansible/modules/cloud/google/gcp_bigquery_table_info.py
@@ -35,7 +35,7 @@ description:
 - This module was called C(gcp_bigquery_table_facts) before Ansible 2.9. The usage
   has not changed.
 short_description: Gather info for GCP Table
-version_added: 2.8
+version_added: '2.8'
 author: Google Inc. (@googlecloudplatform)
 requirements:
 - python >= 2.6
@@ -47,7 +47,54 @@ options:
     - Name of the dataset.
     required: false
     type: str
-extends_documentation_fragment: gcp
+  project:
+    description:
+    - The Google Cloud Platform project to use.
+    type: str
+  auth_kind:
+    description:
+    - The type of credential used.
+    type: str
+    required: true
+    choices:
+    - application
+    - machineaccount
+    - serviceaccount
+  service_account_contents:
+    description:
+    - The contents of a Service Account JSON file, either in a dictionary or as a
+      JSON string that represents it.
+    type: jsonarg
+  service_account_file:
+    description:
+    - The path of a Service Account JSON file if serviceaccount is selected as type.
+    type: path
+  service_account_email:
+    description:
+    - An optional service account email address if machineaccount is selected and
+      the user does not wish to use the default email.
+    type: str
+  scopes:
+    description:
+    - Array of scopes to be used
+    type: list
+  env_type:
+    description:
+    - Specifies which Ansible environment you're running this module within.
+    - This should not be set unless you know what you're doing.
+    - This only alters the User Agent string for any API requests.
+    type: str
+notes:
+- for authentication, you can set service_account_file using the c(gcp_service_account_file)
+  env variable.
+- for authentication, you can set service_account_contents using the c(GCP_SERVICE_ACCOUNT_CONTENTS)
+  env variable.
+- For authentication, you can set service_account_email using the C(GCP_SERVICE_ACCOUNT_EMAIL)
+  env variable.
+- For authentication, you can set auth_kind using the C(GCP_AUTH_KIND) env variable.
+- For authentication, you can set scopes using the C(GCP_SCOPES) env variable.
+- Environment variables values will only be used if the playbook values are not set.
+- The I(service_account_email) and I(service_account_file) options are mutually exclusive.
 '''
 
 EXAMPLES = '''
diff --git a/lib/ansible/modules/cloud/google/gcp_cloudbuild_trigger.py b/lib/ansible/modules/cloud/google/gcp_cloudbuild_trigger.py
index a43dde501ba..24bc62722d4 100644
--- a/lib/ansible/modules/cloud/google/gcp_cloudbuild_trigger.py
+++ b/lib/ansible/modules/cloud/google/gcp_cloudbuild_trigger.py
@@ -33,7 +33,7 @@ module: gcp_cloudbuild_trigger
 description:
 - Configuration for an automated build in response to source repository changes.
 short_description: Creates a GCP Trigger
-version_added: 2.8
+version_added: '2.8'
 author: Google Inc. (@googlecloudplatform)
 requirements:
 - python >= 2.6
@@ -284,10 +284,56 @@ options:
               completed successfully.
             required: false
             type: list
-extends_documentation_fragment: gcp
+  project:
+    description:
+    - The Google Cloud Platform project to use.
+    type: str
+  auth_kind:
+    description:
+    - The type of credential used.
+    type: str
+    required: true
+    choices:
+    - application
+    - machineaccount
+    - serviceaccount
+  service_account_contents:
+    description:
+    - The contents of a Service Account JSON file, either in a dictionary or as a
+      JSON string that represents it.
+    type: jsonarg
+  service_account_file:
+    description:
+    - The path of a Service Account JSON file if serviceaccount is selected as type.
+    type: path
+  service_account_email:
+    description:
+    - An optional service account email address if machineaccount is selected and
+      the user does not wish to use the default email.
+    type: str
+  scopes:
+    description:
+    - Array of scopes to be used
+    type: list
+  env_type:
+    description:
+    - Specifies which Ansible environment you're running this module within.
+    - This should not be set unless you know what you're doing.
+    - This only alters the User Agent string for any API requests.
+    type: str
 notes:
 - 'API Reference: U(https://cloud.google.com/cloud-build/docs/api/reference/rest/)'
 - 'Automating builds using build triggers: U(https://cloud.google.com/cloud-build/docs/running-builds/automate-builds)'
+- for authentication, you can set service_account_file using the c(gcp_service_account_file)
+  env variable.
+- for authentication, you can set service_account_contents using the c(GCP_SERVICE_ACCOUNT_CONTENTS)
+  env variable.
+- For authentication, you can set service_account_email using the C(GCP_SERVICE_ACCOUNT_EMAIL)
+  env variable.
+- For authentication, you can set auth_kind using the C(GCP_AUTH_KIND) env variable.
+- For authentication, you can set scopes using the C(GCP_SCOPES) env variable.
+- Environment variables values will only be used if the playbook values are not set.
+- The I(service_account_email) and I(service_account_file) options are mutually exclusive.
 - The id for this resource is created by the API after you create the resource the
   first time. If you want to manage this resource after creation, you'll have to copy
   the generated id into the playbook. If you do not, new triggers will be created
diff --git a/lib/ansible/modules/cloud/google/gcp_cloudbuild_trigger_info.py b/lib/ansible/modules/cloud/google/gcp_cloudbuild_trigger_info.py
index ec581c6f3e7..795e276a989 100644
--- a/lib/ansible/modules/cloud/google/gcp_cloudbuild_trigger_info.py
+++ b/lib/ansible/modules/cloud/google/gcp_cloudbuild_trigger_info.py
@@ -35,14 +35,61 @@ description:
 - This module was called C(gcp_cloudbuild_trigger_facts) before Ansible 2.9. The usage
   has not changed.
 short_description: Gather info for GCP Trigger
-version_added: 2.8
+version_added: '2.8'
 author: Google Inc. (@googlecloudplatform)
 requirements:
 - python >= 2.6
 - requests >= 2.18.4
 - google-auth >= 1.3.0
-options: {}
-extends_documentation_fragment: gcp
+options:
+  project:
+    description:
+    - The Google Cloud Platform project to use.
+    type: str
+  auth_kind:
+    description:
+    - The type of credential used.
+    type: str
+    required: true
+    choices:
+    - application
+    - machineaccount
+    - serviceaccount
+  service_account_contents:
+    description:
+    - The contents of a Service Account JSON file, either in a dictionary or as a
+      JSON string that represents it.
+    type: jsonarg
+  service_account_file:
+    description:
+    - The path of a Service Account JSON file if serviceaccount is selected as type.
+    type: path
+  service_account_email:
+    description:
+    - An optional service account email address if machineaccount is selected and
+      the user does not wish to use the default email.
+    type: str
+  scopes:
+    description:
+    - Array of scopes to be used
+    type: list
+  env_type:
+    description:
+    - Specifies which Ansible environment you're running this module within.
+    - This should not be set unless you know what you're doing.
+    - This only alters the User Agent string for any API requests.
+    type: str
+notes:
+- for authentication, you can set service_account_file using the c(gcp_service_account_file)
+  env variable.
+- for authentication, you can set service_account_contents using the c(GCP_SERVICE_ACCOUNT_CONTENTS)
+  env variable.
+- For authentication, you can set service_account_email using the C(GCP_SERVICE_ACCOUNT_EMAIL)
+  env variable.
+- For authentication, you can set auth_kind using the C(GCP_AUTH_KIND) env variable.
+- For authentication, you can set scopes using the C(GCP_SCOPES) env variable.
+- Environment variables values will only be used if the playbook values are not set.
+- The I(service_account_email) and I(service_account_file) options are mutually exclusive.
 '''
 
 EXAMPLES = '''
diff --git a/lib/ansible/modules/cloud/google/gcp_cloudfunctions_cloud_function.py b/lib/ansible/modules/cloud/google/gcp_cloudfunctions_cloud_function.py
index 7d05efc4748..7a0c4dea047 100644
--- a/lib/ansible/modules/cloud/google/gcp_cloudfunctions_cloud_function.py
+++ b/lib/ansible/modules/cloud/google/gcp_cloudfunctions_cloud_function.py
@@ -33,7 +33,7 @@ module: gcp_cloudfunctions_cloud_function
 description:
 - A Cloud Function that contains user computation executed in response to an event.
 short_description: Creates a GCP CloudFunction
-version_added: 2.9
+version_added: '2.9'
 author: Google Inc. (@googlecloudplatform)
 requirements:
 - python >= 2.6
@@ -158,7 +158,43 @@ options:
     - Use HTTP to trigger this function.
     required: false
     type: bool
-extends_documentation_fragment: gcp
+  project:
+    description:
+    - The Google Cloud Platform project to use.
+    type: str
+  auth_kind:
+    description:
+    - The type of credential used.
+    type: str
+    required: true
+    choices:
+    - application
+    - machineaccount
+    - serviceaccount
+  service_account_contents:
+    description:
+    - The contents of a Service Account JSON file, either in a dictionary or as a
+      JSON string that represents it.
+    type: jsonarg
+  service_account_file:
+    description:
+    - The path of a Service Account JSON file if serviceaccount is selected as type.
+    type: path
+  service_account_email:
+    description:
+    - An optional service account email address if machineaccount is selected and
+      the user does not wish to use the default email.
+    type: str
+  scopes:
+    description:
+    - Array of scopes to be used
+    type: list
+  env_type:
+    description:
+    - Specifies which Ansible environment you're running this module within.
+    - This should not be set unless you know what you're doing.
+    - This only alters the User Agent string for any API requests.
+    type: str
 '''
 
 EXAMPLES = '''
diff --git a/lib/ansible/modules/cloud/google/gcp_cloudfunctions_cloud_function_info.py b/lib/ansible/modules/cloud/google/gcp_cloudfunctions_cloud_function_info.py
index 34aa2c1b4a3..559542fde19 100644
--- a/lib/ansible/modules/cloud/google/gcp_cloudfunctions_cloud_function_info.py
+++ b/lib/ansible/modules/cloud/google/gcp_cloudfunctions_cloud_function_info.py
@@ -33,7 +33,7 @@ module: gcp_cloudfunctions_cloud_function_info
 description:
 - Gather info for GCP CloudFunction
 short_description: Gather info for GCP CloudFunction
-version_added: 2.9
+version_added: '2.9'
 author: Google Inc. (@googlecloudplatform)
 requirements:
 - python >= 2.6
@@ -45,7 +45,54 @@ options:
     - The location of this cloud function.
     required: true
     type: str
-extends_documentation_fragment: gcp
+  project:
+    description:
+    - The Google Cloud Platform project to use.
+    type: str
+  auth_kind:
+    description:
+    - The type of credential used.
+    type: str
+    required: true
+    choices:
+    - application
+    - machineaccount
+    - serviceaccount
+  service_account_contents:
+    description:
+    - The contents of a Service Account JSON file, either in a dictionary or as a
+      JSON string that represents it.
+    type: jsonarg
+  service_account_file:
+    description:
+    - The path of a Service Account JSON file if serviceaccount is selected as type.
+    type: path
+  service_account_email:
+    description:
+    - An optional service account email address if machineaccount is selected and
+      the user does not wish to use the default email.
+    type: str
+  scopes:
+    description:
+    - Array of scopes to be used
+    type: list
+  env_type:
+    description:
+    - Specifies which Ansible environment you're running this module within.
+    - This should not be set unless you know what you're doing.
+    - This only alters the User Agent string for any API requests.
+    type: str
+notes:
+- for authentication, you can set service_account_file using the c(gcp_service_account_file)
+  env variable.
+- for authentication, you can set service_account_contents using the c(GCP_SERVICE_ACCOUNT_CONTENTS)
+  env variable.
+- For authentication, you can set service_account_email using the C(GCP_SERVICE_ACCOUNT_EMAIL)
+  env variable.
+- For authentication, you can set auth_kind using the C(GCP_AUTH_KIND) env variable.
+- For authentication, you can set scopes using the C(GCP_SCOPES) env variable.
+- Environment variables values will only be used if the playbook values are not set.
+- The I(service_account_email) and I(service_account_file) options are mutually exclusive.
 '''
 
 EXAMPLES = '''
diff --git a/lib/ansible/modules/cloud/google/gcp_cloudscheduler_job.py b/lib/ansible/modules/cloud/google/gcp_cloudscheduler_job.py
index 006582152b9..5aab1cd4128 100644
--- a/lib/ansible/modules/cloud/google/gcp_cloudscheduler_job.py
+++ b/lib/ansible/modules/cloud/google/gcp_cloudscheduler_job.py
@@ -37,7 +37,7 @@ description:
   in one of the supported regions. If your project does not have an App Engine app,
   you must create one.
 short_description: Creates a GCP Job
-version_added: 2.9
+version_added: '2.9'
 author: Google Inc. (@googlecloudplatform)
 requirements:
 - python >= 2.6
@@ -279,10 +279,56 @@ options:
     - Region where the scheduler job resides .
     required: true
     type: str
-extends_documentation_fragment: gcp
+  project:
+    description:
+    - The Google Cloud Platform project to use.
+    type: str
+  auth_kind:
+    description:
+    - The type of credential used.
+    type: str
+    required: true
+    choices:
+    - application
+    - machineaccount
+    - serviceaccount
+  service_account_contents:
+    description:
+    - The contents of a Service Account JSON file, either in a dictionary or as a
+      JSON string that represents it.
+    type: jsonarg
+  service_account_file:
+    description:
+    - The path of a Service Account JSON file if serviceaccount is selected as type.
+    type: path
+  service_account_email:
+    description:
+    - An optional service account email address if machineaccount is selected and
+      the user does not wish to use the default email.
+    type: str
+  scopes:
+    description:
+    - Array of scopes to be used
+    type: list
+  env_type:
+    description:
+    - Specifies which Ansible environment you're running this module within.
+    - This should not be set unless you know what you're doing.
+    - This only alters the User Agent string for any API requests.
+    type: str
 notes:
 - 'API Reference: U(https://cloud.google.com/scheduler/docs/reference/rest/)'
 - 'Official Documentation: U(https://cloud.google.com/scheduler/)'
+- for authentication, you can set service_account_file using the c(gcp_service_account_file)
+  env variable.
+- for authentication, you can set service_account_contents using the c(GCP_SERVICE_ACCOUNT_CONTENTS)
+  env variable.
+- For authentication, you can set service_account_email using the C(GCP_SERVICE_ACCOUNT_EMAIL)
+  env variable.
+- For authentication, you can set auth_kind using the C(GCP_AUTH_KIND) env variable.
+- For authentication, you can set scopes using the C(GCP_SCOPES) env variable.
+- Environment variables values will only be used if the playbook values are not set.
+- The I(service_account_email) and I(service_account_file) options are mutually exclusive.
 '''
 
 EXAMPLES = '''
diff --git a/lib/ansible/modules/cloud/google/gcp_cloudscheduler_job_info.py b/lib/ansible/modules/cloud/google/gcp_cloudscheduler_job_info.py
index 7aee6c8d6d3..4cc78afb85d 100644
--- a/lib/ansible/modules/cloud/google/gcp_cloudscheduler_job_info.py
+++ b/lib/ansible/modules/cloud/google/gcp_cloudscheduler_job_info.py
@@ -33,7 +33,7 @@ module: gcp_cloudscheduler_job_info
 description:
 - Gather info for GCP Job
 short_description: Gather info for GCP Job
-version_added: 2.9
+version_added: '2.9'
 author: Google Inc. (@googlecloudplatform)
 requirements:
 - python >= 2.6
@@ -45,7 +45,54 @@ options:
     - Region where the scheduler job resides .
     required: true
     type: str
-extends_documentation_fragment: gcp
+  project:
+    description:
+    - The Google Cloud Platform project to use.
+    type: str
+  auth_kind:
+    description:
+    - The type of credential used.
+    type: str
+    required: true
+    choices:
+    - application
+    - machineaccount
+    - serviceaccount
+  service_account_contents:
+    description:
+    - The contents of a Service Account JSON file, either in a dictionary or as a
+      JSON string that represents it.
+    type: jsonarg
+  service_account_file:
+    description:
+    - The path of a Service Account JSON file if serviceaccount is selected as type.
+    type: path
+  service_account_email:
+    description:
+    - An optional service account email address if machineaccount is selected and
+      the user does not wish to use the default email.
+    type: str
+  scopes:
+    description:
+    - Array of scopes to be used
+    type: list
+  env_type:
+    description:
+    - Specifies which Ansible environment you're running this module within.
+    - This should not be set unless you know what you're doing.
+    - This only alters the User Agent string for any API requests.
+    type: str
+notes:
+- for authentication, you can set service_account_file using the c(gcp_service_account_file)
+  env variable.
+- for authentication, you can set service_account_contents using the c(GCP_SERVICE_ACCOUNT_CONTENTS)
+  env variable.
+- For authentication, you can set service_account_email using the C(GCP_SERVICE_ACCOUNT_EMAIL)
+  env variable.
+- For authentication, you can set auth_kind using the C(GCP_AUTH_KIND) env variable.
+- For authentication, you can set scopes using the C(GCP_SCOPES) env variable.
+- Environment variables values will only be used if the playbook values are not set.
+- The I(service_account_email) and I(service_account_file) options are mutually exclusive.
 '''
 
 EXAMPLES = '''
diff --git a/lib/ansible/modules/cloud/google/gcp_cloudtasks_queue.py b/lib/ansible/modules/cloud/google/gcp_cloudtasks_queue.py
index 45a867d7683..3b394551d72 100644
--- a/lib/ansible/modules/cloud/google/gcp_cloudtasks_queue.py
+++ b/lib/ansible/modules/cloud/google/gcp_cloudtasks_queue.py
@@ -33,7 +33,7 @@ module: gcp_cloudtasks_queue
 description:
 - A named resource to which messages are sent by publishers.
 short_description: Creates a GCP Queue
-version_added: 2.9
+version_added: '2.9'
 author: Google Inc. (@googlecloudplatform)
 requirements:
 - python >= 2.6
@@ -162,7 +162,43 @@ options:
     - The location of the queue.
     required: true
     type: str
-extends_documentation_fragment: gcp
+  project:
+    description:
+    - The Google Cloud Platform project to use.
+    type: str
+  auth_kind:
+    description:
+    - The type of credential used.
+    type: str
+    required: true
+    choices:
+    - application
+    - machineaccount
+    - serviceaccount
+  service_account_contents:
+    description:
+    - The contents of a Service Account JSON file, either in a dictionary or as a
+      JSON string that represents it.
+    type: jsonarg
+  service_account_file:
+    description:
+    - The path of a Service Account JSON file if serviceaccount is selected as type.
+    type: path
+  service_account_email:
+    description:
+    - An optional service account email address if machineaccount is selected and
+      the user does not wish to use the default email.
+    type: str
+  scopes:
+    description:
+    - Array of scopes to be used
+    type: list
+  env_type:
+    description:
+    - Specifies which Ansible environment you're running this module within.
+    - This should not be set unless you know what you're doing.
+    - This only alters the User Agent string for any API requests.
+    type: str
 '''
 
 EXAMPLES = '''
diff --git a/lib/ansible/modules/cloud/google/gcp_cloudtasks_queue_info.py b/lib/ansible/modules/cloud/google/gcp_cloudtasks_queue_info.py
index 0598c87927d..a63d23eb2f3 100644
--- a/lib/ansible/modules/cloud/google/gcp_cloudtasks_queue_info.py
+++ b/lib/ansible/modules/cloud/google/gcp_cloudtasks_queue_info.py
@@ -33,7 +33,7 @@ module: gcp_cloudtasks_queue_info
 description:
 - Gather info for GCP Queue
 short_description: Gather info for GCP Queue
-version_added: 2.9
+version_added: '2.9'
 author: Google Inc. (@googlecloudplatform)
 requirements:
 - python >= 2.6
@@ -45,7 +45,54 @@ options:
     - The location of the queue.
     required: true
     type: str
-extends_documentation_fragment: gcp
+  project:
+    description:
+    - The Google Cloud Platform project to use.
+    type: str
+  auth_kind:
+    description:
+    - The type of credential used.
+    type: str
+    required: true
+    choices:
+    - application
+    - machineaccount
+    - serviceaccount
+  service_account_contents:
+    description:
+    - The contents of a Service Account JSON file, either in a dictionary or as a
+      JSON string that represents it.
+    type: jsonarg
+  service_account_file:
+    description:
+    - The path of a Service Account JSON file if serviceaccount is selected as type.
+    type: path
+  service_account_email:
+    description:
+    - An optional service account email address if machineaccount is selected and
+      the user does not wish to use the default email.
+    type: str
+  scopes:
+    description:
+    - Array of scopes to be used
+    type: list
+  env_type:
+    description:
+    - Specifies which Ansible environment you're running this module within.
+    - This should not be set unless you know what you're doing.
+    - This only alters the User Agent string for any API requests.
+    type: str
+notes:
+- for authentication, you can set service_account_file using the c(gcp_service_account_file)
+  env variable.
+- for authentication, you can set service_account_contents using the c(GCP_SERVICE_ACCOUNT_CONTENTS)
+  env variable.
+- For authentication, you can set service_account_email using the C(GCP_SERVICE_ACCOUNT_EMAIL)
+  env variable.
+- For authentication, you can set auth_kind using the C(GCP_AUTH_KIND) env variable.
+- For authentication, you can set scopes using the C(GCP_SCOPES) env variable.
+- Environment variables values will only be used if the playbook values are not set.
+- The I(service_account_email) and I(service_account_file) options are mutually exclusive.
 '''
 
 EXAMPLES = '''
diff --git a/lib/ansible/modules/cloud/google/gcp_compute_address.py b/lib/ansible/modules/cloud/google/gcp_compute_address.py
index ff7bdf0bad0..100398ab974 100644
--- a/lib/ansible/modules/cloud/google/gcp_compute_address.py
+++ b/lib/ansible/modules/cloud/google/gcp_compute_address.py
@@ -42,7 +42,7 @@ description:
   a new internal IP address, either by Compute Engine or by you. External IP addresses
   can be either ephemeral or static.
 short_description: Creates a GCP Address
-version_added: 2.6
+version_added: '2.6'
 author: Google Inc. (@googlecloudplatform)
 requirements:
 - python >= 2.6
@@ -72,7 +72,7 @@ options:
     required: false
     default: EXTERNAL
     type: str
-    version_added: 2.7
+    version_added: '2.7'
   description:
     description:
     - An optional description of this resource.
@@ -87,6 +87,16 @@ options:
       letter, or digit, except the last character, which cannot be a dash.
     required: true
     type: str
+  purpose:
+    description:
+    - 'The purpose of this resource, which can be one of the following values: - GCE_ENDPOINT
+      for addresses that are used by VM instances, alias IP ranges, internal load
+      balancers, and similar resources.'
+    - This should only be set when using an Internal address.
+    - 'Some valid choices include: "GCE_ENDPOINT"'
+    required: false
+    type: str
+    version_added: '2.10'
   network_tier:
     description:
     - 'The networking tier used for configuring this address. This field can take
@@ -95,7 +105,7 @@ options:
     - 'Some valid choices include: "PREMIUM", "STANDARD"'
     required: false
     type: str
-    version_added: 2.8
+    version_added: '2.8'
   subnetwork:
     description:
     - The URL of the subnetwork in which to reserve the address. If an IP address
@@ -109,18 +119,64 @@ options:
       }}"'
     required: false
     type: dict
-    version_added: 2.7
+    version_added: '2.7'
   region:
     description:
     - URL of the region where the regional address resides.
     - This field is not applicable to global addresses.
     required: true
     type: str
-extends_documentation_fragment: gcp
+  project:
+    description:
+    - The Google Cloud Platform project to use.
+    type: str
+  auth_kind:
+    description:
+    - The type of credential used.
+    type: str
+    required: true
+    choices:
+    - application
+    - machineaccount
+    - serviceaccount
+  service_account_contents:
+    description:
+    - The contents of a Service Account JSON file, either in a dictionary or as a
+      JSON string that represents it.
+    type: jsonarg
+  service_account_file:
+    description:
+    - The path of a Service Account JSON file if serviceaccount is selected as type.
+    type: path
+  service_account_email:
+    description:
+    - An optional service account email address if machineaccount is selected and
+      the user does not wish to use the default email.
+    type: str
+  scopes:
+    description:
+    - Array of scopes to be used
+    type: list
+  env_type:
+    description:
+    - Specifies which Ansible environment you're running this module within.
+    - This should not be set unless you know what you're doing.
+    - This only alters the User Agent string for any API requests.
+    type: str
 notes:
 - 'API Reference: U(https://cloud.google.com/compute/docs/reference/beta/addresses)'
 - 'Reserving a Static External IP Address: U(https://cloud.google.com/compute/docs/instances-and-network)'
 - 'Reserving a Static Internal IP Address: U(https://cloud.google.com/compute/docs/ip-addresses/reserve-static-internal-ip-address)'
+- for authentication, you can set service_account_file using the c(gcp_service_account_file)
+  env variable.
+- for authentication, you can set service_account_contents using the c(GCP_SERVICE_ACCOUNT_CONTENTS)
+  env variable.
+- For authentication, you can set service_account_email using the C(GCP_SERVICE_ACCOUNT_EMAIL)
+  env variable.
+- For authentication, you can set auth_kind using the C(GCP_AUTH_KIND) env variable.
+- For authentication, you can set scopes using the C(GCP_SCOPES) env variable.
+- Environment variables values will only be used if the playbook values are not set.
+- The I(service_account_email) and I(service_account_file) options are mutually exclusive.
 '''
 
 EXAMPLES = '''
@@ -172,6 +228,14 @@ name:
     except the last character, which cannot be a dash.
   returned: success
   type: str
+purpose:
+  description:
+  - 'The purpose of this resource, which can be one of the following values: - GCE_ENDPOINT
+    for addresses that are used by VM instances, alias IP ranges, internal load balancers,
+    and similar resources.'
+  - This should only be set when using an Internal address.
+  returned: success
+  type: str
 networkTier:
   description:
   - 'The networking tier used for configuring this address. This field can take the
@@ -223,6 +287,7 @@ def main():
             address_type=dict(default='EXTERNAL', type='str'),
             description=dict(type='str'),
             name=dict(required=True, type='str'),
+            purpose=dict(type='str'),
             network_tier=dict(type='str'),
             subnetwork=dict(type='dict'),
             region=dict(required=True, type='str'),
@@ -282,6 +347,7 @@ def resource_to_request(module):
         u'addressType': module.params.get('address_type'),
         u'description': module.params.get('description'),
         u'name': module.params.get('name'),
+        u'purpose': module.params.get('purpose'),
         u'networkTier': module.params.get('network_tier'),
         u'subnetwork': replace_resource_dict(module.params.get(u'subnetwork', {}), 'selfLink'),
     }
@@ -355,6 +421,7 @@ def response_to_hash(module, response):
         u'description': response.get(u'description'),
         u'id': response.get(u'id'),
         u'name': response.get(u'name'),
+        u'purpose': response.get(u'purpose'),
         u'networkTier': response.get(u'networkTier'),
         u'subnetwork': response.get(u'subnetwork'),
         u'users': response.get(u'users'),
diff --git a/lib/ansible/modules/cloud/google/gcp_compute_address_info.py b/lib/ansible/modules/cloud/google/gcp_compute_address_info.py
index a7791eaa36d..a2e40813ee6 100644
--- a/lib/ansible/modules/cloud/google/gcp_compute_address_info.py
+++ b/lib/ansible/modules/cloud/google/gcp_compute_address_info.py
@@ -35,7 +35,7 @@ description:
 - This module was called C(gcp_compute_address_facts) before Ansible 2.9. The usage
   has not changed.
 short_description: Gather info for GCP Address
-version_added: 2.7
+version_added: '2.7'
 author: Google Inc. (@googlecloudplatform)
 requirements:
 - python >= 2.6
@@ -54,7 +54,54 @@ options:
     - This field is not applicable to global addresses.
     required: true
     type: str
-extends_documentation_fragment: gcp
+  project:
+    description:
+    - The Google Cloud Platform project to use.
+    type: str
+  auth_kind:
+    description:
+    - The type of credential used.
+    type: str
+    required: true
+    choices:
+    - application
+    - machineaccount
+    - serviceaccount
+  service_account_contents:
+    description:
+    - The contents of a Service Account JSON file, either in a dictionary or as a
+      JSON string that represents it.
+    type: jsonarg
+  service_account_file:
+    description:
+    - The path of a Service Account JSON file if serviceaccount is selected as type.
+    type: path
+  service_account_email:
+    description:
+    - An optional service account email address if machineaccount is selected and
+      the user does not wish to use the default email.
+    type: str
+  scopes:
+    description:
+    - Array of scopes to be used
+    type: list
+  env_type:
+    description:
+    - Specifies which Ansible environment you're running this module within.
+    - This should not be set unless you know what you're doing.
+    - This only alters the User Agent string for any API requests.
+    type: str
+notes:
+- for authentication, you can set service_account_file using the c(gcp_service_account_file)
+  env variable.
+- for authentication, you can set service_account_contents using the c(GCP_SERVICE_ACCOUNT_CONTENTS)
+  env variable.
+- For authentication, you can set service_account_email using the C(GCP_SERVICE_ACCOUNT_EMAIL)
+  env variable.
+- For authentication, you can set auth_kind using the C(GCP_AUTH_KIND) env variable.
+- For authentication, you can set scopes using the C(GCP_SCOPES) env variable.
+- Environment variables values will only be used if the playbook values are not set.
+- The I(service_account_email) and I(service_account_file) options are mutually exclusive.
 '''
 
 EXAMPLES = '''
@@ -111,6 +158,14 @@ resources:
         letter, or digit, except the last character, which cannot be a dash.
       returned: success
       type: str
+    purpose:
+      description:
+      - 'The purpose of this resource, which can be one of the following values: -
+        GCE_ENDPOINT for addresses that are used by VM instances, alias IP ranges,
+        internal load balancers, and similar resources.'
+      - This should only be set when using an Internal address.
+      returned: success
+      type: str
     networkTier:
       description:
       - 'The networking tier used for configuring this address. This field can take
diff --git a/lib/ansible/modules/cloud/google/gcp_compute_autoscaler.py b/lib/ansible/modules/cloud/google/gcp_compute_autoscaler.py
index a4b37d70ba8..06869a2bf59 100644
--- a/lib/ansible/modules/cloud/google/gcp_compute_autoscaler.py
+++ b/lib/ansible/modules/cloud/google/gcp_compute_autoscaler.py
@@ -35,7 +35,7 @@ description:
 - Autoscalers allow you to automatically scale virtual machine instances in managed
   instance groups according to an autoscaling policy that you define.
 short_description: Creates a GCP Autoscaler
-version_added: 2.9
+version_added: '2.9'
 author: Google Inc. (@googlecloudplatform)
 requirements:
 - python >= 2.6
@@ -198,10 +198,56 @@ options:
     - URL of the zone where the instance group resides.
     required: true
     type: str
-extends_documentation_fragment: gcp
+  project:
+    description:
+    - The Google Cloud Platform project to use.
+    type: str
+  auth_kind:
+    description:
+    - The type of credential used.
+    type: str
+    required: true
+    choices:
+    - application
+    - machineaccount
+    - serviceaccount
+  service_account_contents:
+    description:
+    - The contents of a Service Account JSON file, either in a dictionary or as a
+      JSON string that represents it.
+    type: jsonarg
+  service_account_file:
+    description:
+    - The path of a Service Account JSON file if serviceaccount is selected as type.
+    type: path
+  service_account_email:
+    description:
+    - An optional service account email address if machineaccount is selected and
+      the user does not wish to use the default email.
+    type: str
+  scopes:
+    description:
+    - Array of scopes to be used
+    type: list
+  env_type:
+    description:
+    - Specifies which Ansible environment you're running this module within.
+    - This should not be set unless you know what you're doing.
+    - This only alters the User Agent string for any API requests.
+    type: str
 notes:
 - 'API Reference: U(https://cloud.google.com/compute/docs/reference/rest/v1/autoscalers)'
 - 'Autoscaling Groups of Instances: U(https://cloud.google.com/compute/docs/autoscaler/)'
+- for authentication, you can set service_account_file using the c(gcp_service_account_file)
+  env variable.
+- for authentication, you can set service_account_contents using the c(GCP_SERVICE_ACCOUNT_CONTENTS)
+  env variable.
+- For authentication, you can set service_account_email using the C(GCP_SERVICE_ACCOUNT_EMAIL)
+  env variable.
+- For authentication, you can set auth_kind using the C(GCP_AUTH_KIND) env variable.
+- For authentication, you can set scopes using the C(GCP_SCOPES) env variable.
+- Environment variables values will only be used if the playbook values are not set.
+- The I(service_account_email) and I(service_account_file) options are mutually exclusive.
 '''
 
 EXAMPLES = '''
diff --git a/lib/ansible/modules/cloud/google/gcp_compute_autoscaler_info.py b/lib/ansible/modules/cloud/google/gcp_compute_autoscaler_info.py
index 8c957f8b09f..9b3d509d3d3 100644
--- a/lib/ansible/modules/cloud/google/gcp_compute_autoscaler_info.py
+++ b/lib/ansible/modules/cloud/google/gcp_compute_autoscaler_info.py
@@ -33,7 +33,7 @@ module: gcp_compute_autoscaler_info
 description:
 - Gather info for GCP Autoscaler
 short_description: Gather info for GCP Autoscaler
-version_added: 2.9
+version_added: '2.9'
 author: Google Inc. (@googlecloudplatform)
 requirements:
 - python >= 2.6
@@ -51,7 +51,54 @@ options:
     - URL of the zone where the instance group resides.
     required: true
     type: str
-extends_documentation_fragment: gcp
+  project:
+    description:
+    - The Google Cloud Platform project to use.
+    type: str
+  auth_kind:
+    description:
+    - The type of credential used.
+    type: str
+    required: true
+    choices:
+    - application
+    - machineaccount
+    - serviceaccount
+  service_account_contents:
+    description:
+    - The contents of a Service Account JSON file, either in a dictionary or as a
+      JSON string that represents it.
+    type: jsonarg
+  service_account_file:
+    description:
+    - The path of a Service Account JSON file if serviceaccount is selected as type.
+    type: path
+  service_account_email:
+    description:
+    - An optional service account email address if machineaccount is selected and
+      the user does not wish to use the default email.
+    type: str
+  scopes:
+    description:
+    - Array of scopes to be used
+    type: list
+  env_type:
+    description:
+    - Specifies which Ansible environment you're running this module within.
+    - This should not be set unless you know what you're doing.
+    - This only alters the User Agent string for any API requests.
+    type: str
+notes:
+- for authentication, you can set service_account_file using the c(gcp_service_account_file)
+  env variable.
+- for authentication, you can set service_account_contents using the c(GCP_SERVICE_ACCOUNT_CONTENTS)
+  env variable.
+- For authentication, you can set service_account_email using the C(GCP_SERVICE_ACCOUNT_EMAIL)
+  env variable.
+- For authentication, you can set auth_kind using the C(GCP_AUTH_KIND) env variable.
+- For authentication, you can set scopes using the C(GCP_SCOPES) env variable.
+- Environment variables values will only be used if the playbook values are not set.
+- The I(service_account_email) and I(service_account_file) options are mutually exclusive.
 '''
 
 EXAMPLES = '''
diff --git a/lib/ansible/modules/cloud/google/gcp_compute_backend_bucket.py b/lib/ansible/modules/cloud/google/gcp_compute_backend_bucket.py
index 3d268b7c7ca..cf177f3d91c 100644
--- a/lib/ansible/modules/cloud/google/gcp_compute_backend_bucket.py
+++ b/lib/ansible/modules/cloud/google/gcp_compute_backend_bucket.py
@@ -35,9 +35,9 @@ description:
   balancing.
 - An HTTP(S) load balancer can direct traffic to specified URLs to a backend bucket
   rather than a backend service. It can send requests for static content to a Cloud
-  Storage bucket and requests for dynamic content a virtual machine instance.
+  Storage bucket and requests for dynamic content to a virtual machine instance.
 short_description: Creates a GCP BackendBucket
-version_added: 2.6
+version_added: '2.6'
 author: Google Inc. (@googlecloudplatform)
 requirements:
 - python >= 2.6
@@ -62,7 +62,7 @@ options:
     - Cloud CDN configuration for this Backend Bucket.
     required: false
     type: dict
-    version_added: 2.8
+    version_added: '2.8'
     suboptions:
       signed_url_cache_max_age_sec:
         description:
@@ -97,10 +97,56 @@ options:
       which cannot be a dash.
     required: true
     type: str
-extends_documentation_fragment: gcp
+  project:
+    description:
+    - The Google Cloud Platform project to use.
+    type: str
+  auth_kind:
+    description:
+    - The type of credential used.
+    type: str
+    required: true
+    choices:
+    - application
+    - machineaccount
+    - serviceaccount
+  service_account_contents:
+    description:
+    - The contents of a Service Account JSON file, either in a dictionary or as a
+      JSON string that represents it.
+    type: jsonarg
+  service_account_file:
+    description:
+    - The path of a Service Account JSON file if serviceaccount is selected as type.
+    type: path
+  service_account_email:
+    description:
+    - An optional service account email address if machineaccount is selected and
+      the user does not wish to use the default email.
+    type: str
+  scopes:
+    description:
+    - Array of scopes to be used
+    type: list
+  env_type:
+    description:
+    - Specifies which Ansible environment you're running this module within.
+    - This should not be set unless you know what you're doing.
+    - This only alters the User Agent string for any API requests.
+    type: str
 notes:
 - 'API Reference: U(https://cloud.google.com/compute/docs/reference/v1/backendBuckets)'
 - 'Using a Cloud Storage bucket as a load balancer backend: U(https://cloud.google.com/compute/docs/load-balancing/http/backend-bucket)'
+- for authentication, you can set service_account_file using the c(gcp_service_account_file)
+  env variable.
+- for authentication, you can set service_account_contents using the c(GCP_SERVICE_ACCOUNT_CONTENTS)
+  env variable.
+- For authentication, you can set service_account_email using the C(GCP_SERVICE_ACCOUNT_EMAIL)
+  env variable.
+- For authentication, you can set auth_kind using the C(GCP_AUTH_KIND) env variable.
+- For authentication, you can set scopes using the C(GCP_SCOPES) env variable.
+- Environment variables values will only be used if the playbook values are not set.
+- The I(service_account_email) and I(service_account_file) options are mutually exclusive.
 '''
 
 EXAMPLES = '''
diff --git a/lib/ansible/modules/cloud/google/gcp_compute_backend_bucket_info.py b/lib/ansible/modules/cloud/google/gcp_compute_backend_bucket_info.py
index 2d6c62a265e..a195ca845ab 100644
--- a/lib/ansible/modules/cloud/google/gcp_compute_backend_bucket_info.py
+++ b/lib/ansible/modules/cloud/google/gcp_compute_backend_bucket_info.py
@@ -35,7 +35,7 @@ description:
 - This module was called C(gcp_compute_backend_bucket_facts) before Ansible 2.9. The
   usage has not changed.
 short_description: Gather info for GCP BackendBucket
-version_added: 2.7
+version_added: '2.7'
 author: Google Inc. (@googlecloudplatform)
 requirements:
 - python >= 2.6
@@ -48,7 +48,54 @@ options:
     - Each additional filter in the list will act be added as an AND condition (filter1
       and filter2) .
     type: list
-extends_documentation_fragment: gcp
+  project:
+    description:
+    - The Google Cloud Platform project to use.
+    type: str
+  auth_kind:
+    description:
+    - The type of credential used.
+    type: str
+    required: true
+    choices:
+    - application
+    - machineaccount
+    - serviceaccount
+  service_account_contents:
+    description:
+    - The contents of a Service Account JSON file, either in a dictionary or as a
+      JSON string that represents it.
+    type: jsonarg
+  service_account_file:
+    description:
+    - The path of a Service Account JSON file if serviceaccount is selected as type.
+    type: path
+  service_account_email:
+    description:
+    - An optional service account email address if machineaccount is selected and
+      the user does not wish to use the default email.
+    type: str
+  scopes:
+    description:
+    - Array of scopes to be used
+    type: list
+  env_type:
+    description:
+    - Specifies which Ansible environment you're running this module within.
+    - This should not be set unless you know what you're doing.
+    - This only alters the User Agent string for any API requests.
+    type: str
+notes:
+- for authentication, you can set service_account_file using the c(gcp_service_account_file)
+  env variable.
+- for authentication, you can set service_account_contents using the c(GCP_SERVICE_ACCOUNT_CONTENTS)
+  env variable.
+- For authentication, you can set service_account_email using the C(GCP_SERVICE_ACCOUNT_EMAIL)
+  env variable.
+- For authentication, you can set auth_kind using the C(GCP_AUTH_KIND) env variable.
+- For authentication, you can set scopes using the C(GCP_SCOPES) env variable.
+- Environment variables values will only be used if the playbook values are not set.
+- The I(service_account_email) and I(service_account_file) options are mutually exclusive.
 '''
 
 EXAMPLES = '''
diff --git a/lib/ansible/modules/cloud/google/gcp_compute_backend_service.py b/lib/ansible/modules/cloud/google/gcp_compute_backend_service.py
index 5914d9774e4..335419294cb 100644
--- a/lib/ansible/modules/cloud/google/gcp_compute_backend_service.py
+++ b/lib/ansible/modules/cloud/google/gcp_compute_backend_service.py
@@ -37,7 +37,7 @@ description:
 - For managed internal load balancing, use a regional backend service instead.
 - Currently self-managed internal load balancing is only available in beta.
 short_description: Creates a GCP BackendService
-version_added: 2.6
+version_added: '2.6'
 author: Google Inc. (@googlecloudplatform)
 requirements:
 - python >= 2.6
@@ -134,7 +134,7 @@ options:
           must be set.
         required: false
         type: int
-        version_added: 2.9
+        version_added: '2.9'
       max_rate:
         description:
         - The max requests per second (RPS) of the group.
@@ -159,7 +159,7 @@ options:
           must be set.
         required: false
         type: str
-        version_added: 2.9
+        version_added: '2.9'
       max_utilization:
         description:
         - Used when balancingMode is UTILIZATION. This ratio defines the CPU utilization
@@ -225,7 +225,7 @@ options:
         required: false
         default: '3600'
         type: int
-        version_added: 2.8
+        version_added: '2.8'
   connection_draining:
     description:
     - Settings for connection draining .
@@ -263,7 +263,7 @@ options:
     - Settings for enabling Cloud Identity Aware Proxy.
     required: false
     type: dict
-    version_added: 2.7
+    version_added: '2.7'
     suboptions:
       enabled:
         description:
@@ -290,7 +290,7 @@ options:
     required: false
     default: EXTERNAL
     type: str
-    version_added: 2.7
+    version_added: '2.7'
   name:
     description:
     - Name of the resource. Provided by the client when the resource is created. The
@@ -321,13 +321,13 @@ options:
     - The security policy associated with this backend service.
     required: false
     type: str
-    version_added: 2.8
+    version_added: '2.8'
   session_affinity:
     description:
-    - Type of session affinity to use. The default is NONE.
-    - When the load balancing scheme is EXTERNAL, can be NONE, CLIENT_IP, or GENERATED_COOKIE.
-    - When the protocol is UDP, this field is not used.
-    - 'Some valid choices include: "NONE", "CLIENT_IP", "GENERATED_COOKIE"'
+    - Type of session affinity to use. The default is NONE. Session affinity is not
+      applicable if the protocol is UDP.
+    - 'Some valid choices include: "NONE", "CLIENT_IP", "CLIENT_IP_PORT_PROTO", "CLIENT_IP_PROTO",
+      "GENERATED_COOKIE", "HEADER_FIELD", "HTTP_COOKIE"'
     required: false
     type: str
   timeout_sec:
@@ -338,10 +338,56 @@ options:
     type: int
     aliases:
     - timeout_seconds
-extends_documentation_fragment: gcp
+  project:
+    description:
+    - The Google Cloud Platform project to use.
+    type: str
+  auth_kind:
+    description:
+    - The type of credential used.
+    type: str
+    required: true
+    choices:
+    - application
+    - machineaccount
+    - serviceaccount
+  service_account_contents:
+    description:
+    - The contents of a Service Account JSON file, either in a dictionary or as a
+      JSON string that represents it.
+    type: jsonarg
+  service_account_file:
+    description:
+    - The path of a Service Account JSON file if serviceaccount is selected as type.
+    type: path
+  service_account_email:
+    description:
+    - An optional service account email address if machineaccount is selected and
+      the user does not wish to use the default email.
+    type: str
+  scopes:
+    description:
+    - Array of scopes to be used
+    type: list
+  env_type:
+    description:
+    - Specifies which Ansible environment you're running this module within.
+    - This should not be set unless you know what you're doing.
+    - This only alters the User Agent string for any API requests.
+    type: str
 notes:
 - 'API Reference: U(https://cloud.google.com/compute/docs/reference/v1/backendServices)'
 - 'Official Documentation: U(https://cloud.google.com/compute/docs/load-balancing/http/backend-service)'
+- for authentication, you can set service_account_file using the c(gcp_service_account_file)
+  env variable.
+- for authentication, you can set service_account_contents using the c(GCP_SERVICE_ACCOUNT_CONTENTS)
+  env variable.
+- For authentication, you can set service_account_email using the C(GCP_SERVICE_ACCOUNT_EMAIL)
+  env variable.
+- For authentication, you can set auth_kind using the C(GCP_AUTH_KIND) env variable.
+- For authentication, you can set scopes using the C(GCP_SCOPES) env variable.
+- Environment variables values will only be used if the playbook values are not set.
+- The I(service_account_email) and I(service_account_file) options are mutually exclusive.
 '''
 
 EXAMPLES = '''
@@ -660,9 +706,8 @@ securityPolicy:
   type: str
 sessionAffinity:
   description:
-  - Type of session affinity to use. The default is NONE.
-  - When the load balancing scheme is EXTERNAL, can be NONE, CLIENT_IP, or GENERATED_COOKIE.
-  - When the protocol is UDP, this field is not used.
+  - Type of session affinity to use. The default is NONE. Session affinity is not
+    applicable if the protocol is UDP.
   returned: success
   type: str
 timeoutSec:
diff --git a/lib/ansible/modules/cloud/google/gcp_compute_backend_service_info.py b/lib/ansible/modules/cloud/google/gcp_compute_backend_service_info.py
index 5d529126bf5..4d17facde01 100644
--- a/lib/ansible/modules/cloud/google/gcp_compute_backend_service_info.py
+++ b/lib/ansible/modules/cloud/google/gcp_compute_backend_service_info.py
@@ -35,7 +35,7 @@ description:
 - This module was called C(gcp_compute_backend_service_facts) before Ansible 2.9.
   The usage has not changed.
 short_description: Gather info for GCP BackendService
-version_added: 2.7
+version_added: '2.7'
 author: Google Inc. (@googlecloudplatform)
 requirements:
 - python >= 2.6
@@ -48,7 +48,54 @@ options:
     - Each additional filter in the list will act be added as an AND condition (filter1
       and filter2) .
     type: list
-extends_documentation_fragment: gcp
+  project:
+    description:
+    - The Google Cloud Platform project to use.
+    type: str
+  auth_kind:
+    description:
+    - The type of credential used.
+    type: str
+    required: true
+    choices:
+    - application
+    - machineaccount
+    - serviceaccount
+  service_account_contents:
+    description:
+    - The contents of a Service Account JSON file, either in a dictionary or as a
+      JSON string that represents it.
+    type: jsonarg
+  service_account_file:
+    description:
+    - The path of a Service Account JSON file if serviceaccount is selected as type.
+    type: path
+  service_account_email:
+    description:
+    - An optional service account email address if machineaccount is selected and
+      the user does not wish to use the default email.
+    type: str
+  scopes:
+    description:
+    - Array of scopes to be used
+    type: list
+  env_type:
+    description:
+    - Specifies which Ansible environment you're running this module within.
+    - This should not be set unless you know what you're doing.
+    - This only alters the User Agent string for any API requests.
+    type: str
+notes:
+- for authentication, you can set service_account_file using the c(gcp_service_account_file)
+  env variable.
+- for authentication, you can set service_account_contents using the c(GCP_SERVICE_ACCOUNT_CONTENTS)
+  env variable.
+- For authentication, you can set service_account_email using the C(GCP_SERVICE_ACCOUNT_EMAIL)
+  env variable.
+- For authentication, you can set auth_kind using the C(GCP_AUTH_KIND) env variable.
+- For authentication, you can set scopes using the C(GCP_SCOPES) env variable.
+- Environment variables values will only be used if the playbook values are not set.
+- The I(service_account_email) and I(service_account_file) options are mutually exclusive.
 '''
 
 EXAMPLES = '''
@@ -346,9 +393,8 @@ resources:
       type: str
     sessionAffinity:
       description:
-      - Type of session affinity to use. The default is NONE.
-      - When the load balancing scheme is EXTERNAL, can be NONE, CLIENT_IP, or GENERATED_COOKIE.
-      - When the protocol is UDP, this field is not used.
+      - Type of session affinity to use. The default is NONE. Session affinity is
+        not applicable if the protocol is UDP.
       returned: success
       type: str
     timeoutSec:
diff --git a/lib/ansible/modules/cloud/google/gcp_compute_disk.py b/lib/ansible/modules/cloud/google/gcp_compute_disk.py
index 55820fd099d..29e259078c4 100644
--- a/lib/ansible/modules/cloud/google/gcp_compute_disk.py
+++ b/lib/ansible/modules/cloud/google/gcp_compute_disk.py
@@ -43,7 +43,7 @@ description:
 - Add a persistent disk to your instance when you need reliable and affordable storage
   with consistent performance characteristics.
 short_description: Creates a GCP Disk
-version_added: 2.6
+version_added: '2.6'
 author: Google Inc. (@googlecloudplatform)
 requirements:
 - python >= 2.6
@@ -69,7 +69,7 @@ options:
     - Labels to apply to this disk. A list of key->value pairs.
     required: false
     type: dict
-    version_added: 2.7
+    version_added: '2.7'
   licenses:
     description:
     - Any applicable publicly visible licenses.
@@ -104,14 +104,14 @@ options:
       values for the caller's project.
     required: false
     type: int
-    version_added: 2.8
+    version_added: '2.8'
   type:
     description:
     - URL of the disk type resource describing which disk type to use to create the
       disk. Provide this when creating the disk.
     required: false
     type: str
-    version_added: 2.7
+    version_added: '2.7'
   source_image:
     description:
     - The source image used to create this disk. If the source image is deleted, this
@@ -203,10 +203,56 @@ options:
         - The name of the encryption key that is stored in Google Cloud KMS.
         required: false
         type: str
-extends_documentation_fragment: gcp
+  project:
+    description:
+    - The Google Cloud Platform project to use.
+    type: str
+  auth_kind:
+    description:
+    - The type of credential used.
+    type: str
+    required: true
+    choices:
+    - application
+    - machineaccount
+    - serviceaccount
+  service_account_contents:
+    description:
+    - The contents of a Service Account JSON file, either in a dictionary or as a
+      JSON string that represents it.
+    type: jsonarg
+  service_account_file:
+    description:
+    - The path of a Service Account JSON file if serviceaccount is selected as type.
+    type: path
+  service_account_email:
+    description:
+    - An optional service account email address if machineaccount is selected and
+      the user does not wish to use the default email.
+    type: str
+  scopes:
+    description:
+    - Array of scopes to be used
+    type: list
+  env_type:
+    description:
+    - Specifies which Ansible environment you're running this module within.
+    - This should not be set unless you know what you're doing.
+    - This only alters the User Agent string for any API requests.
+    type: str
 notes:
 - 'API Reference: U(https://cloud.google.com/compute/docs/reference/v1/disks)'
 - 'Adding a persistent disk: U(https://cloud.google.com/compute/docs/disks/add-persistent-disk)'
+- for authentication, you can set service_account_file using the c(gcp_service_account_file)
+  env variable.
+- for authentication, you can set service_account_contents using the c(GCP_SERVICE_ACCOUNT_CONTENTS)
+  env variable.
+- For authentication, you can set service_account_email using the C(GCP_SERVICE_ACCOUNT_EMAIL)
+  env variable.
+- For authentication, you can set auth_kind using the C(GCP_AUTH_KIND) env variable.
+- For authentication, you can set scopes using the C(GCP_SCOPES) env variable.
+- Environment variables values will only be used if the playbook values are not set.
+- The I(service_account_email) and I(service_account_file) options are mutually exclusive.
 '''
 
 EXAMPLES = '''
diff --git a/test/integration/targets/gcp_appengine_firewall_rule/tasks/autogen.yml b/test/integration/targets/gcp_appengine_firewall_rule/tasks/autogen.yml
new file mode 100644
index 00000000000..5233e460a00
--- /dev/null
+++ b/test/integration/targets/gcp_appengine_firewall_rule/tasks/autogen.yml
@@ -0,0 +1,108 @@
+---
+# ----------------------------------------------------------------------------
+#
+#     ***     AUTO GENERATED CODE    ***    AUTO GENERATED CODE     ***
+#
+# ----------------------------------------------------------------------------
+#
+#     This file is automatically generated by Magic Modules and manual
+#     changes will be clobbered when the file is regenerated.
+#
+#     Please read more about how to change this file at
+#     https://www.github.com/GoogleCloudPlatform/magic-modules
+#
+# ----------------------------------------------------------------------------
+# Pre-test setup
+- name: delete a firewall rule
+  gcp_appengine_firewall_rule:
+    priority: 1000
+    source_range: 10.0.0.0
+    action: ALLOW
+    project: "{{ gcp_project }}"
+    auth_kind: "{{ gcp_cred_kind }}"
+    service_account_file: "{{ gcp_cred_file }}"
+    state: absent
+#----------------------------------------------------------
+- name: create a firewall rule
+  gcp_appengine_firewall_rule:
+    priority: 1000
+    source_range: 10.0.0.0
+    action: ALLOW
+    project: "{{ gcp_project }}"
+    auth_kind: "{{ gcp_cred_kind }}"
+    service_account_file: "{{ gcp_cred_file }}"
+    state: present
+  register: result
+- name: assert changed is true
+  assert:
+    that:
+      - result.changed == true
+- name: verify that firewall_rule was created
+  gcp_appengine_firewall_rule_info:
+      project: "{{ gcp_project }}"
+      auth_kind: "{{ gcp_cred_kind }}"
+      service_account_file: "{{ gcp_cred_file }}"
+      scopes:
+        - https://www.googleapis.com/auth/cloud-platform
+  register: results
+- name: verify that command succeeded
+  assert:
+    that:
+      - results['resources'] | length >= 1
+# ----------------------------------------------------------------------------
+- name: create a firewall rule that already exists
+  gcp_appengine_firewall_rule:
+    priority: 1000
+    source_range: 10.0.0.0
+    action: ALLOW
+    project: "{{ gcp_project }}"
+    auth_kind: "{{ gcp_cred_kind }}"
+    service_account_file: "{{ gcp_cred_file }}"
+    state: present
+  register: result
+- name: assert changed is false
+  assert:
+    that:
+      - result.changed == false
+#----------------------------------------------------------
+- name: delete a firewall rule
+  gcp_appengine_firewall_rule:
+    priority: 1000
+    source_range: 10.0.0.0
+    action: ALLOW
+    project: "{{ gcp_project }}"
+    auth_kind: "{{ gcp_cred_kind }}"
+    service_account_file: "{{ gcp_cred_file }}"
+    state: absent
+  register: result
+- name: assert changed is true
+  assert:
+    that:
+      - result.changed == true
+- name: verify that firewall_rule was deleted
+  gcp_appengine_firewall_rule_info:
+      project: "{{ gcp_project }}"
+      auth_kind: "{{ gcp_cred_kind }}"
+      service_account_file: "{{ gcp_cred_file }}"
+      scopes:
+        - https://www.googleapis.com/auth/cloud-platform
+  register: results
+- name: verify that command succeeded
+  assert:
+    that:
+      - results['resources'] | length == 0
+# ----------------------------------------------------------------------------
+- name: delete a firewall rule that does not exist
+  gcp_appengine_firewall_rule:
+    priority: 1000
+    source_range: 10.0.0.0
+    action: ALLOW
+    project: "{{ gcp_project }}"
+    auth_kind: "{{ gcp_cred_kind }}"
+    service_account_file: "{{ gcp_cred_file }}"
+    state: absent
+  register: result
+- name: assert changed is false
+  assert:
+    that:
+      - result.changed == false
diff --git a/test/integration/targets/gcp_appengine_firewall_rule/tasks/main.yml b/test/integration/targets/gcp_appengine_firewall_rule/tasks/main.yml
index 5233e460a00..45d6e49178c 100644
--- a/test/integration/targets/gcp_appengine_firewall_rule/tasks/main.yml
+++ b/test/integration/targets/gcp_appengine_firewall_rule/tasks/main.yml
@@ -1,108 +1,2 @@
 ---
-# ----------------------------------------------------------------------------
-#
-#     ***     AUTO GENERATED CODE    ***    AUTO GENERATED CODE     ***
-#
-# ----------------------------------------------------------------------------
-#
-#     This file is automatically generated by Magic Modules and manual
-#     changes will be clobbered when the file is regenerated.
-#
-#     Please read more about how to change this file at
-#     https://www.github.com/GoogleCloudPlatform/magic-modules
-#
-# ----------------------------------------------------------------------------
-# Pre-test setup
-- name: delete a firewall rule
-  gcp_appengine_firewall_rule:
-    priority: 1000
-    source_range: 10.0.0.0
-    action: ALLOW
-    project: "{{ gcp_project }}"
-    auth_kind: "{{ gcp_cred_kind }}"
-    service_account_file: "{{ gcp_cred_file }}"
-    state: absent
-#----------------------------------------------------------
-- name: create a firewall rule
-  gcp_appengine_firewall_rule:
-    priority: 1000
-    source_range: 10.0.0.0
-    action: ALLOW
-    project: "{{ gcp_project }}"
-    auth_kind: "{{ gcp_cred_kind }}"
-    service_account_file: "{{ gcp_cred_file }}"
-    state: present
-  register: result
-- name: assert changed is true
-  assert:
-    that:
-      - result.changed == true
-- name: verify that firewall_rule was created
-  gcp_appengine_firewall_rule_info:
-      project: "{{ gcp_project }}"
-      auth_kind: "{{ gcp_cred_kind }}"
-      service_account_file: "{{ gcp_cred_file }}"
-      scopes:
-        - https://www.googleapis.com/auth/cloud-platform
-  register: results
-- name: verify that command succeeded
-  assert:
-    that:
-      - results['resources'] | length >= 1
-# ----------------------------------------------------------------------------
-- name: create a firewall rule that already exists
-  gcp_appengine_firewall_rule:
-    priority: 1000
-    source_range: 10.0.0.0
-    action: ALLOW
-    project: "{{ gcp_project }}"
-    auth_kind: "{{ gcp_cred_kind }}"
-    service_account_file: "{{ gcp_cred_file }}"
-    state: present
-  register: result
-- name: assert changed is false
-  assert:
-    that:
-      - result.changed == false
-#----------------------------------------------------------
-- name: delete a firewall rule
-  gcp_appengine_firewall_rule:
-    priority: 1000
-    source_range: 10.0.0.0
-    action: ALLOW
-    project: "{{ gcp_project }}"
-    auth_kind: "{{ gcp_cred_kind }}"
-    service_account_file: "{{ gcp_cred_file }}"
-    state: absent
-  register: result
-- name: assert changed is true
-  assert:
-    that:
-      - result.changed == true
-- name: verify that firewall_rule was deleted
-  gcp_appengine_firewall_rule_info:
-      project: "{{ gcp_project }}"
-      auth_kind: "{{ gcp_cred_kind }}"
-      service_account_file: "{{ gcp_cred_file }}"
-      scopes:
-        - https://www.googleapis.com/auth/cloud-platform
-  register: results
-- name: verify that command succeeded
-  assert:
-    that:
-      - results['resources'] | length == 0
-# ----------------------------------------------------------------------------
-- name: delete a firewall rule that does not exist
-  gcp_appengine_firewall_rule:
-    priority: 1000
-    source_range: 10.0.0.0
-    action: ALLOW
-    project: "{{ gcp_project }}"
-    auth_kind: "{{ gcp_cred_kind }}"
-    service_account_file: "{{ gcp_cred_file }}"
-    state: absent
-  register: result
-- name: assert changed is false
-  assert:
-    that:
-      - result.changed == false
+- include_tasks: autogen.yml
diff --git a/test/integration/targets/gcp_bigquery_dataset/tasks/autogen.yml b/test/integration/targets/gcp_bigquery_dataset/tasks/autogen.yml
new file mode 100644
index 00000000000..ac1eae0dde3
--- /dev/null
+++ b/test/integration/targets/gcp_bigquery_dataset/tasks/autogen.yml
@@ -0,0 +1,108 @@
+---
+# ----------------------------------------------------------------------------
+#
+#     ***     AUTO GENERATED CODE    ***    AUTO GENERATED CODE     ***
+#
+# ----------------------------------------------------------------------------
+#
+#     This file is automatically generated by Magic Modules and manual
+#     changes will be clobbered when the file is regenerated.
+#
+#     Please read more about how to change this file at
+#     https://www.github.com/GoogleCloudPlatform/magic-modules
+#
+# ----------------------------------------------------------------------------
+# Pre-test setup
+- name: delete a dataset
+  gcp_bigquery_dataset:
+    name: my_example_dataset
+    dataset_reference:
+      dataset_id: my_example_dataset
+    project: "{{ gcp_project }}"
+    auth_kind: "{{ gcp_cred_kind }}"
+    service_account_file: "{{ gcp_cred_file }}"
+    state: absent
+#----------------------------------------------------------
+- name: create a dataset
+  gcp_bigquery_dataset:
+    name: my_example_dataset
+    dataset_reference:
+      dataset_id: my_example_dataset
+    project: "{{ gcp_project }}"
+    auth_kind: "{{ gcp_cred_kind }}"
+    service_account_file: "{{ gcp_cred_file }}"
+    state: present
+  register: result
+- name: assert changed is true
+  assert:
+    that:
+      - result.changed == true
+- name: verify that dataset was created
+  gcp_bigquery_dataset_info:
+      project: "{{ gcp_project }}"
+      auth_kind: "{{ gcp_cred_kind }}"
+      service_account_file: "{{ gcp_cred_file }}"
+      scopes:
+        - https://www.googleapis.com/auth/bigquery
+  register: results
+- name: verify that command succeeded
+  assert:
+    that:
+      - results['resources'] | map(attribute='datasetReference') | map(attribute='datasetId') | select("match", ".*my_example_dataset.*") | list | length == 1
+# ----------------------------------------------------------------------------
+- name: create a dataset that already exists
+  gcp_bigquery_dataset:
+    name: my_example_dataset
+    dataset_reference:
+      dataset_id: my_example_dataset
+    project: "{{ gcp_project }}"
+    auth_kind: "{{ gcp_cred_kind }}"
+    service_account_file: "{{ gcp_cred_file }}"
+    state: present
+  register: result
+- name: assert changed is false
+  assert:
+    that:
+      - result.changed == false
+#----------------------------------------------------------
+- name: delete a dataset
+  gcp_bigquery_dataset:
+    name: my_example_dataset
+    dataset_reference:
+      dataset_id: my_example_dataset
+    project: "{{ gcp_project }}"
+    auth_kind: "{{ gcp_cred_kind }}"
+    service_account_file: "{{ gcp_cred_file }}"
+    state: absent
+  register: result
+- name: assert changed is true
+  assert:
+    that:
+      - result.changed == true
+- name: verify that dataset was deleted
+  gcp_bigquery_dataset_info:
+      project: "{{ gcp_project }}"
+      auth_kind: "{{ gcp_cred_kind }}"
+      service_account_file: "{{ gcp_cred_file }}"
+      scopes:
+        - https://www.googleapis.com/auth/bigquery
+  register: results
+- name: verify that command succeeded
+  assert:
+    that:
+      - results['resources'] | map(attribute='datasetReference') | map(attribute='datasetId') | select("match", ".*my_example_dataset.*") | list | length == 0
+# ----------------------------------------------------------------------------
+- name: delete a dataset that does not exist
+  gcp_bigquery_dataset:
+    name: my_example_dataset
+    dataset_reference:
+      dataset_id: my_example_dataset
+    project: "{{ gcp_project }}"
+    auth_kind: "{{ gcp_cred_kind }}"
+    service_account_file: "{{ gcp_cred_file }}"
+    state: absent
+  register: result
+- name: assert changed is false
+  assert:
+    that:
+      - result.changed == false
diff --git a/test/integration/targets/gcp_bigquery_dataset/tasks/main.yml b/test/integration/targets/gcp_bigquery_dataset/tasks/main.yml
index ac1eae0dde3..45d6e49178c 100644
--- a/test/integration/targets/gcp_bigquery_dataset/tasks/main.yml
+++ b/test/integration/targets/gcp_bigquery_dataset/tasks/main.yml
@@ -1,108 +1,2 @@
 ---
-# ----------------------------------------------------------------------------
-#
-#     ***     AUTO GENERATED CODE    ***    AUTO GENERATED CODE     ***
-#
-# ----------------------------------------------------------------------------
-#
-#     This file is automatically generated by Magic Modules and manual
-#     changes will be clobbered when the file is regenerated.
-#
-#     Please read more about how to change this file at
-#     https://www.github.com/GoogleCloudPlatform/magic-modules
-#
-# ----------------------------------------------------------------------------
-# Pre-test setup
-- name: delete a dataset
-  gcp_bigquery_dataset:
-    name: my_example_dataset
-    dataset_reference:
-      dataset_id: my_example_dataset
-    project: "{{ gcp_project }}"
-    auth_kind: "{{ gcp_cred_kind }}"
-    service_account_file: "{{ gcp_cred_file }}"
-    state: absent
-#----------------------------------------------------------
-- name: create a dataset
-  gcp_bigquery_dataset:
-    name: my_example_dataset
-    dataset_reference:
-      dataset_id: my_example_dataset
-    project: "{{ gcp_project }}"
-    auth_kind: "{{ gcp_cred_kind }}"
-    service_account_file: "{{ gcp_cred_file }}"
-    state: present
-  register: result
-- name: assert changed is true
-  assert:
-    that:
-      - result.changed == true
-- name: verify that dataset was created
-  gcp_bigquery_dataset_info:
-      project: "{{ gcp_project }}"
-      auth_kind: "{{ gcp_cred_kind }}"
-      service_account_file: "{{ gcp_cred_file }}"
-      scopes:
-        - https://www.googleapis.com/auth/bigquery
-  register: results
-- name: verify that command succeeded
-  assert:
-    that:
-      - results['resources'] | map(attribute='datasetReference') | map(attribute='datasetId') | select("match", ".*my_example_dataset.*") | list | length == 1
-# ----------------------------------------------------------------------------
-- name: create a dataset that already exists
-  gcp_bigquery_dataset:
-    name: my_example_dataset
-    dataset_reference:
-      dataset_id: my_example_dataset
-    project: "{{ gcp_project }}"
-    auth_kind: "{{ gcp_cred_kind }}"
-    service_account_file: "{{ gcp_cred_file }}"
-    state: present
-  register: result
-- name: assert changed is false
-  assert:
-    that:
-      - result.changed == false
-#----------------------------------------------------------
-- name: delete a dataset
-  gcp_bigquery_dataset:
-    name: my_example_dataset
-    dataset_reference:
-      dataset_id: my_example_dataset
-    project: "{{ gcp_project }}"
-    auth_kind: "{{ gcp_cred_kind }}"
-    service_account_file: "{{ gcp_cred_file }}"
-    state: absent
-  register: result
-- name: assert changed is true
-  assert:
-    that:
-      - result.changed == true
-- name: verify that dataset was deleted
-  gcp_bigquery_dataset_info:
-      project: "{{ gcp_project }}"
-      auth_kind: "{{ gcp_cred_kind }}"
-      service_account_file: "{{ gcp_cred_file }}"
-      scopes:
-        - https://www.googleapis.com/auth/bigquery
-  register: results
-- name: verify that command succeeded
-  assert:
-    that:
-      - results['resources'] | map(attribute='datasetReference') | map(attribute='datasetId') | select("match", ".*my_example_dataset.*") | list | length == 0
-# ----------------------------------------------------------------------------
-- name: delete a dataset that does not exist
-  gcp_bigquery_dataset:
-    name: my_example_dataset
-    dataset_reference:
-      dataset_id: my_example_dataset
-    project: "{{ gcp_project }}"
-    auth_kind: "{{ gcp_cred_kind }}"
-    service_account_file: "{{ gcp_cred_file }}"
-    state: absent
-  register: result
-- name: assert changed is false
-  assert:
-    that:
-      - result.changed == false
+- include_tasks: autogen.yml
diff --git a/test/integration/targets/gcp_bigquery_table/tasks/autogen.yml b/test/integration/targets/gcp_bigquery_table/tasks/autogen.yml
new file mode 100644
index 00000000000..caa12eb97f5
--- /dev/null
+++ b/test/integration/targets/gcp_bigquery_table/tasks/autogen.yml
@@ -0,0 +1,149 @@
+---
+# ----------------------------------------------------------------------------
+#
+#     ***     AUTO GENERATED CODE    ***    AUTO GENERATED CODE     ***
+#
+# ----------------------------------------------------------------------------
+#
+#     This file is automatically generated by Magic Modules and manual
+#     changes will be clobbered when the file is regenerated.
+#
+#     Please read more about how to change this file at
+#     https://www.github.com/GoogleCloudPlatform/magic-modules
+#
+# ----------------------------------------------------------------------------
+# Pre-test setup
+- name: create a dataset
+  gcp_bigquery_dataset:
+    name: example_dataset
+    dataset_reference:
+      dataset_id: example_dataset
+    project: "{{ gcp_project }}"
+    auth_kind: "{{ gcp_cred_kind }}"
+    service_account_file: "{{ gcp_cred_file }}"
+    state: present
+  register: dataset
+- name: delete a table
+  gcp_bigquery_table:
+    name: example_table
+    dataset: example_dataset
+    table_reference:
+      dataset_id: example_dataset
+      project_id: "{{ gcp_project }}"
+      table_id: example_table
+    project: "{{ gcp_project }}"
+    auth_kind: "{{ gcp_cred_kind }}"
+    service_account_file: "{{ gcp_cred_file }}"
+    state: absent
+#----------------------------------------------------------
+- name: create a table
+  gcp_bigquery_table:
+    name: example_table
+    dataset: example_dataset
+    table_reference:
+      dataset_id: example_dataset
+      project_id: "{{ gcp_project }}"
+      table_id: example_table
+    project: "{{ gcp_project }}"
+    auth_kind: "{{ gcp_cred_kind }}"
+    service_account_file: "{{ gcp_cred_file }}"
+    state: present
+  register: result
+- name: assert changed is true
+  assert:
+    that:
+      - result.changed == true
+- name: verify that table was created
+  gcp_bigquery_table_info:
+      dataset: example_dataset
+      project: "{{ gcp_project }}"
+      auth_kind: "{{ gcp_cred_kind }}"
+      service_account_file: "{{ gcp_cred_file }}"
+      scopes:
+        - https://www.googleapis.com/auth/bigquery
+  register: results
+- name: verify that command succeeded
+  assert:
+    that:
+      - results['resources'] | map(attribute='tableReference') | map(attribute='tableId') | select("match", ".*example_table.*") | list | length == 1
+# ----------------------------------------------------------------------------
+- name: create a table that already exists
+  gcp_bigquery_table:
+    name: example_table
+    dataset: example_dataset
+    table_reference:
+      dataset_id: example_dataset
+      project_id: "{{ gcp_project }}"
+      table_id: example_table
+    project: "{{ gcp_project }}"
+    auth_kind: "{{ gcp_cred_kind }}"
+    service_account_file: "{{ gcp_cred_file }}"
+    state: present
+  register: result
+- name: assert changed is false
+  assert:
+    that:
+      - result.changed == false
+#----------------------------------------------------------
+- name: delete a table
+  gcp_bigquery_table:
+    name: example_table
+    dataset: example_dataset
+    table_reference:
+      dataset_id: example_dataset
+      project_id: "{{ gcp_project }}"
+      table_id: example_table
+    project: "{{ gcp_project }}"
+    auth_kind: "{{ gcp_cred_kind }}"
+    service_account_file: "{{ gcp_cred_file }}"
+    state: absent
+  register: result
+- name: assert changed is true
+  assert:
+    that:
+      - result.changed == true
+- name: verify that table was deleted
+  gcp_bigquery_table_info:
+      dataset: example_dataset
+      project: "{{ gcp_project }}"
+      auth_kind: "{{ gcp_cred_kind }}"
+      service_account_file: "{{ gcp_cred_file }}"
+      scopes:
+        - https://www.googleapis.com/auth/bigquery
+  register: results
+- name: verify that command succeeded
+  assert:
+    that:
+      - results['resources'] | map(attribute='tableReference') | map(attribute='tableId') | select("match", ".*example_table.*") | list | length == 0
+# ----------------------------------------------------------------------------
+- name: delete a table that does not exist
+  gcp_bigquery_table:
+    name: example_table
+    dataset: example_dataset
+    table_reference:
+      dataset_id: example_dataset
+      project_id: "{{ gcp_project }}"
+      table_id: example_table
+    project: "{{ gcp_project }}"
+    auth_kind: "{{ gcp_cred_kind }}"
+    service_account_file: "{{ gcp_cred_file }}"
+    state: absent
+  register: result
+- name: assert changed is false
+  assert:
+    that:
+      - result.changed == false
+#---------------------------------------------------------
+# Post-test teardown
+# If errors happen, don't crash the playbook!
+- name: delete a dataset
+  gcp_bigquery_dataset:
+    name: example_dataset
+    dataset_reference:
+      dataset_id: example_dataset
+    project: "{{ gcp_project }}"
+    auth_kind: "{{ gcp_cred_kind }}"
+    service_account_file: "{{ gcp_cred_file }}"
+    state: absent
+  register: dataset
+  ignore_errors: true
diff --git a/test/integration/targets/gcp_bigquery_table/tasks/main.yml b/test/integration/targets/gcp_bigquery_table/tasks/main.yml
index caa12eb97f5..45d6e49178c 100644
--- a/test/integration/targets/gcp_bigquery_table/tasks/main.yml
+++ b/test/integration/targets/gcp_bigquery_table/tasks/main.yml
@@ -1,149 +1,2 @@
 ---
-# ----------------------------------------------------------------------------
-#
-#     ***     AUTO GENERATED CODE    ***    AUTO GENERATED CODE     ***
-#
-# ----------------------------------------------------------------------------
-#
-#     This file is automatically generated by Magic Modules and manual
-#     changes will be clobbered when the file is regenerated.
-#
-#     Please read more about how to change this file at
-#     https://www.github.com/GoogleCloudPlatform/magic-modules
-#
-# ----------------------------------------------------------------------------
-# Pre-test setup
-- name: create a dataset
-  gcp_bigquery_dataset:
-    name: example_dataset
-    dataset_reference:
-      dataset_id: example_dataset
-    project: "{{ gcp_project }}"
-    auth_kind: "{{ gcp_cred_kind }}"
-    service_account_file: "{{ gcp_cred_file }}"
-    state: present
-  register: dataset
-- name: delete a table
-  gcp_bigquery_table:
-    name: example_table
-    dataset: example_dataset
-    table_reference:
-      dataset_id: example_dataset
-      project_id: "{{ gcp_project }}"
-      table_id: example_table
-    project: "{{ gcp_project }}"
-    auth_kind: "{{ gcp_cred_kind }}"
-    service_account_file: "{{ gcp_cred_file }}"
-    state: absent
-#----------------------------------------------------------
-- name: create a table
-  gcp_bigquery_table:
-    name: example_table
-    dataset: example_dataset
-    table_reference:
-      dataset_id: example_dataset
-      project_id: "{{ gcp_project }}"
-      table_id: example_table
-    project: "{{ gcp_project }}"
-    auth_kind: "{{ gcp_cred_kind }}"
-    service_account_file: "{{ gcp_cred_file }}"
-    state: present
-  register: result
-- name: assert changed is true
-  assert:
-    that:
-      - result.changed == true
-- name: verify that table was created
-  gcp_bigquery_table_info:
-      dataset: example_dataset
-      project: "{{ gcp_project }}"
-      auth_kind: "{{ gcp_cred_kind }}"
-      service_account_file: "{{ gcp_cred_file }}"
-      scopes:
-        - https://www.googleapis.com/auth/bigquery
-  register: results
-- name: verify that command succeeded
-  assert:
-    that:
-      - results['resources'] | map(attribute='tableReference') | map(attribute='tableId') | select("match", ".*example_table.*") | list | length == 1
-# ----------------------------------------------------------------------------
-- name: create a table that already exists
-  gcp_bigquery_table:
-    name: example_table
-    dataset: example_dataset
-    table_reference:
-      dataset_id: example_dataset
-      project_id: "{{ gcp_project }}"
-      table_id: example_table
-    project: "{{ gcp_project }}"
-    auth_kind: "{{ gcp_cred_kind }}"
-    service_account_file: "{{ gcp_cred_file }}"
-    state: present
-  register: result
-- name: assert changed is false
-  assert:
-    that:
-      - result.changed == false
-#----------------------------------------------------------
-- name: delete a table
-  gcp_bigquery_table:
-    name: example_table
-    dataset: example_dataset
-    table_reference:
-      dataset_id: example_dataset
-      project_id: "{{ gcp_project }}"
-      table_id: example_table
-    project: "{{ gcp_project }}"
-    auth_kind: "{{ gcp_cred_kind }}"
-    service_account_file: "{{ gcp_cred_file }}"
-    state: absent
-  register: result
-- name: assert changed is true
-  assert:
-    that:
-      - result.changed == true
-- name: verify that table was deleted
-  gcp_bigquery_table_info:
-      dataset: example_dataset
-      project: "{{ gcp_project }}"
-      auth_kind: "{{ gcp_cred_kind }}"
-      service_account_file: "{{ gcp_cred_file }}"
-      scopes:
-        - https://www.googleapis.com/auth/bigquery
-  register: results
-- name: verify that command succeeded
-  assert:
-    that:
-      - results['resources'] | map(attribute='tableReference') | map(attribute='tableId') | select("match", ".*example_table.*") | list | length == 0
-# ----------------------------------------------------------------------------
-- name: delete a table that does not exist
-  gcp_bigquery_table:
-    name: example_table
-    dataset: example_dataset
-    table_reference:
-      dataset_id: example_dataset
-      project_id: "{{ gcp_project }}"
-      table_id: example_table
-    project: "{{ gcp_project }}"
-    auth_kind: "{{ gcp_cred_kind }}"
-    service_account_file: "{{ gcp_cred_file }}"
-    state: absent
-  register: result
-- name: assert changed is false
-  assert:
-    that:
-      - result.changed == false
-#---------------------------------------------------------
-# Post-test teardown
-# If errors happen, don't crash the playbook!
-- name: delete a dataset
-  gcp_bigquery_dataset:
-    name: example_dataset
-    dataset_reference:
-      dataset_id: example_dataset
-    project: "{{ gcp_project }}"
-    auth_kind: "{{ gcp_cred_kind }}"
-    service_account_file: "{{ gcp_cred_file }}"
-    state: absent
-  register: dataset
-  ignore_errors: true
+- include_tasks: autogen.yml
diff --git a/test/integration/targets/gcp_cloudfunctions_cloud_function/tasks/autogen.yml b/test/integration/targets/gcp_cloudfunctions_cloud_function/tasks/autogen.yml
new file mode 100644
index 00000000000..7c76f7149f7
--- /dev/null
+++ b/test/integration/targets/gcp_cloudfunctions_cloud_function/tasks/autogen.yml
@@ -0,0 +1,120 @@
+---
+# ----------------------------------------------------------------------------
+#
+#     ***     AUTO GENERATED CODE    ***    AUTO GENERATED CODE     ***
+#
+# ----------------------------------------------------------------------------
+#
+#     This file is automatically generated by Magic Modules and manual
+#     changes will be clobbered when the file is regenerated.
+#
+#     Please read more about how to change this file at
+#     https://www.github.com/GoogleCloudPlatform/magic-modules
+#
+# ----------------------------------------------------------------------------
+# Pre-test setup
+- name: delete a cloud function
+  gcp_cloudfunctions_cloud_function:
+    name: "{{ resource_name }}"
+    location: us-central1
+    entry_point: helloGET
+    source_archive_url: gs://ansible-cloudfunctions-bucket/function.zip
+    trigger_http: 'true'
+    project: "{{ gcp_project }}"
+    auth_kind: "{{ gcp_cred_kind }}"
+    service_account_file: "{{ gcp_cred_file }}"
+    state: absent
+#----------------------------------------------------------
+- name: create a cloud function
+  gcp_cloudfunctions_cloud_function:
+    name: "{{ resource_name }}"
+    location: us-central1
+    entry_point: helloGET
+    source_archive_url: gs://ansible-cloudfunctions-bucket/function.zip
+    trigger_http: 'true'
+    project: "{{ gcp_project }}"
+    auth_kind: "{{ gcp_cred_kind }}"
+    service_account_file: "{{ gcp_cred_file }}"
+    state: present
+  register: result
+- name: assert changed is true
+  assert:
+    that:
+      - result.changed == true
+- name: verify that cloud_function was created
+  gcp_cloudfunctions_cloud_function_info:
+      location: us-central1
+      project: "{{ gcp_project }}"
+      auth_kind: "{{ gcp_cred_kind }}"
+      service_account_file: "{{ gcp_cred_file }}"
+      scopes:
+        - https://www.googleapis.com/auth/cloud-platform
+  register: results
+- name: verify that command succeeded
+  assert:
+    that:
+      - results['resources'] | map(attribute='name') | select("match", ".*{{ resource_name }}.*") | list | length == 1
+# ----------------------------------------------------------------------------
+- name: create a cloud function that already exists
+  gcp_cloudfunctions_cloud_function:
+    name: "{{ resource_name }}"
+    location: us-central1
+    entry_point: helloGET
+    source_archive_url: gs://ansible-cloudfunctions-bucket/function.zip
+    trigger_http: 'true'
+    project: "{{ gcp_project }}"
+    auth_kind: "{{ gcp_cred_kind }}"
+    service_account_file: "{{ gcp_cred_file }}"
+    state: present
+  register: result
+- name: assert changed is false
+  assert:
+    that:
+      - result.changed == false
+#----------------------------------------------------------
+- name: delete a cloud function
+  gcp_cloudfunctions_cloud_function:
+    name: "{{ resource_name }}"
+    location: us-central1
+    entry_point: helloGET
+    source_archive_url: gs://ansible-cloudfunctions-bucket/function.zip
+    trigger_http: 'true'
+    project: "{{ gcp_project }}"
+    auth_kind: "{{ gcp_cred_kind }}"
+    service_account_file: "{{ gcp_cred_file }}"
+    state: absent
+  register: result
+- name: assert changed is true
+  assert:
+    that:
+      - result.changed == true
+- name: verify that cloud_function was deleted
+  gcp_cloudfunctions_cloud_function_info:
+      location: us-central1
+      project: "{{ gcp_project }}"
+      auth_kind: "{{ gcp_cred_kind }}"
+      service_account_file: "{{ gcp_cred_file }}"
+      scopes:
+        - https://www.googleapis.com/auth/cloud-platform
+  register: results
+- name: verify that command succeeded
+  assert:
+    that:
+      - results['resources'] | map(attribute='name') | select("match", ".*{{ resource_name }}.*") | list | length == 0
+# ----------------------------------------------------------------------------
+- name: delete a cloud function that does not exist
+  gcp_cloudfunctions_cloud_function:
+    name: "{{ resource_name }}"
+    location: us-central1
+    entry_point: helloGET
+    source_archive_url: gs://ansible-cloudfunctions-bucket/function.zip
+    trigger_http: 'true'
+    project: "{{ gcp_project }}"
+    auth_kind: "{{ gcp_cred_kind }}"
+    service_account_file: "{{ gcp_cred_file }}"
+    state: absent
+  register: result
+- name: assert changed is false
+  assert:
+    that:
+      - result.changed == false
diff --git a/test/integration/targets/gcp_cloudfunctions_cloud_function/tasks/main.yml b/test/integration/targets/gcp_cloudfunctions_cloud_function/tasks/main.yml
index 7c76f7149f7..45d6e49178c 100644
--- a/test/integration/targets/gcp_cloudfunctions_cloud_function/tasks/main.yml
+++ b/test/integration/targets/gcp_cloudfunctions_cloud_function/tasks/main.yml
@@ -1,120 +1,2 @@
 ---
-# ----------------------------------------------------------------------------
-#
-#     ***     AUTO GENERATED CODE    ***    AUTO GENERATED CODE     ***
-#
-# ----------------------------------------------------------------------------
-#
-#     This file is automatically generated by Magic Modules and manual
-#     changes will be clobbered when the file is regenerated.
-#
-#     Please read more about how to change this file at
-#     https://www.github.com/GoogleCloudPlatform/magic-modules
-#
-# ----------------------------------------------------------------------------
-# Pre-test setup
-- name: delete a cloud function
-  gcp_cloudfunctions_cloud_function:
-    name: "{{ resource_name }}"
-    location: us-central1
-    entry_point: helloGET
-    source_archive_url: gs://ansible-cloudfunctions-bucket/function.zip
-    trigger_http: 'true'
-    project: "{{ gcp_project }}"
-    auth_kind: "{{ gcp_cred_kind }}"
-    service_account_file: "{{ gcp_cred_file }}"
-    state: absent
-#----------------------------------------------------------
-- name: create a cloud function
-  gcp_cloudfunctions_cloud_function:
-    name: "{{ resource_name }}"
-    location: us-central1
-    entry_point: helloGET
-    source_archive_url: gs://ansible-cloudfunctions-bucket/function.zip
-    trigger_http: 'true'
-    project: "{{ gcp_project }}"
-    auth_kind: "{{ gcp_cred_kind }}"
-    service_account_file: "{{ gcp_cred_file }}"
-    state: present
-  register: result
-- name: assert changed is true
-  assert:
-    that:
-      - result.changed == true
-- name: verify that cloud_function was created
-  gcp_cloudfunctions_cloud_function_info:
-      location: us-central1
-      project: "{{ gcp_project }}"
-      auth_kind: "{{ gcp_cred_kind }}"
-      service_account_file: "{{ gcp_cred_file }}"
-      scopes:
-        - https://www.googleapis.com/auth/cloud-platform
-  register: results
-- name: verify that command succeeded
-  assert:
-    that:
-      - results['resources'] | map(attribute='name') | select("match", ".*{{ resource_name }}.*") | list | length == 1
-# ----------------------------------------------------------------------------
-- name: create a cloud function that already exists
-  gcp_cloudfunctions_cloud_function:
-    name: "{{ resource_name }}"
-    location: us-central1
-    entry_point: helloGET
-    source_archive_url: gs://ansible-cloudfunctions-bucket/function.zip
-    trigger_http: 'true'
-    project: "{{ gcp_project }}"
-    auth_kind: "{{ gcp_cred_kind }}"
-    service_account_file: "{{ gcp_cred_file }}"
-    state: present
-  register: result
-- name: assert changed is false
-  assert:
-    that:
-      - result.changed == false
-#----------------------------------------------------------
-- name: delete a cloud function
-  gcp_cloudfunctions_cloud_function:
-    name: "{{ resource_name }}"
-    location: us-central1
-    entry_point: helloGET
-    source_archive_url: gs://ansible-cloudfunctions-bucket/function.zip
-    trigger_http: 'true'
-    project: "{{ gcp_project }}"
-    auth_kind: "{{ gcp_cred_kind }}"
-    service_account_file: "{{ gcp_cred_file }}"
-    state: absent
-  register: result
-- name: assert changed is true
-  assert:
-    that:
-      - result.changed == true
-- name: verify that cloud_function was deleted
-  gcp_cloudfunctions_cloud_function_info:
-      location: us-central1
-      project: "{{ gcp_project }}"
-      auth_kind: "{{ gcp_cred_kind }}"
-      service_account_file: "{{ gcp_cred_file }}"
-      scopes:
-        - https://www.googleapis.com/auth/cloud-platform
-  register: results
-- name: verify that command succeeded
-  assert:
-    that:
-      - results['resources'] | map(attribute='name') | select("match", ".*{{ resource_name }}.*") | list | length == 0
-# ----------------------------------------------------------------------------
-- name: delete a cloud function that does not exist
-  gcp_cloudfunctions_cloud_function:
-    name: "{{ resource_name }}"
-    location: us-central1
-    entry_point: helloGET
-    source_archive_url: gs://ansible-cloudfunctions-bucket/function.zip
-    trigger_http: 'true'
-    project: "{{ gcp_project }}"
-    auth_kind: "{{ gcp_cred_kind }}"
-    service_account_file: "{{ gcp_cred_file }}"
-    state: absent
-  register: result
-- name: assert changed is false
-  assert:
-    that:
-      - result.changed == false
+- include_tasks: autogen.yml
diff --git a/test/integration/targets/gcp_cloudscheduler_job/tasks/autogen.yml b/test/integration/targets/gcp_cloudscheduler_job/tasks/autogen.yml
new file mode 100644
index 00000000000..ffe687b7670
--- /dev/null
+++ b/test/integration/targets/gcp_cloudscheduler_job/tasks/autogen.yml
@@ -0,0 +1,155 @@
+---
+# ----------------------------------------------------------------------------
+#
+#     ***     AUTO GENERATED CODE    ***    AUTO GENERATED CODE     ***
+#
+# ----------------------------------------------------------------------------
+#
+#     This file is automatically generated by Magic Modules and manual
+#     changes will be clobbered when the file is regenerated.
+#
+#     Please read more about how to change this file at
+#     https://www.github.com/GoogleCloudPlatform/magic-modules
+#
+# ----------------------------------------------------------------------------
+# Pre-test setup
+- name: delete a job
+  gcp_cloudscheduler_job:
+    name: job
+    region: us-central1
+    schedule: "*/4 * * * *"
+    description: test app engine job
+    time_zone: Europe/London
+    app_engine_http_target:
+      http_method: POST
+      app_engine_routing:
+        service: web
+        version: prod
+        instance: my-instance-001
+      relative_uri: "/ping"
+    project: "{{ gcp_project }}"
+    auth_kind: "{{ gcp_cred_kind }}"
+    service_account_file: "{{ gcp_cred_file }}"
+    state: absent
+#----------------------------------------------------------
+- name: create a job
+  gcp_cloudscheduler_job:
+    name: job
+    region: us-central1
+    schedule: "*/4 * * * *"
+    description: test app engine job
+    time_zone: Europe/London
+    app_engine_http_target:
+      http_method: POST
+      app_engine_routing:
+        service: web
+        version: prod
+        instance: my-instance-001
+      relative_uri: "/ping"
+    project: "{{ gcp_project }}"
+    auth_kind: "{{ gcp_cred_kind }}"
+    service_account_file: "{{ gcp_cred_file }}"
+    state: present
+  register: result
+- name: assert changed is true
+  assert:
+    that:
+      - result.changed == true
+- name: verify that job was created
+  gcp_cloudscheduler_job_info:
+      region: us-central1
+      project: "{{ gcp_project }}"
+      auth_kind: "{{ gcp_cred_kind }}"
+      service_account_file: "{{ gcp_cred_file }}"
+      scopes:
+        - https://www.googleapis.com/auth/cloud-platform
+  register: results
+- name: verify that command succeeded
+  assert:
+    that:
+      - results['resources'] | map(attribute='name') | select("match", ".*job.*") | list | length == 1
+# ----------------------------------------------------------------------------
+- name: create a job that already exists
+  gcp_cloudscheduler_job:
+    name: job
+    region: us-central1
+    schedule: "*/4 * * * *"
+    description: test app engine job
+    time_zone: Europe/London
+    app_engine_http_target:
+      http_method: POST
+      app_engine_routing:
+        service: web
+        version: prod
+        instance: my-instance-001
+      relative_uri: "/ping"
+    project: "{{ gcp_project }}"
+    auth_kind: "{{ gcp_cred_kind }}"
+    service_account_file: "{{ gcp_cred_file }}"
+    state: present
+  register: result
+- name: assert changed is false
+  assert:
+    that:
+      - result.changed == false
+#----------------------------------------------------------
+- name: delete a job
+  gcp_cloudscheduler_job:
+    name: job
+    region: us-central1
+    schedule: "*/4 * * * *"
+    description: test app engine job
+    time_zone: Europe/London
+    app_engine_http_target:
+      http_method: POST
+      app_engine_routing:
+        service: web
+        version: prod
+        instance: my-instance-001
+      relative_uri: "/ping"
+    project: "{{ gcp_project }}"
+    auth_kind: "{{ gcp_cred_kind }}"
+    service_account_file: "{{ gcp_cred_file }}"
+    state: absent
+  register: result
+- name: assert changed is true
+  assert:
+    that:
+      - result.changed == true
+- name: verify that job was deleted
+  gcp_cloudscheduler_job_info:
+      region: us-central1
+      project: "{{ gcp_project }}"
+      auth_kind: "{{ gcp_cred_kind }}"
+      service_account_file: "{{ gcp_cred_file }}"
+      scopes:
+        - https://www.googleapis.com/auth/cloud-platform
+  register: results
+- name: verify that command succeeded
+  assert:
+    that:
+      - results['resources'] | map(attribute='name') | select("match", ".*job.*") | list | length == 0
+# ----------------------------------------------------------------------------
+- name: delete a job that does not exist
+  gcp_cloudscheduler_job:
+    name: job
+    region: us-central1
+    schedule: "*/4 * * * *"
+    description: test app engine job
+    time_zone: Europe/London
+    app_engine_http_target:
+      http_method: POST
+      app_engine_routing:
+        service: web
+        version: prod
+        instance: my-instance-001
+      relative_uri: "/ping"
+    project: "{{ gcp_project }}"
+    auth_kind: "{{ gcp_cred_kind }}"
+    service_account_file: "{{ gcp_cred_file }}"
+    state: absent
+  register: result
+- name: assert changed is false
+  assert:
+    that:
+      - result.changed == false
diff --git a/test/integration/targets/gcp_cloudscheduler_job/tasks/main.yml b/test/integration/targets/gcp_cloudscheduler_job/tasks/main.yml
index ffe687b7670..45d6e49178c 100644
--- a/test/integration/targets/gcp_cloudscheduler_job/tasks/main.yml
+++ b/test/integration/targets/gcp_cloudscheduler_job/tasks/main.yml
@@ -1,155 +1,2 @@
 ---
-# ----------------------------------------------------------------------------
-#
-#     ***     AUTO GENERATED CODE    ***    AUTO GENERATED CODE     ***
-#
-# ----------------------------------------------------------------------------
-#
-#     This file is automatically generated by Magic Modules and manual
-#     changes will be clobbered when the file is regenerated.
-#
-#     Please read more about how to change this file at
-#     https://www.github.com/GoogleCloudPlatform/magic-modules
-#
-# ----------------------------------------------------------------------------
-# Pre-test setup
-- name: delete a job
-  gcp_cloudscheduler_job:
-    name: job
-    region: us-central1
-    schedule: "*/4 * * * *"
-    description: test app engine job
-    time_zone: Europe/London
-    app_engine_http_target:
-      http_method: POST
-      app_engine_routing:
-        service: web
-        version: prod
-        instance: my-instance-001
-      relative_uri: "/ping"
-    project: "{{ gcp_project }}"
-    auth_kind: "{{ gcp_cred_kind }}"
-    service_account_file: "{{ gcp_cred_file }}"
-    state: absent
-#----------------------------------------------------------
-- name: create a job
-  gcp_cloudscheduler_job:
-    name: job
-    region: us-central1
-    schedule: "*/4 * * * *"
-    description: test app engine job
-    time_zone: Europe/London
-    app_engine_http_target:
-      http_method: POST
-      app_engine_routing:
-        service: web
-        version: prod
-        instance: my-instance-001
-      relative_uri: "/ping"
-    project: "{{ gcp_project }}"
-    auth_kind: "{{ gcp_cred_kind }}"
-    service_account_file: "{{ gcp_cred_file }}"
-    state: present
-  register: result
-- name: assert changed is true
-  assert:
-    that:
-      - result.changed == true
-- name: verify that job was created
-  gcp_cloudscheduler_job_info:
-      region: us-central1
-      project: "{{ gcp_project }}"
-      auth_kind: "{{ gcp_cred_kind }}"
-      service_account_file: "{{ gcp_cred_file }}"
-      scopes:
-        - https://www.googleapis.com/auth/cloud-platform
-  register: results
-- name: verify that command succeeded
-  assert:
-    that:
-      - results['resources'] | map(attribute='name') | select("match", ".*job.*") | list | length == 1
-# ----------------------------------------------------------------------------
-- name: create a job that already exists
-  gcp_cloudscheduler_job:
-    name: job
-    region: us-central1
-    schedule: "*/4 * * * *"
-    description: test app engine job
-    time_zone: Europe/London
-    app_engine_http_target:
-      http_method: POST
-      app_engine_routing:
-        service: web
-        version: prod
-        instance: my-instance-001
-      relative_uri: "/ping"
-    project: "{{ gcp_project }}"
-    auth_kind: "{{ gcp_cred_kind }}"
-    service_account_file: "{{ gcp_cred_file }}"
-    state: present
-  register: result
-- name: assert changed is false
-  assert:
-    that:
-      - result.changed == false
-#----------------------------------------------------------
-- name: delete a job
-  gcp_cloudscheduler_job:
-    name: job
-    region: us-central1
-    schedule: "*/4 * * * *"
-    description: test app engine job
-    time_zone: Europe/London
-    app_engine_http_target:
-      http_method: POST
-      app_engine_routing:
-        service: web
-        version: prod
-        instance: my-instance-001
-      relative_uri: "/ping"
-    project: "{{ gcp_project }}"
-    auth_kind: "{{ gcp_cred_kind }}"
-    service_account_file: "{{ gcp_cred_file }}"
-    state: absent
-  register: result
-- name: assert changed is true
-  assert:
-    that:
-      - result.changed == true
-- name: verify that job was deleted
-  gcp_cloudscheduler_job_info:
-      region: us-central1
-      project: "{{ gcp_project }}"
-      auth_kind: "{{ gcp_cred_kind }}"
-      service_account_file: "{{ gcp_cred_file }}"
-      scopes:
-        - https://www.googleapis.com/auth/cloud-platform
-  register: results
-- name: verify that command succeeded
-  assert:
-    that:
-      - results['resources'] | map(attribute='name') | select("match", ".*job.*") | list | length == 0
-# ----------------------------------------------------------------------------
-- name: delete a job that does not exist
-  gcp_cloudscheduler_job:
-    name: job
-    region: us-central1
-    schedule: "*/4 * * * *"
-    description: test app engine job
-    time_zone: Europe/London
-    app_engine_http_target:
-      http_method: POST
-      app_engine_routing:
-        service: web
-        version: prod
-        instance: my-instance-001
-      relative_uri: "/ping"
-    project: "{{ gcp_project }}"
-    auth_kind: "{{ gcp_cred_kind }}"
-    service_account_file: "{{ gcp_cred_file }}"
-    state: absent
-  register: result
-- name: assert changed is false
-  assert:
-    that:
-      - result.changed == false
+- include_tasks: autogen.yml
diff --git a/test/integration/targets/gcp_cloudtasks_queue/tasks/autogen.yml b/test/integration/targets/gcp_cloudtasks_queue/tasks/autogen.yml
new file mode 100644
index 00000000000..19d583c442f
--- /dev/null
+++ b/test/integration/targets/gcp_cloudtasks_queue/tasks/autogen.yml
@@ -0,0 +1,105 @@
+---
+# ----------------------------------------------------------------------------
+#
+#     ***     AUTO GENERATED CODE    ***    AUTO GENERATED CODE     ***
+#
+# ----------------------------------------------------------------------------
+#
+#     This file is automatically generated by Magic Modules and manual
+#     changes will be clobbered when the file is regenerated.
+#
+#     Please read more about how to change this file at
+#     https://www.github.com/GoogleCloudPlatform/magic-modules
+#
+# ----------------------------------------------------------------------------
+# Pre-test setup
+- name: delete a queue
+  gcp_cloudtasks_queue:
+    name: "{{ resource_name }}"
+    location: us-central1
+    project: "{{ gcp_project }}"
+    auth_kind: "{{ gcp_cred_kind }}"
+    service_account_file: "{{ gcp_cred_file }}"
+    state: absent
+#----------------------------------------------------------
+- name: create a queue
+  gcp_cloudtasks_queue:
+    name: "{{ resource_name }}"
+    location: us-central1
+    project: "{{ gcp_project }}"
+    auth_kind: "{{ gcp_cred_kind }}"
+    service_account_file: "{{ gcp_cred_file }}"
+    state: present
+  register: result
+- name: assert changed is true
+  assert:
+    that:
+      - result.changed == true
+- name: verify that queue was created
+  gcp_cloudtasks_queue_info:
+      location: us-central1
+      project: "{{ gcp_project }}"
+      auth_kind: "{{ gcp_cred_kind }}"
+      service_account_file: "{{ gcp_cred_file }}"
+      scopes:
+        - https://www.googleapis.com/auth/cloud-platform
+  register: results
+- name: verify that command succeeded
+  assert:
+    that:
+      - results['resources'] | map(attribute='name') | select("match", ".*{{ resource_name }}.*") | list | length == 1
+# ----------------------------------------------------------------------------
+- name: create a queue that already exists
+  gcp_cloudtasks_queue:
+    name: "{{ resource_name }}"
+    location: us-central1
+    project: "{{ gcp_project }}"
+    auth_kind: "{{ gcp_cred_kind }}"
+    service_account_file: "{{ gcp_cred_file }}"
+    state: present
+  register: result
+- name: assert changed is false
+  assert:
+    that:
+      - result.changed == false
+#----------------------------------------------------------
+- name: delete a queue
+  gcp_cloudtasks_queue:
+    name: "{{ resource_name }}"
+    location: us-central1
+    project: "{{ gcp_project }}"
+    auth_kind: "{{ gcp_cred_kind }}"
+    service_account_file: "{{ gcp_cred_file }}"
+    state: absent
+  register: result
+- name: assert changed is true
+  assert:
+    that:
+      - result.changed == true
+- name: verify that queue was deleted
+  gcp_cloudtasks_queue_info:
+      location: us-central1
+      project: "{{ gcp_project }}"
+      auth_kind: "{{ gcp_cred_kind }}"
+      service_account_file: "{{ gcp_cred_file }}"
+      scopes:
+        - https://www.googleapis.com/auth/cloud-platform
+  register: results
+- name: verify that command succeeded
+  assert:
+    that:
+      - results['resources'] | map(attribute='name') | select("match", ".*{{ resource_name }}.*") | list | length == 0
+# ----------------------------------------------------------------------------
+- name: delete a queue that does not exist
+  gcp_cloudtasks_queue:
+    name: "{{ resource_name }}"
+    location: us-central1
+    project: "{{ gcp_project }}"
+    auth_kind: "{{ gcp_cred_kind }}"
+    service_account_file: "{{ gcp_cred_file }}"
+    state: absent
+  register: result
+- name: assert changed is false
+  assert:
+    that:
+      - result.changed == false
diff --git a/test/integration/targets/gcp_cloudtasks_queue/tasks/main.yml b/test/integration/targets/gcp_cloudtasks_queue/tasks/main.yml
index 19d583c442f..45d6e49178c 100644
--- a/test/integration/targets/gcp_cloudtasks_queue/tasks/main.yml
+++ b/test/integration/targets/gcp_cloudtasks_queue/tasks/main.yml
@@ -1,105 +1,2 @@
 ---
-# ----------------------------------------------------------------------------
-#
-#     ***     AUTO GENERATED CODE    ***    AUTO GENERATED CODE     ***
-#
-# ----------------------------------------------------------------------------
-#
-#     This file is automatically generated by Magic Modules and manual
-#     changes will be clobbered when the file is regenerated.
-#
-#     Please read more about how to change this file at
-#     https://www.github.com/GoogleCloudPlatform/magic-modules
-#
-# ----------------------------------------------------------------------------
-# Pre-test setup
-- name: delete a queue
-  gcp_cloudtasks_queue:
-    name: "{{ resource_name }}"
-    location: us-central1
-    project: "{{ gcp_project }}"
-    auth_kind: "{{ gcp_cred_kind }}"
-    service_account_file: "{{ gcp_cred_file }}"
-    state: absent
-#----------------------------------------------------------
-- name: create a queue
-  gcp_cloudtasks_queue:
-    name: "{{ resource_name }}"
-    location: us-central1
-    project: "{{ gcp_project }}"
-    auth_kind: "{{ gcp_cred_kind }}"
-    service_account_file: "{{ gcp_cred_file }}"
-    state: present
-  register: result
-- name: assert changed is true
-  assert:
-    that:
-      - result.changed == true
-- name: verify that queue was created
-  gcp_cloudtasks_queue_info:
-      location: us-central1
-      project: "{{ gcp_project }}"
-      auth_kind: "{{ gcp_cred_kind }}"
-      service_account_file: "{{ gcp_cred_file }}"
-      scopes:
-        - https://www.googleapis.com/auth/cloud-platform
-  register: results
-- name: verify that command succeeded
-  assert:
-    that:
-      - results['resources'] | map(attribute='name') | select("match", ".*{{ resource_name }}.*") | list | length == 1
-# ----------------------------------------------------------------------------
-- name: create a queue that already exists
-  gcp_cloudtasks_queue:
-    name: "{{ resource_name }}"
-    location: us-central1
-    project: "{{ gcp_project }}"
-    auth_kind: "{{ gcp_cred_kind }}"
-    service_account_file: "{{ gcp_cred_file }}"
-    state: present
-  register: result
-- name: assert changed is false
-  assert:
-    that:
-      - result.changed == false
-#----------------------------------------------------------
-- name: delete a queue
-  gcp_cloudtasks_queue:
-    name: "{{ resource_name }}"
-    location: us-central1
-    project: "{{ gcp_project }}"
-    auth_kind: "{{ gcp_cred_kind }}"
-    service_account_file: "{{ gcp_cred_file }}"
-    state: absent
-  register: result
-- name: assert changed is true
-  assert:
-    that:
-      - result.changed == true
-- name: verify that queue was deleted
-  gcp_cloudtasks_queue_info:
-      location: us-central1
-      project: "{{ gcp_project }}"
-      auth_kind: "{{ gcp_cred_kind }}"
-      service_account_file: "{{ gcp_cred_file }}"
-      scopes:
-        - https://www.googleapis.com/auth/cloud-platform
-  register: results
-- name: verify that command succeeded
-  assert:
-    that:
-      - results['resources'] | map(attribute='name') | select("match", ".*{{ resource_name }}.*") | list | length == 0
-# ----------------------------------------------------------------------------
-- name: delete a queue that does not exist
-  gcp_cloudtasks_queue:
-    name: "{{ resource_name }}"
-    location: us-central1
-    project: "{{ gcp_project }}"
-    auth_kind: "{{ gcp_cred_kind }}"
-    service_account_file: "{{ gcp_cred_file }}"
-    state: absent
-  register: result
-- name: assert changed is false
-  assert:
-    that:
-      - result.changed == false
+- include_tasks: autogen.yml
diff --git a/test/integration/targets/gcp_compute_address/tasks/autogen.yml b/test/integration/targets/gcp_compute_address/tasks/autogen.yml
new file mode 100644
index 00000000000..124e44d2f14
--- /dev/null
+++ b/test/integration/targets/gcp_compute_address/tasks/autogen.yml
@@ -0,0 +1,109 @@
+---
+# ----------------------------------------------------------------------------
+#
+#     ***     AUTO GENERATED CODE    ***    AUTO GENERATED CODE     ***
+#
+# ----------------------------------------------------------------------------
+#
+#     This file is automatically generated by Magic Modules and manual
+#     changes will be clobbered when the file is regenerated.
+#
+#     Please read more about how to change this file at
+#     https://www.github.com/GoogleCloudPlatform/magic-modules
+#
+# ----------------------------------------------------------------------------
+# Pre-test setup
+- name: delete a address
+  gcp_compute_address:
+    name: test-address1
+    region: us-west1
+    project: "{{ gcp_project }}"
+    auth_kind: "{{ gcp_cred_kind }}"
+    service_account_file: "{{ gcp_cred_file }}"
+    state: absent
+#----------------------------------------------------------
+- name: create a address
+  gcp_compute_address:
+    name: test-address1
+    region: us-west1
+    project: "{{ gcp_project }}"
+    auth_kind: "{{ gcp_cred_kind }}"
+    service_account_file: "{{ gcp_cred_file }}"
+    state: present
+  register: result
+- name: assert changed is true
+  assert:
+    that:
+      - result.changed == true
+- name: verify that address was created
+  gcp_compute_address_info:
+      filters:
+         - name = test-address1
+      region: us-west1
+      project: "{{ gcp_project }}"
+      auth_kind: "{{ gcp_cred_kind }}"
+      service_account_file: "{{ gcp_cred_file }}"
+      scopes:
+        - https://www.googleapis.com/auth/compute
+  register: results
+- name: verify that command succeeded
+  assert:
+    that:
+      - results['resources'] | length == 1
+# ----------------------------------------------------------------------------
+- name: create a address that already exists
+  gcp_compute_address:
+    name: test-address1
+    region: us-west1
+    project: "{{ gcp_project }}"
+    auth_kind: "{{ gcp_cred_kind }}"
+    service_account_file: "{{ gcp_cred_file }}"
+    state: present
+  register: result
+- name: assert changed is false
+  assert:
+    that:
+      - result.changed == false
+#----------------------------------------------------------
+- name: delete a address
+  gcp_compute_address:
+    name: test-address1
+    region: us-west1
+    project: "{{ gcp_project }}"
+    auth_kind: "{{ gcp_cred_kind }}"
+    service_account_file: "{{ gcp_cred_file }}"
+    state: absent
+  register: result
+- name: assert changed is true
+  assert:
+    that:
+      - result.changed == true
+- name: verify that address was deleted
+  gcp_compute_address_info:
+      filters:
+         - name = test-address1
+      region: us-west1
+      project: "{{ gcp_project }}"
+      auth_kind: "{{ gcp_cred_kind }}"
+      service_account_file: "{{ gcp_cred_file }}"
+      scopes:
+        - https://www.googleapis.com/auth/compute
+  register: results
+- name: verify that command succeeded
+  assert:
+    that:
+      - results['resources'] | length == 0
+# ----------------------------------------------------------------------------
+- name: delete a address that does not exist
+  gcp_compute_address:
+    name: test-address1
+    region: us-west1
+    project: "{{ gcp_project }}"
+    auth_kind: "{{ gcp_cred_kind }}"
+    service_account_file: "{{ gcp_cred_file }}"
+    state: absent
+  register: result
+- name: assert changed is false
+  assert:
+    that:
+      - result.changed == false
diff --git a/test/integration/targets/gcp_compute_address/tasks/main.yml b/test/integration/targets/gcp_compute_address/tasks/main.yml
index 124e44d2f14..45d6e49178c 100644
--- a/test/integration/targets/gcp_compute_address/tasks/main.yml
+++ b/test/integration/targets/gcp_compute_address/tasks/main.yml
@@ -1,109 +1,2 @@
 ---
-# ----------------------------------------------------------------------------
-#
-#     ***     AUTO GENERATED CODE    ***    AUTO GENERATED CODE     ***
-#
-# ----------------------------------------------------------------------------
-#
-#     This file is automatically generated by Magic Modules and manual
-#     changes will be clobbered when the file is regenerated.
-#
-#     Please read more about how to change this file at
-#     https://www.github.com/GoogleCloudPlatform/magic-modules
-#
-# ----------------------------------------------------------------------------
-# Pre-test setup
-- name: delete a address
-  gcp_compute_address:
-    name: test-address1
-    region: us-west1
-    project: "{{ gcp_project }}"
-    auth_kind: "{{ gcp_cred_kind }}"
-    service_account_file: "{{ gcp_cred_file }}"
-    state: absent
-#----------------------------------------------------------
-- name: create a address
-  gcp_compute_address:
-    name: test-address1
-    region: us-west1
-    project: "{{ gcp_project }}"
-    auth_kind: "{{ gcp_cred_kind }}"
-    service_account_file: "{{ gcp_cred_file }}"
-    state: present
-  register: result
-- name: assert changed is true
-  assert:
-    that:
-      - result.changed == true
-- name: verify that address was created
-  gcp_compute_address_info:
-      filters:
-         - name = test-address1
-      region: us-west1
-      project: "{{ gcp_project }}"
-      auth_kind: "{{ gcp_cred_kind }}"
-      service_account_file: "{{ gcp_cred_file }}"
-      scopes:
-        - https://www.googleapis.com/auth/compute
-  register: results
-- name: verify that command succeeded
-  assert:
-    that:
-      - results['resources'] | length == 1
-# ----------------------------------------------------------------------------
-- name: create a address that already exists
-  gcp_compute_address:
-    name: test-address1
-    region: us-west1
-    project: "{{ gcp_project }}"
-    auth_kind: "{{ gcp_cred_kind }}"
-    service_account_file: "{{ gcp_cred_file }}"
-    state: present
-  register: result
-- name: assert changed is false
-  assert:
-    that:
-      - result.changed == false
-#----------------------------------------------------------
-- name: delete a address
-  gcp_compute_address:
-    name: test-address1
-    region: us-west1
-    project: "{{ gcp_project }}"
-    auth_kind: "{{ gcp_cred_kind }}"
-    service_account_file: "{{ gcp_cred_file }}"
-    state: absent
-  register: result
-- name: assert changed is true
-  assert:
-    that:
-      - result.changed == true
-- name: verify that address was deleted
-  gcp_compute_address_info:
-      filters:
-         - name = test-address1
-      region: us-west1
-      project: "{{ gcp_project }}"
-      auth_kind: "{{ gcp_cred_kind }}"
-      service_account_file: "{{ gcp_cred_file }}"
-      scopes:
-        - https://www.googleapis.com/auth/compute
-  register: results
-- name: verify that command succeeded
-  assert:
-    that:
-      - results['resources'] | length == 0
-# ----------------------------------------------------------------------------
-- name: delete a address that does not exist
-  gcp_compute_address:
-    name: test-address1
-    region: us-west1
-    project: "{{ gcp_project }}"
-    auth_kind: "{{ gcp_cred_kind }}"
-    service_account_file: "{{ gcp_cred_file }}"
-    state: absent
-  register: result
-- name: assert changed is false
-  assert:
-    that:
-      - result.changed == false
+- include_tasks: autogen.yml
diff --git a/test/integration/targets/gcp_compute_autoscaler/tasks/autogen.yml b/test/integration/targets/gcp_compute_autoscaler/tasks/autogen.yml
new file mode 100644
index 00000000000..899c88df1fc
--- /dev/null
+++ b/test/integration/targets/gcp_compute_autoscaler/tasks/autogen.yml
@@ -0,0 +1,251 @@
+---
+# ----------------------------------------------------------------------------
+#
+#     ***     AUTO GENERATED CODE    ***    AUTO GENERATED CODE     ***
+#
+# ----------------------------------------------------------------------------
+#
+#     This file is automatically generated by Magic Modules and manual
+#     changes will be clobbered when the file is regenerated.
+#
+#     Please read more about how to change this file at
+#     https://www.github.com/GoogleCloudPlatform/magic-modules
+#
+# ----------------------------------------------------------------------------
+# Pre-test setup
+- name: create a network
+  gcp_compute_network:
+    name: network-instancetemplate
+    project: "{{ gcp_project }}"
+    auth_kind: "{{ gcp_cred_kind }}"
+    service_account_file: "{{ gcp_cred_file }}"
+    state: present
+  register: network
+- name: create a address
+  gcp_compute_address:
+    name: address-instancetemplate
+    region: us-central1
+    project: "{{ gcp_project }}"
+    auth_kind: "{{ gcp_cred_kind }}"
+    service_account_file: "{{ gcp_cred_file }}"
+    state: present
+  register: address
+- name: create a instance template
+  gcp_compute_instance_template:
+    name: "{{ resource_name }}"
+    properties:
+      disks:
+      - auto_delete: 'true'
+        boot: 'true'
+        initialize_params:
+          source_image: projects/ubuntu-os-cloud/global/images/family/ubuntu-1604-lts
+      machine_type: n1-standard-1
+      network_interfaces:
+      - network: "{{ network }}"
+        access_configs:
+        - name: test-config
+          type: ONE_TO_ONE_NAT
+          nat_ip: "{{ address }}"
+    project: "{{ gcp_project }}"
+    auth_kind: "{{ gcp_cred_kind }}"
+    service_account_file: "{{ gcp_cred_file }}"
+    state: present
+  register: instancetemplate
+- name: create a instance group manager
+  gcp_compute_instance_group_manager:
+    name: "{{ resource_name }}"
+    base_instance_name: test1-child
+    instance_template: "{{ instancetemplate }}"
+    target_size: 3
+    zone: us-central1-a
+    project: "{{ gcp_project }}"
+    auth_kind: "{{ gcp_cred_kind }}"
+    service_account_file: "{{ gcp_cred_file }}"
+    state: present
+  register: igm
+- name: delete a autoscaler
+  gcp_compute_autoscaler:
+    name: "{{ resource_name }}"
+    zone: us-central1-a
+    target: "{{ igm }}"
+    autoscaling_policy:
+      max_num_replicas: 5
+      min_num_replicas: 1
+      cool_down_period_sec: 60
+      cpu_utilization:
+        utilization_target: 0.5
+    project: "{{ gcp_project }}"
+    auth_kind: "{{ gcp_cred_kind }}"
+    service_account_file: "{{ gcp_cred_file }}"
+    state: absent
+#----------------------------------------------------------
+- name: create a autoscaler
+  gcp_compute_autoscaler:
+    name: "{{ resource_name }}"
+    zone: us-central1-a
+    target: "{{ igm }}"
+    autoscaling_policy:
+      max_num_replicas: 5
+      min_num_replicas: 1
+      cool_down_period_sec: 60
+      cpu_utilization:
+        utilization_target: 0.5
+    project: "{{ gcp_project }}"
+    auth_kind: "{{ gcp_cred_kind }}"
+    service_account_file: "{{ gcp_cred_file }}"
+    state: present
+  register: result
+- name: assert changed is true
+  assert:
+    that:
+      - result.changed == true
+- name: verify that autoscaler was created
+  gcp_compute_autoscaler_info:
+      filters:
+         - name = {{ resource_name }}
+      zone: us-central1-a
+      project: "{{ gcp_project }}"
+      auth_kind: "{{ gcp_cred_kind }}"
+      service_account_file: "{{ gcp_cred_file }}"
+      scopes:
+        - https://www.googleapis.com/auth/compute
+  register: results
+- name: verify that command succeeded
+  assert:
+    that:
+      - results['resources'] | length == 1
+# ----------------------------------------------------------------------------
+- name: create a autoscaler that already exists
+  gcp_compute_autoscaler:
+    name: "{{ resource_name }}"
+    zone: us-central1-a
+    target: "{{ igm }}"
+    autoscaling_policy:
+      max_num_replicas: 5
+      min_num_replicas: 1
+      cool_down_period_sec: 60
+      cpu_utilization:
+        utilization_target: 0.5
+    project: "{{ gcp_project }}"
+    auth_kind: "{{ gcp_cred_kind }}"
+    service_account_file: "{{ gcp_cred_file }}"
+    state: present
+  register: result
+- name: assert changed is false
+  assert:
+    that:
+      - result.changed == false
+#----------------------------------------------------------
+- name: delete a autoscaler
+  gcp_compute_autoscaler:
+    name: "{{ resource_name }}"
+    zone: us-central1-a
+    target: "{{ igm }}"
+    autoscaling_policy:
+      max_num_replicas: 5
+      min_num_replicas: 1
+      cool_down_period_sec: 60
+      cpu_utilization:
+        utilization_target: 0.5
+    project: "{{ gcp_project }}"
+    auth_kind: "{{ gcp_cred_kind }}"
+    service_account_file: "{{ gcp_cred_file }}"
+    state: absent
+  register: result
+- name: assert changed is true
+  assert:
+    that:
+      - result.changed == true
+- name: verify that autoscaler was deleted
+  gcp_compute_autoscaler_info:
+      filters:
+         - name = {{ resource_name }}
+      zone: us-central1-a
+      project: "{{ gcp_project }}"
+      auth_kind: "{{ gcp_cred_kind }}"
+      service_account_file: "{{ gcp_cred_file }}"
+      scopes:
+        - https://www.googleapis.com/auth/compute
+  register: results
+- name: verify that command succeeded
+  assert:
+    that:
+      - results['resources'] | length == 0
+# ----------------------------------------------------------------------------
+- name: delete a autoscaler that does not exist
+  gcp_compute_autoscaler:
+    name: "{{ resource_name }}"
+    zone: us-central1-a
+    target: "{{ igm }}"
+    autoscaling_policy:
+      max_num_replicas: 5
+      min_num_replicas: 1
+      cool_down_period_sec: 60
+      cpu_utilization:
+        utilization_target: 0.5
+    project: "{{ gcp_project }}"
+    auth_kind: "{{ gcp_cred_kind }}"
+    service_account_file: "{{ gcp_cred_file }}"
+    state: absent
+  register: result
+- name: assert changed is false
+  assert:
+    that:
+      - result.changed == false
+#---------------------------------------------------------
+# Post-test teardown
+# If errors happen, don't crash the playbook!
+- name: delete a instance group manager
+  gcp_compute_instance_group_manager:
+    name: "{{ resource_name }}"
+    base_instance_name: test1-child
+    instance_template: "{{ instancetemplate }}"
+    target_size: 3
+    zone: us-central1-a
+    project: "{{ gcp_project }}"
+    auth_kind: "{{ gcp_cred_kind }}"
+    service_account_file: "{{ gcp_cred_file }}"
+    state: absent
+  register: igm
+  ignore_errors: true
+- name: delete a instance template
+  gcp_compute_instance_template:
+    name: "{{ resource_name }}"
+    properties:
+      disks:
+      - auto_delete: 'true'
+        boot: 'true'
+        initialize_params:
+          source_image: projects/ubuntu-os-cloud/global/images/family/ubuntu-1604-lts
+      machine_type: n1-standard-1
+      network_interfaces:
+      - network: "{{ network }}"
+        access_configs:
+        - name: test-config
+          type: ONE_TO_ONE_NAT
+          nat_ip: "{{ address }}"
+    project: "{{ gcp_project }}"
+    auth_kind: "{{ gcp_cred_kind }}"
+    service_account_file: "{{ gcp_cred_file }}"
+    state: absent
+  register: instancetemplate
+  ignore_errors: true
+- name: delete a address
+  gcp_compute_address:
+    name: address-instancetemplate
+    region: us-central1
+    project: "{{ gcp_project }}"
+    auth_kind: "{{ gcp_cred_kind }}"
+    service_account_file: "{{ gcp_cred_file }}"
+    state: absent
+  register: address
+  ignore_errors: true
+- name: delete a network
+  gcp_compute_network:
+    name: network-instancetemplate
+    project: "{{ gcp_project }}"
+    auth_kind: "{{ gcp_cred_kind }}"
+    service_account_file: "{{ gcp_cred_file }}"
+    state: absent
+  register: network
+  ignore_errors: true
diff --git a/test/integration/targets/gcp_compute_autoscaler/tasks/main.yml b/test/integration/targets/gcp_compute_autoscaler/tasks/main.yml
index 899c88df1fc..45d6e49178c 100644
--- a/test/integration/targets/gcp_compute_autoscaler/tasks/main.yml
+++ b/test/integration/targets/gcp_compute_autoscaler/tasks/main.yml
@@ -1,251 +1,2 @@
 ---
-# ----------------------------------------------------------------------------
-#
-#     ***     AUTO GENERATED CODE    ***    AUTO GENERATED CODE     ***
-#
-# ----------------------------------------------------------------------------
-#
-#     This file is automatically generated by Magic Modules and manual
-#     changes will be clobbered when the file is regenerated.
-#
-#     Please read more about how to change this file at
-#     https://www.github.com/GoogleCloudPlatform/magic-modules
-#
-# ----------------------------------------------------------------------------
-# Pre-test setup
-- name: create a network
-  gcp_compute_network:
-    name: network-instancetemplate
-    project: "{{ gcp_project }}"
-    auth_kind: "{{ gcp_cred_kind }}"
-    service_account_file: "{{ gcp_cred_file }}"
-    state: present
-  register: network
-- name: create a address
-  gcp_compute_address:
-    name: address-instancetemplate
-    region: us-central1
-    project: "{{ gcp_project }}"
-    auth_kind: "{{ gcp_cred_kind }}"
-    service_account_file: "{{ gcp_cred_file }}"
-    state: present
-  register: address
-- name: create a instance template
-  gcp_compute_instance_template:
-    name: "{{ resource_name }}"
-    properties:
-      disks:
-      - auto_delete: 'true'
-        boot: 'true'
-        initialize_params:
-          source_image: projects/ubuntu-os-cloud/global/images/family/ubuntu-1604-lts
-      machine_type: n1-standard-1
-      network_interfaces:
-      - network: "{{ network }}"
-        access_configs:
-        - name: test-config
-          type: ONE_TO_ONE_NAT
-          nat_ip: "{{ address }}"
-    project: "{{ gcp_project }}"
-    auth_kind: "{{ gcp_cred_kind }}"
-    service_account_file: "{{ gcp_cred_file }}"
-    state: present
-  register: instancetemplate
-- name: create a instance group manager
-  gcp_compute_instance_group_manager:
-    name: "{{ resource_name }}"
-    base_instance_name: test1-child
-    instance_template: "{{ instancetemplate }}"
-    target_size: 3
-    zone: us-central1-a
-    project: "{{ gcp_project }}"
-    auth_kind: "{{ gcp_cred_kind }}"
-    service_account_file: "{{ gcp_cred_file }}"
-    state: present
-  register: igm
-- name: delete a autoscaler
-  gcp_compute_autoscaler:
-    name: "{{ resource_name }}"
-    zone: us-central1-a
-    target: "{{ igm }}"
-    autoscaling_policy:
-      max_num_replicas: 5
-      min_num_replicas: 1
-      cool_down_period_sec: 60
-      cpu_utilization:
-        utilization_target: 0.5
-    project: "{{ gcp_project }}"
-    auth_kind: "{{ gcp_cred_kind }}"
-    service_account_file: "{{ gcp_cred_file }}"
-    state: absent
-#----------------------------------------------------------
-- name: create a autoscaler
-  gcp_compute_autoscaler:
-    name: "{{ resource_name }}"
-    zone: us-central1-a
-    target: "{{ igm }}"
-    autoscaling_policy:
-      max_num_replicas: 5
-      min_num_replicas: 1
-      cool_down_period_sec: 60
-      cpu_utilization:
-        utilization_target: 0.5
-    project: "{{ gcp_project }}"
-    auth_kind: "{{ gcp_cred_kind }}"
-    service_account_file: "{{ gcp_cred_file }}"
-    state: present
-  register: result
-- name: assert changed is true
-  assert:
-    that:
-      - result.changed == true
-- name: verify that autoscaler was created
-  gcp_compute_autoscaler_info:
-      filters:
-         - name = {{ resource_name }}
-      zone: us-central1-a
-      project: "{{ gcp_project }}"
-      auth_kind: "{{ gcp_cred_kind }}"
-      service_account_file: "{{ gcp_cred_file }}"
-      scopes:
-        - https://www.googleapis.com/auth/compute
-  register: results
-- name: verify that command succeeded
-  assert:
-    that:
-      - results['resources'] | length == 1
-# ----------------------------------------------------------------------------
-- name: create a autoscaler that already exists
-  gcp_compute_autoscaler:
-    name: "{{ resource_name }}"
-    zone: us-central1-a
-    target: "{{ igm }}"
-    autoscaling_policy:
-      max_num_replicas: 5
-      min_num_replicas: 1
-      cool_down_period_sec: 60
-      cpu_utilization:
-        utilization_target: 0.5
-    project: "{{ gcp_project }}"
-    auth_kind: "{{ gcp_cred_kind }}"
-    service_account_file: "{{ gcp_cred_file }}"
-    state: present
-  register: result
-- name: assert changed is false
-  assert:
-    that:
-      - result.changed == false
-#----------------------------------------------------------
-- name: delete a autoscaler
-  gcp_compute_autoscaler:
-    name: "{{ resource_name }}"
-    zone: us-central1-a
-    target: "{{ igm }}"
-    autoscaling_policy:
-      max_num_replicas: 5
-      min_num_replicas: 1
-      cool_down_period_sec: 60
-      cpu_utilization:
-        utilization_target: 0.5
-    project: "{{ gcp_project }}"
-    auth_kind: "{{ gcp_cred_kind }}"
-    service_account_file: "{{ gcp_cred_file }}"
-    state: absent
-  register: result
-- name: assert changed is true
-  assert:
-    that:
-      - result.changed == true
-- name: verify that autoscaler was deleted
-  gcp_compute_autoscaler_info:
-      filters:
-         - name = {{ resource_name }}
-      zone: us-central1-a
-      project: "{{ gcp_project }}"
-      auth_kind: "{{ gcp_cred_kind }}"
-      service_account_file: "{{ gcp_cred_file }}"
-      scopes:
-        - https://www.googleapis.com/auth/compute
-  register: results
-- name: verify that command succeeded
-  assert:
-    that:
-      - results['resources'] | length == 0
-# ----------------------------------------------------------------------------
-- name: delete a autoscaler that does not exist
-  gcp_compute_autoscaler:
-    name: "{{ resource_name }}"
-    zone: us-central1-a
-    target: "{{ igm }}"
-    autoscaling_policy:
-      max_num_replicas: 5
-      min_num_replicas: 1
-      cool_down_period_sec: 60
-      cpu_utilization:
-        utilization_target: 0.5
-    project: "{{ gcp_project }}"
-    auth_kind: "{{ gcp_cred_kind }}"
-    service_account_file: "{{ gcp_cred_file }}"
-    state: absent
-  register: result
-- name: assert changed is false
-  assert:
-    that:
-      - result.changed == false
-#---------------------------------------------------------
-# Post-test teardown
-# If errors happen, don't crash the playbook!
-- name: delete a instance group manager
-  gcp_compute_instance_group_manager:
-    name: "{{ resource_name }}"
-    base_instance_name: test1-child
-    instance_template: "{{ instancetemplate }}"
-    target_size: 3
-    zone: us-central1-a
-    project: "{{ gcp_project }}"
-    auth_kind: "{{ gcp_cred_kind }}"
-    service_account_file: "{{ gcp_cred_file }}"
-    state: absent
-  register: igm
-  ignore_errors: true
-- name: delete a instance template
-  gcp_compute_instance_template:
-    name: "{{ resource_name }}"
-    properties:
-      disks:
-      - auto_delete: 'true'
-        boot: 'true'
-        initialize_params:
-          source_image: projects/ubuntu-os-cloud/global/images/family/ubuntu-1604-lts
-      machine_type: n1-standard-1
-      network_interfaces:
-      - network: "{{ network }}"
-        access_configs:
-        - name: test-config
-          type: ONE_TO_ONE_NAT
-          nat_ip: "{{ address }}"
-    project: "{{ gcp_project }}"
-    auth_kind: "{{ gcp_cred_kind }}"
-    service_account_file: "{{ gcp_cred_file }}"
-    state: absent
-  register: instancetemplate
-  ignore_errors: true
-- name: delete a address
-  gcp_compute_address:
-    name: address-instancetemplate
-    region: us-central1
-    project: "{{ gcp_project }}"
-    auth_kind: "{{ gcp_cred_kind }}"
-    service_account_file: "{{ gcp_cred_file }}"
-    state: absent
-  register: address
-  ignore_errors: true
-- name: delete a network
-  gcp_compute_network:
-    name: network-instancetemplate
-    project: "{{ gcp_project }}"
-    auth_kind: "{{ gcp_cred_kind }}"
-    service_account_file: "{{ gcp_cred_file }}"
-    state: absent
-  register: network
-  ignore_errors: true
+- include_tasks: autogen.yml
diff --git a/test/integration/targets/gcp_compute_backend_bucket/tasks/autogen.yml b/test/integration/targets/gcp_compute_backend_bucket/tasks/autogen.yml
new file mode 100644
index 00000000000..35963c90c13
--- /dev/null
+++ b/test/integration/targets/gcp_compute_backend_bucket/tasks/autogen.yml
@@ -0,0 +1,137 @@
+---
+# ----------------------------------------------------------------------------
+#
+#     ***     AUTO GENERATED CODE    ***    AUTO GENERATED CODE     ***
+#
+# ----------------------------------------------------------------------------
+#
+#     This file is automatically generated by Magic Modules and manual
+#     changes will be clobbered when the file is regenerated.
+#
+#     Please read more about how to change this file at
+#     https://www.github.com/GoogleCloudPlatform/magic-modules
+#
+# ----------------------------------------------------------------------------
+# Pre-test setup
+- name: create a bucket
+  gcp_storage_bucket:
+    name: bucket-backendbucket
+    project: "{{ gcp_project }}"
+    auth_kind: "{{ gcp_cred_kind }}"
+    service_account_file: "{{ gcp_cred_file }}"
+    state: present
+  register: bucket
+- name: delete a backend bucket
+  gcp_compute_backend_bucket:
+    name: "{{ resource_name }}"
+    bucket_name: "{{ bucket.name }}"
+    description: A BackendBucket to connect LNB w/ Storage Bucket
+    enable_cdn: 'true'
+    project: "{{ gcp_project }}"
+    auth_kind: "{{ gcp_cred_kind }}"
+    service_account_file: "{{ gcp_cred_file }}"
+    state: absent
+#----------------------------------------------------------
+- name: create a backend bucket
+  gcp_compute_backend_bucket:
+    name: "{{ resource_name }}"
+    bucket_name: "{{ bucket.name }}"
+    description: A BackendBucket to connect LNB w/ Storage Bucket
+    enable_cdn: 'true'
+    project: "{{ gcp_project }}"
+    auth_kind: "{{ gcp_cred_kind }}"
+    service_account_file: "{{ gcp_cred_file }}"
+    state: present
+  register: result
+- name: assert changed is true
+  assert:
+    that:
+      - result.changed == true
+- name: verify that backend_bucket was created
+  gcp_compute_backend_bucket_info:
+      filters:
+         - name = {{ resource_name }}
+      project: "{{ gcp_project }}"
+      auth_kind: "{{ gcp_cred_kind }}"
+      service_account_file: "{{ gcp_cred_file }}"
+      scopes:
+        - https://www.googleapis.com/auth/compute
+  register: results
+- name: verify that command succeeded
+  assert:
+    that:
+      - results['resources'] | length == 1
+# ----------------------------------------------------------------------------
+- name: create a backend bucket that already exists
+  gcp_compute_backend_bucket:
+    name: "{{ resource_name }}"
+    bucket_name: "{{ bucket.name }}"
+    description: A BackendBucket to connect LNB w/ Storage Bucket
+    enable_cdn: 'true'
+    project: "{{ gcp_project }}"
+    auth_kind: "{{ gcp_cred_kind }}"
+    service_account_file: "{{ gcp_cred_file }}"
+    state: present
+  register: result
+- name: assert changed is false
+  assert:
+    that:
+      - result.changed == false
+#----------------------------------------------------------
+- name: delete a backend bucket
+  gcp_compute_backend_bucket:
+    name: "{{ resource_name }}"
+    bucket_name: "{{ bucket.name }}"
+    description: A BackendBucket to connect LNB w/ Storage Bucket
+    enable_cdn: 'true'
+    project: "{{ gcp_project }}"
+    auth_kind: "{{ gcp_cred_kind }}"
+    service_account_file: "{{ gcp_cred_file }}"
+    state: absent
+  register: result
+- name: assert changed is true
+  assert:
+    that:
+      - result.changed == true
+- name: verify that backend_bucket was deleted
+  gcp_compute_backend_bucket_info:
+      filters:
+         - name = {{ resource_name }}
+      project: "{{ gcp_project }}"
+      auth_kind: "{{ gcp_cred_kind }}"
+      service_account_file: "{{ gcp_cred_file }}"
+      scopes:
+        - https://www.googleapis.com/auth/compute
+  register: results
+- name: verify that command succeeded
+  assert:
+    that:
+      - results['resources'] | length == 0
+# ----------------------------------------------------------------------------
+- name: delete a backend bucket that does not exist
+  gcp_compute_backend_bucket:
+    name: "{{ resource_name }}"
+    bucket_name: "{{ bucket.name }}"
+    description: A BackendBucket to connect LNB w/ Storage Bucket
+    enable_cdn: 'true'
+    project: "{{ gcp_project }}"
+    auth_kind: "{{ gcp_cred_kind }}"
+    service_account_file: "{{ gcp_cred_file }}"
+    state: absent
+  register: result
+- name: assert changed is false
+  assert:
+    that:
+      - result.changed == false
+#---------------------------------------------------------
+# Post-test teardown
+# If errors happen, don't crash the playbook!
+- name: delete a bucket
+  gcp_storage_bucket:
+    name: bucket-backendbucket
+    project: "{{ gcp_project }}"
+    auth_kind: "{{ gcp_cred_kind }}"
+    service_account_file: "{{ gcp_cred_file }}"
+    state: absent
+  register: bucket
+  ignore_errors: true
diff --git a/test/integration/targets/gcp_compute_backend_bucket/tasks/main.yml b/test/integration/targets/gcp_compute_backend_bucket/tasks/main.yml
index 35963c90c13..45d6e49178c 100644
--- a/test/integration/targets/gcp_compute_backend_bucket/tasks/main.yml
+++ b/test/integration/targets/gcp_compute_backend_bucket/tasks/main.yml
@@ -1,137 +1,2 @@
 ---
-# ----------------------------------------------------------------------------
-#
-#     ***     AUTO GENERATED CODE    ***    AUTO GENERATED CODE     ***
-#
-# ----------------------------------------------------------------------------
-#
-#     This file is automatically generated by Magic Modules and manual
-#     changes will be clobbered when the file is regenerated.
-#
-#     Please read more about how to change this file at
-#     https://www.github.com/GoogleCloudPlatform/magic-modules
-#
-# ----------------------------------------------------------------------------
-# Pre-test setup
-- name: create a bucket
-  gcp_storage_bucket:
-    name: bucket-backendbucket
-    project: "{{ gcp_project }}"
-    auth_kind: "{{ gcp_cred_kind }}"
-    service_account_file: "{{ gcp_cred_file }}"
-    state: present
-  register: bucket
-- name: delete a backend bucket
-  gcp_compute_backend_bucket:
-    name: "{{ resource_name }}"
-    bucket_name: "{{ bucket.name }}"
-    description: A BackendBucket to connect LNB w/ Storage Bucket
-    enable_cdn: 'true'
-    project: "{{ gcp_project }}"
-    auth_kind: "{{ gcp_cred_kind }}"
-    service_account_file: "{{ gcp_cred_file }}"
-    state: absent
-#----------------------------------------------------------
-- name: create a backend bucket
-  gcp_compute_backend_bucket:
-    name: "{{ resource_name }}"
-    bucket_name: "{{ bucket.name }}"
-    description: A BackendBucket to connect LNB w/ Storage Bucket
-    enable_cdn: 'true'
-    project: "{{ gcp_project }}"
-    auth_kind: "{{ gcp_cred_kind }}"
-    service_account_file: "{{ gcp_cred_file }}"
-    state: present
-  register: result
-- name: assert changed is true
-  assert:
-    that:
-      - result.changed == true
-- name: verify that backend_bucket was created
-  gcp_compute_backend_bucket_info:
-      filters:
-         - name = {{ resource_name }}
-      project: "{{ gcp_project }}"
-      auth_kind: "{{ gcp_cred_kind }}"
-      service_account_file: "{{ gcp_cred_file }}"
-      scopes:
-        - https://www.googleapis.com/auth/compute
-  register: results
-- name: verify that command succeeded
-  assert:
-    that:
-      - results['resources'] | length == 1
-# ----------------------------------------------------------------------------
-- name: create a backend bucket that already exists
-  gcp_compute_backend_bucket:
-    name: "{{ resource_name }}"
-    bucket_name: "{{ bucket.name }}"
-    description: A BackendBucket to connect LNB w/ Storage Bucket
-    enable_cdn: 'true'
-    project: "{{ gcp_project }}"
-    auth_kind: "{{ gcp_cred_kind }}"
-    service_account_file: "{{ gcp_cred_file }}"
-    state: present
-  register: result
-- name: assert changed is false
-  assert:
-    that:
-      - result.changed == false
-#----------------------------------------------------------
-- name: delete a backend bucket
-  gcp_compute_backend_bucket:
-    name: "{{ resource_name }}"
-    bucket_name: "{{ bucket.name }}"
-    description: A BackendBucket to connect LNB w/ Storage Bucket
-    enable_cdn: 'true'
-    project: "{{ gcp_project }}"
-    auth_kind: "{{ gcp_cred_kind }}"
-    service_account_file: "{{ gcp_cred_file }}"
-    state: absent
-  register: result
-- name: assert changed is true
-  assert:
-    that:
-      - result.changed == true
-- name: verify that backend_bucket was deleted
-  gcp_compute_backend_bucket_info:
-      filters:
-         - name = {{ resource_name }}
-      project: "{{ gcp_project }}"
-      auth_kind: "{{ gcp_cred_kind }}"
-      service_account_file: "{{ gcp_cred_file }}"
-      scopes:
-        - https://www.googleapis.com/auth/compute
-  register: results
-- name: verify that command succeeded
-  assert:
-    that:
-      - results['resources'] | length == 0
-# ----------------------------------------------------------------------------
-- name: delete a backend bucket that does not exist
-  gcp_compute_backend_bucket:
-    name: "{{ resource_name }}"
-    bucket_name: "{{ bucket.name }}"
-    description: A BackendBucket to connect LNB w/ Storage Bucket
-    enable_cdn: 'true'
-    project: "{{ gcp_project }}"
-    auth_kind: "{{ gcp_cred_kind }}"
-    service_account_file: "{{ gcp_cred_file }}"
-    state: absent
-  register: result
-- name: assert changed is false
-  assert:
-    that:
-      - result.changed == false
-#---------------------------------------------------------
-# Post-test teardown
-# If errors happen, don't crash the playbook!
-- name: delete a bucket
-  gcp_storage_bucket:
-    name: bucket-backendbucket
-    project: "{{ gcp_project }}"
-    auth_kind: "{{ gcp_cred_kind }}"
-    service_account_file: "{{ gcp_cred_file }}"
-    state: absent
-  register: bucket
-  ignore_errors: true
+- include_tasks: autogen.yml
diff --git a/test/integration/targets/gcp_compute_backend_service/tasks/autogen.yml b/test/integration/targets/gcp_compute_backend_service/tasks/autogen.yml
new file mode 100644
index 00000000000..60fa24c4be9
--- /dev/null
+++ b/test/integration/targets/gcp_compute_backend_service/tasks/autogen.yml
@@ -0,0 +1,174 @@
+---
+# ----------------------------------------------------------------------------
+#
+#     ***     AUTO GENERATED CODE    ***    AUTO GENERATED CODE     ***
+#
+# ----------------------------------------------------------------------------
+#
+#     This file is automatically generated by Magic Modules and manual
+#     changes will be clobbered when the file is regenerated.
+#
+#     Please read more about how to change this file at
+#     https://www.github.com/GoogleCloudPlatform/magic-modules
+#
+# ----------------------------------------------------------------------------
+# Pre-test setup
+- name: create a instance group
+  gcp_compute_instance_group:
+    name: instancegroup-backendservice
+    zone: us-central1-a
+    project: "{{ gcp_project }}"
+    auth_kind: "{{ gcp_cred_kind }}"
+    service_account_file: "{{ gcp_cred_file }}"
+    state: present
+  register: instancegroup
+- name: create a HTTP health check
+  gcp_compute_http_health_check:
+    name: httphealthcheck-backendservice
+    healthy_threshold: 10
+    port: 8080
+    timeout_sec: 2
+    unhealthy_threshold: 5
+    project: "{{ gcp_project }}"
+    auth_kind: "{{ gcp_cred_kind }}"
+    service_account_file: "{{ gcp_cred_file }}"
+    state: present
+  register: healthcheck
+- name: delete a backend service
+  gcp_compute_backend_service:
+    name: "{{ resource_name }}"
+    backends:
+    - group: "{{ instancegroup.selfLink }}"
+    health_checks:
+    - "{{ healthcheck.selfLink }}"
+    enable_cdn: 'true'
+    project: "{{ gcp_project }}"
+    auth_kind: "{{ gcp_cred_kind }}"
+    service_account_file: "{{ gcp_cred_file }}"
+    state: absent
+#----------------------------------------------------------
+- name: create a backend service
+  gcp_compute_backend_service:
+    name: "{{ resource_name }}"
+    backends:
+    - group: "{{ instancegroup.selfLink }}"
+    health_checks:
+    - "{{ healthcheck.selfLink }}"
+    enable_cdn: 'true'
+    project: "{{ gcp_project }}"
+    auth_kind: "{{ gcp_cred_kind }}"
+    service_account_file: "{{ gcp_cred_file }}"
+    state: present
+  register: result
+- name: assert changed is true
+  assert:
+    that:
+      - result.changed == true
+- name: verify that backend_service was created
+  gcp_compute_backend_service_info:
+      filters:
+         - name = {{ resource_name }}
+      project: "{{ gcp_project }}"
+      auth_kind: "{{ gcp_cred_kind }}"
+      service_account_file: "{{ gcp_cred_file }}"
+      scopes:
+        - https://www.googleapis.com/auth/compute
+  register: results
+- name: verify that command succeeded
+  assert:
+    that:
+      - results['resources'] | length == 1
+# ----------------------------------------------------------------------------
+- name: create a backend service that already exists
+  gcp_compute_backend_service:
+    name: "{{ resource_name }}"
+    backends:
+    - group: "{{ instancegroup.selfLink }}"
+    health_checks:
+    - "{{ healthcheck.selfLink }}"
+    enable_cdn: 'true'
+    project: "{{ gcp_project }}"
+    auth_kind: "{{ gcp_cred_kind }}"
+    service_account_file: "{{ gcp_cred_file }}"
+    state: present
+  register: result
+- name: assert changed is false
+  assert:
+    that:
+      - result.changed == false
+#----------------------------------------------------------
+- name: delete a backend service
+  gcp_compute_backend_service:
+    name: "{{ resource_name }}"
+    backends:
+    - group: "{{ instancegroup.selfLink }}"
+    health_checks:
+    - "{{ healthcheck.selfLink }}"
+    enable_cdn: 'true'
+    project: "{{ gcp_project }}"
+    auth_kind: "{{ gcp_cred_kind }}"
+    service_account_file: "{{ gcp_cred_file }}"
+    state: absent
+  register: result
+- name: assert changed is true
+  assert:
+    that:
+      - result.changed == true
+- name: verify that backend_service was deleted
+  gcp_compute_backend_service_info:
+      filters:
+         - name = {{ resource_name }}
+      project: "{{ gcp_project }}"
+      auth_kind: "{{ gcp_cred_kind }}"
+      service_account_file: "{{ gcp_cred_file }}"
+      scopes:
+        - https://www.googleapis.com/auth/compute
+  register: results
+- name: verify that command succeeded
+  assert:
+    that:
+      - results['resources'] | length == 0
+# ----------------------------------------------------------------------------
+- name: delete a backend service that does not exist
+  gcp_compute_backend_service:
+    name: "{{ resource_name }}"
+    backends:
+    - group: "{{ instancegroup.selfLink }}"
+    health_checks:
+    - "{{ healthcheck.selfLink }}"
+    enable_cdn: 'true'
+    project: "{{ gcp_project }}"
+    auth_kind: "{{ gcp_cred_kind }}"
+    service_account_file: "{{ gcp_cred_file }}"
+    state: absent
+  register: result
+- name: assert changed is false
+  assert:
+    that:
+      - result.changed == false
+#---------------------------------------------------------
+# Post-test teardown
+# If errors happen, don't crash the playbook!
+- name: delete a HTTP health check
+  gcp_compute_http_health_check:
+    name: httphealthcheck-backendservice
+    healthy_threshold: 10
+    port: 8080
+    timeout_sec: 2
+    unhealthy_threshold: 5
+    project: "{{ gcp_project }}"
+    auth_kind: "{{ gcp_cred_kind }}"
+    service_account_file: "{{ gcp_cred_file }}"
+    state: absent
+  register: healthcheck
+  ignore_errors: true
+- name: delete a instance group
+  gcp_compute_instance_group:
+    name: instancegroup-backendservice
+    zone: us-central1-a
+    project: "{{ gcp_project }}"
+    auth_kind: "{{ gcp_cred_kind }}"
+    service_account_file: "{{ gcp_cred_file }}"
+    state: absent
+  register: instancegroup
+  ignore_errors: true
diff --git a/test/integration/targets/gcp_compute_backend_service/tasks/main.yml b/test/integration/targets/gcp_compute_backend_service/tasks/main.yml
index 60fa24c4be9..45d6e49178c 100644
--- a/test/integration/targets/gcp_compute_backend_service/tasks/main.yml
+++ b/test/integration/targets/gcp_compute_backend_service/tasks/main.yml
@@ -1,174 +1,2 @@
 ---
-# ----------------------------------------------------------------------------
-#
-#     ***     AUTO GENERATED CODE    ***    AUTO GENERATED CODE     ***
-#
-# ----------------------------------------------------------------------------
-#
-#     This file is automatically generated by Magic Modules and manual
-#     changes will be clobbered when the file is regenerated.
-#
-#     Please read more about how to change this file at
-#     https://www.github.com/GoogleCloudPlatform/magic-modules
-#
-# ----------------------------------------------------------------------------
-# Pre-test setup
-- name: create a instance group
-  gcp_compute_instance_group:
-    name: instancegroup-backendservice
-    zone: us-central1-a
-    project: "{{ gcp_project }}"
-    auth_kind: "{{ gcp_cred_kind }}"
-    service_account_file: "{{ gcp_cred_file }}"
-    state: present
-  register: instancegroup
-- name: create a HTTP health check
-  gcp_compute_http_health_check:
-    name: httphealthcheck-backendservice
-    healthy_threshold: 10
-    port: 8080
-    timeout_sec: 2
-    unhealthy_threshold: 5
-    project: "{{ gcp_project }}"
-    auth_kind: "{{ gcp_cred_kind }}"
-    service_account_file: "{{ gcp_cred_file }}"
-    state: present
-  register: healthcheck
-- name: delete a backend service
-  gcp_compute_backend_service:
-    name: "{{ resource_name }}"
-    backends:
-    - group: "{{ instancegroup.selfLink }}"
-    health_checks:
-    - "{{ healthcheck.selfLink }}"
-    enable_cdn: 'true'
-    project: "{{ gcp_project }}"
-    auth_kind: "{{ gcp_cred_kind }}"
-    service_account_file: "{{ gcp_cred_file }}"
-    state: absent
-#----------------------------------------------------------
-- name: create a backend service
-  gcp_compute_backend_service:
-    name: "{{ resource_name }}"
-    backends:
-    - group: "{{ instancegroup.selfLink }}"
-    health_checks:
-    - "{{ healthcheck.selfLink }}"
-    enable_cdn: 'true'
-    project: "{{ gcp_project }}"
-    auth_kind: "{{ gcp_cred_kind }}"
-    service_account_file: "{{ gcp_cred_file }}"
-    state: present
-  register: result
-- name: assert changed is true
-  assert:
-    that:
-      - result.changed == true
-- name: verify that backend_service was created
-  gcp_compute_backend_service_info:
-      filters:
-         - name = {{ resource_name }}
-      project: "{{ gcp_project }}"
-      auth_kind: "{{ gcp_cred_kind }}"
-      service_account_file: "{{ gcp_cred_file }}"
-      scopes:
-        - https://www.googleapis.com/auth/compute
-  register: results
-- name: verify that command succeeded
-  assert:
-    that:
-      - results['resources'] | length == 1
-# ----------------------------------------------------------------------------
-- name: create a backend service that already exists
-  gcp_compute_backend_service:
-    name: "{{ resource_name }}"
-    backends:
-    - group: "{{ instancegroup.selfLink }}"
-    health_checks:
-    - "{{ healthcheck.selfLink }}"
-    enable_cdn: 'true'
-    project: "{{ gcp_project }}"
-    auth_kind: "{{ gcp_cred_kind }}"
-    service_account_file: "{{ gcp_cred_file }}"
-    state: present
-  register: result
-- name: assert changed is false
-  assert:
-    that:
-      - result.changed == false
-#----------------------------------------------------------
-- name: delete a backend service
-  gcp_compute_backend_service:
-    name: "{{ resource_name }}"
-    backends:
-    - group: "{{ instancegroup.selfLink }}"
-    health_checks:
-    - "{{ healthcheck.selfLink }}"
-    enable_cdn: 'true'
-    project: "{{ gcp_project }}"
-    auth_kind: "{{ gcp_cred_kind }}"
-    service_account_file: "{{ gcp_cred_file }}"
-    state: absent
-  register: result
-- name: assert changed is true
-  assert:
-    that:
-      - result.changed == true
-- name: verify that backend_service was deleted
-  gcp_compute_backend_service_info:
-      filters:
-         - name = {{ resource_name }}
-      project: "{{ gcp_project }}"
-      auth_kind: "{{ gcp_cred_kind }}"
-      service_account_file: "{{ gcp_cred_file }}"
-      scopes:
-        - https://www.googleapis.com/auth/compute
-  register: results
-- name: verify that command succeeded
-  assert:
-    that:
-      - results['resources'] | length == 0
-# ----------------------------------------------------------------------------
-- name: delete a backend service that does not exist
-  gcp_compute_backend_service:
-    name: "{{ resource_name }}"
-    backends:
-    - group: "{{ instancegroup.selfLink }}"
-    health_checks:
-    - "{{ healthcheck.selfLink }}"
-    enable_cdn: 'true'
-    project: "{{ gcp_project }}"
-    auth_kind: "{{ gcp_cred_kind }}"
-    service_account_file: "{{ gcp_cred_file }}"
-    state: absent
-  register: result
-- name: assert changed is false
-  assert:
-    that:
-      - result.changed == false
-#---------------------------------------------------------
-# Post-test teardown
-# If errors happen, don't crash the playbook!
-- name: delete a HTTP health check
-  gcp_compute_http_health_check:
-    name: httphealthcheck-backendservice
-    healthy_threshold: 10
-    port: 8080
-    timeout_sec: 2
-    unhealthy_threshold: 5
-    project: "{{ gcp_project }}"
-    auth_kind: "{{ gcp_cred_kind }}"
-    service_account_file: "{{ gcp_cred_file }}"
-    state: absent
-  register: healthcheck
-  ignore_errors: true
-- name: delete a instance group
-  gcp_compute_instance_group:
-    name: instancegroup-backendservice
-    zone: us-central1-a
-    project: "{{ gcp_project }}"
-    auth_kind: "{{ gcp_cred_kind }}"
-    service_account_file: "{{ gcp_cred_file }}"
-    state: absent
-  register: instancegroup
-  ignore_errors: true
+- include_tasks: autogen.yml
diff --git a/test/integration/targets/gcp_compute_disk/tasks/autogen.yml b/test/integration/targets/gcp_compute_disk/tasks/autogen.yml
new file mode 100644
index 00000000000..9dd08f1b485
--- /dev/null
+++ b/test/integration/targets/gcp_compute_disk/tasks/autogen.yml
@@ -0,0 +1,124 @@
+---
+# ----------------------------------------------------------------------------
+#
+#     ***     AUTO GENERATED CODE    ***    AUTO GENERATED CODE     ***
+#
+# ----------------------------------------------------------------------------
+#
+#     This file is automatically generated by Magic Modules and manual
+#     changes will be clobbered when the file is regenerated.
+#
+#     Please read more about how to change this file at
+#     https://www.github.com/GoogleCloudPlatform/magic-modules
+#
+# ----------------------------------------------------------------------------
+# Pre-test setup
+- name: delete a disk
+  gcp_compute_disk:
+    name: "{{ resource_name }}"
+    size_gb: 50
+    disk_encryption_key:
+      raw_key: SGVsbG8gZnJvbSBHb29nbGUgQ2xvdWQgUGxhdGZvcm0=
+    zone: us-central1-a
+    project: "{{ gcp_project }}"
+    auth_kind: "{{ gcp_cred_kind }}"
+    service_account_file: "{{ gcp_cred_file }}"
+    state: absent
+#----------------------------------------------------------
+- name: create a disk
+  gcp_compute_disk:
+    name: "{{ resource_name }}"
+    size_gb: 50
+    disk_encryption_key:
+      raw_key: SGVsbG8gZnJvbSBHb29nbGUgQ2xvdWQgUGxhdGZvcm0=
+    zone: us-central1-a
+    project: "{{ gcp_project }}"
+    auth_kind: "{{ gcp_cred_kind }}"
+    service_account_file: "{{ gcp_cred_file }}"
+    state: present
+  register: result
+- name: assert changed is true
+  assert:
+    that:
+      - result.changed == true
+- name: verify that disk was created
+  gcp_compute_disk_info:
+      filters:
+         - name = {{ resource_name }}
+      zone: us-central1-a
+      project: "{{ gcp_project }}"
+      auth_kind: "{{ gcp_cred_kind }}"
+      service_account_file: "{{ gcp_cred_file }}"
+      scopes:
+        - https://www.googleapis.com/auth/compute
+  register: results
+- name: verify that command succeeded
+  assert:
+    that:
+      - results['resources'] | length == 1
+# ----------------------------------------------------------------------------
+- name: create a disk that already exists
+  gcp_compute_disk:
+    name: "{{ resource_name }}"
+    size_gb: 50
+    disk_encryption_key:
+      raw_key: SGVsbG8gZnJvbSBHb29nbGUgQ2xvdWQgUGxhdGZvcm0=
+    zone: us-central1-a
+    project: "{{ gcp_project }}"
+    auth_kind: "{{ gcp_cred_kind }}"
+    service_account_file: "{{ gcp_cred_file }}"
+    state: present
+  register: result
+- name: assert changed is false
+  assert:
+    that:
+      - result.changed == false
+#----------------------------------------------------------
+- name: delete a disk
+  gcp_compute_disk:
+    name: "{{ resource_name }}"
+    size_gb: 50
+    disk_encryption_key:
+      raw_key: SGVsbG8gZnJvbSBHb29nbGUgQ2xvdWQgUGxhdGZvcm0=
+    zone: us-central1-a
+    project: "{{ gcp_project }}"
+    auth_kind: "{{ gcp_cred_kind }}"
+    service_account_file: "{{ gcp_cred_file }}"
+    state: absent
+  register: result
+- name: assert changed is true
+  assert:
+    that:
+      - result.changed == true
+- name: verify that disk was deleted
+  gcp_compute_disk_info:
+      filters:
+         - name = {{ resource_name }}
+      zone: us-central1-a
+      project: "{{ gcp_project }}"
+      auth_kind: "{{ gcp_cred_kind }}"
+      service_account_file: "{{ gcp_cred_file }}"
+      scopes:
+        - https://www.googleapis.com/auth/compute
+  register: results
+- name: verify that command succeeded
+  assert:
+    that:
+      - results['resources'] | length == 0
+# ----------------------------------------------------------------------------
+- name: delete a disk that does not exist
+  gcp_compute_disk:
+    name: "{{ resource_name }}"
+    size_gb: 50
+    disk_encryption_key:
+      raw_key: SGVsbG8gZnJvbSBHb29nbGUgQ2xvdWQgUGxhdGZvcm0=
+    zone: us-central1-a
+    project: "{{ gcp_project }}"
+    auth_kind: "{{ gcp_cred_kind }}"
+    service_account_file: "{{ gcp_cred_file }}"
+    state: absent
+  register: result
+- name: assert changed is false
+  assert:
+    that:
+      - result.changed == false
diff --git a/test/integration/targets/gcp_compute_disk/tasks/main.yml b/test/integration/targets/gcp_compute_disk/tasks/main.yml
index 9dd08f1b485..45d6e49178c 100644
--- a/test/integration/targets/gcp_compute_disk/tasks/main.yml
+++ b/test/integration/targets/gcp_compute_disk/tasks/main.yml
@@ -1,124 +1,2 @@
 ---
-# ----------------------------------------------------------------------------
-#
-#     ***     AUTO GENERATED CODE    ***    AUTO GENERATED CODE     ***
-#
-# ----------------------------------------------------------------------------
-#
-#     This file is automatically generated by Magic Modules and manual
-#     changes will be clobbered when the file is regenerated.
-#
-#     Please read more about how to change this file at
-#     https://www.github.com/GoogleCloudPlatform/magic-modules
-#
-# ----------------------------------------------------------------------------
-# Pre-test setup
-- name: delete a disk
-  gcp_compute_disk:
-    name: "{{ resource_name }}"
-    size_gb: 50
-    disk_encryption_key:
-      raw_key: SGVsbG8gZnJvbSBHb29nbGUgQ2xvdWQgUGxhdGZvcm0=
-    zone: us-central1-a
-    project: "{{ gcp_project }}"
-    auth_kind: "{{ gcp_cred_kind }}"
-    service_account_file: "{{ gcp_cred_file }}"
-    state: absent
-#----------------------------------------------------------
-- name: create a disk
-  gcp_compute_disk:
-    name: "{{ resource_name }}"
-    size_gb: 50
-    disk_encryption_key:
-      raw_key: SGVsbG8gZnJvbSBHb29nbGUgQ2xvdWQgUGxhdGZvcm0=
-    zone: us-central1-a
-    project: "{{ gcp_project }}"
-    auth_kind: "{{ gcp_cred_kind }}"
-    service_account_file: "{{ gcp_cred_file }}"
-    state: present
-  register: result
-- name: assert changed is true
-  assert:
-    that:
-      - result.changed == true
-- name: verify that disk was created
-  gcp_compute_disk_info:
-      filters:
-         - name = {{ resource_name }}
-      zone: us-central1-a
-      project: "{{ gcp_project }}"
-      auth_kind: "{{ gcp_cred_kind }}"
-      service_account_file: "{{ gcp_cred_file }}"
-      scopes:
-        - https://www.googleapis.com/auth/compute
-  register: results
-- name: verify that command succeeded
-  assert:
-    that:
-      - results['resources'] | length == 1
-# ----------------------------------------------------------------------------
-- name: create a disk that already exists
-  gcp_compute_disk:
-    name: "{{ resource_name }}"
-    size_gb: 50
-    disk_encryption_key:
-      raw_key: SGVsbG8gZnJvbSBHb29nbGUgQ2xvdWQgUGxhdGZvcm0=
-    zone: us-central1-a
-    project: "{{ gcp_project }}"
-    auth_kind: "{{ gcp_cred_kind }}"
-    service_account_file: "{{ gcp_cred_file }}"
-    state: present
-  register: result
-- name: assert changed is false
-  assert:
-    that:
-      - result.changed == false
-#----------------------------------------------------------
-- name: delete a disk
-  gcp_compute_disk:
-    name: "{{ resource_name }}"
-    size_gb: 50
-    disk_encryption_key:
-      raw_key: SGVsbG8gZnJvbSBHb29nbGUgQ2xvdWQgUGxhdGZvcm0=
-    zone: us-central1-a
-    project: "{{ gcp_project }}"
-    auth_kind: "{{ gcp_cred_kind }}"
-    service_account_file: "{{ gcp_cred_file }}"
-    state: absent
-  register: result
-- name: assert changed is true
-  assert:
-    that:
-      - result.changed == true
-- name: verify that disk was deleted
-  gcp_compute_disk_info:
-      filters:
-         - name = {{ resource_name }}
-      zone: us-central1-a
-      project: "{{ gcp_project }}"
-      auth_kind: "{{ gcp_cred_kind }}"
-      service_account_file: "{{ gcp_cred_file }}"
-      scopes:
-        - https://www.googleapis.com/auth/compute
-  register: results
-- name: verify that command succeeded
-  assert:
-    that:
-      - results['resources'] | length == 0
-# ----------------------------------------------------------------------------
-- name: delete a disk that does not exist
-  gcp_compute_disk:
-    name: "{{ resource_name }}"
-    size_gb: 50
-    disk_encryption_key:
-      raw_key: SGVsbG8gZnJvbSBHb29nbGUgQ2xvdWQgUGxhdGZvcm0=
-    zone: us-central1-a
-    project: "{{ gcp_project }}"
-    auth_kind: "{{ gcp_cred_kind }}"
-    service_account_file: "{{ gcp_cred_file }}"
-    state: absent
-  register: result
-- name: assert changed is false
-  assert:
-    that:
-      - result.changed == false
+- include_tasks: autogen.yml