From eb8f7e65b9c21d4e2226b0d54bb923627550b9ed Mon Sep 17 00:00:00 2001 From: Steven Powell Date: Mon, 15 Mar 2021 15:43:11 -0700 Subject: [PATCH 1/3] Show last start and audit logs on `minikube logs` if minikube not running --- cmd/minikube/cmd/logs.go | 16 ++++++++++++++++ go.sum | 2 -- pkg/minikube/logs/logs.go | 10 ++++++++++ 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/cmd/minikube/cmd/logs.go b/cmd/minikube/cmd/logs.go index 4c19501b1f..1e92f19dfa 100644 --- a/cmd/minikube/cmd/logs.go +++ b/cmd/minikube/cmd/logs.go @@ -23,6 +23,7 @@ import ( "github.com/spf13/viper" cmdcfg "k8s.io/minikube/cmd/minikube/cmd/config" "k8s.io/minikube/pkg/minikube/cluster" + "k8s.io/minikube/pkg/minikube/config" "k8s.io/minikube/pkg/minikube/cruntime" "k8s.io/minikube/pkg/minikube/exit" "k8s.io/minikube/pkg/minikube/logs" @@ -52,6 +53,11 @@ var logsCmd = &cobra.Command{ Short: "Returns logs to debug a local Kubernetes cluster", Long: `Gets the logs of the running instance, used for debugging minikube, not user code.`, Run: func(cmd *cobra.Command, args []string) { + if !isClusterRunning() { + logs.OutputMinikubeLogs(numberOfLines) + return + } + co := mustload.Running(ClusterFlagValue()) bs, err := cluster.Bootstrapper(co.API, viper.GetString(cmdcfg.Bootstrapper), *co.Config, co.CP.Runner) @@ -85,6 +91,16 @@ var logsCmd = &cobra.Command{ }, } +func isClusterRunning() bool { + if _, err := config.Load(ClusterFlagValue()); err != nil { + if config.IsNotExist(err) { + return false + } + exit.Error(reason.HostConfigLoad, "Error getting cluster config", err) + } + return true +} + func init() { logsCmd.Flags().BoolVarP(&followLogs, "follow", "f", false, "Show only the most recent journal entries, and continuously print new entries as they are appended to the journal.") logsCmd.Flags().BoolVar(&showProblems, "problems", false, "Show only log entries which point to known problems") diff --git a/go.sum b/go.sum index 96485415f9..a386a8ae99 100644 --- a/go.sum +++ b/go.sum @@ -733,7 +733,6 @@ github.com/opencontainers/runtime-spec v1.0.0/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/ github.com/opencontainers/selinux v1.3.1-0.20190929122143-5215b1806f52/go.mod h1:+BLncwf63G4dgOzykXAxcmnFlUaOlkDdmw/CqsW6pjs= github.com/otiai10/copy v1.0.2 h1:DDNipYy6RkIkjMwy+AWzgKiNTyj2RUI9yEMeETEpVyc= github.com/otiai10/copy v1.0.2/go.mod h1:c7RpqBkwMom4bYTSkLSym4VSJz/XtncWRAj/J4PEIMY= -github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95 h1:+OLn68pqasWca0z5ryit9KGfp3sUsW4Lqg32iRMJyzs= github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE= github.com/otiai10/mint v1.3.0 h1:Ady6MKVezQwHBkGzLFbrsywyp09Ah7rkmfjV3Bcr5uc= github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo= @@ -1009,7 +1008,6 @@ golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzB golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.1 h1:Kvvh58BN8Y9/lBi7hTekvtMpm07eUZ0ck5pRHpsMWrY= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2 h1:Gz96sIWK3OalVv/I/qNygP42zyoKp3xptRVCWRFEBvo= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= diff --git a/pkg/minikube/logs/logs.go b/pkg/minikube/logs/logs.go index 957a2fcdfa..b4833d5df2 100644 --- a/pkg/minikube/logs/logs.go +++ b/pkg/minikube/logs/logs.go @@ -243,6 +243,16 @@ func outputLastStart() error { return nil } +// OutputMinikubeLogs outputs the audit and last start logs only +func OutputMinikubeLogs(lines int) { + if err := outputAudit(lines); err != nil { + klog.Errorf("failed to output audit logs: %v", err) + } + if err := outputLastStart(); err != nil { + klog.Errorf("failed to output last start logs: %v", err) + } +} + // logCommands returns a list of commands that would be run to receive the anticipated logs func logCommands(r cruntime.Manager, bs bootstrapper.Bootstrapper, cfg config.ClusterConfig, length int, follow bool) map[string]string { cmds := bs.LogCommands(cfg, bootstrapper.LogOptions{Lines: length, Follow: follow}) From 3e38a1954ae7266514cb35cc1a483b6612926e0a Mon Sep 17 00:00:00 2001 From: Steven Powell Date: Mon, 15 Mar 2021 16:33:39 -0700 Subject: [PATCH 2/3] renamed OutputMinikubeLogs to OutputOffline --- cmd/minikube/cmd/logs.go | 2 +- pkg/minikube/logs/logs.go | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cmd/minikube/cmd/logs.go b/cmd/minikube/cmd/logs.go index 1e92f19dfa..386fa4ca77 100644 --- a/cmd/minikube/cmd/logs.go +++ b/cmd/minikube/cmd/logs.go @@ -54,7 +54,7 @@ var logsCmd = &cobra.Command{ Long: `Gets the logs of the running instance, used for debugging minikube, not user code.`, Run: func(cmd *cobra.Command, args []string) { if !isClusterRunning() { - logs.OutputMinikubeLogs(numberOfLines) + logs.OutputOffline(numberOfLines) return } diff --git a/pkg/minikube/logs/logs.go b/pkg/minikube/logs/logs.go index b4833d5df2..be452f1cec 100644 --- a/pkg/minikube/logs/logs.go +++ b/pkg/minikube/logs/logs.go @@ -243,8 +243,8 @@ func outputLastStart() error { return nil } -// OutputMinikubeLogs outputs the audit and last start logs only -func OutputMinikubeLogs(lines int) { +// OutputOffline outputs logs that don't need a running cluster. +func OutputOffline(lines int) { if err := outputAudit(lines); err != nil { klog.Errorf("failed to output audit logs: %v", err) } From a369264139750817a074ee560ec272cf59d0c273 Mon Sep 17 00:00:00 2001 From: Steven Powell Date: Mon, 15 Mar 2021 16:41:22 -0700 Subject: [PATCH 3/3] removed isClusterRunning check --- cmd/minikube/cmd/logs.go | 16 +--------------- pkg/minikube/logs/logs.go | 11 +---------- 2 files changed, 2 insertions(+), 25 deletions(-) diff --git a/cmd/minikube/cmd/logs.go b/cmd/minikube/cmd/logs.go index 386fa4ca77..9d102ad88e 100644 --- a/cmd/minikube/cmd/logs.go +++ b/cmd/minikube/cmd/logs.go @@ -23,7 +23,6 @@ import ( "github.com/spf13/viper" cmdcfg "k8s.io/minikube/cmd/minikube/cmd/config" "k8s.io/minikube/pkg/minikube/cluster" - "k8s.io/minikube/pkg/minikube/config" "k8s.io/minikube/pkg/minikube/cruntime" "k8s.io/minikube/pkg/minikube/exit" "k8s.io/minikube/pkg/minikube/logs" @@ -53,10 +52,7 @@ var logsCmd = &cobra.Command{ Short: "Returns logs to debug a local Kubernetes cluster", Long: `Gets the logs of the running instance, used for debugging minikube, not user code.`, Run: func(cmd *cobra.Command, args []string) { - if !isClusterRunning() { - logs.OutputOffline(numberOfLines) - return - } + logs.OutputOffline(numberOfLines) co := mustload.Running(ClusterFlagValue()) @@ -91,16 +87,6 @@ var logsCmd = &cobra.Command{ }, } -func isClusterRunning() bool { - if _, err := config.Load(ClusterFlagValue()); err != nil { - if config.IsNotExist(err) { - return false - } - exit.Error(reason.HostConfigLoad, "Error getting cluster config", err) - } - return true -} - func init() { logsCmd.Flags().BoolVarP(&followLogs, "follow", "f", false, "Show only the most recent journal entries, and continuously print new entries as they are appended to the journal.") logsCmd.Flags().BoolVar(&showProblems, "problems", false, "Show only log entries which point to known problems") diff --git a/pkg/minikube/logs/logs.go b/pkg/minikube/logs/logs.go index be452f1cec..70ecaa71cf 100644 --- a/pkg/minikube/logs/logs.go +++ b/pkg/minikube/logs/logs.go @@ -190,16 +190,6 @@ func Output(r cruntime.Manager, bs bootstrapper.Bootstrapper, cfg config.Cluster } } - if err := outputAudit(lines); err != nil { - klog.Errorf("failed to output audit logs: %v", err) - failed = append(failed, "audit") - } - - if err := outputLastStart(); err != nil { - klog.Errorf("failed to output last start logs: %v", err) - failed = append(failed, "last start") - } - if len(failed) > 0 { return fmt.Errorf("unable to fetch logs for: %s", strings.Join(failed, ", ")) } @@ -251,6 +241,7 @@ func OutputOffline(lines int) { if err := outputLastStart(); err != nil { klog.Errorf("failed to output last start logs: %v", err) } + out.Styled(style.Empty, "") } // logCommands returns a list of commands that would be run to receive the anticipated logs