From 734bff4afb4095f95b3ca4de42e1bb3e3afaef27 Mon Sep 17 00:00:00 2001 From: ArthurSens Date: Thu, 2 Jun 2022 12:57:55 +0000 Subject: [PATCH] previewctl: Improve logging around install-context watch Switched log library to Logrus Signed-off-by: ArthurSens --- dev/preview/previewctl/cmd/get_name.go | 5 ++-- dev/preview/previewctl/cmd/install_context.go | 9 ++++---- dev/preview/previewctl/cmd/root.go | 7 +++--- dev/preview/previewctl/go.mod | 3 +++ dev/preview/previewctl/go.sum | 10 ++++++++ dev/preview/previewctl/main.go | 14 +++++++---- dev/preview/previewctl/pkg/preview/preview.go | 23 +++++++++++++------ 7 files changed, 50 insertions(+), 21 deletions(-) diff --git a/dev/preview/previewctl/cmd/get_name.go b/dev/preview/previewctl/cmd/get_name.go index 3ec9cce925b272..f00bf621950d30 100644 --- a/dev/preview/previewctl/cmd/get_name.go +++ b/dev/preview/previewctl/cmd/get_name.go @@ -8,16 +8,17 @@ import ( "fmt" "github.com/gitpod-io/gitpod/previewctl/pkg/preview" + "github.com/sirupsen/logrus" "github.com/spf13/cobra" ) -func getNameCmd() *cobra.Command { +func getNameCmd(logger *logrus.Logger) *cobra.Command { cmd := &cobra.Command{ Use: "get-name", Short: "Returns the name of the preview for the corresponding branch.", Run: func(cmd *cobra.Command, args []string) { - p := preview.New(branch) + p := preview.New(branch, logger) fmt.Println(p.GetPreviewName()) }, diff --git a/dev/preview/previewctl/cmd/install_context.go b/dev/preview/previewctl/cmd/install_context.go index 82727ed374bcd9..f7517974915169 100644 --- a/dev/preview/previewctl/cmd/install_context.go +++ b/dev/preview/previewctl/cmd/install_context.go @@ -5,9 +5,8 @@ package cmd import ( - "log" - "github.com/gitpod-io/gitpod/previewctl/pkg/preview" + "github.com/sirupsen/logrus" "github.com/spf13/cobra" ) @@ -15,17 +14,17 @@ var ( watch = false ) -func installContextCmd() *cobra.Command { +func installContextCmd(logger *logrus.Logger) *cobra.Command { cmd := &cobra.Command{ Use: "install-context", Short: "Installs the kubectl context of a preview environment.", Run: func(cmd *cobra.Command, args []string) { - p := preview.New(branch) + p := preview.New(branch, logger) err := p.InstallContext(watch) if err != nil { - log.Fatalf("Couldn't install context for the '%s' preview", p.Branch) + logger.WithFields(logrus.Fields{"err": err}).Fatal("Failed to install context.") } }, } diff --git a/dev/preview/previewctl/cmd/root.go b/dev/preview/previewctl/cmd/root.go index 9ab45ae560edf2..264a3ed067cd60 100644 --- a/dev/preview/previewctl/cmd/root.go +++ b/dev/preview/previewctl/cmd/root.go @@ -5,6 +5,7 @@ package cmd import ( + "github.com/sirupsen/logrus" "github.com/spf13/cobra" ) @@ -12,7 +13,7 @@ var ( branch = "" ) -func RootCmd() *cobra.Command { +func RootCmd(logger *logrus.Logger) *cobra.Command { cmd := &cobra.Command{ Use: "previewctl", Short: "Your best friend when interacting with Preview Environments :)", @@ -22,8 +23,8 @@ func RootCmd() *cobra.Command { cmd.PersistentFlags().StringVar(&branch, "branch", "", "From which branch's preview previewctl should interact with. By default it will use the result of \"git rev-parse --abbrev-ref HEAD\"") cmd.AddCommand( - installContextCmd(), - getNameCmd(), + installContextCmd(logger), + getNameCmd(logger), ) return cmd } diff --git a/dev/preview/previewctl/go.mod b/dev/preview/previewctl/go.mod index 40a7e2051525ce..4a605457a006d0 100644 --- a/dev/preview/previewctl/go.mod +++ b/dev/preview/previewctl/go.mod @@ -4,7 +4,10 @@ go 1.18 require github.com/spf13/cobra v1.4.0 +require golang.org/x/sys v0.0.0-20191026070338-33540a1f6037 // indirect + require ( github.com/inconshreveable/mousetrap v1.0.0 // indirect + github.com/sirupsen/logrus v1.8.1 github.com/spf13/pflag v1.0.5 // indirect ) diff --git a/dev/preview/previewctl/go.sum b/dev/preview/previewctl/go.sum index 0dd8697bc53c6a..c7d5d8f529407d 100644 --- a/dev/preview/previewctl/go.sum +++ b/dev/preview/previewctl/go.sum @@ -1,10 +1,20 @@ github.com/cpuguy83/go-md2man/v2 v2.0.1/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE= +github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/spf13/cobra v1.4.0 h1:y+wJpx64xcgO1V+RcnwW0LEHxTKRi2ZDPSBjWnrg88Q= github.com/spf13/cobra v1.4.0/go.mod h1:Wo4iy3BUC+X2Fybo0PDqwJIv3dNRiZLHQymsfxlB84g= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/stretchr/testify v1.2.2 h1:bSDNvY7ZPG5RlJ8otE/7V6gMiyenm9RtJ7IUVIAoJ1w= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037 h1:YyJpGZS1sBuBCzLAR1VEpK193GlqGZbnPFnPV/5Rsb4= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= diff --git a/dev/preview/previewctl/main.go b/dev/preview/previewctl/main.go index 45775da62d07f2..d6f43e06f94b74 100644 --- a/dev/preview/previewctl/main.go +++ b/dev/preview/previewctl/main.go @@ -5,14 +5,20 @@ package main import ( - "log" - "github.com/gitpod-io/gitpod/previewctl/cmd" + "github.com/sirupsen/logrus" ) func main() { - root := cmd.RootCmd() + logger := logrus.New() + logger.SetFormatter(&logrus.TextFormatter{ + DisableColors: true, + FullTimestamp: true, + TimestampFormat: "2006-01-02 15:04:05", + }) + + root := cmd.RootCmd(logger) if err := root.Execute(); err != nil { - log.Fatal(err) + logger.WithFields(logrus.Fields{"err": err}).Fatal("command failed.") } } diff --git a/dev/preview/previewctl/pkg/preview/preview.go b/dev/preview/previewctl/pkg/preview/preview.go index ec742044107075..85b49e5e1006d4 100644 --- a/dev/preview/previewctl/pkg/preview/preview.go +++ b/dev/preview/previewctl/pkg/preview/preview.go @@ -7,33 +7,39 @@ package preview import ( "crypto/sha256" "encoding/hex" - "log" "os/exec" "regexp" "strings" "time" + + "github.com/sirupsen/logrus" ) type Preview struct { Branch string + + logger *logrus.Entry } -func New(branch string) *Preview { +func New(branch string, logger *logrus.Logger) *Preview { if branch == "" { out, err := exec.Command("git", "rev-parse", "--abbrev-ref", "HEAD").Output() if err != nil { - log.Fatalf("Could not retrieve branch name, err: %v", err) + logger.WithFields(logrus.Fields{"err": err}).Fatal("Could not retrieve branch name.") } branch = string(out) } else { _, err := exec.Command("git", "rev-parse", "--verify", branch).Output() if err != nil { - log.Fatalf("Branch '%s' does not exist", branch) + logger.WithFields(logrus.Fields{"branch": branch, "err": err}).Fatal("Branch does not exist.") } } + logEntry := logger.WithFields(logrus.Fields{"branch": branch}) + return &Preview{ Branch: branch, + logger: logEntry, } } @@ -48,10 +54,13 @@ func (p *Preview) InstallContext(watch bool) error { for { select { case <-installTicker.C: - if err := installContext(p.Branch); err == nil { - // No error means successful context installation - return nil + err := installContext(p.Branch) + if err != nil { + p.logger.WithFields(logrus.Fields{"err": err}).Info("Failed to install context. Trying again in 30 seconds.") + continue } + p.logger.Info("Context installed.") + return nil } } }