Merge pull request #101 from up9inc/upload_standalone

TRA-3412 Mizu analyze gets a generic url to support standalone upload
This commit is contained in:
Igor Gov 2021-07-12 13:34:36 +03:00 committed by GitHub
commit b2f091746a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 26 additions and 16 deletions

View File

@ -12,10 +12,10 @@ import (
"mizuserver/pkg/models" "mizuserver/pkg/models"
"net/http" "net/http"
"net/url" "net/url"
"strings"
"time" "time"
) )
const ( const (
AnalyzeCheckSleepTime = 5 * time.Second AnalyzeCheckSleepTime = 5 * time.Second
) )
@ -40,7 +40,10 @@ func getGuestToken(url string, target *GuestToken) error {
} }
func CreateAnonymousToken(envPrefix string) (*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{} token := &GuestToken{}
if err := getGuestToken(tokenUrl, token); err != nil { if err := getGuestToken(tokenUrl, token); err != nil {
fmt.Println(err) fmt.Println(err)
@ -76,7 +79,11 @@ func CheckIfModelReady(analyzeDestination string, analyzeModel string, analyzeTo
} }
func GetTrafficDumpUrl(analyzeDestination string, analyzeModel string) *url.URL { 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 return postUrl
} }

View File

@ -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().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().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().StringVar(&mizuTapOptions.AnalyzeDestination, "dest", "up9.app", "Destination environment")
tapCmd.Flags().BoolVarP(&mizuTapOptions.AllNamespaces, "all-namespaces", "A", false, "Tap all namespaces") 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") tapCmd.Flags().StringVarP(&mizuTapOptions.KubeConfigPath, "kube-config", "k", "", "Path to kube-config file")

View File

@ -3,20 +3,19 @@ package cmd
import ( import (
"context" "context"
"fmt" "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/http"
"net/url"
"os" "os"
"os/signal" "os/signal"
"regexp" "regexp"
"syscall" "syscall"
"time" "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 var mizuServiceAccountExists bool
@ -80,7 +79,6 @@ func RunMizuTap(podRegexQuery *regexp.Regexp, tappingOptions *MizuTapOptions) {
waitForFinish(ctx, cancel) waitForFinish(ctx, cancel)
} }
func createMizuResources(ctx context.Context, kubernetesProvider *kubernetes.Provider, nodeToTappedPodIPMap map[string][]string, tappingOptions *MizuTapOptions, mizuApiFilteringOptions *shared.TrafficFilteringOptions) error { 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 { if err := createMizuAggregator(ctx, kubernetesProvider, tappingOptions, mizuApiFilteringOptions); err != nil {
return err return err
@ -254,10 +252,15 @@ func portForwardApiPod(ctx context.Context, kubernetesProvider *kubernetes.Provi
time.Sleep(time.Second * 5) // Waiting to be sure the proxy is ready time.Sleep(time.Second * 5) // Waiting to be sure the proxy is ready
if tappingOptions.Analyze { if tappingOptions.Analyze {
if _, err := http.Get(fmt.Sprintf("http://%s/api/uploadEntries?dest=%s", mizuProxiedUrl, tappingOptions.AnalyzeDestination)); err != nil { url_path := fmt.Sprintf("http://%s/api/uploadEntries?dest=%s", mizuProxiedUrl, tappingOptions.AnalyzeDestination)
fmt.Println(err) u, err := url.ParseRequestURI(url_path)
if err != nil {
log.Fatal(fmt.Sprintf("Failed parsing the URL %v\n", err))
}
if response, err := http.Get(u.String()); err != nil && response.StatusCode != 200 {
fmt.Printf("error sending upload entries req %v\n", err)
} else { } 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() fmt.Println()
} }
} }