tpgtools/ignored_handwritten/compute_utils.go (44 lines of code) (raw):

package google import ( "context" "fmt" "log" "strings" compute "github.com/GoogleCloudPlatform/declarative-resource-client-library/services/google/compute/beta" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-provider-google/google/tpgresource" transport_tpg "github.com/hashicorp/terraform-provider-google/google/transport" ) func deleteComputeNetworkDefaultRoutes(d *schema.ResourceData, config *transport_tpg.Config, res *compute.Network) error { if d.Get("delete_default_routes_on_create").(bool) { url, err := tpgresource.ReplaceVars(d, config, "{{ComputeBasePath}}projects/{{project}}/global/networks") networkLink := fmt.Sprintf("%s/%s", url, d.Get("name").(string)) filter := fmt.Sprintf("(network=\"%s\") AND (destRange=\"0.0.0.0/0\")", networkLink) log.Printf("[DEBUG] Getting routes for network %q with filter '%q'", d.Get("name").(string), filter) routes, err := config.clientComputeDCL.ListRoute(context.Background(), *res.Project) if err != nil { return fmt.Errorf("Error listing routes in proj: %s", err) } log.Printf("[DEBUG] Found %d routes rules in %q network", len(routes.Items), d.Get("name").(string)) for _, route := range routes.Items { if *route.Network == networkLink && *route.DestRange == "0.0.0.0/0" { err := config.clientComputeDCL.DeleteRoute(context.Background(), route) if err != nil { return fmt.Errorf("Error deleting route: %s", err) } } } } return nil } func getVpnTunnelLink(config *transport_tpg.Config, project string, region string, tunnel string) (string, error) { if !strings.Contains(tunnel, "/") { // Tunnel value provided is just the name, lookup the tunnel SelfLink tunnelData, err := config.clientCompute.VpnTunnels.Get( project, region, tunnel).Do() if err != nil { return "", fmt.Errorf("Error reading tunnel: %s", err) } tunnel = tunnelData.SelfLink } return tunnel, nil }