cmd/buildlet/stage0: simplify buildletURL lookup

Prefer explicit environment variable first, then GCE instance
attribute, then a reasonable fallback.

Change-Id: Ia034c7389de741539dcf8899e8e607fb8d09827e
Reviewed-on: https://go-review.googlesource.com/c/build/+/207460
Reviewed-by: David du Colombier <0intro@gmail.com>
Reviewed-by: Bryan C. Mills <bcmills@google.com>
diff --git a/cmd/buildlet/stage0/stage0.go b/cmd/buildlet/stage0/stage0.go
index 23d4b63..333cf52 100644
--- a/cmd/buildlet/stage0/stage0.go
+++ b/cmd/buildlet/stage0/stage0.go
@@ -298,53 +298,25 @@
 }
 
 func buildletURL() string {
+	if v := os.Getenv("META_BUILDLET_BINARY_URL"); v != "" {
+		return v
+	}
+
 	switch os.Getenv("GO_BUILDER_ENV") {
 	case "linux-arm-arm5spacemonkey":
 		return "https://storage.googleapis.com/go-builder-data/buildlet.linux-arm-arm5"
 	}
-	switch osArch {
-	case "linux/amd64":
-		// For the s390x cross-compile builder:
-		if os.Getenv("GOARCH") == "s390x" {
-			return "https://storage.googleapis.com/go-builder-data/buildlet.linux-amd64"
-		}
-	case "linux/s390x":
-		return "https://storage.googleapis.com/go-builder-data/buildlet.linux-s390x"
-	case "linux/arm64":
-		return "https://storage.googleapis.com/go-builder-data/buildlet.linux-arm64"
-	case "linux/ppc64":
-		return "https://storage.googleapis.com/go-builder-data/buildlet.linux-ppc64"
-	case "linux/ppc64le":
-		return "https://storage.googleapis.com/go-builder-data/buildlet.linux-ppc64le"
-	case "linux/mipsle":
-		return "https://storage.googleapis.com/go-builder-data/buildlet.linux-mipsle"
-	case "linux/mips64le":
-		return "https://storage.googleapis.com/go-builder-data/buildlet.linux-mips64le"
-	case "linux/mips":
-		return "https://storage.googleapis.com/go-builder-data/buildlet.linux-mips"
-	case "linux/mips64":
-		return "https://storage.googleapis.com/go-builder-data/buildlet.linux-mips64"
-	case "solaris/amd64":
-		return "https://storage.googleapis.com/go-builder-data/buildlet.solaris-amd64"
-	case "illumos/amd64":
-		return "https://storage.googleapis.com/go-builder-data/buildlet.illumos-amd64"
-	case "darwin/amd64":
-		return "https://storage.googleapis.com/go-builder-data/buildlet.darwin-amd64"
-	}
-	// The buildlet download URL is located in an env var
-	// when the buildlet is not running on GCE, or is running
-	// on Kubernetes.
-	if !metadata.OnGCE() || os.Getenv("KUBERNETES_SERVICE_HOST") != "" {
-		if v := os.Getenv("META_BUILDLET_BINARY_URL"); v != "" {
+
+	if metadata.OnGCE() {
+		v, err := metadata.InstanceAttributeValue(attr)
+		if err == nil {
 			return v
 		}
-		sleepFatalf("Not on GCE, and no META_BUILDLET_BINARY_URL specified.")
+		sleepFatalf("on GCE, but no META_BUILDLET_BINARY_URL env or instance attribute %q: %v", attr, err)
 	}
-	v, err := metadata.InstanceAttributeValue(attr)
-	if err != nil {
-		sleepFatalf("Failed to look up %q attribute value: %v", attr, err)
-	}
-	return v
+
+	// Fallback:
+	return fmt.Sprintf("https://storage.googleapis.com/go-builder-data/buildlet.%s-%s", runtime.GOOS, runtime.GOARCH)
 }
 
 func sleepFatalf(format string, args ...interface{}) {