cmd/coordinator: pull out kubeCluster variable, update to new Cloud Storage API

Change-Id: If0ebe24c1359c4a4c4f3fdb0f214994605e2e887
Reviewed-on: https://go-review.googlesource.com/17313
Reviewed-by: Evan Brown <evanbrown@google.com>
diff --git a/cmd/coordinator/coordinator.go b/cmd/coordinator/coordinator.go
index 97a290f..6ed78cc 100644
--- a/cmd/coordinator/coordinator.go
+++ b/cmd/coordinator/coordinator.go
@@ -161,7 +161,7 @@
 		return []byte(b), nil
 	}
 
-	r, err := storage.NewReader(serviceCtx, stagingPrefix()+"go-builder-data", name)
+	r, err := storageClient.Bucket(stagingPrefix() + "go-builder-data").Object(name).NewReader(serviceCtx)
 	if err != nil {
 		return nil, err
 	}
@@ -978,7 +978,7 @@
 		s1 := sha1.New()
 		io.WriteString(s1, buildLog)
 		objName := fmt.Sprintf("%s/%s_%x.log", bs.rev[:8], bs.name, s1.Sum(nil)[:4])
-		wr := storage.NewWriter(serviceCtx, buildLogBucket(), objName)
+		wr := storageClient.Bucket(buildLogBucket()).Object(objName).NewWriter(serviceCtx)
 		wr.ContentType = "text/plain; charset=utf-8"
 		wr.ACL = append(wr.ACL, storage.ACLRule{Entity: storage.AllUsers, Role: storage.RoleReader})
 		if _, err := io.WriteString(wr, buildLog); err != nil {
@@ -1591,7 +1591,7 @@
 	}
 	defer tgz.Close()
 
-	wr := storage.NewWriter(serviceCtx, snapBucket(), st.snapshotObjectName())
+	wr := storageClient.Bucket(snapBucket()).Object(st.snapshotObjectName()).NewWriter(serviceCtx)
 	wr.ContentType = "application/octet-stream"
 	wr.ACL = append(wr.ACL, storage.ACLRule{Entity: storage.AllUsers, Role: storage.RoleReader})
 	if _, err := io.Copy(wr, tgz); err != nil {
diff --git a/cmd/coordinator/gce.go b/cmd/coordinator/gce.go
index a1484bd..241ef88 100644
--- a/cmd/coordinator/gce.go
+++ b/cmd/coordinator/gce.go
@@ -63,6 +63,7 @@
 	serviceCtx     context.Context
 	errTryDeps     error // non-nil if try bots are disabled
 	gerritClient   *gerrit.Client
+	storageClient  *storage.Client
 	inStaging      bool // are we running in the staging project? (named -dev)
 
 	initGCECalled bool
@@ -112,6 +113,10 @@
 	tokenSource, _ = google.DefaultTokenSource(oauth2.NoContext)
 	httpClient := oauth2.NewClient(oauth2.NoContext, tokenSource)
 	serviceCtx = cloud.NewContext(projectID, httpClient)
+	storageClient, err = storage.NewClient(serviceCtx, cloud.WithBaseHTTP(httpClient))
+	if err != nil {
+		log.Fatalf("storage.NewClient: %v", err)
+	}
 
 	externalIP, err = metadata.ExternalIP()
 	if err != nil {
@@ -133,7 +138,7 @@
 	if !hasStorageScope() {
 		return errors.New("coordinator's GCE instance lacks the storage service scope")
 	}
-	wr := storage.NewWriter(serviceCtx, buildLogBucket(), "hello.txt")
+	wr := storageClient.Bucket(buildLogBucket()).Object("hello.txt").NewWriter(serviceCtx)
 	fmt.Fprintf(wr, "Hello, world! Coordinator start-up at %v", time.Now())
 	if err := wr.Close(); err != nil {
 		return fmt.Errorf("test write of a GCS object to bucket %q failed: %v", buildLogBucket(), err)
diff --git a/cmd/coordinator/kube.go b/cmd/coordinator/kube.go
index 2f082d8..87bcdc5 100644
--- a/cmd/coordinator/kube.go
+++ b/cmd/coordinator/kube.go
@@ -39,6 +39,7 @@
 	kubeErr          error
 	initKubeCalled   bool
 	registryPrefix   = "gcr.io"
+	kubeCluster      *container.Cluster
 )
 
 const (
@@ -61,7 +62,7 @@
 		return fmt.Errorf("could not create client for Google Container Engine: %v", err)
 	}
 
-	cluster, err := containerService.Projects.Zones.Clusters.Get(projectID, projectZone, clusterName).Do()
+	kubeCluster, err = containerService.Projects.Zones.Clusters.Get(projectID, projectZone, clusterName).Do()
 	if err != nil {
 		return fmt.Errorf("cluster %q could not be found in project %q, zone %q: %v", clusterName, projectID, projectZone, err)
 	}
@@ -77,9 +78,9 @@
 		}
 		return []byte(s)
 	}
-	clientCert := decode("client cert", cluster.MasterAuth.ClientCertificate)
-	clientKey := decode("client key", cluster.MasterAuth.ClientKey)
-	caCert := decode("cluster cert", cluster.MasterAuth.ClusterCaCertificate)
+	clientCert := decode("client cert", kubeCluster.MasterAuth.ClientCertificate)
+	clientKey := decode("client key", kubeCluster.MasterAuth.ClientKey)
+	caCert := decode("cluster cert", kubeCluster.MasterAuth.ClusterCaCertificate)
 	if err != nil {
 		return err
 	}
@@ -107,7 +108,7 @@
 		},
 	}
 
-	kubeClient, err = kubernetes.NewClient("https://"+cluster.Endpoint, kubeHTTPClient)
+	kubeClient, err = kubernetes.NewClient("https://"+kubeCluster.Endpoint, kubeHTTPClient)
 	if err != nil {
 		return fmt.Errorf("kubernetes HTTP client could not be created: %v", err)
 	}