| Index: deploytool/cmd/luci_deploy/deploy_appengine.go
|
| diff --git a/deploytool/cmd/luci_deploy/deploy_appengine.go b/deploytool/cmd/luci_deploy/deploy_appengine.go
|
| index 1367476502a06382a7a2e9844d5eba4630beb751..de0c9161e5fca39dabc10ed8f1e15b9d876686a4 100644
|
| --- a/deploytool/cmd/luci_deploy/deploy_appengine.go
|
| +++ b/deploytool/cmd/luci_deploy/deploy_appengine.go
|
| @@ -83,7 +83,7 @@ func (d *gaeDeployment) stage(w *work, root *managedfs.Dir, params *deployParams
|
| // Generate a directory for our deployment's modules.
|
| moduleBaseDir, err := root.EnsureDirectory("modules")
|
| if err != nil {
|
| - return errors.Annotate(err).Reason("failed to create modules directory").Err()
|
| + return errors.Annotate(err, "failed to create modules directory").Err()
|
| }
|
|
|
| // Stage each module in parallel. Also, generate AppEngine-wide YAMLs.
|
| @@ -99,19 +99,17 @@ func (d *gaeDeployment) stage(w *work, root *managedfs.Dir, params *deployParams
|
| workC <- func() error {
|
| moduleDir, err := moduleBaseDir.EnsureDirectory(string(module.comp.comp.title))
|
| if err != nil {
|
| - return errors.Annotate(err).Reason("failed to create module directory for %(module)q").
|
| - D("module", module.comp.comp.title).Err()
|
| + return errors.Annotate(err, "failed to create module directory for %q", module.comp.comp.title).Err()
|
| }
|
| if err := module.stage(w, moduleDir, params); err != nil {
|
| - return errors.Annotate(err).Reason("failed to stage module %(name)q").
|
| - D("name", module.comp.comp.title).Err()
|
| + return errors.Annotate(err, "failed to stage module %q", module.comp.comp.title).Err()
|
| }
|
| return nil
|
| }
|
| }
|
| })
|
| if err != nil {
|
| - return errors.Annotate(err).Reason("failed to stage modules").Err()
|
| + return errors.Annotate(err, "failed to stage modules").Err()
|
| }
|
|
|
| // Build our verison/module map for commit.
|
| @@ -158,7 +156,7 @@ func (d *gaeDeployment) push(w *work) error {
|
| // GAE requirement for initial deployments.
|
| if module := d.modules[gaeDefaultModule]; module != nil {
|
| if err := module.pushFn(w); err != nil {
|
| - return errors.Annotate(err).Reason("failed to push default module").Err()
|
| + return errors.Annotate(err, "failed to push default module").Err()
|
| }
|
| }
|
|
|
| @@ -200,8 +198,7 @@ func (d *gaeDeployment) commit(w *work) error {
|
| mod := mod
|
| workC <- func() error {
|
| if err := gcloud.exec("app", "versions", "migrate", "--service", mod, v).check(w); err != nil {
|
| - return errors.Annotate(err).Reason("failed to set default version").
|
| - D("version", v).Err()
|
| + return errors.Annotate(err, "failed to set default version: %q", v).Err()
|
| }
|
| return nil
|
| }
|
| @@ -209,7 +206,7 @@ func (d *gaeDeployment) commit(w *work) error {
|
| }
|
| })
|
| if err != nil {
|
| - return errors.Annotate(err).Reason("failed to set default versions").Err()
|
| + return errors.Annotate(err, "failed to set default versions").Err()
|
| }
|
|
|
| // If any modules were installed as default, push our new related configs.
|
| @@ -223,10 +220,7 @@ func (d *gaeDeployment) commit(w *work) error {
|
|
|
| deployablePath := d.yamlDir.File(deployable).String()
|
| if err := gcloud.exec("app", "deploy", deployablePath).check(w); err != nil {
|
| - return errors.Annotate(err).Reason("failed to deploy YAML %(deployable)q from [%(path)s]").
|
| - D("deployable", deployable).
|
| - D("path", deployablePath).
|
| - Err()
|
| + return errors.Annotate(err, "failed to deploy YAML %q from [%s]", deployable, deployablePath).Err()
|
| }
|
| }
|
| }
|
| @@ -243,16 +237,16 @@ func (d *gaeDeployment) generateYAMLs(w *work, root *managedfs.Dir) error {
|
| yamls["index.yaml"] = gaeBuildIndexYAML(d.project)
|
| yamls["cron.yaml"] = gaeBuildCronYAML(d.project)
|
| if yamls["dispatch.yaml"], err = gaeBuildDispatchYAML(d.project); err != nil {
|
| - return errors.Annotate(err).Reason("failed to generate dispatch.yaml").Err()
|
| + return errors.Annotate(err, "failed to generate dispatch.yaml").Err()
|
| }
|
| if yamls["queue.yaml"], err = gaeBuildQueueYAML(d.project); err != nil {
|
| - return errors.Annotate(err).Reason("failed to generate index.yaml").Err()
|
| + return errors.Annotate(err, "failed to generate index.yaml").Err()
|
| }
|
|
|
| for k, v := range yamls {
|
| f := root.File(k)
|
| if err := f.GenerateYAML(w, v); err != nil {
|
| - return errors.Annotate(err).Reason("failed to generate %(yaml)q").D("yaml", k).Err()
|
| + return errors.Annotate(err, "failed to generate %q", k).Err()
|
| }
|
| }
|
|
|
| @@ -302,7 +296,7 @@ func (m *stagedGAEModule) stage(w *work, root *managedfs.Dir, params *deployPara
|
| var err error
|
| m.version, err = makeCloudProjectVersion(m.comp.dep.cloudProject, m.comp.source())
|
| if err != nil {
|
| - return errors.Annotate(err).Reason("failed to calculate cloud project version").Err()
|
| + return errors.Annotate(err, "failed to calculate cloud project version").Err()
|
| }
|
| }
|
|
|
| @@ -323,7 +317,7 @@ func (m *stagedGAEModule) stage(w *work, root *managedfs.Dir, params *deployPara
|
| // interfere with app files.
|
| deployDir, err := root.EnsureDirectory("__deploy")
|
| if err != nil {
|
| - return errors.Annotate(err).Reason("failed to create deploy directory").Err()
|
| + return errors.Annotate(err, "failed to create deploy directory").Err()
|
| }
|
|
|
| // Build each Component. We will delete any existing contents and leave it
|
| @@ -331,16 +325,16 @@ func (m *stagedGAEModule) stage(w *work, root *managedfs.Dir, params *deployPara
|
| // there.
|
| buildDir, err := deployDir.EnsureDirectory("build")
|
| if err != nil {
|
| - return errors.Annotate(err).Reason("failed to create build directory").Err()
|
| + return errors.Annotate(err, "failed to create build directory").Err()
|
| }
|
| if err := buildDir.CleanUp(); err != nil {
|
| - return errors.Annotate(err).Reason("failed to cleanup build directory").Err()
|
| + return errors.Annotate(err, "failed to cleanup build directory").Err()
|
| }
|
| buildDir.Ignore()
|
|
|
| // Build our Component into this directory.
|
| if err := buildComponent(w, m.comp, buildDir); err != nil {
|
| - return errors.Annotate(err).Reason("failed to build component").Err()
|
| + return errors.Annotate(err, "failed to build component").Err()
|
| }
|
|
|
| switch t := m.GetRuntime().(type) {
|
| @@ -350,24 +344,23 @@ func (m *stagedGAEModule) stage(w *work, root *managedfs.Dir, params *deployPara
|
| // Construct a GOPATH for this module.
|
| goPath, err := root.EnsureDirectory("gopath")
|
| if err != nil {
|
| - return errors.Annotate(err).Reason("failed to create GOPATH base").Err()
|
| + return errors.Annotate(err, "failed to create GOPATH base").Err()
|
| }
|
| if err := stageGoPath(w, m.comp, goPath); err != nil {
|
| - return errors.Annotate(err).Reason("failed to stage GOPATH").Err()
|
| + return errors.Annotate(err, "failed to stage GOPATH").Err()
|
| }
|
|
|
| // Generate a stub Go package, which we will populate with an entry point.
|
| goSrcDir, err := root.EnsureDirectory("src")
|
| if err != nil {
|
| - return errors.Annotate(err).Reason("failed to create stub source directory").Err()
|
| + return errors.Annotate(err, "failed to create stub source directory").Err()
|
| }
|
|
|
| mainPkg := fmt.Sprintf("%s/main", m.comp.comp.title)
|
| mainPkgParts := strings.Split(mainPkg, "/")
|
| mainPkgDir, err := goSrcDir.EnsureDirectory(mainPkgParts[0], mainPkgParts[1:]...)
|
| if err != nil {
|
| - return errors.Annotate(err).Reason("failed to create directory for main package %(pkg)q").
|
| - D("pkg", mainPkg).Err()
|
| + return errors.Annotate(err, "failed to create directory for main package %q", mainPkg).Err()
|
| }
|
| m.goPath = []string{root.String(), goPath.String()}
|
|
|
| @@ -380,11 +373,11 @@ func (m *stagedGAEModule) stage(w *work, root *managedfs.Dir, params *deployPara
|
| // space is outside of the main package space.
|
| pkgPath := findGoPackage(t.GoModule.EntryPackage, m.goPath)
|
| if pkgPath == "" {
|
| - return errors.Reason("unable to find path for %(package)q").D("package", t.GoModule.EntryPackage).Err()
|
| + return errors.Reason("unable to find path for %q", t.GoModule.EntryPackage).Err()
|
| }
|
|
|
| if err := mainPkgDir.ShallowSymlinkFrom(pkgPath, true); err != nil {
|
| - return errors.Annotate(err).Reason("failed to create shallow symlink of main module").Err()
|
| + return errors.Annotate(err, "failed to create shallow symlink of main module").Err()
|
| }
|
|
|
| m.localBuildFn = func(w *work) error {
|
| @@ -397,7 +390,7 @@ func (m *stagedGAEModule) stage(w *work, root *managedfs.Dir, params *deployPara
|
| // Generate a classic GAE stub. Since GAE works through "init()", all this
|
| // stub has to do is import the actual entry point package.
|
| if err := m.writeGoClassicGAEStub(w, mainPkgDir, gom.EntryPackage); err != nil {
|
| - return errors.Annotate(err).Reason("failed to generate GAE classic entry stub").Err()
|
| + return errors.Annotate(err, "failed to generate GAE classic entry stub").Err()
|
| }
|
|
|
| m.localBuildFn = func(w *work) error {
|
| @@ -423,7 +416,7 @@ func (m *stagedGAEModule) stage(w *work, root *managedfs.Dir, params *deployPara
|
| // under our deployment directory.
|
| staticDir, err := deployDir.EnsureDirectory("static")
|
| if err != nil {
|
| - return errors.Annotate(err).Reason("failed to create static directory").Err()
|
| + return errors.Annotate(err, "failed to create static directory").Err()
|
| }
|
|
|
| staticMap := make(map[string]string)
|
| @@ -449,7 +442,7 @@ func (m *stagedGAEModule) stage(w *work, root *managedfs.Dir, params *deployPara
|
| // Get the actual path for this BuildPath entry.
|
| dirPath, err := m.comp.buildPath(bp)
|
| if err != nil {
|
| - return errors.Annotate(err).Reason("cannot resolve static directory").Err()
|
| + return errors.Annotate(err, "cannot resolve static directory").Err()
|
| }
|
|
|
| // Do we already have a static map entry for this filesystem source path?
|
| @@ -457,11 +450,10 @@ func (m *stagedGAEModule) stage(w *work, root *managedfs.Dir, params *deployPara
|
| if !ok {
|
| sd := staticDir.File(strconv.Itoa(len(staticMap)))
|
| if err := sd.SymlinkFrom(dirPath, true); err != nil {
|
| - return errors.Annotate(err).Reason("failed to symlink static content for [%(path)s]").
|
| - D("path", dirPath).Err()
|
| + return errors.Annotate(err, "failed to symlink static content for [%s]", dirPath).Err()
|
| }
|
| if staticName, err = root.RelPathFrom(sd.String()); err != nil {
|
| - return errors.Annotate(err).Reason("failed to get relative path").Err()
|
| + return errors.Annotate(err, "failed to get relative path").Err()
|
| }
|
| staticMap[dirPath] = staticName
|
| }
|
| @@ -472,7 +464,7 @@ func (m *stagedGAEModule) stage(w *work, root *managedfs.Dir, params *deployPara
|
| // "app.yaml" / "module.yaml"
|
| appYAML, err := gaeBuildAppYAML(m.AppEngineModule, staticBuildPathMap)
|
| if err != nil {
|
| - return errors.Annotate(err).Reason("failed to generate module YAML").Err()
|
| + return errors.Annotate(err, "failed to generate module YAML").Err()
|
| }
|
|
|
| appYAMLName := "module.yaml"
|
| @@ -482,15 +474,14 @@ func (m *stagedGAEModule) stage(w *work, root *managedfs.Dir, params *deployPara
|
| }
|
| f := base.File(appYAMLName)
|
| if err := f.GenerateYAML(w, appYAML); err != nil {
|
| - return errors.Annotate(err).Reason("failed to generate %(filename)q file").
|
| - D("filename", appYAMLName).Err()
|
| + return errors.Annotate(err, "failed to generate %q file", appYAMLName).Err()
|
| }
|
| s := f.String()
|
| appYAMLPath = &s
|
|
|
| // Cleanup our staging filesystem.
|
| if err := root.CleanUp(); err != nil {
|
| - return errors.Annotate(err).Reason("failed to cleanup component directory").Err()
|
| + return errors.Annotate(err, "failed to cleanup component directory").Err()
|
| }
|
| return nil
|
| }
|
| @@ -525,7 +516,7 @@ func (m *stagedGAEModule) pushClassic(w *work, appYAMLPath string) error {
|
| cwd(appPath)
|
| x = addGoEnv(m.goPath, x)
|
| if err := x.check(w); err != nil {
|
| - return errors.Annotate(err).Reason("failed to deploy classic GAE module").Err()
|
| + return errors.Annotate(err, "failed to deploy classic GAE module").Err()
|
| }
|
| return nil
|
| }
|
| @@ -534,10 +525,10 @@ func (m *stagedGAEModule) pushClassic(w *work, appYAMLPath string) error {
|
| func (m *stagedGAEModule) localBuildGo(w *work, mainPkg string) error {
|
| gt, err := w.goTool(m.goPath)
|
| if err != nil {
|
| - return errors.Annotate(err).Reason("failed to get Go tool").Err()
|
| + return errors.Annotate(err, "failed to get Go tool").Err()
|
| }
|
| if err := gt.build(w, "", mainPkg); err != nil {
|
| - return errors.Annotate(err).Reason("failed to local build %(pkg)q").D("pkg", mainPkg).Err()
|
| + return errors.Annotate(err, "failed to local build %q", mainPkg).Err()
|
| }
|
| return nil
|
| }
|
| @@ -549,7 +540,7 @@ func (m *stagedGAEModule) pushGoMVM(w *work, appYAMLPath string) error {
|
| // Deploy Managed VM.
|
| aedeploy, err := w.tools.aedeploy(m.goPath)
|
| if err != nil {
|
| - return errors.Annotate(err).Err()
|
| + return errors.Annotate(err, "").Err()
|
| }
|
|
|
| gcloud, err := w.tools.gcloud(m.gaeDep.project.Name)
|
| @@ -578,7 +569,7 @@ func (m *stagedGAEModule) pushGoMVM(w *work, appYAMLPath string) error {
|
|
|
| x := aedeploy.bootstrap(gcloud.exec(gcloudArgs[0], gcloudArgs[1:]...)).outputAt(logLevel).cwd(appDir)
|
| if err := x.check(w); err != nil {
|
| - return errors.Annotate(err).Reason("failed to deploy managed VM").Err()
|
| + return errors.Annotate(err, "failed to deploy managed VM").Err()
|
| }
|
| return nil
|
| }
|
|
|