diff --git a/client/cmd/debug.go b/client/cmd/debug.go index dbdce91ab..9abd2039d 100644 --- a/client/cmd/debug.go +++ b/client/cmd/debug.go @@ -138,17 +138,20 @@ func runForDuration(cmd *cobra.Command, args []string) error { return fmt.Errorf("failed to get status: %v", status.Convert(err).Message()) } - restoreUp := stat.Status == string(internal.StatusConnected) || stat.Status == string(internal.StatusConnecting) + stateWasDown := stat.Status != string(internal.StatusConnected) && stat.Status != string(internal.StatusConnecting) initialLogLevel, err := client.GetLogLevel(cmd.Context(), &proto.GetLogLevelRequest{}) if err != nil { return fmt.Errorf("failed to get log level: %v", status.Convert(err).Message()) } - if _, err := client.Down(cmd.Context(), &proto.DownRequest{}); err != nil { - return fmt.Errorf("failed to down: %v", status.Convert(err).Message()) + if stateWasDown { + if _, err := client.Up(cmd.Context(), &proto.UpRequest{}); err != nil { + return fmt.Errorf("failed to up: %v", status.Convert(err).Message()) + } + cmd.Println("Netbird up") + time.Sleep(time.Second * 10) } - cmd.Println("Netbird down") initialLevelTrace := initialLogLevel.GetLevel() >= proto.LogLevel_TRACE if !initialLevelTrace { @@ -161,6 +164,11 @@ func runForDuration(cmd *cobra.Command, args []string) error { cmd.Println("Log level set to trace.") } + if _, err := client.Down(cmd.Context(), &proto.DownRequest{}); err != nil { + return fmt.Errorf("failed to down: %v", status.Convert(err).Message()) + } + cmd.Println("Netbird down") + time.Sleep(1 * time.Second) if _, err := client.Up(cmd.Context(), &proto.UpRequest{}); err != nil { @@ -178,32 +186,11 @@ func runForDuration(cmd *cobra.Command, args []string) error { } cmd.Println("\nDuration completed") + cmd.Println("Creating debug bundle...") + headerPreDown := fmt.Sprintf("----- Netbird pre-down - Timestamp: %s - Duration: %s", time.Now().Format(time.RFC3339), duration) statusOutput = fmt.Sprintf("%s\n%s\n%s", statusOutput, headerPreDown, getStatusOutput(cmd)) - if _, err := client.Down(cmd.Context(), &proto.DownRequest{}); err != nil { - return fmt.Errorf("failed to down: %v", status.Convert(err).Message()) - } - cmd.Println("Netbird down") - - time.Sleep(1 * time.Second) - - if restoreUp { - if _, err := client.Up(cmd.Context(), &proto.UpRequest{}); err != nil { - return fmt.Errorf("failed to up: %v", status.Convert(err).Message()) - } - cmd.Println("Netbird up") - } - - if !initialLevelTrace { - if _, err := client.SetLogLevel(cmd.Context(), &proto.SetLogLevelRequest{Level: initialLogLevel.GetLevel()}); err != nil { - return fmt.Errorf("failed to restore log level: %v", status.Convert(err).Message()) - } - cmd.Println("Log level restored to", initialLogLevel.GetLevel()) - } - - cmd.Println("Creating debug bundle...") - resp, err := client.DebugBundle(cmd.Context(), &proto.DebugBundleRequest{ Anonymize: anonymizeFlag, Status: statusOutput, @@ -213,6 +200,20 @@ func runForDuration(cmd *cobra.Command, args []string) error { return fmt.Errorf("failed to bundle debug: %v", status.Convert(err).Message()) } + if stateWasDown { + if _, err := client.Down(cmd.Context(), &proto.DownRequest{}); err != nil { + return fmt.Errorf("failed to down: %v", status.Convert(err).Message()) + } + cmd.Println("Netbird down") + } + + if !initialLevelTrace { + if _, err := client.SetLogLevel(cmd.Context(), &proto.SetLogLevelRequest{Level: initialLogLevel.GetLevel()}); err != nil { + return fmt.Errorf("failed to restore log level: %v", status.Convert(err).Message()) + } + cmd.Println("Log level restored to", initialLogLevel.GetLevel()) + } + cmd.Println(resp.GetPath()) return nil