From 1638e1be3b2abe946107f24c567ccb1804741b1e Mon Sep 17 00:00:00 2001 From: Igor Gov Date: Sun, 11 Jul 2021 15:58:55 +0300 Subject: [PATCH 1/4] TRA-3412 Mizu analyze gets a generic url to support standalone upload --- api/pkg/up9/main.go | 13 ++++++++++--- cli/cmd/tapRunner.go | 12 +++++++++--- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/api/pkg/up9/main.go b/api/pkg/up9/main.go index 3601f5321..4a8ca52e8 100644 --- a/api/pkg/up9/main.go +++ b/api/pkg/up9/main.go @@ -12,10 +12,10 @@ import ( "mizuserver/pkg/models" "net/http" "net/url" + "strings" "time" ) - const ( AnalyzeCheckSleepTime = 5 * time.Second ) @@ -40,7 +40,10 @@ func getGuestToken(url string, target *GuestToken) error { } func CreateAnonymousToken(envPrefix string) (*GuestToken, error) { - tokenUrl := fmt.Sprintf("https://trcc.%v/anonymous/token", envPrefix) + tokenUrl := fmt.Sprintf("https://trcc.%s/anonymous/token", envPrefix) + if strings.HasPrefix(envPrefix, "http") { + tokenUrl = fmt.Sprintf("%s/api/token", envPrefix) + } token := &GuestToken{} if err := getGuestToken(tokenUrl, token); err != nil { fmt.Println(err) @@ -76,7 +79,11 @@ func CheckIfModelReady(analyzeDestination string, analyzeModel string, analyzeTo } func GetTrafficDumpUrl(analyzeDestination string, analyzeModel string) *url.URL { - postUrl, _ := url.Parse(fmt.Sprintf("https://traffic.%s/dumpTrafficBulk/%s", analyzeDestination, analyzeModel)) + strUrl := fmt.Sprintf("https://traffic.%s/dumpTrafficBulk/%s", analyzeDestination, analyzeModel) + if strings.HasPrefix(analyzeDestination, "http") { + strUrl = fmt.Sprintf("%s/api/workspace/dumpTrafficBulk", analyzeDestination) + } + postUrl, _ := url.Parse(strUrl) return postUrl } diff --git a/cli/cmd/tapRunner.go b/cli/cmd/tapRunner.go index 85101bf3d..92b95882a 100644 --- a/cli/cmd/tapRunner.go +++ b/cli/cmd/tapRunner.go @@ -3,7 +3,9 @@ package cmd import ( "context" "fmt" + "log" "net/http" + "net/url" "os" "os/signal" "regexp" @@ -80,7 +82,6 @@ func RunMizuTap(podRegexQuery *regexp.Regexp, tappingOptions *MizuTapOptions) { waitForFinish(ctx, cancel) } - func createMizuResources(ctx context.Context, kubernetesProvider *kubernetes.Provider, nodeToTappedPodIPMap map[string][]string, tappingOptions *MizuTapOptions, mizuApiFilteringOptions *shared.TrafficFilteringOptions) error { if err := createMizuAggregator(ctx, kubernetesProvider, tappingOptions, mizuApiFilteringOptions); err != nil { return err @@ -254,8 +255,13 @@ func portForwardApiPod(ctx context.Context, kubernetesProvider *kubernetes.Provi time.Sleep(time.Second * 5) // Waiting to be sure the proxy is ready if tappingOptions.Analyze { - if _, err := http.Get(fmt.Sprintf("http://%s/api/uploadEntries?dest=%s", mizuProxiedUrl, tappingOptions.AnalyzeDestination)); err != nil { - fmt.Println(err) + url_path := fmt.Sprintf("http://localhost:%d/api/uploadEntries?dest=%s", tappingOptions.GuiPort, url.QueryEscape(tappingOptions.AnalyzeDestination)) + u, err := url.ParseRequestURI(url_path) + if err != nil { + log.Fatal(fmt.Sprintf("Failed parsing the URL %v\n", err)) + } + if _, err := http.Get(u.String()); err != nil { + fmt.Printf("error sending upload entries req %v, type: %T \n", err, err) } else { fmt.Printf(mizu.Purple, "Traffic is uploading to UP9 cloud for further analsys") fmt.Println() From 18c1473bd9597809f24c9ffb37472a6cc9917616 Mon Sep 17 00:00:00 2001 From: Igor Gov Date: Mon, 12 Jul 2021 11:11:27 +0300 Subject: [PATCH 2/4] . --- cli/cmd/tap.go | 2 +- cli/cmd/tapRunner.go | 15 ++++++--------- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/cli/cmd/tap.go b/cli/cmd/tap.go index a8b67d603..47f209738 100644 --- a/cli/cmd/tap.go +++ b/cli/cmd/tap.go @@ -62,7 +62,7 @@ func init() { tapCmd.Flags().Uint16VarP(&mizuTapOptions.GuiPort, "gui-port", "p", 8899, "Provide a custom port for the web interface webserver") tapCmd.Flags().StringVarP(&mizuTapOptions.Namespace, "namespace", "n", "", "Namespace selector") - tapCmd.Flags().BoolVar(&mizuTapOptions.Analyze, "analyze", false, "Uploads traffic to UP9 cloud for further analysis (Beta)") + tapCmd.Flags().BoolVar(&mizuTapOptions.Analyze, "analyze", false, "Uploads traffic to UP9 for further analysis (Beta)") tapCmd.Flags().StringVar(&mizuTapOptions.AnalyzeDestination, "dest", "up9.app", "Destination environment") tapCmd.Flags().BoolVarP(&mizuTapOptions.AllNamespaces, "all-namespaces", "A", false, "Tap all namespaces") tapCmd.Flags().StringVarP(&mizuTapOptions.KubeConfigPath, "kube-config", "k", "", "Path to kube-config file") diff --git a/cli/cmd/tapRunner.go b/cli/cmd/tapRunner.go index 92b95882a..3f964d1a8 100644 --- a/cli/cmd/tapRunner.go +++ b/cli/cmd/tapRunner.go @@ -3,6 +3,11 @@ package cmd import ( "context" "fmt" + "github.com/up9inc/mizu/cli/debounce" + "github.com/up9inc/mizu/cli/kubernetes" + "github.com/up9inc/mizu/cli/mizu" + "github.com/up9inc/mizu/shared" + core "k8s.io/api/core/v1" "log" "net/http" "net/url" @@ -11,14 +16,6 @@ import ( "regexp" "syscall" "time" - - "github.com/up9inc/mizu/shared" - - core "k8s.io/api/core/v1" - - "github.com/up9inc/mizu/cli/debounce" - "github.com/up9inc/mizu/cli/kubernetes" - "github.com/up9inc/mizu/cli/mizu" ) var mizuServiceAccountExists bool @@ -263,7 +260,7 @@ func portForwardApiPod(ctx context.Context, kubernetesProvider *kubernetes.Provi if _, err := http.Get(u.String()); err != nil { fmt.Printf("error sending upload entries req %v, type: %T \n", err, err) } else { - fmt.Printf(mizu.Purple, "Traffic is uploading to UP9 cloud for further analsys") + fmt.Printf(mizu.Purple, "Traffic is uploading to UP9 for further analsys") fmt.Println() } } From 77e01da6e8578ae31aac8a29e903f6ebf8de8298 Mon Sep 17 00:00:00 2001 From: Igor Gov Date: Mon, 12 Jul 2021 11:51:25 +0300 Subject: [PATCH 3/4] . --- cli/cmd/tapRunner.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/cmd/tapRunner.go b/cli/cmd/tapRunner.go index 3f964d1a8..49176dd6e 100644 --- a/cli/cmd/tapRunner.go +++ b/cli/cmd/tapRunner.go @@ -258,7 +258,7 @@ func portForwardApiPod(ctx context.Context, kubernetesProvider *kubernetes.Provi log.Fatal(fmt.Sprintf("Failed parsing the URL %v\n", err)) } if _, err := http.Get(u.String()); err != nil { - fmt.Printf("error sending upload entries req %v, type: %T \n", err, err) + fmt.Printf("error sending upload entries req %v\n", err) } else { fmt.Printf(mizu.Purple, "Traffic is uploading to UP9 for further analsys") fmt.Println() From 60431b2836d5bcac81c6b4aea393c8abe2ab7b88 Mon Sep 17 00:00:00 2001 From: Igor Gov Date: Mon, 12 Jul 2021 12:09:59 +0300 Subject: [PATCH 4/4] . --- cli/cmd/tapRunner.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cli/cmd/tapRunner.go b/cli/cmd/tapRunner.go index 49176dd6e..d3a6a69f8 100644 --- a/cli/cmd/tapRunner.go +++ b/cli/cmd/tapRunner.go @@ -252,12 +252,12 @@ func portForwardApiPod(ctx context.Context, kubernetesProvider *kubernetes.Provi time.Sleep(time.Second * 5) // Waiting to be sure the proxy is ready if tappingOptions.Analyze { - url_path := fmt.Sprintf("http://localhost:%d/api/uploadEntries?dest=%s", tappingOptions.GuiPort, url.QueryEscape(tappingOptions.AnalyzeDestination)) + url_path := fmt.Sprintf("http://%s/api/uploadEntries?dest=%s", mizuProxiedUrl, tappingOptions.AnalyzeDestination) u, err := url.ParseRequestURI(url_path) if err != nil { log.Fatal(fmt.Sprintf("Failed parsing the URL %v\n", err)) } - if _, err := http.Get(u.String()); err != nil { + if response, err := http.Get(u.String()); err != nil && response.StatusCode != 200 { fmt.Printf("error sending upload entries req %v\n", err) } else { fmt.Printf(mizu.Purple, "Traffic is uploading to UP9 for further analsys")