From 5bea0c5cb9d7f7282ddcaac1401e276abef02e4b Mon Sep 17 00:00:00 2001 From: Jacob Shandling <61553566+jacobshandling@users.noreply.github.com> Date: Tue, 12 Dec 2023 10:03:34 -0800 Subject: [PATCH] Call real API (#15589) Co-authored-by: Jacob Shandling --- .../HostDetailsPage/HostDetailsPage.tsx | 97 +----- .../HostQueryReport/HostQueryReport.tsx | 317 ++---------------- .../details/cards/Queries/HostQueries.tsx | 4 +- 3 files changed, 32 insertions(+), 386 deletions(-) diff --git a/frontend/pages/hosts/details/HostDetailsPage/HostDetailsPage.tsx b/frontend/pages/hosts/details/HostDetailsPage/HostDetailsPage.tsx index c490e02a3a..41338e53f0 100644 --- a/frontend/pages/hosts/details/HostDetailsPage/HostDetailsPage.tsx +++ b/frontend/pages/hosts/details/HostDetailsPage/HostDetailsPage.tsx @@ -239,96 +239,6 @@ const HostDetailsPage = ({ mdm?.enrollment_status !== null && refetchMdm(); }; - // TODO - remove dummy schedule - const dummySchedule: IQueryStats[] = [ - { - scheduled_query_name: "cached query 1 - Never reported", - query_name: "query 1", - description: "should render 'Never' ", - discard_data: false, - last_fetched: null, - automations_enabled: false, - interval: 1000, - scheduled_query_id: 1, - - pack_id: 1, - pack_name: "Team: 💻 Workstations", - average_memory: 435814, - denylisted: false, - executions: 5, - last_executed: "2023-11-29T15:20:02Z", - output_size: 1204, - system_time: 9, - user_time: 3, - wall_time: 0, - }, - { - scheduled_query_name: "cached query 2 - stored results", - description: "should render with row clickable to its report", - discard_data: false, - query_name: "query 2", - last_fetched: "2023-11-29T15:20:02Z", - automations_enabled: false, - interval: 1000, - scheduled_query_id: 2, - - pack_id: 1, - pack_name: "Team: 💻 Workstations", - average_memory: 435814, - denylisted: false, - executions: 5, - last_executed: "2023-11-29T15:20:02Z", - output_size: 1204, - system_time: 9, - user_time: 3, - wall_time: 0, - }, - { - scheduled_query_name: - "cached query 3 - sending results to a log destination, not storing in Fleet", - description: "should render '---', not link to report", - interval: 1000, - discard_data: true, - automations_enabled: true, - query_name: "query 3", - last_fetched: null, - scheduled_query_id: 3, - - pack_id: 1, - pack_name: "Team: 💻 Workstations", - average_memory: 435814, - denylisted: false, - executions: 5, - last_executed: "2023-11-29T15:20:02Z", - output_size: 1204, - system_time: 9, - user_time: 3, - wall_time: 0, - }, - { - scheduled_query_name: - "cached query 4 - stored results, but no current interval", - description: "should render with row clickable to its report", - discard_data: false, - query_name: "query 4", - last_fetched: "2023-11-29T15:20:02Z", - automations_enabled: false, - interval: 0, - scheduled_query_id: 4, - - pack_id: 1, - pack_name: "Team: 💻 Workstations", - average_memory: 435814, - denylisted: false, - executions: 5, - last_executed: "2023-11-29T15:20:02Z", - output_size: 1204, - system_time: 9, - user_time: 3, - wall_time: 0, - }, - ]; - const { isLoading: isLoadingHost, data: host, @@ -391,8 +301,7 @@ const HostDetailsPage = ({ } setHostSoftware(returnedHost.software || []); setUsersState(returnedHost.users || []); - // TODO – remove dummy data - setSchedule(dummySchedule); + setSchedule(schedule); if (returnedHost.pack_stats) { const packStatsByType = returnedHost.pack_stats.reduce( ( @@ -411,9 +320,7 @@ const HostDetailsPage = ({ }, { packs: [], schedule: [] } ); - // TODO - restore real data - // setSchedule(packStatsByType.schedule); - setPacksState(packStatsByType.packs); + setSchedule(packStatsByType.schedule); } }, onError: (error) => handlePageError(error), diff --git a/frontend/pages/hosts/details/HostQueryReport/HostQueryReport.tsx b/frontend/pages/hosts/details/HostQueryReport/HostQueryReport.tsx index fe72eb84a3..0ce732685d 100644 --- a/frontend/pages/hosts/details/HostQueryReport/HostQueryReport.tsx +++ b/frontend/pages/hosts/details/HostQueryReport/HostQueryReport.tsx @@ -37,292 +37,34 @@ const HostQueryReport = ({ const [showQuery, setShowQuery] = useState(false); - // TODO - remove dummy data, restore API call - const [[hqrResponse, queryResponse], hqrLoading, hqrError] = [ - // // render report - // [ - // { - // host_name: "Haley's Macbook Air", - // report_clipped: false, - // last_fetched: "2021-01-01T00:00:00.000Z", - // results: [ - // { - // columns: { - // username: "user1", - // email: "e@mail", - // ausername: "user1", - // aemail: "e@mail", - // aausername: "user1", - // aaemail: "e@mail", - // aaausername: "user1", - // aaaemail: "e@mail", - // aaaausername: "user1", - // aaaaemail: "e@mail", - // aaaaausername: "user1", - // aaaaaemail: "e@mail", - // aaaaaausername: "user1", - // aaaaaaemail: "e@mail", - // aaaaaaausername: "user1", - // aaaaaaaemail: "e@mail", - // aaaaaaaausername: "user1", - // aaaaaaaaemail: "e@mail", - // aaaaaaaaausername: "user1", - // aaaaaaaaaemail: "e@mail", - // aaaaaaaaaausername: "user1", - // aaaaaaaaaaemail: "e@mail", - // aaaaaaaaaaausername: "user1", - // aaaaaaaaaaaemail: "e@mail", - // aaaaaaaaaaaausername: "user1", - // aaaaaaaaaaaaemail: "e@mail", - // aaaaaaaaaaaaausername: "user1", - // aaaaaaaaaaaaaemail: "e@mail", - // aaaaaaaaaaaaaausername: "user1", - // aaaaaaaaaaaaaaemail: "e@mail", - // aaaaaaaaaaaaaaausername: "user1", - // aaaaaaaaaaaaaaaemail: "e@mail", - // aaaaaaaaaaaaaaaausername: "user1", - // aaaaaaaaaaaaaaaaemail: "e@mail", - // aaaaaaaaaaaaaaaaausername: "user1", - // aaaaaaaaaaaaaaaaaemail: "e@mail", - // aaaaaaaaaaaaaaaaaausername: "user1", - // aaaaaaaaaaaaaaaaaaemail: "e@mail", - // aaaaaaaaaaaaaaaaaaausername: "user1", - // aaaaaaaaaaaaaaaaaaaemail: "e@mail", - // aaaaaaaaaaaaaaaaaaaausername: "user1", - // aaaaaaaaaaaaaaaaaaaaemail: "e@mail", - // aaaaaaaaaaaaaaaaaaaaausername: "user1", - // aaaaaaaaaaaaaaaaaaaaaemail: "e@mail", - // aaaaaaaaaaaaaaaaaaaaaausername: "user1", - // aaaaaaaaaaaaaaaaaaaaaaemail: "e@mail", - // aaaaaaaaaaaaaaaaaaaaaaausername: "user1", - // aaaaaaaaaaaaaaaaaaaaaaaemail: "e@mail", - // }, - // }, - // { - // columns: { - // username: "zser1", - // email: "e@mail", - // ausername: "user1", - // aemail: "e@mail", - // aausername: "user1", - // aaemail: "e@mail", - // aaausername: "user1", - // aaaemail: "e@mail", - // aaaausername: "user1", - // aaaaemail: "e@mail", - // aaaaausername: "user1", - // aaaaaemail: "e@mail", - // aaaaaausername: "user1", - // aaaaaaemail: "e@mail", - // aaaaaaausername: "user1", - // aaaaaaaemail: "e@mail", - // aaaaaaaausername: "user1", - // aaaaaaaaemail: "e@mail", - // aaaaaaaaausername: "user1", - // aaaaaaaaaemail: "e@mail", - // aaaaaaaaaausername: "user1", - // aaaaaaaaaaemail: "e@mail", - // aaaaaaaaaaausername: "user1", - // aaaaaaaaaaaemail: "e@mail", - // aaaaaaaaaaaausername: "user1", - // aaaaaaaaaaaaemail: "e@mail", - // aaaaaaaaaaaaausername: "user1", - // aaaaaaaaaaaaaemail: "e@mail", - // aaaaaaaaaaaaaausername: "user1", - // aaaaaaaaaaaaaaemail: "e@mail", - // aaaaaaaaaaaaaaausername: "user1", - // aaaaaaaaaaaaaaaemail: "e@mail", - // aaaaaaaaaaaaaaaausername: "user1", - // aaaaaaaaaaaaaaaaemail: "e@mail", - // aaaaaaaaaaaaaaaaausername: "user1", - // aaaaaaaaaaaaaaaaaemail: "e@mail", - // aaaaaaaaaaaaaaaaaausername: "user1", - // aaaaaaaaaaaaaaaaaaemail: "e@mail", - // aaaaaaaaaaaaaaaaaaausername: "user1", - // aaaaaaaaaaaaaaaaaaaemail: "e@mail", - // aaaaaaaaaaaaaaaaaaaausername: "user1", - // aaaaaaaaaaaaaaaaaaaaemail: "e@mail", - // aaaaaaaaaaaaaaaaaaaaausername: "user1", - // aaaaaaaaaaaaaaaaaaaaaemail: "e@mail", - // aaaaaaaaaaaaaaaaaaaaaausername: "user1", - // aaaaaaaaaaaaaaaaaaaaaaemail: "e@mail", - // aaaaaaaaaaaaaaaaaaaaaaausername: "user1", - // aaaaaaaaaaaaaaaaaaaaaaaemail: "e@mail", - // }, - // }, - // { - // columns: { - // username: "aser1", - // email: "e@mail", - // ausername: "user1", - // aemail: "e@mail", - // aausername: "user1", - // aaemail: "e@mail", - // aaausername: "user1", - // aaaemail: "e@mail", - // aaaausername: "user1", - // aaaaemail: "e@mail", - // aaaaausername: "user1", - // aaaaaemail: "e@mail", - // aaaaaausername: "user1", - // aaaaaaemail: "e@mail", - // aaaaaaausername: "user1", - // aaaaaaaemail: "e@mail", - // aaaaaaaausername: "user1", - // aaaaaaaaemail: "e@mail", - // aaaaaaaaausername: "user1", - // aaaaaaaaaemail: "e@mail", - // aaaaaaaaaausername: "user1", - // aaaaaaaaaaemail: "e@mail", - // aaaaaaaaaaausername: "user1", - // aaaaaaaaaaaemail: "e@mail", - // aaaaaaaaaaaausername: "user1", - // aaaaaaaaaaaaemail: "e@mail", - // aaaaaaaaaaaaausername: "user1", - // aaaaaaaaaaaaaemail: "e@mail", - // aaaaaaaaaaaaaausername: "user1", - // aaaaaaaaaaaaaaemail: "e@mail", - // aaaaaaaaaaaaaaausername: "user1", - // aaaaaaaaaaaaaaaemail: "e@mail", - // aaaaaaaaaaaaaaaausername: "user1", - // aaaaaaaaaaaaaaaaemail: "e@mail", - // aaaaaaaaaaaaaaaaausername: "user1", - // aaaaaaaaaaaaaaaaaemail: "e@mail", - // aaaaaaaaaaaaaaaaaausername: "user1", - // aaaaaaaaaaaaaaaaaaemail: "e@mail", - // aaaaaaaaaaaaaaaaaaausername: "user1", - // aaaaaaaaaaaaaaaaaaaemail: "e@mail", - // aaaaaaaaaaaaaaaaaaaausername: "user1", - // aaaaaaaaaaaaaaaaaaaaemail: "e@mail", - // aaaaaaaaaaaaaaaaaaaaausername: "user1", - // aaaaaaaaaaaaaaaaaaaaaemail: "e@mail", - // aaaaaaaaaaaaaaaaaaaaaausername: "user1", - // aaaaaaaaaaaaaaaaaaaaaaemail: "e@mail", - // aaaaaaaaaaaaaaaaaaaaaaausername: "user1", - // aaaaaaaaaaaaaaaaaaaaaaaemail: "e@mail", - // }, - // }, - // ], - // }, - // { - // name: "Test Query", - // description: "A great query", - // query: "SELECT * FROM users", - // discard_data: false, - // interval: 20, - // }, - // ], + const { + data: hqrResponse, + isLoading: hqrLoading, + error: hqrError, + } = useQuery( + [hostId, queryId], + () => hqrAPI.load(hostId, queryId), + { + refetchOnMount: false, + refetchOnReconnect: false, + refetchOnWindowFocus: false, + } + ); - // collecting results (A) - [ - { - host_name: "Haley's Macbook Air", - report_clipped: false, - last_fetched: null, - results: [], - }, - { - name: "Test Query", - description: "a great query", - query: "SELECT * FROM users", - discard_data: false, - inverval: 20, - }, - ], - - // // nothing to report (B) - // [ - // { - // host_name: "Haley's Macbook Air", - // report_clipped: false, - // last_fetched: "2021-01-01T00:00:00.000Z", - // results: [], - // }, - // { - // name: "Test Query", - // description: "a great query", - // query: "SELECT * FROM users", - // discard_data: false, - // inverval: 20, - // }, - // ], - - // // report clipped (C) - // [ - // { - // host_name: "Haley's Macbook Air", - // report_clipped: true, - // last_fetched: "2021-01-01T00:00:00.000Z", - // results: [], - // }, - // { - // name: "Test Query", - // description: "a great query", - // query: "SELECT * FROM users", - // interval: 20, - // discard_data: false, - // }, - // ], - - // // reroute (local setting) - // [ - // { - // host_name: "Haley's Macbook Air", - // report_clipped: false, - // last_fetched: "2021-01-01T00:00:00.000Z", - // results: [ - // { - // columns: { - // username: "user1", - // email: "e@mail", - // }, - // }, - // ], - // }, - // { - // name: 'Test Query', - // description: "a great query", - // query: "SELECT * FROM users", - // discard_data: true, - // inverval: 20, - // }, - // ], - - false, - null, - ]; - - // const { - // data: hqrResponse, - // isLoading: hqrLoading, - // error: hqrError, - // } = useQuery( - // [hostId, queryId], - // () => hqrAPI.load(hostId, queryId), - // { - // refetchOnMount: false, - // refetchOnReconnect: false, - // refetchOnWindowFocus: false, - // } - // ); - - // const { - // isLoading: queryLoading, - // data: queryResponse, - // error: queryError, - // } = useQuery( - // ["query", queryId], - // () => queryAPI.load(queryId), - // { - // enabled: !!queryId, - // refetchOnMount: false, - // refetchOnReconnect: false, - // refetchOnWindowFocus: false, - // } - // ); - - // TODO - remove mock loading state - const queryLoading = false; + const { + isLoading: queryLoading, + data: queryResponse, + error: queryError, + } = useQuery( + ["query", queryId], + () => queryAPI.load(queryId), + { + enabled: !!queryId, + refetchOnMount: false, + refetchOnReconnect: false, + refetchOnWindowFocus: false, + } + ); const isLoading = queryLoading || hqrLoading; @@ -331,8 +73,7 @@ const HostQueryReport = ({ report_clipped: reportClipped, last_fetched: lastFetched, results, - // TODO - remove below casting, just for testing - } = (hqrResponse || {}) as Partial; + } = hqrResponse || {}; // API response is nested this way to mirror that of the full Query Reports response (IQueryReport) const rows = results?.map((row) => row.columns) ?? []; @@ -342,7 +83,7 @@ const HostQueryReport = ({ description: queryDescription, query: querySQL, discard_data: queryDiscardData, - } = (queryResponse || {}) as Partial; + } = queryResponse || {}; // TODO - finalize local setting reroute conditions // previous reroute can be done before API call, not this one, hence 2 diff --git a/frontend/pages/hosts/details/cards/Queries/HostQueries.tsx b/frontend/pages/hosts/details/cards/Queries/HostQueries.tsx index b5178a2204..d0dfe0a162 100644 --- a/frontend/pages/hosts/details/cards/Queries/HostQueries.tsx +++ b/frontend/pages/hosts/details/cards/Queries/HostQueries.tsx @@ -74,9 +74,7 @@ const HostQueries = ({ if (!hostId || !queryId || !should_link_to_hqr || queryReportsDisabled) { return; } - // TODO - restore real hostId - router.push(`${PATHS.HOST_QUERY_REPORT(82, queryId)}`); - // router.push(`${PATHS.HOST_QUERY_REPORT(hostId, queryId)}`); + router.push(`${PATHS.HOST_QUERY_REPORT(hostId, queryId)}`); }, [hostId, queryReportsDisabled, router] );