func()

in pkg/fuzz/gcp.go [286:348]


func (g *GCLB) CheckResourceDeletionByProtocol(ctx context.Context, c cloud.Cloud, options *GCLBDeleteOptions, protocol Protocol) error {
	var resources []meta.Key

	for k, gfr := range g.ForwardingRule {
		// Check if forwarding rule matches given protocol.
		if gfrProtocol, err := getForwardingRuleProtocol(gfr.GA); err != nil {
			return err
		} else if gfrProtocol != protocol {
			continue
		}

		var err error
		if k.Region != "" {
			_, err = c.ForwardingRules().Get(ctx, &k)
		} else {
			_, err = c.GlobalForwardingRules().Get(ctx, &k)
		}
		if err != nil {
			if err.(*googleapi.Error) == nil || err.(*googleapi.Error).Code != http.StatusNotFound {
				return fmt.Errorf("ForwardingRule %s is not deleted/error to get: %s", k.Name, err)
			}
		} else {
			resources = append(resources, k)
		}
	}

	switch protocol {
	case HttpProtocol:
		for k := range g.TargetHTTPProxy {
			_, err := c.TargetHttpProxies().Get(ctx, &k)
			if err != nil {
				if err.(*googleapi.Error) == nil || err.(*googleapi.Error).Code != http.StatusNotFound {
					return fmt.Errorf("TargetHTTPProxy %s is not deleted/error to get: %s", k.Name, err)
				}
			} else {
				resources = append(resources, k)
			}
		}
	case HttpsProtocol:
		for k := range g.TargetHTTPSProxy {
			_, err := c.TargetHttpsProxies().Get(ctx, &k)
			if err != nil {
				if err.(*googleapi.Error) == nil || err.(*googleapi.Error).Code != http.StatusNotFound {
					return fmt.Errorf("TargetHTTPSProxy %s is not deleted/error to get: %s", k.Name, err)
				}
			} else {
				resources = append(resources, k)
			}
		}
	default:
		return fmt.Errorf("invalid protocol %q", protocol)
	}

	if len(resources) != 0 {
		var s []string
		for _, r := range resources {
			s = append(s, r.String())
		}
		return fmt.Errorf("resources still exist (%s)", strings.Join(s, ", "))
	}

	return nil
}