@@ -775,6 +775,79 @@ func testAccCheckComputeNetworkWasUpdated(newNetwork *compute.Network, oldNetwor
775775 }
776776}
777777
778+ func TestAccComputeNetwork_bgpModeAndMedInteractions(t *testing.T) {
779+ t.Parallel()
780+
781+ network := "google_compute_network.vpc_network"
782+ netName := fmt.Sprintf("tf-bgp-int-%s", acctest.RandString(t, 10))
783+
784+ acctest.VcrTest(t, resource.TestCase{
785+ PreCheck: func() { acctest.AccTestPreCheck(t) },
786+ ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories(t),
787+ CheckDestroy: testAccCheckComputeNetworkDestroyProducer(t),
788+ Steps: []resource.TestStep{
789+ {
790+ Config: testAccComputeNetwork_bgp(netName, "STANDARD", "true", ""),
791+ Check: resource.ComposeTestCheckFunc(
792+ resource.TestCheckResourceAttr(network, "bgp_best_path_selection_mode", "STANDARD"),
793+ resource.TestCheckResourceAttr(network, "bgp_always_compare_med", "true"),
794+ ),
795+ },
796+ {
797+ Config: testAccComputeNetwork_bgp(netName, "STANDARD", "false", ""),
798+ Check: resource.ComposeTestCheckFunc(
799+ resource.TestCheckResourceAttr(network, "bgp_always_compare_med", "false"),
800+ ),
801+ },
802+ {
803+ Config: testAccComputeNetwork_bgp(netName, "LEGACY", "", ""),
804+ // Expect an API error because bgp_always_compare_med cannot be set when switching to LEGACY
805+ ExpectError: regexp.MustCompile("Field bgp_always_compare_med is not supported for LEGACY BGP Best Path Selection algorithm"),
806+ },
807+ {
808+ Config: testAccComputeNetwork_bgp(netName, "LEGACY", "", "true"),
809+ Check: resource.ComposeTestCheckFunc(
810+ resource.TestCheckResourceAttr(network, "bgp_best_path_selection_mode", "LEGACY"),
811+ resource.TestCheckResourceAttr(network, "bgp_always_compare_med", "false"),
812+ ),
813+ },
814+ },
815+ })
816+ }
817+
818+ func TestAccComputeNetwork_networkBgpStandardModeDeleteMed(t *testing.T) {
819+ t.Parallel()
820+
821+ network := "google_compute_network.vpc_network"
822+ netName := fmt.Sprintf("tf-bgp-del-%s", acctest.RandString(t, 10))
823+
824+ acctest.VcrTest(t, resource.TestCase{
825+ PreCheck: func() { acctest.AccTestPreCheck(t) },
826+ ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories(t),
827+ CheckDestroy: testAccCheckComputeNetworkDestroyProducer(t),
828+ Steps: []resource.TestStep{
829+ {
830+ Config: testAccComputeNetwork_bgp(netName, "STANDARD", "true", ""),
831+ Check: resource.TestCheckResourceAttr(network, "bgp_always_compare_med", "true"),
832+ },
833+ {
834+ ResourceName: network,
835+ ImportState: true,
836+ ImportStateVerify: true,
837+ ImportStateVerifyIgnore: []string{"params", "delete_bgp_always_compare_med"},
838+ },
839+ {
840+ Config: testAccComputeNetwork_bgp(netName, "STANDARD", "true", "true"),
841+ ExpectError: regexp.MustCompile("Cannot set BgpAlwaysCompareMed to true while DeleteBgpAlwaysCompareMed is also true"),
842+ },
843+ {
844+ Config: testAccComputeNetwork_bgp(netName, "STANDARD", "false", "true"),
845+ Check: resource.TestCheckResourceAttr(network, "bgp_always_compare_med", "false"),
846+ },
847+ },
848+ })
849+ }
850+
778851func testAccComputeNetwork_basic(networkName string) string {
779852 return fmt.Sprintf(`
780853resource "google_compute_network" "bar" {
@@ -793,6 +866,26 @@ resource "google_compute_network" "baz" {
793866`, networkName)
794867}
795868
869+ func testAccComputeNetwork_bgp(name, bgpBestPathSelectionMode, bgpAlwaysCompareMed, deleteBgpAlwaysCompareMed string) string {
870+ var medLine, deleteMedLine string
871+ if bgpAlwaysCompareMed != "" {
872+ medLine = fmt.Sprintf(" bgp_always_compare_med = %s\n", bgpAlwaysCompareMed)
873+ }
874+ if deleteBgpAlwaysCompareMed != "" {
875+ deleteMedLine = fmt.Sprintf(" delete_bgp_always_compare_med = %s\n", deleteBgpAlwaysCompareMed)
876+ }
877+
878+ return fmt.Sprintf(`
879+ resource "google_compute_network" "vpc_network" {
880+ name = "%s"
881+ auto_create_subnetworks = false
882+ routing_mode = "GLOBAL"
883+ project = "%s"
884+ bgp_best_path_selection_mode = "%s"
885+ %s%s}
886+ `, name, envvar.GetTestProjectFromEnv(), bgpBestPathSelectionMode, medLine, deleteMedLine)
887+ }
888+
796889func testAccComputeNetwork_mtu(networkName string, mtu int32) string {
797890 return fmt.Sprintf(`
798891resource "google_compute_network" "acc_network_mtu" {
0 commit comments