Skip to content
Draft
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (
"fmt"
"log"
"net/http"
"net/url"
"regexp"
"strconv"
"strings"
Expand Down Expand Up @@ -632,23 +633,60 @@ func forceDeleteComputeNetwork(d *schema.ResourceData, config *transport_tpg.Con

// Read the network from the API so we can get the correct self link format. We can't construct it from the
// base path because it might not line up exactly (compute.googleapis.com vs www.googleapis.com)
net, err := tpgcompute.NewClient(config, userAgent).Networks.Get(projectId, networkName).Do()
networkUrl := fmt.Sprintf("%sprojects/%s/global/networks/%s", transport_tpg.BaseUrl(tpgcompute.Product, config), projectId, networkName)
net, err := transport_tpg.SendRequest(transport_tpg.SendRequestOptions{
Config: config,
Method: "GET",
Project: projectId,
RawURL: networkUrl,
UserAgent: userAgent,
})
if err != nil {
return err
}
netSelfLink, _ := net["selfLink"].(string)

token := ""
for paginate := true; paginate; {
filter := fmt.Sprintf("network eq %s", net.SelfLink)
resp, err := tpgcompute.NewClient(config, userAgent).Firewalls.List(projectId).Filter(filter).Do()
filter := fmt.Sprintf("network eq %s", netSelfLink)

firewallsUrl, err := url.Parse(fmt.Sprintf("%sprojects/%s/global/firewalls", transport_tpg.BaseUrl(tpgcompute.Product, config), projectId))
if err != nil {
return fmt.Errorf("Error parsing URL: %s", err)
}
q := firewallsUrl.Query()
q.Set("filter", filter)
if token != "" {
q.Set("pageToken", token)
}
firewallsUrl.RawQuery = q.Encode()

resp, err := transport_tpg.SendRequest(transport_tpg.SendRequestOptions{
Config: config,
Method: "GET",
Project: projectId,
RawURL: firewallsUrl.String(),
UserAgent: userAgent,
})
if err != nil {
return errwrap.Wrapf("Error listing firewall rules in proj: {{err}}", err)
}

log.Printf("[DEBUG] Found %d firewall rules in %q network", len(resp.Items), networkName)
items, _ := resp["items"].([]interface{})
log.Printf("[DEBUG] Found %d firewall rules in %q network", len(items), networkName)

for _, item := range items {
firewall := item.(map[string]interface{})
firewallName, _ := firewall["name"].(string)

for _, firewall := range resp.Items {
op, err := tpgcompute.NewClient(config, userAgent).Firewalls.Delete(projectId, firewall.Name).Do()
deleteUrl := fmt.Sprintf("%sprojects/%s/global/firewalls/%s", transport_tpg.BaseUrl(tpgcompute.Product, config), projectId, firewallName)
op, err := transport_tpg.SendRequest(transport_tpg.SendRequestOptions{
Config: config,
Method: "DELETE",
Project: projectId,
RawURL: deleteUrl,
UserAgent: userAgent,
})
if err != nil {
return errwrap.Wrapf("Error deleting firewall: {{err}}", err)
}
Expand All @@ -658,7 +696,7 @@ func forceDeleteComputeNetwork(d *schema.ResourceData, config *transport_tpg.Con
}
}

token = resp.NextPageToken
token, _ = resp["nextPageToken"].(string)
paginate = token != ""
}

Expand Down Expand Up @@ -714,8 +752,14 @@ func updateProjectBillingAccount(d *schema.ResourceData, config *transport_tpg.C
}

func deleteComputeNetwork(project, network, userAgent string, config *transport_tpg.Config) error {
op, err := tpgcompute.NewClient(config, userAgent).Networks.Delete(
project, network).Do()
networkUrl := fmt.Sprintf("%sprojects/%s/global/networks/%s", transport_tpg.BaseUrl(tpgcompute.Product, config), project, network)
op, err := transport_tpg.SendRequest(transport_tpg.SendRequestOptions{
Config: config,
Method: "DELETE",
Project: project,
RawURL: networkUrl,
UserAgent: userAgent,
})
if err != nil {
return errwrap.Wrapf("Error deleting network: {{err}}", err)
}
Expand Down
Loading