in resource.go [134:174]
func (w *Workflow) resourceExists(url string) (bool, DError) {
if !strings.HasPrefix(url, "projects/") {
return false, Errf("partial GCE resource URL %q needs leading \"projects/PROJECT/\"", url)
}
switch {
case machineTypeURLRegex.MatchString(url):
result := NamedSubexp(machineTypeURLRegex, url)
return w.machineTypeExists(result["project"], result["zone"], result["machinetype"])
case instanceURLRgx.MatchString(url):
result := NamedSubexp(instanceURLRgx, url)
return w.instanceExists(result["project"], result["zone"], result["instance"])
case diskURLRgx.MatchString(url):
result := NamedSubexp(diskURLRgx, url)
return w.diskExists(result["project"], result["zone"], result["disk"])
case imageURLRgx.MatchString(url):
result := NamedSubexp(imageURLRgx, url)
return w.imageExists(result["project"], result["family"], result["image"])
case machineImageURLRgx.MatchString(url):
result := NamedSubexp(machineImageURLRgx, url)
return w.machineImageExists(result["project"], result["machineImage"])
case networkURLRegex.MatchString(url):
result := NamedSubexp(networkURLRegex, url)
return w.networkExists(result["project"], result["network"])
case subnetworkURLRegex.MatchString(url):
result := NamedSubexp(subnetworkURLRegex, url)
return w.subnetworkExists(result["project"], result["region"], result["subnetwork"])
case targetInstanceURLRegex.MatchString(url):
result := NamedSubexp(targetInstanceURLRegex, url)
return w.targetInstanceExists(result["project"], result["zone"], result["targetInstance"])
case forwardingRuleURLRegex.MatchString(url):
result := NamedSubexp(forwardingRuleURLRegex, url)
return w.forwardingRuleExists(result["project"], result["region"], result["forwardingRule"])
case firewallRuleURLRegex.MatchString(url):
result := NamedSubexp(firewallRuleURLRegex, url)
return w.firewallRuleExists(result["project"], result["firewallRule"])
case snapshotURLRgx.MatchString(url):
result := NamedSubexp(snapshotURLRgx, url)
return w.snapshotExists(result["project"], result["snapshot"])
}
return false, Errf("unknown resource type: %q", url)
}