From e7f65f081e95da28a3591b3040684a29ce8c9bec Mon Sep 17 00:00:00 2001 From: Andre Giron Date: Fri, 12 May 2023 12:46:25 -0700 Subject: [PATCH 1/8] RTKQuery work for getEnvironment route. --- .../integrations/dialogs/kubernetesDialog.tsx | 1 + src/ui/common/src/handlers/AqueductApi.ts | 6 ++++++ src/ui/common/src/handlers/v2/EnvironmentGet.ts | 14 ++++++++++++++ 3 files changed, 21 insertions(+) create mode 100644 src/ui/common/src/handlers/v2/EnvironmentGet.ts diff --git a/src/ui/common/src/components/integrations/dialogs/kubernetesDialog.tsx b/src/ui/common/src/components/integrations/dialogs/kubernetesDialog.tsx index 0ee5d0036..53308334e 100644 --- a/src/ui/common/src/components/integrations/dialogs/kubernetesDialog.tsx +++ b/src/ui/common/src/components/integrations/dialogs/kubernetesDialog.tsx @@ -44,6 +44,7 @@ export const KubernetesDialog: React.FC = ({ }); const responseBody = await environmentResponse.json(); + console.log('responseBody: ', responseBody); setInK8sCluster(responseBody['inK8sCluster']); }; diff --git a/src/ui/common/src/handlers/AqueductApi.ts b/src/ui/common/src/handlers/AqueductApi.ts index bc3c6972d..4d6ab3a67 100644 --- a/src/ui/common/src/handlers/AqueductApi.ts +++ b/src/ui/common/src/handlers/AqueductApi.ts @@ -103,6 +103,7 @@ import { WorkflowsGetRequest, WorkflowsGetResponse, } from './v2/WorkflowsGet'; +import { EnvironmentPlugin } from 'webpack'; const { createApi, fetchBaseQuery } = ((rtkQueryRaw as any).default ?? rtkQueryRaw) as typeof rtkQueryRaw; @@ -134,6 +135,10 @@ export const aqueductApi = createApi({ query: (req) => dagResultsGetQuery(req), transformErrorResponse, }), + environmentGet: builder.query({ + query: (req) => environmentGetQuery(req), + transformErrorResponse, + }), integrationOperatorsGet: builder.query< IntegrationOperatorsGetResponse, IntegrationOperatorsGetRequest @@ -246,6 +251,7 @@ export const { useDagOperatorsGetQuery, useDagResultGetQuery, useDagResultsGetQuery, + useEnvironmentGetQuery, useIntegrationOperatorsGetQuery, useIntegrationWorkflowsGetQuery, useIntegrationsWorkflowsGetQuery, diff --git a/src/ui/common/src/handlers/v2/EnvironmentGet.ts b/src/ui/common/src/handlers/v2/EnvironmentGet.ts new file mode 100644 index 000000000..387c0014f --- /dev/null +++ b/src/ui/common/src/handlers/v2/EnvironmentGet.ts @@ -0,0 +1,14 @@ +import { APIKeyParameter } from '../parameters/Header'; + +export type EnvironmentGetRequest = APIKeyParameter; + +export type EnvironeGetResponse = { + inK8sCluster: boolean; +}; + +// TODO: Move this endpoint to the v2 API +export const dagOperatorsGetQuery = (req: EnvironmentGetRequest) => ({ + //url: `workflows/${req.workflowId}/dag/${req.dagId}/nodes/operators`, + url: 'environment', + headers: { 'api-key': req.apiKey }, +}); From e126f042bb6f3b660f76a10c47e86b63afbb15a8 Mon Sep 17 00:00:00 2001 From: Andre Giron Date: Mon, 15 May 2023 16:27:49 -0700 Subject: [PATCH 2/8] continue RTKQuery work --- src/ui/common/src/handlers/AqueductApi.ts | 5 ++++- src/ui/common/src/handlers/v2/EnvironmentGet.ts | 4 ++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/ui/common/src/handlers/AqueductApi.ts b/src/ui/common/src/handlers/AqueductApi.ts index 4d6ab3a67..824f75647 100644 --- a/src/ui/common/src/handlers/AqueductApi.ts +++ b/src/ui/common/src/handlers/AqueductApi.ts @@ -18,6 +18,10 @@ import { DagResultsGetRequest, DagResultsGetResponse, } from './v2/DagResultsGet'; +import { + environmentGetQuery, + EnvironmentGetRequest, +} from './v2/EnvironmentGet'; import { integrationOperatorsGetQuery, IntegrationOperatorsGetRequest, @@ -103,7 +107,6 @@ import { WorkflowsGetRequest, WorkflowsGetResponse, } from './v2/WorkflowsGet'; -import { EnvironmentPlugin } from 'webpack'; const { createApi, fetchBaseQuery } = ((rtkQueryRaw as any).default ?? rtkQueryRaw) as typeof rtkQueryRaw; diff --git a/src/ui/common/src/handlers/v2/EnvironmentGet.ts b/src/ui/common/src/handlers/v2/EnvironmentGet.ts index 387c0014f..8fe273504 100644 --- a/src/ui/common/src/handlers/v2/EnvironmentGet.ts +++ b/src/ui/common/src/handlers/v2/EnvironmentGet.ts @@ -2,12 +2,12 @@ import { APIKeyParameter } from '../parameters/Header'; export type EnvironmentGetRequest = APIKeyParameter; -export type EnvironeGetResponse = { +export type EnvironmentGetResponse = { inK8sCluster: boolean; }; // TODO: Move this endpoint to the v2 API -export const dagOperatorsGetQuery = (req: EnvironmentGetRequest) => ({ +export const environmentGetQuery = (req: EnvironmentGetRequest) => ({ //url: `workflows/${req.workflowId}/dag/${req.dagId}/nodes/operators`, url: 'environment', headers: { 'api-key': req.apiKey }, From e8bfc78502fedb0ef8dd34e02a68b9fdfabdbdc7 Mon Sep 17 00:00:00 2001 From: Andre Giron Date: Thu, 18 May 2023 15:03:07 -0700 Subject: [PATCH 3/8] Sets up RTKQuery to get environment in Kubernetes Dialog. --- .../{ => v2}/get_server_environment.go | 9 ++-- src/golang/cmd/server/routes/routes.go | 4 +- src/golang/cmd/server/server/handlers.go | 4 +- .../integrations/dialogs/kubernetesDialog.tsx | 41 +++++++++++-------- .../common/src/handlers/v2/EnvironmentGet.ts | 3 +- 5 files changed, 36 insertions(+), 25 deletions(-) rename src/golang/cmd/server/handler/{ => v2}/get_server_environment.go (83%) diff --git a/src/golang/cmd/server/handler/get_server_environment.go b/src/golang/cmd/server/handler/v2/get_server_environment.go similarity index 83% rename from src/golang/cmd/server/handler/get_server_environment.go rename to src/golang/cmd/server/handler/v2/get_server_environment.go index ab6473506..4cf0159b2 100644 --- a/src/golang/cmd/server/handler/get_server_environment.go +++ b/src/golang/cmd/server/handler/v2/get_server_environment.go @@ -1,10 +1,11 @@ -package handler +package v2 import ( "context" "net/http" "os" + "github.com/aqueducthq/aqueduct/cmd/server/handler" "github.com/aqueducthq/aqueduct/lib" ) @@ -16,7 +17,9 @@ type getServerEnvironmentResponse struct { Version string `json:"version"` } -// Route: /api/environment +// Route: /api/v2/environment +// This file should map directly to +// src/ui/common/src/handlers/v2/EnvironmentGet.tsx // Method: GET // Request: // @@ -25,7 +28,7 @@ type getServerEnvironmentResponse struct { // // Response: Aqueduct server's environment variables. type GetServerEnvironmentHandler struct { - GetHandler + handler.GetHandler } func (*GetServerEnvironmentHandler) Name() string { diff --git a/src/golang/cmd/server/routes/routes.go b/src/golang/cmd/server/routes/routes.go index e0e44d6b7..0c6b17179 100644 --- a/src/golang/cmd/server/routes/routes.go +++ b/src/golang/cmd/server/routes/routes.go @@ -24,6 +24,7 @@ const ( NodeDagOperatorsRoute = "/api/v2/workflow/{workflowID}/dag/{dagID}/node/operators" NodeOperatorContentRoute = "/api/v2/workflow/{workflowID}/dag/{dagID}/node/operator/{nodeID}/content" NodesResultsRoute = "/api/v2/workflow/{workflowID}/result/{dagResultID}/nodes/results" + GetServerEnvironmentRoute = "/api/v2/environment" // V1 routes GetArtifactVersionsRoute = "/api/artifact/versions" @@ -73,6 +74,5 @@ const ( GetWorkflowDagResultRoute = "/api/workflow/{workflowId}/result/{workflowDagResultId}" GetWorkflowHistoryRoute = "/api/workflow/{workflowId}/history" - GetServerVersionRoute = "/api/version" - GetServerEnvironmentRoute = "/api/environment" + GetServerVersionRoute = "/api/version" ) diff --git a/src/golang/cmd/server/server/handlers.go b/src/golang/cmd/server/server/handlers.go index 748842fcd..63858dc73 100644 --- a/src/golang/cmd/server/server/handlers.go +++ b/src/golang/cmd/server/server/handlers.go @@ -132,6 +132,7 @@ func (s *AqServer) Handlers() map[string]handler.Handler { DAGResultRepo: s.DAGResultRepo, OperatorRepo: s.OperatorRepo, }, + routes.GetServerEnvironmentRoute: &v2.GetServerEnvironmentHandler{}, // V1 Handlers // (ENG-2715) Remove deprecated ones @@ -425,7 +426,6 @@ func (s *AqServer) Handlers() map[string]handler.Handler { IntegrationRepo: s.IntegrationRepo, }, - routes.GetServerVersionRoute: &handler.GetServerVersionHandler{}, - routes.GetServerEnvironmentRoute: &handler.GetServerEnvironmentHandler{}, + routes.GetServerVersionRoute: &handler.GetServerVersionHandler{}, } } diff --git a/src/ui/common/src/components/integrations/dialogs/kubernetesDialog.tsx b/src/ui/common/src/components/integrations/dialogs/kubernetesDialog.tsx index 53308334e..b36192be8 100644 --- a/src/ui/common/src/components/integrations/dialogs/kubernetesDialog.tsx +++ b/src/ui/common/src/components/integrations/dialogs/kubernetesDialog.tsx @@ -11,6 +11,8 @@ import { } from '../../../utils/integrations'; import { apiAddress } from '../../hooks/useAqueductConsts'; import { IntegrationTextInputField } from './IntegrationTextInputField'; +import { useEnvironmentGetQuery } from '../../../handlers/AqueductApi'; +import { APIKeyParameter } from '../../../handlers/parameters/Header'; const Placeholders: KubernetesConfig = { kubeconfig_path: '/home/ubuntu/.kube/config', @@ -24,6 +26,13 @@ export const KubernetesDialog: React.FC = ({ }) => { const { register, setValue, getValues } = useFormContext(); const use_same_cluster = getValues('use_same_cluster'); + if (user) { + const { data, error, isLoading } = useEnvironmentGetQuery({ apiKey: user.apiKey }); + console.log('error: ', error); + console.log('isLoading: ', isLoading); + console.log('data: ', data); + } + register('use_same_cluster'); @@ -34,24 +43,24 @@ export const KubernetesDialog: React.FC = ({ const [inK8sCluster, setInK8sCluster] = useState(false); // TODO: https://linear.app/aqueducthq/issue/ENG-2964/move-k8s-use-same-cluster-request-to-rtkquery - useEffect(() => { - const fetchEnvironment = async () => { - const environmentResponse = await fetch(`${apiAddress}/api/environment`, { - method: 'GET', - headers: { - 'api-key': user.apiKey, - }, - }); + // useEffect(() => { + // const fetchEnvironment = async () => { + // const environmentResponse = await fetch(`${apiAddress}/api/environment`, { + // method: 'GET', + // headers: { + // 'api-key': user.apiKey, + // }, + // }); - const responseBody = await environmentResponse.json(); - console.log('responseBody: ', responseBody); - setInK8sCluster(responseBody['inK8sCluster']); - }; + // const responseBody = await environmentResponse.json(); + // console.log('responseBody: ', responseBody); + // //setInK8sCluster(responseBody['inK8sCluster']); + // }; - if (user) { - fetchEnvironment().catch(console.error); - } - }, [user]); + // if (user) { + // fetchEnvironment().catch(console.error); + // } + // }, [user]); return ( diff --git a/src/ui/common/src/handlers/v2/EnvironmentGet.ts b/src/ui/common/src/handlers/v2/EnvironmentGet.ts index 8fe273504..99c5685d7 100644 --- a/src/ui/common/src/handlers/v2/EnvironmentGet.ts +++ b/src/ui/common/src/handlers/v2/EnvironmentGet.ts @@ -4,11 +4,10 @@ export type EnvironmentGetRequest = APIKeyParameter; export type EnvironmentGetResponse = { inK8sCluster: boolean; + version: string; }; -// TODO: Move this endpoint to the v2 API export const environmentGetQuery = (req: EnvironmentGetRequest) => ({ - //url: `workflows/${req.workflowId}/dag/${req.dagId}/nodes/operators`, url: 'environment', headers: { 'api-key': req.apiKey }, }); From e12708c23f2526047da849850804579c046e612c Mon Sep 17 00:00:00 2001 From: Andre Giron Date: Thu, 18 May 2023 16:28:02 -0700 Subject: [PATCH 4/8] debugging --- .../integrations/dialogs/kubernetesDialog.tsx | 44 +++++++++---------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/src/ui/common/src/components/integrations/dialogs/kubernetesDialog.tsx b/src/ui/common/src/components/integrations/dialogs/kubernetesDialog.tsx index b36192be8..1e83e944d 100644 --- a/src/ui/common/src/components/integrations/dialogs/kubernetesDialog.tsx +++ b/src/ui/common/src/components/integrations/dialogs/kubernetesDialog.tsx @@ -26,12 +26,12 @@ export const KubernetesDialog: React.FC = ({ }) => { const { register, setValue, getValues } = useFormContext(); const use_same_cluster = getValues('use_same_cluster'); - if (user) { - const { data, error, isLoading } = useEnvironmentGetQuery({ apiKey: user.apiKey }); - console.log('error: ', error); - console.log('isLoading: ', isLoading); - console.log('data: ', data); - } + // if (user) { + // const { data, error, isLoading } = useEnvironmentGetQuery({ apiKey: user.apiKey }); + // console.log('error: ', error); + // console.log('isLoading: ', isLoading); + // console.log('data: ', data); + // } register('use_same_cluster'); @@ -43,24 +43,24 @@ export const KubernetesDialog: React.FC = ({ const [inK8sCluster, setInK8sCluster] = useState(false); // TODO: https://linear.app/aqueducthq/issue/ENG-2964/move-k8s-use-same-cluster-request-to-rtkquery - // useEffect(() => { - // const fetchEnvironment = async () => { - // const environmentResponse = await fetch(`${apiAddress}/api/environment`, { - // method: 'GET', - // headers: { - // 'api-key': user.apiKey, - // }, - // }); + useEffect(() => { + const fetchEnvironment = async () => { + const environmentResponse = await fetch(`${apiAddress}/api/v2/environment`, { + method: 'GET', + headers: { + 'api-key': user.apiKey, + }, + }); - // const responseBody = await environmentResponse.json(); - // console.log('responseBody: ', responseBody); - // //setInK8sCluster(responseBody['inK8sCluster']); - // }; + const responseBody = await environmentResponse.json(); + console.log('responseBody: ', responseBody); + setInK8sCluster(responseBody['inK8sCluster']); + }; - // if (user) { - // fetchEnvironment().catch(console.error); - // } - // }, [user]); + if (user) { + fetchEnvironment().catch(console.error); + } + }, [user]); return ( From a19797bc4303b6b9ba4ef188cbd7cd8e85ecb8f0 Mon Sep 17 00:00:00 2001 From: Andre Giron Date: Thu, 18 May 2023 17:06:35 -0700 Subject: [PATCH 5/8] Use RTKQuery for getEnvironment in the MenuSidebar. --- .../integrations/dialogs/kubernetesDialog.tsx | 9 ++------- .../src/components/layouts/menuSidebar.tsx | 16 ++++++---------- 2 files changed, 8 insertions(+), 17 deletions(-) diff --git a/src/ui/common/src/components/integrations/dialogs/kubernetesDialog.tsx b/src/ui/common/src/components/integrations/dialogs/kubernetesDialog.tsx index 1e83e944d..2cf98c67a 100644 --- a/src/ui/common/src/components/integrations/dialogs/kubernetesDialog.tsx +++ b/src/ui/common/src/components/integrations/dialogs/kubernetesDialog.tsx @@ -12,7 +12,6 @@ import { import { apiAddress } from '../../hooks/useAqueductConsts'; import { IntegrationTextInputField } from './IntegrationTextInputField'; import { useEnvironmentGetQuery } from '../../../handlers/AqueductApi'; -import { APIKeyParameter } from '../../../handlers/parameters/Header'; const Placeholders: KubernetesConfig = { kubeconfig_path: '/home/ubuntu/.kube/config', @@ -26,12 +25,6 @@ export const KubernetesDialog: React.FC = ({ }) => { const { register, setValue, getValues } = useFormContext(); const use_same_cluster = getValues('use_same_cluster'); - // if (user) { - // const { data, error, isLoading } = useEnvironmentGetQuery({ apiKey: user.apiKey }); - // console.log('error: ', error); - // console.log('isLoading: ', isLoading); - // console.log('data: ', data); - // } register('use_same_cluster'); @@ -42,6 +35,8 @@ export const KubernetesDialog: React.FC = ({ const [inK8sCluster, setInK8sCluster] = useState(false); + // NOTE: Having an issue turning this into an RTKQuery, as it's causing an infinite loop here. + // const { data, error, isLoading } = useEnvironmentGetQuery({ apiKey: user.apiKey } as any, { skip: !user?.apiKey }); // TODO: https://linear.app/aqueducthq/issue/ENG-2964/move-k8s-use-same-cluster-request-to-rtkquery useEffect(() => { const fetchEnvironment = async () => { diff --git a/src/ui/common/src/components/layouts/menuSidebar.tsx b/src/ui/common/src/components/layouts/menuSidebar.tsx index d0d083d5d..20c3e0157 100644 --- a/src/ui/common/src/components/layouts/menuSidebar.tsx +++ b/src/ui/common/src/components/layouts/menuSidebar.tsx @@ -27,6 +27,7 @@ import { menuSidebarLogoLink, notificationAlert, } from './menuSidebar.styles'; +import { useEnvironmentGetQuery } from '../../handlers/AqueductApi'; // Left padding = 8px // Right padding = 8px @@ -123,22 +124,17 @@ const MenuSidebar: React.FC<{ const [versionNumber, setVersionNumber] = useState(''); const location = useLocation(); + const { data } = useEnvironmentGetQuery({ apiKey: user.apiKey } as any, { skip: !user?.apiKey }); + useEffect(() => { setCurrentPage(location.pathname); }, [dispatch, location.pathname]); useEffect(() => { - async function fetchVersionNumber() { - const res = await fetch(`${apiAddress}/api/version`, { - method: 'GET', - headers: { 'api-key': user.apiKey }, - }); - const versionNumberResponse = await res.json(); - setVersionNumber(versionNumberResponse.version); + if (data) { + setVersionNumber(data.version); } - - fetchVersionNumber(); - }, [user.apiKey]); + }, [user.apiKey, data]); const pathPrefix = getPathPrefix(); return ( From 2f109b55ade6ce66abe20ff4f3436554c48b0139 Mon Sep 17 00:00:00 2001 From: Andre Giron Date: Fri, 19 May 2023 14:48:23 -0700 Subject: [PATCH 6/8] Fix for KubernetesDialog infinite rendering when using RTKQuery. --- .../integrations/dialogs/kubernetesDialog.tsx | 36 ++++--------------- .../dialogs/onDemandKubernetesDialog.tsx | 15 +++++++- .../src/components/layouts/menuSidebar.tsx | 7 ++-- src/ui/common/src/handlers/AqueductApi.ts | 5 ++- .../common/src/handlers/v2/EnvironmentGet.ts | 4 +-- 5 files changed, 31 insertions(+), 36 deletions(-) diff --git a/src/ui/common/src/components/integrations/dialogs/kubernetesDialog.tsx b/src/ui/common/src/components/integrations/dialogs/kubernetesDialog.tsx index 2cf98c67a..e01029a77 100644 --- a/src/ui/common/src/components/integrations/dialogs/kubernetesDialog.tsx +++ b/src/ui/common/src/components/integrations/dialogs/kubernetesDialog.tsx @@ -1,7 +1,7 @@ import { Checkbox, FormControlLabel } from '@mui/material'; import Box from '@mui/material/Box'; import React from 'react'; -import { useEffect, useState } from 'react'; +import { useEffect } from 'react'; import { useFormContext } from 'react-hook-form'; import * as Yup from 'yup'; @@ -9,9 +9,7 @@ import { IntegrationDialogProps, KubernetesConfig, } from '../../../utils/integrations'; -import { apiAddress } from '../../hooks/useAqueductConsts'; import { IntegrationTextInputField } from './IntegrationTextInputField'; -import { useEnvironmentGetQuery } from '../../../handlers/AqueductApi'; const Placeholders: KubernetesConfig = { kubeconfig_path: '/home/ubuntu/.kube/config', @@ -19,44 +17,24 @@ const Placeholders: KubernetesConfig = { use_same_cluster: 'false', }; -export const KubernetesDialog: React.FC = ({ +interface KuberentesDialogProps extends IntegrationDialogProps { + inK8sCluster: boolean; +} + +export const KubernetesDialog: React.FC = ({ editMode = false, user, + inK8sCluster = false, }) => { const { register, setValue, getValues } = useFormContext(); const use_same_cluster = getValues('use_same_cluster'); - register('use_same_cluster'); useEffect(() => { setValue('use_same_cluster', 'false'); }, []); - const [inK8sCluster, setInK8sCluster] = useState(false); - - // NOTE: Having an issue turning this into an RTKQuery, as it's causing an infinite loop here. - // const { data, error, isLoading } = useEnvironmentGetQuery({ apiKey: user.apiKey } as any, { skip: !user?.apiKey }); - // TODO: https://linear.app/aqueducthq/issue/ENG-2964/move-k8s-use-same-cluster-request-to-rtkquery - useEffect(() => { - const fetchEnvironment = async () => { - const environmentResponse = await fetch(`${apiAddress}/api/v2/environment`, { - method: 'GET', - headers: { - 'api-key': user.apiKey, - }, - }); - - const responseBody = await environmentResponse.json(); - console.log('responseBody: ', responseBody); - setInK8sCluster(responseBody['inK8sCluster']); - }; - - if (user) { - fetchEnvironment().catch(console.error); - } - }, [user]); - return ( {inK8sCluster && ( diff --git a/src/ui/common/src/components/integrations/dialogs/onDemandKubernetesDialog.tsx b/src/ui/common/src/components/integrations/dialogs/onDemandKubernetesDialog.tsx index fab29eee7..ed9ec666c 100644 --- a/src/ui/common/src/components/integrations/dialogs/onDemandKubernetesDialog.tsx +++ b/src/ui/common/src/components/integrations/dialogs/onDemandKubernetesDialog.tsx @@ -9,6 +9,7 @@ import { useFormContext } from 'react-hook-form'; import { useDispatch } from 'react-redux'; import * as Yup from 'yup'; +import { useEnvironmentGetQuery } from '../../../handlers/AqueductApi'; import { handleConnectToNewIntegration } from '../../../reducers/integration'; import { AppDispatch } from '../../../stores/store'; import { IntegrationDialogProps } from '../../../utils/integrations'; @@ -42,6 +43,11 @@ export const OnDemandKubernetesDialog: React.FC = ({ loading, onCloseDialog, }) => { + const { + data: environment, + error, + isLoading, + } = useEnvironmentGetQuery({ apiKey: user.apiKey }); const { register, setValue } = useFormContext(); const [currentStep, setCurrentStep] = useState('INITIAL'); @@ -137,14 +143,19 @@ export const OnDemandKubernetesDialog: React.FC = ({ ); }; + interface RegularK8sStepLayoutProps extends IntegrationDialogProps { + inK8sCluster?: boolean; + } + // We're going to need to share some more info with the dialogs, as they're not all just forms that we can // register anymore in the case of this layout. - const RegularK8sStepLayout: React.FC = ({ + const RegularK8sStepLayout: React.FC = ({ user, editMode, onCloseDialog, loading, disabled, + inK8sCluster = false, }) => { const methods = useFormContext(); const dispatch: AppDispatch = useDispatch(); @@ -170,6 +181,7 @@ export const OnDemandKubernetesDialog: React.FC = ({ onCloseDialog={onCloseDialog} loading={loading} disabled={disabled} + inK8sCluster={inK8sCluster} /> = ({ loading={loading} onCloseDialog={onCloseDialog} editMode={editMode} + inK8sCluster={environment?.inK8sCluster} /> ); case 'ONDEMAND_K8S': diff --git a/src/ui/common/src/components/layouts/menuSidebar.tsx b/src/ui/common/src/components/layouts/menuSidebar.tsx index 20c3e0157..541ccfc35 100644 --- a/src/ui/common/src/components/layouts/menuSidebar.tsx +++ b/src/ui/common/src/components/layouts/menuSidebar.tsx @@ -15,9 +15,9 @@ import { useDispatch } from 'react-redux'; import { Link as RouterLink, useLocation } from 'react-router-dom'; import UserProfile from 'src/utils/auth'; +import { useEnvironmentGetQuery } from '../../handlers/AqueductApi'; import { AppDispatch } from '../../stores/store'; import { getPathPrefix } from '../../utils/getPathPrefix'; -import { apiAddress } from '../hooks/useAqueductConsts'; import { menuSidebar, menuSidebarContent, @@ -27,7 +27,6 @@ import { menuSidebarLogoLink, notificationAlert, } from './menuSidebar.styles'; -import { useEnvironmentGetQuery } from '../../handlers/AqueductApi'; // Left padding = 8px // Right padding = 8px @@ -124,7 +123,9 @@ const MenuSidebar: React.FC<{ const [versionNumber, setVersionNumber] = useState(''); const location = useLocation(); - const { data } = useEnvironmentGetQuery({ apiKey: user.apiKey } as any, { skip: !user?.apiKey }); + const { data } = useEnvironmentGetQuery({ apiKey: user.apiKey } as any, { + skip: !user?.apiKey, + }); useEffect(() => { setCurrentPage(location.pathname); diff --git a/src/ui/common/src/handlers/AqueductApi.ts b/src/ui/common/src/handlers/AqueductApi.ts index 824f75647..a9481bd8f 100644 --- a/src/ui/common/src/handlers/AqueductApi.ts +++ b/src/ui/common/src/handlers/AqueductApi.ts @@ -138,7 +138,10 @@ export const aqueductApi = createApi({ query: (req) => dagResultsGetQuery(req), transformErrorResponse, }), - environmentGet: builder.query({ + environmentGet: builder.query< + EnvironmentGetResponse, + EnvironmentGetRequest + >({ query: (req) => environmentGetQuery(req), transformErrorResponse, }), diff --git a/src/ui/common/src/handlers/v2/EnvironmentGet.ts b/src/ui/common/src/handlers/v2/EnvironmentGet.ts index 99c5685d7..c00591704 100644 --- a/src/ui/common/src/handlers/v2/EnvironmentGet.ts +++ b/src/ui/common/src/handlers/v2/EnvironmentGet.ts @@ -3,8 +3,8 @@ import { APIKeyParameter } from '../parameters/Header'; export type EnvironmentGetRequest = APIKeyParameter; export type EnvironmentGetResponse = { - inK8sCluster: boolean; - version: string; + inK8sCluster: boolean; + version: string; }; export const environmentGetQuery = (req: EnvironmentGetRequest) => ({ From 90e8fd34390e6a6924468c99743ddba3f3933750 Mon Sep 17 00:00:00 2001 From: Andre Giron Date: Fri, 19 May 2023 15:36:03 -0700 Subject: [PATCH 7/8] fix PR feedback --- .../server/handler/v2/get_server_environment.go | 15 ++++++++------- src/golang/cmd/server/routes/routes.go | 2 +- src/golang/cmd/server/server/handlers.go | 2 +- .../common/src/components/layouts/menuSidebar.tsx | 13 ++++--------- 4 files changed, 14 insertions(+), 18 deletions(-) diff --git a/src/golang/cmd/server/handler/v2/get_server_environment.go b/src/golang/cmd/server/handler/v2/get_server_environment.go index 4cf0159b2..703d92733 100644 --- a/src/golang/cmd/server/handler/v2/get_server_environment.go +++ b/src/golang/cmd/server/handler/v2/get_server_environment.go @@ -11,7 +11,7 @@ import ( const inK8sClusterEnvVarName = "AQUEDUCT_IN_K8S_CLUSTER" -type getServerEnvironmentResponse struct { +type getEnvironmentResponse struct { // Whether the server is running within a k8s cluster. InK8sCluster bool `json:"inK8sCluster"` Version string `json:"version"` @@ -20,6 +20,7 @@ type getServerEnvironmentResponse struct { // Route: /api/v2/environment // This file should map directly to // src/ui/common/src/handlers/v2/EnvironmentGet.tsx +// // Method: GET // Request: // @@ -27,25 +28,25 @@ type getServerEnvironmentResponse struct { // `api-key`: user's API Key // // Response: Aqueduct server's environment variables. -type GetServerEnvironmentHandler struct { +type EnvironmentHandler struct { handler.GetHandler } -func (*GetServerEnvironmentHandler) Name() string { - return "GetServerEnvironment" +func (*EnvironmentHandler) Name() string { + return "GetEnvironment" } -func (*GetServerEnvironmentHandler) Prepare(r *http.Request) (interface{}, int, error) { +func (*EnvironmentHandler) Prepare(r *http.Request) (interface{}, int, error) { return nil, http.StatusOK, nil } -func (h *GetServerEnvironmentHandler) Perform(ctx context.Context, interfaceArgs interface{}) (interface{}, int, error) { +func (h *EnvironmentHandler) Perform(ctx context.Context, interfaceArgs interface{}) (interface{}, int, error) { inCluster := false if os.Getenv(inK8sClusterEnvVarName) == "1" { inCluster = true } - return getServerEnvironmentResponse{ + return getEnvironmentResponse{ InK8sCluster: inCluster, Version: lib.ServerVersionNumber, }, http.StatusOK, nil diff --git a/src/golang/cmd/server/routes/routes.go b/src/golang/cmd/server/routes/routes.go index 0c6b17179..a28901b67 100644 --- a/src/golang/cmd/server/routes/routes.go +++ b/src/golang/cmd/server/routes/routes.go @@ -24,7 +24,7 @@ const ( NodeDagOperatorsRoute = "/api/v2/workflow/{workflowID}/dag/{dagID}/node/operators" NodeOperatorContentRoute = "/api/v2/workflow/{workflowID}/dag/{dagID}/node/operator/{nodeID}/content" NodesResultsRoute = "/api/v2/workflow/{workflowID}/result/{dagResultID}/nodes/results" - GetServerEnvironmentRoute = "/api/v2/environment" + EnvironmentRoute = "/api/v2/environment" // V1 routes GetArtifactVersionsRoute = "/api/artifact/versions" diff --git a/src/golang/cmd/server/server/handlers.go b/src/golang/cmd/server/server/handlers.go index 63858dc73..228add7cd 100644 --- a/src/golang/cmd/server/server/handlers.go +++ b/src/golang/cmd/server/server/handlers.go @@ -132,7 +132,7 @@ func (s *AqServer) Handlers() map[string]handler.Handler { DAGResultRepo: s.DAGResultRepo, OperatorRepo: s.OperatorRepo, }, - routes.GetServerEnvironmentRoute: &v2.GetServerEnvironmentHandler{}, + routes.EnvironmentRoute: &v2.EnvironmentHandler{}, // V1 Handlers // (ENG-2715) Remove deprecated ones diff --git a/src/ui/common/src/components/layouts/menuSidebar.tsx b/src/ui/common/src/components/layouts/menuSidebar.tsx index 541ccfc35..cc73f9778 100644 --- a/src/ui/common/src/components/layouts/menuSidebar.tsx +++ b/src/ui/common/src/components/layouts/menuSidebar.tsx @@ -120,23 +120,18 @@ const MenuSidebar: React.FC<{ }> = ({ onSidebarItemClicked, user }) => { const dispatch: AppDispatch = useDispatch(); const [currentPage, setCurrentPage] = useState(undefined); - const [versionNumber, setVersionNumber] = useState(''); const location = useLocation(); - const { data } = useEnvironmentGetQuery({ apiKey: user.apiKey } as any, { + const { data } = useEnvironmentGetQuery({ apiKey: user.apiKey }, { skip: !user?.apiKey, }); + console.log('data: ', data); + useEffect(() => { setCurrentPage(location.pathname); }, [dispatch, location.pathname]); - useEffect(() => { - if (data) { - setVersionNumber(data.version); - } - }, [user.apiKey, data]); - const pathPrefix = getPathPrefix(); return ( @@ -267,7 +262,7 @@ const MenuSidebar: React.FC<{ - {versionNumber.length > 0 ? `v${versionNumber}` : ''} + {data?.version ? `v${data.version}` : ''} From cd894293c1f5b2abd39b0d9e499b1880f3f521e9 Mon Sep 17 00:00:00 2001 From: Andre Giron Date: Fri, 19 May 2023 15:39:28 -0700 Subject: [PATCH 8/8] lint --- src/ui/common/src/components/layouts/menuSidebar.tsx | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/ui/common/src/components/layouts/menuSidebar.tsx b/src/ui/common/src/components/layouts/menuSidebar.tsx index cc73f9778..c4ced5f2c 100644 --- a/src/ui/common/src/components/layouts/menuSidebar.tsx +++ b/src/ui/common/src/components/layouts/menuSidebar.tsx @@ -122,9 +122,12 @@ const MenuSidebar: React.FC<{ const [currentPage, setCurrentPage] = useState(undefined); const location = useLocation(); - const { data } = useEnvironmentGetQuery({ apiKey: user.apiKey }, { - skip: !user?.apiKey, - }); + const { data } = useEnvironmentGetQuery( + { apiKey: user.apiKey }, + { + skip: !user?.apiKey, + } + ); console.log('data: ', data);