diff --git a/cli/cmd/tapRunner.go b/cli/cmd/tapRunner.go index 7faeac86b..401b7f77d 100644 --- a/cli/cmd/tapRunner.go +++ b/cli/cmd/tapRunner.go @@ -329,7 +329,7 @@ func waitUntilNamespaceDeleted(ctx context.Context, cancel context.CancelFunc, k } func reportTappedPods() { - mizuProxiedUrl := kubernetes.GetMizuApiServerProxiedHostAndPath(mizu.Config.Fetch.MizuPort) + mizuProxiedUrl := kubernetes.GetMizuApiServerProxiedHostAndPath(mizu.Config.Tap.GuiPort) tappedPodsUrl := fmt.Sprintf("http://%s/status/tappedPods", mizuProxiedUrl) podInfos := make([]shared.PodInfo, 0) @@ -498,17 +498,8 @@ func createProxyToApiServerPod(ctx context.Context, kubernetesProvider *kubernet mizu.Log.Debugf("Watching API Server pod loop, modified: %v", modifiedPod.Status.Phase) if modifiedPod.Status.Phase == core.PodRunning && !isPodReady { isPodReady = true - go func() { - err := kubernetes.StartProxy(kubernetesProvider, mizu.Config.Tap.GuiPort, mizu.Config.MizuResourcesNamespace, mizu.ApiServerPodName) - if err != nil { - mizu.Log.Errorf(uiUtils.Error, fmt.Sprintf("Error occured while running k8s proxy %v\n"+ - "Try setting different port by using --%s", errormessage.FormatError(err), configStructs.GuiPortTapName)) - cancel() - } - }() - mizuProxiedUrl := kubernetes.GetMizuApiServerProxiedHostAndPath(mizu.Config.Tap.GuiPort) - mizu.Log.Infof("Mizu is available at http://%s\n", mizuProxiedUrl) - + go startProxyReportErrorIfAny(kubernetesProvider, cancel) + mizu.Log.Infof("Mizu is available at http://%s\n", kubernetes.GetMizuApiServerProxiedHostAndPath(mizu.Config.Tap.GuiPort)) time.Sleep(time.Second * 5) // Waiting to be sure the proxy is ready requestForAnalysis() reportTappedPods() @@ -525,6 +516,15 @@ func createProxyToApiServerPod(ctx context.Context, kubernetesProvider *kubernet } } +func startProxyReportErrorIfAny(kubernetesProvider *kubernetes.Provider, cancel context.CancelFunc) { + err := kubernetes.StartProxy(kubernetesProvider, mizu.Config.Tap.GuiPort, mizu.Config.MizuResourcesNamespace, mizu.ApiServerPodName) + if err != nil { + mizu.Log.Errorf(uiUtils.Error, fmt.Sprintf("Error occured while running k8s proxy %v\n"+ + "Try setting different port by using --%s", errormessage.FormatError(err), configStructs.GuiPortTapName)) + cancel() + } +} + func requestForAnalysis() { if !mizu.Config.Tap.Analysis { return diff --git a/cli/cmd/view.go b/cli/cmd/view.go index 86ee5bf42..8f9742e2a 100644 --- a/cli/cmd/view.go +++ b/cli/cmd/view.go @@ -12,11 +12,6 @@ var viewCmd = &cobra.Command{ Short: "Open GUI in browser", RunE: func(cmd *cobra.Command, args []string) error { go mizu.ReportRun("view", mizu.Config.View) - if isCompatible, err := mizu.CheckVersionCompatibility(mizu.Config.View.GuiPort); err != nil { - return err - } else if !isCompatible { - return nil - } runMizuView() return nil }, diff --git a/cli/cmd/viewRunner.go b/cli/cmd/viewRunner.go index 587c7e384..4b2b11a0d 100644 --- a/cli/cmd/viewRunner.go +++ b/cli/cmd/viewRunner.go @@ -20,10 +20,13 @@ func runMizuView() { exists, err := kubernetesProvider.DoesServicesExist(ctx, mizu.Config.MizuResourcesNamespace, mizu.ApiServerPodName) if err != nil { - panic(err) + mizu.Log.Errorf("Failed to found mizu service %v", err) + cancel() + return } if !exists { - mizu.Log.Infof("The %s service not found", mizu.ApiServerPodName) + mizu.Log.Infof("%s service not found, you should run `mizu tap` command first", mizu.ApiServerPodName) + cancel() return } @@ -33,11 +36,19 @@ func runMizuView() { mizu.Log.Infof("Found a running service %s and open port %d", mizu.ApiServerPodName, mizu.Config.View.GuiPort) return } - mizu.Log.Infof("Found service %s, creating k8s proxy", mizu.ApiServerPodName) + mizu.Log.Debugf("Found service %s, creating k8s proxy", mizu.ApiServerPodName) + + go startProxyReportErrorIfAny(kubernetesProvider, cancel) mizu.Log.Infof("Mizu is available at http://%s\n", kubernetes.GetMizuApiServerProxiedHostAndPath(mizu.Config.View.GuiPort)) - err = kubernetes.StartProxy(kubernetesProvider, mizu.Config.View.GuiPort, mizu.Config.MizuResourcesNamespace, mizu.ApiServerPodName) - if err != nil { - mizu.Log.Errorf("Error occurred while running k8s proxy %v", err) + if isCompatible, err := mizu.CheckVersionCompatibility(mizu.Config.View.GuiPort); err != nil { + mizu.Log.Errorf("Failed to check versions compatibility %v", err) + cancel() + return + } else if !isCompatible { + cancel() + return } + + waitForFinish(ctx, cancel) } diff --git a/cli/mizu/versionCheck.go b/cli/mizu/versionCheck.go index d4a791629..74a5c84e3 100644 --- a/cli/mizu/versionCheck.go +++ b/cli/mizu/versionCheck.go @@ -46,7 +46,7 @@ func CheckVersionCompatibility(port uint16) (bool, error) { return true, nil } - Log.Infof(uiUtils.Red, fmt.Sprintf("cli version (%s) is not compatible with api version (%s)", SemVer, apiSemVer)) + Log.Errorf(uiUtils.Red, fmt.Sprintf("cli version (%s) is not compatible with api version (%s)", SemVer, apiSemVer)) return false, nil }