Skip to content

Commit de7b7fb

Browse files
Add advanced_machine_features.enable_uefi_networking field to instance and templates (#12423) (#20531)
[upstream:fe081f8b80ebf09c944e93216474a9a9e6e51e75] Signed-off-by: Modular Magician <[email protected]>
1 parent 90d4528 commit de7b7fb

11 files changed

+222
-0
lines changed

.changelog/12423.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note:enhancement
2+
compute: `google_compute_instance`, `google_compute_instance_template`, `google_compute_region_instance_template` now supports `advanced_machine_features.enable_uefi_networking` field
3+
```

google/services/compute/compute_instance_helpers.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -589,6 +589,7 @@ func expandAdvancedMachineFeatures(d tpgresource.TerraformResourceData) *compute
589589
TurboMode: d.Get(prefix + ".turbo_mode").(string),
590590
VisibleCoreCount: int64(d.Get(prefix + ".visible_core_count").(int)),
591591
PerformanceMonitoringUnit: d.Get(prefix + ".performance_monitoring_unit").(string),
592+
EnableUefiNetworking: d.Get(prefix + ".enable_uefi_networking").(bool),
592593
}
593594
}
594595

@@ -602,6 +603,7 @@ func flattenAdvancedMachineFeatures(AdvancedMachineFeatures *compute.AdvancedMac
602603
"turbo_mode": AdvancedMachineFeatures.TurboMode,
603604
"visible_core_count": AdvancedMachineFeatures.VisibleCoreCount,
604605
"performance_monitoring_unit": AdvancedMachineFeatures.PerformanceMonitoringUnit,
606+
"enable_uefi_networking": AdvancedMachineFeatures.EnableUefiNetworking,
605607
}}
606608
}
607609

google/services/compute/resource_compute_instance.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ var (
5858
"advanced_machine_features.0.turbo_mode",
5959
"advanced_machine_features.0.visible_core_count",
6060
"advanced_machine_features.0.performance_monitoring_unit",
61+
"advanced_machine_features.0.enable_uefi_networking",
6162
}
6263

6364
bootDiskKeys = []string{
@@ -1064,6 +1065,13 @@ be from 0 to 999,999,999 inclusive.`,
10641065
ValidateFunc: validation.StringInSlice([]string{"STANDARD", "ENHANCED", "ARCHITECTURAL"}, false),
10651066
Description: `The PMU is a hardware component within the CPU core that monitors how the processor runs code. Valid values for the level of PMU are "STANDARD", "ENHANCED", and "ARCHITECTURAL".`,
10661067
},
1068+
"enable_uefi_networking": {
1069+
Type: schema.TypeBool,
1070+
Optional: true,
1071+
ForceNew: true,
1072+
AtLeastOneOf: advancedMachineFeaturesKeys,
1073+
Description: `Whether to enable UEFI networking for the instance.`,
1074+
},
10671075
},
10681076
},
10691077
},

