Ver código fonte

get search working

Alexander Belanger 3 anos atrás
pai
commit
06a22cf38b

Diferenças do arquivo suprimidas por serem muito extensas
+ 14562 - 1
dashboard/package-lock.json


+ 8 - 3
dashboard/src/main/home/cluster-dashboard/expanded-chart/logs-section/LogsSection.tsx

@@ -29,13 +29,13 @@ const LogsSection: React.FC<Props> = ({
   const [podFilterOpts, setPodFilterOpts] = useState<string[]>();
   const [scrollToBottom, setScrollToBottom] = useState(true);
   const [searchText, setSearchText] = useState("");
+  const [enteredSearchText, setEnteredSearchText] = useState("");
   const [startDate, setStartDate] = useState(new Date());
 
-  // TODO: don't hardcode namespace
   const { logs, refresh } = useLogs(
     podFilter,
     currentChart.namespace,
-    searchText
+    enteredSearchText
   );
 
   useEffect(() => {
@@ -90,7 +90,12 @@ const LogsSection: React.FC<Props> = ({
                 <SearchInput
                   value={searchText}
                   onChange={(e: any) => {
-                    setSearchText(e.value);
+                    setSearchText(e.target.value);
+                  }}
+                  onKeyPress={(event) => {
+                    if (event.key === "Enter") {
+                      setEnteredSearchText(searchText);
+                    }
                   }}
                   placeholder="Search logs..."
                 />

+ 36 - 43
dashboard/src/main/home/cluster-dashboard/expanded-chart/logs-section/useAgentLogs.ts

@@ -25,40 +25,14 @@ export const useLogs = (
     closeWebsocket,
   } = useWebsockets();
 
-  useEffect(() => {
-    if (!currentPod) {
-      return;
-    }
-    api
-      .getLogs(
-        "<token>",
-        {
-          pod_selector: currentPod,
-          namespace: namespace,
-        },
-        {
-          cluster_id: currentCluster.id,
-          project_id: currentProject.id,
-        }
-      )
-      .then((res) => {
-        console.log(res.data);
-        var initLogs: Anser.AnserJsonEntry[][] = [];
-        res.data.logs?.forEach((logLine: any) => {
-          var parsedLine = JSON.parse(logLine.line);
-
-          let ansiLog = Anser.ansiToJson(parsedLine.log);
-          initLogs.push(ansiLog);
-        });
+  console.log("SEARCH PARAM IS", searchParam);
 
-        setLogs(initLogs.reverse());
-        setInitialized(true);
-        refresh();
-      });
-  }, [currentPod, namespace]);
+  useEffect(() => {
+    refresh();
+  }, [currentPod, namespace, searchParam]);
 
   const setupWebsocket = (websocketKey: string) => {
-    const endpoint = `/api/projects/${currentProject.id}/clusters/${currentCluster.id}/namespaces/${namespace}/logs/loki?pod_selector=${currentPod}&namespace=${namespace}`;
+    const endpoint = `/api/projects/${currentProject.id}/clusters/${currentCluster.id}/namespaces/${namespace}/logs/loki?pod_selector=${currentPod}&namespace=${namespace}&search_param=${searchParam}`;
 
     const config: NewWebsocketOptions = {
       onopen: () => {
@@ -90,23 +64,42 @@ export const useLogs = (
   };
 
   const refresh = () => {
-    const websocketKey = `${currentPod}-${namespace}-websocket`;
-    closeWebsocket(websocketKey);
-
-    setupWebsocket(websocketKey);
-  };
-
-  useEffect(() => {
     if (!currentPod) {
       return;
     }
 
-    if (!initialized) {
-      return;
-    }
+    const websocketKey = `${currentPod}-${namespace}-websocket`;
 
-    refresh();
-  }, [currentPod, namespace]);
+    api
+      .getLogs(
+        "<token>",
+        {
+          pod_selector: currentPod,
+          namespace: namespace,
+          search_param: searchParam,
+        },
+        {
+          cluster_id: currentCluster.id,
+          project_id: currentProject.id,
+        }
+      )
+      .then((res) => {
+        console.log(res.data);
+        var initLogs: Anser.AnserJsonEntry[][] = [];
+        res.data.logs?.forEach((logLine: any) => {
+          var parsedLine = JSON.parse(logLine.line);
+
+          let ansiLog = Anser.ansiToJson(parsedLine.log);
+          initLogs.push(ansiLog);
+        });
+
+        setLogs(initLogs.reverse());
+        setInitialized(true);
+        closeWebsocket(websocketKey);
+
+        setupWebsocket(websocketKey);
+      });
+  };
 
   return {
     logs,

+ 4 - 0
internal/kubernetes/porter_agent/v2/agent_server.go

@@ -173,6 +173,10 @@ func GetHistoricalLogs(
 	vals["pod_selector"] = req.PodSelector
 	vals["namespace"] = req.Namespace
 
+	if req.SearchParam != "" {
+		vals["search_param"] = req.SearchParam
+	}
+
 	resp := clientset.CoreV1().Services(service.Namespace).ProxyGet(
 		"http",
 		service.Name,

Alguns arquivos não foram mostrados porque muitos arquivos mudaram nesse diff