// readFile reads the named file in Google Cloud Storage. func (d *demo) readFile(fileName string) { io.WriteString(d.w, "\nAbbreviated file content (first line and last 1K):\n") rc, err := storage.NewReader(d.ctx, bucket, fileName) if err != nil { d.errorf("readFile: unable to open file from bucket %q, file %q: %v", bucket, fileName, err) return } defer rc.Close() slurp, err := ioutil.ReadAll(rc) if err != nil { d.errorf("readFile: unable to read data from bucket %q, file %q: %v", bucket, fileName, err) return } fmt.Fprintf(d.w, "%s\n", bytes.SplitN(slurp, []byte("\n"), 2)[0]) if len(slurp) > 1024 { fmt.Fprintf(d.w, "...%s\n", slurp[len(slurp)-1024:]) } else { fmt.Fprintf(d.w, "%s\n", slurp) } }
// getInstalledTLS returns the TLS certificate and key stored on Google Cloud Storage for the // instance defined in d.Conf. func (d *Deployer) getInstalledTLS() (certPEM, keyPEM []byte, err error) { ctx := cloud.NewContext(d.Conf.Project, d.Client) getFile := func(name string) ([]byte, error) { sr, err := cloudstorage.NewReader(ctx, d.Conf.bucketBase(), path.Join(configDir, name)) if err != nil { return nil, err } defer sr.Close() return ioutil.ReadAll(sr) } var grp syncutil.Group grp.Go(func() (err error) { certPEM, err = getFile(certFilename) return }) grp.Go(func() (err error) { keyPEM, err = getFile(keyFilename) return }) err = grp.Err() return }