google/services/compute/resource_compute_instance_template.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -931,6 +931,12 @@ be from 0 to 999,999,999 inclusive.`,
931931
ValidateFunc: validation.StringInSlice([]string{"STANDARD", "ENHANCED", "ARCHITECTURAL"}, false),
932932
Description: `The PMU is a hardware component within the CPU core that monitors how the processor runs code. Valid values for the level of PMU are "STANDARD", "ENHANCED", and "ARCHITECTURAL".`,
933933
},
934+
"enable_uefi_networking": {
935+
Type: schema.TypeBool,
936+
Optional: true,
937+
ForceNew: true,
938+
Description: `Whether to enable UEFI networking or not.`,
939+
},
934940
},
935941
},
936942
},

google/services/compute/resource_compute_instance_template_test.go

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -877,6 +877,47 @@ func TestAccComputeInstanceTemplate_performanceMonitoringUnit(t *testing.T) {
877877
})
878878
}
879879

880+
func TestAccComputeInstanceTemplate_enableUefiNetworking(t *testing.T) {
881+
t.Parallel()
882+
883+
var instanceTemplate compute.InstanceTemplate
884+
context_1 := map[string]interface{}{
885+
"instance_name": fmt.Sprintf("tf-test-instance-template-%s", acctest.RandString(t, 10)),
886+
"enable_uefi_networking": "false",
887+
}
888+
context_2 := map[string]interface{}{
889+
"instance_name": context_1["instance_name"].(string),
890+
"enable_uefi_networking": "true",
891+
}
892+
893+
acctest.VcrTest(t, resource.TestCase{
894+
PreCheck: func() { acctest.AccTestPreCheck(t) },
895+
ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories(t),
896+
CheckDestroy: testAccCheckComputeInstanceTemplateDestroyProducer(t),
897+
Steps: []resource.TestStep{
898+
{
899+
Config: testAccComputeInstanceTemplate_enableUefiNetworking(context_1),
900+
Check: resource.ComposeTestCheckFunc(
901+
testAccCheckComputeInstanceTemplateExists(t, "google_compute_instance_template.foobar", &instanceTemplate),
902+
resource.TestCheckResourceAttr("google_compute_instance_template.foobar", "advanced_machine_features.0.enable_uefi_networking", "false"),
903+
),
904+
},
905+
{
906+
Config: testAccComputeInstanceTemplate_enableUefiNetworking(context_2),
907+
Check: resource.ComposeTestCheckFunc(
908+
testAccCheckComputeInstanceTemplateExists(t, "google_compute_instance_template.foobar", &instanceTemplate),
909+
resource.TestCheckResourceAttr("google_compute_instance_template.foobar", "advanced_machine_features.0.enable_uefi_networking", "true"),
910+
),
911+
},
912+
{
913+
ResourceName: "google_compute_instance_template.foobar",
914+
ImportState: true,
915+
ImportStateVerify: true,
916+
},
917+
},
918+
})
919+
}
920+
880921
func TestAccComputeInstanceTemplate_invalidDiskType(t *testing.T) {
881922
t.Parallel()
882923

@@ -3533,6 +3574,32 @@ resource "google_compute_instance_template" "foobar" {
35333574
`, context)
35343575
}
35353576

3577+
func testAccComputeInstanceTemplate_enableUefiNetworking(context map[string]interface{}) string {
3578+
return acctest.Nprintf(`
3579+
data "google_compute_image" "my_image" {
3580+
family = "ubuntu-2004-lts"
3581+
project = "ubuntu-os-cloud"
3582+
}
3583+
3584+
resource "google_compute_instance_template" "foobar" {
3585+
name = "%{instance_name}"
3586+
machine_type = "n2-standard-2"
3587+
3588+
disk {
3589+
source_image = data.google_compute_image.my_image.self_link
3590+
}
3591+
3592+
network_interface {
3593+
network = "default"
3594+
}
3595+
3596+
advanced_machine_features {
3597+
enable_uefi_networking = "%{enable_uefi_networking}"
3598+
}
3599+
}
3600+
`, context)
3601+
}
3602+
35363603
func testAccComputeInstanceTemplate_invalidDiskType(suffix string) string {
35373604
return fmt.Sprintf(`
35383605
# Use this datasource insead of hardcoded values when https://github.com/hashicorp/terraform/issues/22679

google/services/compute/resource_compute_instance_test.go

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1512,6 +1512,33 @@ func TestAccComputeInstance_performanceMonitoringUnit(t *testing.T) {
15121512
})
15131513
}
15141514

1515+
func TestAccComputeInstance_enableUefiNetworking(t *testing.T) {
1516+
t.Parallel()
1517+
1518+
var instance compute.Instance
1519+
context_1 := map[string]interface{}{
1520+
"instance_name": fmt.Sprintf("tf-test-%s", acctest.RandString(t, 10)),
1521+
"enable_uefi_networking": "true",
1522+
}
1523+
1524+
acctest.VcrTest(t, resource.TestCase{
1525+
PreCheck: func() { acctest.AccTestPreCheck(t) },
1526+
ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories(t),
1527+
CheckDestroy: testAccCheckComputeInstanceDestroyProducer(t),
1528+
Steps: []resource.TestStep{
1529+
{
1530+
Config: testAccComputeInstance_enableUefiNetworking(context_1),
1531+
Check: resource.ComposeTestCheckFunc(
1532+
testAccCheckComputeInstanceExists(
1533+
t, "google_compute_instance.foobar", &instance),
1534+
resource.TestCheckResourceAttr("google_compute_instance.foobar", "advanced_machine_features.0.enable_uefi_networking", "true"),
1535+
),
1536+
},
1537+
computeInstanceImportStep("us-central1-a", context_1["instance_name"].(string), []string{}),
1538+
},
1539+
})
1540+
}
1541+
15151542
func TestAccComputeInstance_soleTenantNodeAffinities(t *testing.T) {
15161543
t.Parallel()
15171544

@@ -6581,6 +6608,35 @@ resource "google_compute_instance" "foobar" {
65816608
`, context)
65826609
}
65836610

