package cmd import ( "context" "fmt" "github.com/up9inc/mizu/cli/kubernetes" "github.com/up9inc/mizu/cli/mizu" "k8s.io/client-go/tools/clientcmd" "net/http" ) func runMizuView(mizuViewOptions *MizuViewOptions) { kubernetesProvider, err := kubernetes.NewProvider(mizuViewOptions.KubeConfigPath) if err != nil { if clientcmd.IsEmptyConfig(err) { mizu.Log.Infof("Couldn't find the kube config file, or file is empty. Try adding '--kube-config='\n") return } if clientcmd.IsConfigurationInvalid(err) { mizu.Log.Infof(mizu.Red, "Invalid kube config file. Try using a different config with '--kube-config='\n") return } } ctx, cancel := context.WithCancel(context.Background()) defer cancel() exists, err := kubernetesProvider.DoesServicesExist(ctx, mizu.ResourcesNamespace, mizu.ApiServerPodName) if err != nil { panic(err) } if !exists { mizu.Log.Infof("The %s service not found\n", mizu.ApiServerPodName) return } mizuProxiedUrl := kubernetes.GetMizuApiServerProxiedHostAndPath(mizuViewOptions.GuiPort) _, err = http.Get(fmt.Sprintf("http://%s/", mizuProxiedUrl)) if err == nil { mizu.Log.Infof("Found a running service %s and open port %d\n", mizu.ApiServerPodName, mizuViewOptions.GuiPort) return } mizu.Log.Infof("Found service %s, creating k8s proxy\n", mizu.ApiServerPodName) mizu.Log.Infof("Mizu is available at http://%s\n", kubernetes.GetMizuApiServerProxiedHostAndPath(mizuViewOptions.GuiPort)) err = kubernetes.StartProxy(kubernetesProvider, mizuViewOptions.GuiPort, mizu.ResourcesNamespace, mizu.ApiServerPodName) if err != nil { mizu.Log.Infof("Error occured while running k8s proxy %v\n", err) } }