Skip to content

Commit

Permalink
Authenticate requests for scheduling reports (#4170)
Browse files Browse the repository at this point in the history
On the Lookout UI, the fetch requests for scheduling reports require authentication via the user's access token.
  • Loading branch information
mauriceyap authored Jan 29, 2025
1 parent 6cfde08 commit d43a9d9
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 5 deletions.
Original file line number Diff line number Diff line change
@@ -1,21 +1,33 @@
import { useQuery } from "@tanstack/react-query"

import { useGetUiConfig } from "./useGetUiConfig"
import { getAccessToken, getAuthorizationHeaders, useUserManager } from "../../oidc"
import { SchedulerReportingApi, Configuration, SchedulerobjectsJobReport } from "../../openapi/schedulerobjects"
import { getErrorMessage } from "../../utils"

export const useGetJobSchedulingReport = (jobId: string, enabled = true) => {
const userManager = useUserManager()

const { data: uiConfig } = useGetUiConfig(enabled)
const armadaApiBaseUrl = uiConfig?.armadaApiBaseUrl

const schedulerReportingApiConfiguration: Configuration = new Configuration({ basePath: armadaApiBaseUrl })
const schedulerReportingApiConfiguration: Configuration = new Configuration({
basePath: armadaApiBaseUrl,
credentials: "include",
})
const schedulerReportingApi = new SchedulerReportingApi(schedulerReportingApiConfiguration)

return useQuery<SchedulerobjectsJobReport, string>({
queryKey: ["getJobSchedulingReport", jobId],
queryFn: async ({ signal }) => {
try {
return await schedulerReportingApi.getJobReport({ jobId }, { signal })
const headers: HeadersInit = {}

if (userManager !== undefined) {
Object.assign(headers, getAuthorizationHeaders(await getAccessToken(userManager)))
}

return await schedulerReportingApi.getJobReport({ jobId }, { headers, signal })
} catch (e) {
throw await getErrorMessage(e)
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,21 +1,33 @@
import { useQuery } from "@tanstack/react-query"

import { useGetUiConfig } from "./useGetUiConfig"
import { getAccessToken, getAuthorizationHeaders, useUserManager } from "../../oidc"
import { SchedulerReportingApi, Configuration, SchedulerobjectsQueueReport } from "../../openapi/schedulerobjects"
import { getErrorMessage } from "../../utils"

export const useGetQueueSchedulingReport = (queueName: string, verbosity: number, enabled = true) => {
const userManager = useUserManager()

const { data: uiConfig } = useGetUiConfig(enabled)
const armadaApiBaseUrl = uiConfig?.armadaApiBaseUrl

const schedulerReportingApiConfiguration: Configuration = new Configuration({ basePath: armadaApiBaseUrl })
const schedulerReportingApiConfiguration: Configuration = new Configuration({
basePath: armadaApiBaseUrl,
credentials: "include",
})
const schedulerReportingApi = new SchedulerReportingApi(schedulerReportingApiConfiguration)

return useQuery<SchedulerobjectsQueueReport, string>({
queryKey: ["getQueueSchedulingReport", queueName, verbosity],
queryFn: async ({ signal }) => {
try {
return await schedulerReportingApi.getQueueReport({ queueName, verbosity }, { signal })
const headers: HeadersInit = {}

if (userManager !== undefined) {
Object.assign(headers, getAuthorizationHeaders(await getAccessToken(userManager)))
}

return await schedulerReportingApi.getQueueReport({ queueName, verbosity }, { headers, signal })
} catch (e) {
throw await getErrorMessage(e)
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,20 +1,32 @@
import { useQuery } from "@tanstack/react-query"

import { useGetUiConfig } from "./useGetUiConfig"
import { getAccessToken, getAuthorizationHeaders, useUserManager } from "../../oidc"
import { SchedulerReportingApi, Configuration, SchedulerobjectsSchedulingReport } from "../../openapi/schedulerobjects"
import { getErrorMessage } from "../../utils"

export const useGetSchedulingReport = (verbosity: number, enabled = true) => {
const userManager = useUserManager()

const { data: uiConfig } = useGetUiConfig(enabled)
const armadaApiBaseUrl = uiConfig?.armadaApiBaseUrl

const schedulerReportingApiConfiguration: Configuration = new Configuration({ basePath: armadaApiBaseUrl })
const schedulerReportingApiConfiguration: Configuration = new Configuration({
basePath: armadaApiBaseUrl,
credentials: "include",
})
const schedulerReportingApi = new SchedulerReportingApi(schedulerReportingApiConfiguration)

return useQuery<SchedulerobjectsSchedulingReport, string>({
queryKey: ["getSchedulingReport", verbosity],
queryFn: async ({ signal }) => {
try {
const headers: HeadersInit = {}

if (userManager !== undefined) {
Object.assign(headers, getAuthorizationHeaders(await getAccessToken(userManager)))
}

return await schedulerReportingApi.getSchedulingReport({ verbosity }, { signal })
} catch (e) {
throw await getErrorMessage(e)
Expand Down

0 comments on commit d43a9d9

Please sign in to comment.