6611+
func testAccComputeInstance_enableUefiNetworking(context map[string]interface{}) string {
6612+
return acctest.Nprintf(`
6613+
data "google_compute_image" "my_image" {
6614+
family = "debian-12"
6615+
project = "debian-cloud"
6616+
}
6617+
6618+
resource "google_compute_instance" "foobar" {
6619+
name = "%{instance_name}"
6620+
machine_type = "n2-standard-2"
6621+
zone = "us-central1-a"
6622+
6623+
boot_disk {
6624+
initialize_params {
6625+
image = data.google_compute_image.my_image.self_link
6626+
}
6627+
}
6628+
6629+
network_interface {
6630+
network = "default"
6631+
}
6632+
6633+
advanced_machine_features {
6634+
enable_uefi_networking = "%{enable_uefi_networking}"
6635+
}
6636+
}
6637+
`, context)
6638+
}
6639+
65846640
func testAccComputeInstance_advancedMachineFeaturesUpdated(instance string) string {
65856641
return fmt.Sprintf(`
65866642
data "google_compute_image" "my_image" {

google/services/compute/resource_compute_region_instance_template.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -897,6 +897,12 @@ be from 0 to 999,999,999 inclusive.`,
897897
ValidateFunc: validation.StringInSlice([]string{"STANDARD", "ENHANCED", "ARCHITECTURAL"}, false),
898898
Description: `The PMU is a hardware component within the CPU core that monitors how the processor runs code. Valid values for the level of PMU are "STANDARD", "ENHANCED", and "ARCHITECTURAL".`,
899899
},
900+
"enable_uefi_networking": {
901+
Type: schema.TypeBool,
902+
Optional: true,
903+
ForceNew: true,
904+
Description: `Whether to enable UEFI networking or not.`,
905+
},
900906
},
901907
},
902908
},

google/services/compute/resource_compute_region_instance_template_test.go

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -829,6 +829,47 @@ func TestAccComputeRegionInstanceTemplate_performanceMonitoringUnit(t *testing.T
829829
})
830830
}
831831

