@@ -667,6 +667,141 @@ resource "google_compute_backend_service" "default" {
667667` , context )
668668}
669669
670+ func TestAccComputeGlobalForwardingRule_globalForwardingRuleHybridExample (t * testing.T ) {
671+ t .Parallel ()
672+
673+ context := map [string ]interface {}{
674+ "random_suffix" : randString (t , 10 ),
675+ }
676+
677+ vcrTest (t , resource.TestCase {
678+ PreCheck : func () { testAccPreCheck (t ) },
679+ Providers : testAccProviders ,
680+ CheckDestroy : testAccCheckComputeGlobalForwardingRuleDestroyProducer (t ),
681+ Steps : []resource.TestStep {
682+ {
683+ Config : testAccComputeGlobalForwardingRule_globalForwardingRuleHybridExample (context ),
684+ },
685+ {
686+ ResourceName : "google_compute_global_forwarding_rule.default" ,
687+ ImportState : true ,
688+ ImportStateVerify : true ,
689+ ImportStateVerifyIgnore : []string {"network" , "port_range" , "target" },
690+ },
691+ },
692+ })
693+ }
694+
695+ func testAccComputeGlobalForwardingRule_globalForwardingRuleHybridExample (context map [string ]interface {}) string {
696+ return Nprintf (`
697+ // Roughly mirrors https://cloud.google.com/load-balancing/docs/https/setting-up-ext-https-hybrid
698+
699+ resource "google_compute_network" "default" {
700+ name = "tf-test-my-network%{random_suffix}"
701+ }
702+
703+ // Zonal NEG with GCE_VM_IP_PORT
704+ resource "google_compute_network_endpoint_group" "default" {
705+ name = "tf-test-default-neg%{random_suffix}"
706+ network = google_compute_network.default.id
707+ default_port = "90"
708+ zone = "us-central1-a"
709+ network_endpoint_type = "GCE_VM_IP_PORT"
710+ }
711+
712+ // Hybrid connectivity NEG
713+ resource "google_compute_network_endpoint_group" "hybrid" {
714+ name = "tf-test-hybrid-neg%{random_suffix}"
715+ network = google_compute_network.default.id
716+ default_port = "90"
717+ zone = "us-central1-a"
718+ network_endpoint_type = "NON_GCP_PRIVATE_IP_PORT"
719+ }
720+
721+ resource "google_compute_network_endpoint" "hybrid-endpoint" {
722+ network_endpoint_group = google_compute_network_endpoint_group.hybrid.name
723+ port = google_compute_network_endpoint_group.hybrid.default_port
724+ ip_address = "127.0.0.1"
725+ }
726+
727+ // Backend service for Zonal NEG
728+ resource "google_compute_backend_service" "default" {
729+ name = "tf-test-backend-default%{random_suffix}"
730+ port_name = "http"
731+ protocol = "HTTP"
732+ timeout_sec = 10
733+ backend {
734+ group = google_compute_network_endpoint_group.default.id
735+ balancing_mode = "RATE"
736+ max_rate_per_endpoint = 10
737+ }
738+ health_checks = [google_compute_health_check.default.id]
739+ }
740+
741+ // Backgend service for Hybrid NEG
742+ resource "google_compute_backend_service" "hybrid" {
743+ name = "tf-test-backend-hybrid%{random_suffix}"
744+ port_name = "http"
745+ protocol = "HTTP"
746+ timeout_sec = 10
747+ backend {
748+ group = google_compute_network_endpoint_group.hybrid.id
749+ balancing_mode = "RATE"
750+ max_rate_per_endpoint = 10
751+ }
752+ health_checks = [google_compute_health_check.default.id]
753+ }
754+
755+ resource "google_compute_health_check" "default" {
756+ name = "tf-test-health-check%{random_suffix}"
757+ timeout_sec = 1
758+ check_interval_sec = 1
759+
760+ tcp_health_check {
761+ port = "80"
762+ }
763+ }
764+
765+ resource "google_compute_url_map" "default" {
766+ name = "url-map-tf-test-target-proxy%{random_suffix}"
767+ description = "a description"
768+ default_service = google_compute_backend_service.default.id
769+
770+ host_rule {
771+ hosts = ["mysite.com"]
772+ path_matcher = "allpaths"
773+ }
774+
775+ path_matcher {
776+ name = "allpaths"
777+ default_service = google_compute_backend_service.default.id
778+
779+ path_rule {
780+ paths = ["/*"]
781+ service = google_compute_backend_service.default.id
782+ }
783+
784+ path_rule {
785+ paths = ["/hybrid"]
786+ service = google_compute_backend_service.hybrid.id
787+ }
788+ }
789+ }
790+
791+ resource "google_compute_target_http_proxy" "default" {
792+ name = "tf-test-target-proxy%{random_suffix}"
793+ description = "a description"
794+ url_map = google_compute_url_map.default.id
795+ }
796+
797+ resource "google_compute_global_forwarding_rule" "default" {
798+ name = "tf-test-global-rule%{random_suffix}"
799+ target = google_compute_target_http_proxy.default.id
800+ port_range = "80"
801+ }
802+ ` , context )
803+ }
804+
670805func TestAccComputeGlobalForwardingRule_privateServiceConnectGoogleApisExample (t * testing.T ) {
671806 t .Parallel ()
672807
0 commit comments