diff --git a/.changelog/12148.txt b/.changelog/12148.txt
new file mode 100644
index 0000000000..c2fc128042
--- /dev/null
+++ b/.changelog/12148.txt
@@ -0,0 +1,3 @@
+```release-note:enhancement
+compute: added support for `advanced_machine_features.turbo_mode` to `google_compute_instance`, `google_compute_instance_template`, and `google_compute_region_instance_template`
+```
\ No newline at end of file
diff --git a/google-beta/services/compute/compute_instance_helpers.go b/google-beta/services/compute/compute_instance_helpers.go
index e228387808..48d84630e8 100644
--- a/google-beta/services/compute/compute_instance_helpers.go
+++ b/google-beta/services/compute/compute_instance_helpers.go
@@ -634,6 +634,7 @@ func expandAdvancedMachineFeatures(d tpgresource.TerraformResourceData) *compute
return &compute.AdvancedMachineFeatures{
EnableNestedVirtualization: d.Get(prefix + ".enable_nested_virtualization").(bool),
ThreadsPerCore: int64(d.Get(prefix + ".threads_per_core").(int)),
+ TurboMode: d.Get(prefix + ".turbo_mode").(string),
VisibleCoreCount: int64(d.Get(prefix + ".visible_core_count").(int)),
}
}
@@ -645,6 +646,7 @@ func flattenAdvancedMachineFeatures(AdvancedMachineFeatures *compute.AdvancedMac
return []map[string]interface{}{{
"enable_nested_virtualization": AdvancedMachineFeatures.EnableNestedVirtualization,
"threads_per_core": AdvancedMachineFeatures.ThreadsPerCore,
+ "turbo_mode": AdvancedMachineFeatures.TurboMode,
"visible_core_count": AdvancedMachineFeatures.VisibleCoreCount,
}}
}
diff --git a/google-beta/services/compute/resource_compute_instance.go b/google-beta/services/compute/resource_compute_instance.go
index f7e50c5d0b..de0e41141e 100644
--- a/google-beta/services/compute/resource_compute_instance.go
+++ b/google-beta/services/compute/resource_compute_instance.go
@@ -52,6 +52,13 @@ func IpCidrRangeDiffSuppress(k, old, new string, d *schema.ResourceData) bool {
}
var (
+ advancedMachineFeaturesKeys = []string{
+ "advanced_machine_features.0.enable_nested_virtualization",
+ "advanced_machine_features.0.threads_per_core",
+ "advanced_machine_features.0.turbo_mode",
+ "advanced_machine_features.0.visible_core_count",
+ }
+
bootDiskKeys = []string{
"boot_disk.0.auto_delete",
"boot_disk.0.device_name",
@@ -1075,19 +1082,26 @@ be from 0 to 999,999,999 inclusive.`,
"enable_nested_virtualization": {
Type: schema.TypeBool,
Optional: true,
- AtLeastOneOf: []string{"advanced_machine_features.0.enable_nested_virtualization", "advanced_machine_features.0.threads_per_core"},
+ AtLeastOneOf: advancedMachineFeaturesKeys,
Description: `Whether to enable nested virtualization or not.`,
},
"threads_per_core": {
Type: schema.TypeInt,
Optional: true,
- AtLeastOneOf: []string{"advanced_machine_features.0.enable_nested_virtualization", "advanced_machine_features.0.threads_per_core"},
+ AtLeastOneOf: advancedMachineFeaturesKeys,
Description: `The number of threads per physical core. To disable simultaneous multithreading (SMT) set this to 1. If unset, the maximum number of threads supported per core by the underlying processor is assumed.`,
},
+ "turbo_mode": {
+ Type: schema.TypeString,
+ Optional: true,
+ AtLeastOneOf: advancedMachineFeaturesKeys,
+ Description: `Turbo frequency mode to use for the instance. Currently supported modes is "ALL_CORE_MAX".`,
+ ValidateFunc: validation.StringInSlice([]string{"ALL_CORE_MAX"}, false),
+ },
"visible_core_count": {
Type: schema.TypeInt,
Optional: true,
- AtLeastOneOf: []string{"advanced_machine_features.0.enable_nested_virtualization", "advanced_machine_features.0.threads_per_core", "advanced_machine_features.0.visible_core_count"},
+ AtLeastOneOf: advancedMachineFeaturesKeys,
Description: `The number of physical cores to expose to an instance. Multiply by the number of threads per core to compute the total number of virtual CPUs to expose to the instance. If unset, the number of cores is inferred from the instance\'s nominal CPU count and the underlying platform\'s SMT width.`,
},
},
diff --git a/google-beta/services/compute/resource_compute_instance_template.go b/google-beta/services/compute/resource_compute_instance_template.go
index 8dd2badb48..b668ac1a5d 100644
--- a/google-beta/services/compute/resource_compute_instance_template.go
+++ b/google-beta/services/compute/resource_compute_instance_template.go
@@ -951,6 +951,12 @@ be from 0 to 999,999,999 inclusive.`,
ForceNew: true,
Description: `The number of threads per physical core. To disable simultaneous multithreading (SMT) set this to 1. If unset, the maximum number of threads supported per core by the underlying processor is assumed.`,
},
+ "turbo_mode": {
+ Type: schema.TypeString,
+ Optional: true,
+ Description: `Turbo frequency mode to use for the instance. Currently supported modes is "ALL_CORE_MAX".`,
+ ValidateFunc: validation.StringInSlice([]string{"ALL_CORE_MAX"}, false),
+ },
"visible_core_count": {
Type: schema.TypeInt,
Optional: true,
diff --git a/google-beta/services/compute/resource_compute_instance_template_test.go b/google-beta/services/compute/resource_compute_instance_template_test.go
index 74fc8b28bb..09ff7f256d 100644
--- a/google-beta/services/compute/resource_compute_instance_template_test.go
+++ b/google-beta/services/compute/resource_compute_instance_template_test.go
@@ -3721,11 +3721,11 @@ data "google_compute_image" "my_image" {
resource "google_compute_instance_template" "foobar" {
name = "tf-test-instance-template-%s"
- machine_type = "n2-standard-2" // Nested Virt isn't supported on E2 and N2Ds https://cloud.google.com/compute/docs/instances/nested-virtualization/overview#restrictions and https://cloud.google.com/compute/docs/instances/disabling-smt#limitations
+ machine_type = "c4-standard-2"
disk {
source_image = data.google_compute_image.my_image.self_link
- auto_delete = true
+ auto_delete = true
boot = true
}
@@ -3734,13 +3734,14 @@ resource "google_compute_instance_template" "foobar" {
}
advanced_machine_features {
- threads_per_core = 1
- enable_nested_virtualization = true
- visible_core_count = 1
+ enable_nested_virtualization = true
+ threads_per_core = 1
+ turbo_mode = "ALL_CORE_MAX"
+ visible_core_count = 1
}
scheduling {
- on_host_maintenance = "TERMINATE"
+ on_host_maintenance = "TERMINATE"
}
}
diff --git a/google-beta/services/compute/resource_compute_instance_test.go b/google-beta/services/compute/resource_compute_instance_test.go
index e497bd4e07..5b76ff9d82 100644
--- a/google-beta/services/compute/resource_compute_instance_test.go
+++ b/google-beta/services/compute/resource_compute_instance_test.go
@@ -7124,7 +7124,7 @@ data "google_compute_image" "my_image" {
resource "google_compute_instance" "foobar" {
name = "%s"
- machine_type = "n1-standard-2" // Nested Virt isn't supported on E2 and N2Ds https://cloud.google.com/compute/docs/instances/nested-virtualization/overview#restrictions and https://cloud.google.com/compute/docs/instances/disabling-smt#limitations
+ machine_type = "c4-standard-2"
zone = "us-central1-a"
boot_disk {
@@ -7152,7 +7152,7 @@ data "google_compute_image" "my_image" {
resource "google_compute_instance" "foobar" {
name = "%s"
- machine_type = "n1-standard-2" // Nested Virt isn't supported on E2 and N2Ds https://cloud.google.com/compute/docs/instances/nested-virtualization/overview#restrictions and https://cloud.google.com/compute/docs/instances/disabling-smt#limitations
+ machine_type = "c4-standard-2"
zone = "us-central1-a"
boot_disk {
@@ -7165,9 +7165,10 @@ resource "google_compute_instance" "foobar" {
network = "default"
}
advanced_machine_features {
- threads_per_core = 1
- enable_nested_virtualization = true
- visible_core_count = 1
+ enable_nested_virtualization = true
+ threads_per_core = 1
+ turbo_mode = "ALL_CORE_MAX"
+ visible_core_count = 1
}
allow_stopping_for_update = true
}
diff --git a/google-beta/services/compute/resource_compute_region_instance_template.go b/google-beta/services/compute/resource_compute_region_instance_template.go
index e8ef14ccbb..1c0611c385 100644
--- a/google-beta/services/compute/resource_compute_region_instance_template.go
+++ b/google-beta/services/compute/resource_compute_region_instance_template.go
@@ -907,6 +907,12 @@ be from 0 to 999,999,999 inclusive.`,
ForceNew: true,
Description: `The number of threads per physical core. To disable simultaneous multithreading (SMT) set this to 1. If unset, the maximum number of threads supported per core by the underlying processor is assumed.`,
},
+ "turbo_mode": {
+ Type: schema.TypeString,
+ Optional: true,
+ Description: `Turbo frequency mode to use for the instance. Currently supported modes is "ALL_CORE_MAX".`,
+ ValidateFunc: validation.StringInSlice([]string{"ALL_CORE_MAX"}, false),
+ },
"visible_core_count": {
Type: schema.TypeInt,
Optional: true,
diff --git a/google-beta/services/compute/resource_compute_region_instance_template_test.go b/google-beta/services/compute/resource_compute_region_instance_template_test.go
index a10f2bdf4f..76cd7391f8 100644
--- a/google-beta/services/compute/resource_compute_region_instance_template_test.go
+++ b/google-beta/services/compute/resource_compute_region_instance_template_test.go
@@ -3120,8 +3120,8 @@ data "google_compute_image" "my_image" {
resource "google_compute_region_instance_template" "foobar" {
name = "tf-test-instance-template-%s"
- region = "us-central1"
- machine_type = "n2-standard-2" // Nested Virt isn't supported on E2 and N2Ds https://cloud.google.com/compute/docs/instances/nested-virtualization/overview#restrictions and https://cloud.google.com/compute/docs/instances/disabling-smt#limitations
+ region = "us-central1"
+ machine_type = "c2-standard-2"
disk {
source_image = data.google_compute_image.my_image.self_link
@@ -3134,9 +3134,10 @@ resource "google_compute_region_instance_template" "foobar" {
}
advanced_machine_features {
- threads_per_core = 1
enable_nested_virtualization = true
- visible_core_count = 1
+ threads_per_core = 1
+ turbo_mode = "ALL_CORE_MAX"
+ visible_core_count = 1
}
scheduling {
diff --git a/website/docs/r/compute_instance.html.markdown b/website/docs/r/compute_instance.html.markdown
index 369f11e5b0..0ca4bb31c0 100644
--- a/website/docs/r/compute_instance.html.markdown
+++ b/website/docs/r/compute_instance.html.markdown
@@ -566,11 +566,13 @@ specified, then this instance will have no external IPv6 Internet access. Struct
The `advanced_machine_features` block supports:
-* `enable_nested_virtualization` (Optional) Defines whether the instance should have [nested virtualization](#on_host_maintenance) enabled. Defaults to false.
+* `enable_nested_virtualization` - (Optional) Defines whether the instance should have [nested virtualization](#on_host_maintenance) enabled. Defaults to false.
-* `threads_per_core` (Optional) he number of threads per physical core. To disable [simultaneous multithreading (SMT)](https://cloud.google.com/compute/docs/instances/disabling-smt) set this to 1.
+* `threads_per_core` - (Optional) The number of threads per physical core. To disable [simultaneous multithreading (SMT)](https://cloud.google.com/compute/docs/instances/disabling-smt) set this to 1.
-* `visible_core_count` (Optional) The number of physical cores to expose to an instance. [visible cores info (VC)](https://cloud.google.com/compute/docs/instances/customize-visible-cores).
+* `turbo_mode` - (Optional) Turbo frequency mode to use for the instance. Supported modes are currently either `ALL_CORE_MAX` or unset (default).
+
+* `visible_core_count` - (Optional) The number of physical cores to expose to an instance. [visible cores info (VC)](https://cloud.google.com/compute/docs/instances/customize-visible-cores).
The `reservation_affinity` block supports:
diff --git a/website/docs/r/compute_instance_template.html.markdown b/website/docs/r/compute_instance_template.html.markdown
index 1d65214ae3..a2621e9d98 100644
--- a/website/docs/r/compute_instance_template.html.markdown
+++ b/website/docs/r/compute_instance_template.html.markdown
@@ -722,11 +722,13 @@ The `specific_reservation` block supports:
The `advanced_machine_features` block supports:
-* `enable_nested_virtualization` (Optional) Defines whether the instance should have [nested virtualization](#on_host_maintenance) enabled. Defaults to false.
+* `enable_nested_virtualization` - (Optional) Defines whether the instance should have [nested virtualization](#on_host_maintenance) enabled. Defaults to false.
-* `threads_per_core` (Optional) The number of threads per physical core. To disable [simultaneous multithreading (SMT)](https://cloud.google.com/compute/docs/instances/disabling-smt) set this to 1.
+* `threads_per_core` - (Optional) The number of threads per physical core. To disable [simultaneous multithreading (SMT)](https://cloud.google.com/compute/docs/instances/disabling-smt) set this to 1.
-* `visible_core_count` (Optional, [Beta](https://terraform.io/docs/providers/google/guides/provider_versions.html)) The number of physical cores to expose to an instance. [visible cores info (VC)](https://cloud.google.com/compute/docs/instances/customize-visible-cores).
+* `turbo_mode` - (Optional) Turbo frequency mode to use for the instance. Supported modes are currently either `ALL_CORE_MAX` or unset (default).
+
+* `visible_core_count` - (Optional) The number of physical cores to expose to an instance. [visible cores info (VC)](https://cloud.google.com/compute/docs/instances/customize-visible-cores).
## Attributes Reference
diff --git a/website/docs/r/compute_region_instance_template.html.markdown b/website/docs/r/compute_region_instance_template.html.markdown
index a802854941..316dd7ab25 100644
--- a/website/docs/r/compute_region_instance_template.html.markdown
+++ b/website/docs/r/compute_region_instance_template.html.markdown
@@ -682,11 +682,13 @@ The `specific_reservation` block supports:
The `advanced_machine_features` block supports:
-* `enable_nested_virtualization` (Optional) Defines whether the instance should have [nested virtualization](#on_host_maintenance) enabled. Defaults to false.
+* `enable_nested_virtualization` - (Optional) Defines whether the instance should have [nested virtualization](#on_host_maintenance) enabled. Defaults to false.
-* `threads_per_core` (Optional) The number of threads per physical core. To disable [simultaneous multithreading (SMT)](https://cloud.google.com/compute/docs/instances/disabling-smt) set this to 1.
+* `threads_per_core` - (Optional) The number of threads per physical core. To disable [simultaneous multithreading (SMT)](https://cloud.google.com/compute/docs/instances/disabling-smt) set this to 1.
-* `visible_core_count` (Optional, ) The number of physical cores to expose to an instance. [visible cores info (VC)](https://cloud.google.com/compute/docs/instances/customize-visible-cores).
+* `turbo_mode` - (Optional) Turbo frequency mode to use for the instance. Supported modes are currently either `ALL_CORE_MAX` or unset (default).
+
+* `visible_core_count` - (Optional) The number of physical cores to expose to an instance. [visible cores info (VC)](https://cloud.google.com/compute/docs/instances/customize-visible-cores).
## Attributes Reference