832+
func TestAccComputeRegionInstanceTemplate_enableUefiNetworking(t *testing.T) {
833+
t.Parallel()
834+
835+
var instanceTemplate compute.InstanceTemplate
836+
context_1 := map[string]interface{}{
837+
"instance_name": fmt.Sprintf("tf-test-instance-template-%s", acctest.RandString(t, 10)),
838+
"enable_uefi_networking": "false",
839+
}
840+
context_2 := map[string]interface{}{
841+
"instance_name": context_1["instance_name"].(string),
842+
"enable_uefi_networking": "true",
843+
}
844+
845+
acctest.VcrTest(t, resource.TestCase{
846+
PreCheck: func() { acctest.AccTestPreCheck(t) },
847+
ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories(t),
848+
CheckDestroy: testAccCheckComputeInstanceTemplateDestroyProducer(t),
849+
Steps: []resource.TestStep{
850+
{
851+
Config: testAccComputeRegionInstanceTemplate_enableUefiNetworking(context_1),
852+
Check: resource.ComposeTestCheckFunc(
853+
testAccCheckComputeRegionInstanceTemplateExists(t, "google_compute_region_instance_template.foobar", &instanceTemplate),
854+
resource.TestCheckResourceAttr("google_compute_region_instance_template.foobar", "advanced_machine_features.0.enable_uefi_networking", "false"),
855+
),
856+
},
857+
{
858+
Config: testAccComputeRegionInstanceTemplate_enableUefiNetworking(context_2),
859+
Check: resource.ComposeTestCheckFunc(
860+
testAccCheckComputeRegionInstanceTemplateExists(t, "google_compute_region_instance_template.foobar", &instanceTemplate),
861+
resource.TestCheckResourceAttr("google_compute_region_instance_template.foobar", "advanced_machine_features.0.enable_uefi_networking", "true"),
862+
),
863+
},
864+
{
865+
ResourceName: "google_compute_region_instance_template.foobar",
866+
ImportState: true,
867+
ImportStateVerify: true,
868+
},
869+
},
870+
})
871+
}
872+
832873
func TestAccComputeRegionInstanceTemplate_invalidDiskType(t *testing.T) {
833874
t.Parallel()
834875

@@ -3060,6 +3101,33 @@ resource "google_compute_region_instance_template" "foobar" {
30603101
`, context)
30613102
}
30623103

3104+
func testAccComputeRegionInstanceTemplate_enableUefiNetworking(context map[string]interface{}) string {
3105+
return acctest.Nprintf(`
3106+
data "google_compute_image" "my_image" {
3107+
family = "ubuntu-2004-lts"
3108+
project = "ubuntu-os-cloud"
3109+
}
3110+
3111+
resource "google_compute_region_instance_template" "foobar" {
3112+
name = "%{instance_name}"
3113+
region = "us-central1"
3114+
machine_type = "n2-standard-2"
3115+
3116+
disk {
3117+
source_image = data.google_compute_image.my_image.self_link
3118+
}
3119+
3120+
network_interface {
3121+
network = "default"
3122+
}
3123+
3124+
advanced_machine_features {
3125+
enable_uefi_networking = "%{enable_uefi_networking}"
3126+
}
3127+
}
3128+
`, context)
3129+
}
3130+
30633131
func testAccComputeRegionInstanceTemplate_invalidDiskType(suffix string) string {
30643132
return fmt.Sprintf(`
30653133
# Use this datasource insead of hardcoded values when https://github.com/hashicorp/terraform/issues/22679

website/docs/r/compute_instance.html.markdown

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -577,6 +577,8 @@ specified, then this instance will have no external IPv6 Internet access. Struct
577577

578578
* `performance_monitoring_unit` - (Optional) [The PMU](https://cloud.google.com/compute/docs/pmu-overview) is a hardware component within the CPU core that monitors how the processor runs code. Valid values for the level of PMU are `STANDARD`, `ENHANCED`, and `ARCHITECTURAL`.
579579

580+
* `enable_uefi_networking` - (Optional) Whether to enable UEFI networking for instance creation.
581+
580582
<a name="nested_reservation_affinity"></a>The `reservation_affinity` block supports:
581583

582584
* `type` - (Required) The type of reservation from which this instance can consume resources.

website/docs/r/compute_instance_template.html.markdown

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -732,6 +732,8 @@ The `specific_reservation` block supports:
732732

733733
* `performance_monitoring_unit` - (Optional) [The PMU](https://cloud.google.com/compute/docs/pmu-overview) is a hardware component within the CPU core that monitors how the processor runs code. Valid values for the level of PMU are `STANDARD`, `ENHANCED`, and `ARCHITECTURAL`.
734734

735+
* `enable_uefi_networking` - (Optional) Whether to enable UEFI networking for instance creation.
736+
735737
## Attributes Reference
736738

737739
In addition to the arguments listed above, the following computed attributes are

0 commit comments

Comments
 (0)