From 6799579f700d1983cf487b73747eaddceade7e55 Mon Sep 17 00:00:00 2001 From: Christian Vogt Date: Mon, 30 Sep 2024 14:39:20 -0400 Subject: [PATCH] update useGenericObjectState types --- .../content/createRun/useRunFormData.ts | 4 ++-- .../screens/RegisterModel/RegisterModel.tsx | 8 ++------ .../screens/RegisterModel/RegisterVersion.tsx | 8 ++------ .../InferenceServiceServingRuntimeSection.tsx | 4 +++- .../NIMServiceModal/DeployNIMServiceModal.tsx | 2 +- .../AuthServingRuntimeSection.tsx | 11 +++-------- .../ManageServingRuntimeModal.tsx | 4 ++-- .../ServingRuntimeSizeExpandedField.tsx | 11 +++-------- .../ServingRuntimeSizeSection.tsx | 9 +++------ .../ServingRuntimeTokenInput.tsx | 9 +++------ .../ServingRuntimeTokenSection.tsx | 11 +++-------- .../projects/kServeModal/ManageKServeModal.tsx | 4 ++-- .../src/pages/modelServing/screens/types.ts | 18 ++++++++---------- frontend/src/pages/projects/types.ts | 6 ++++-- .../src/utilities/useGenericObjectState.ts | 4 ++-- 15 files changed, 43 insertions(+), 70 deletions(-) diff --git a/frontend/src/concepts/pipelines/content/createRun/useRunFormData.ts b/frontend/src/concepts/pipelines/content/createRun/useRunFormData.ts index 11fad9ef67..3e20a3241b 100644 --- a/frontend/src/concepts/pipelines/content/createRun/useRunFormData.ts +++ b/frontend/src/concepts/pipelines/content/createRun/useRunFormData.ts @@ -144,7 +144,7 @@ const useRunFormData = ( const { project } = usePipelinesAPI(); const { pipeline, version, experiment, nameDesc } = initialFormData || {}; - const formState = useGenericObjectState({ + const formState = useGenericObjectState(() => ({ project, nameDesc: nameDesc ?? { name: '', description: '' }, pipeline: pipeline ?? null, @@ -161,7 +161,7 @@ const useRunFormData = ( {}, ), ...initialFormData, - }); + })); const [, setFormValue] = formState; useUpdateExperimentFormData(formState, experiment); diff --git a/frontend/src/pages/modelRegistry/screens/RegisterModel/RegisterModel.tsx b/frontend/src/pages/modelRegistry/screens/RegisterModel/RegisterModel.tsx index 78ec983789..ba07a641e0 100644 --- a/frontend/src/pages/modelRegistry/screens/RegisterModel/RegisterModel.tsx +++ b/frontend/src/pages/modelRegistry/screens/RegisterModel/RegisterModel.tsx @@ -16,8 +16,7 @@ import { Link } from 'react-router-dom'; import FormSection from '~/components/pf-overrides/FormSection'; import ApplicationsPage from '~/pages/ApplicationsPage'; import { modelRegistryUrl, registeredModelUrl } from '~/pages/modelRegistry/screens/routeUtils'; -import { ValueOf } from '~/typeHelpers'; -import { useRegisterModelData, RegistrationCommonFormData } from './useRegisterModelData'; +import { useRegisterModelData } from './useRegisterModelData'; import { isRegisterModelSubmitDisabled, registerModel } from './utils'; import RegistrationCommonFormSections from './RegistrationCommonFormSections'; import { useRegistrationCommonState } from './useRegistrationCommonState'; @@ -90,10 +89,7 @@ const RegisterModel: React.FC = () => { , - ) => setData(propKey, propValue)} + setData={(propKey, propValue) => setData(propKey, propValue)} isFirstVersion /> diff --git a/frontend/src/pages/modelRegistry/screens/RegisterModel/RegisterVersion.tsx b/frontend/src/pages/modelRegistry/screens/RegisterModel/RegisterVersion.tsx index 257998be4c..9dd4ba4ad8 100644 --- a/frontend/src/pages/modelRegistry/screens/RegisterModel/RegisterVersion.tsx +++ b/frontend/src/pages/modelRegistry/screens/RegisterModel/RegisterVersion.tsx @@ -16,8 +16,7 @@ import ApplicationsPage from '~/pages/ApplicationsPage'; import { modelRegistryUrl, registeredModelUrl } from '~/pages/modelRegistry/screens/routeUtils'; import useRegisteredModels from '~/concepts/modelRegistry/apiHooks/useRegisteredModels'; import { filterLiveModels } from '~/concepts/modelRegistry/utils'; -import { ValueOf } from '~/typeHelpers'; -import { RegistrationCommonFormData, useRegisterVersionData } from './useRegisterModelData'; +import { useRegisterVersionData } from './useRegisterModelData'; import { isRegisterVersionSubmitDisabled, registerVersion } from './utils'; import RegistrationCommonFormSections from './RegistrationCommonFormSections'; import { useRegistrationCommonState } from './useRegistrationCommonState'; @@ -119,10 +118,7 @@ const RegisterVersion: React.FC = () => { , - ) => setData(propKey, propValue)} + setData={(propKey, propValue) => setData(propKey, propValue)} isFirstVersion={false} latestVersion={latestVersion} /> diff --git a/frontend/src/pages/modelServing/screens/projects/InferenceServiceModal/InferenceServiceServingRuntimeSection.tsx b/frontend/src/pages/modelServing/screens/projects/InferenceServiceModal/InferenceServiceServingRuntimeSection.tsx index c62eaa2ebd..e3a947f01a 100644 --- a/frontend/src/pages/modelServing/screens/projects/InferenceServiceModal/InferenceServiceServingRuntimeSection.tsx +++ b/frontend/src/pages/modelServing/screens/projects/InferenceServiceModal/InferenceServiceServingRuntimeSection.tsx @@ -66,7 +66,9 @@ const InferenceServiceServingRuntimeSection: React.FC< } onChange={(option) => { setData('servingRuntimeName', option); - setData('format', ''); + setData('format', { + name: '', + }); }} /> diff --git a/frontend/src/pages/modelServing/screens/projects/NIMServiceModal/DeployNIMServiceModal.tsx b/frontend/src/pages/modelServing/screens/projects/NIMServiceModal/DeployNIMServiceModal.tsx index e3d27a932d..43ba98252e 100644 --- a/frontend/src/pages/modelServing/screens/projects/NIMServiceModal/DeployNIMServiceModal.tsx +++ b/frontend/src/pages/modelServing/screens/projects/NIMServiceModal/DeployNIMServiceModal.tsx @@ -321,7 +321,7 @@ const DeployNIMServiceModal: React.FC = ({ setCreateDataInferenceService(key, value)} sizes={sizes} servingRuntimeSelected={servingRuntimeSelected} acceleratorProfileState={acceleratorProfileState} diff --git a/frontend/src/pages/modelServing/screens/projects/ServingRuntimeModal/AuthServingRuntimeSection.tsx b/frontend/src/pages/modelServing/screens/projects/ServingRuntimeModal/AuthServingRuntimeSection.tsx index e365356048..5c675164c5 100644 --- a/frontend/src/pages/modelServing/screens/projects/ServingRuntimeModal/AuthServingRuntimeSection.tsx +++ b/frontend/src/pages/modelServing/screens/projects/ServingRuntimeModal/AuthServingRuntimeSection.tsx @@ -11,18 +11,13 @@ import { } from '@patternfly/react-core'; import { OutlinedQuestionCircleIcon } from '@patternfly/react-icons'; import { UpdateObjectAtPropAndValue } from '~/pages/projects/types'; -import { - CreatingInferenceServiceObject, - CreatingServingRuntimeObject, -} from '~/pages/modelServing/screens/types'; +import { CreatingModelServingObjectCommon } from '~/pages/modelServing/screens/types'; import ServingRuntimeTokenSection from './ServingRuntimeTokenSection'; type AuthServingRuntimeSectionProps = { - data: CreatingServingRuntimeObject | CreatingInferenceServiceObject; - setData: - | UpdateObjectAtPropAndValue - | UpdateObjectAtPropAndValue; + data: CreatingModelServingObjectCommon; + setData: UpdateObjectAtPropAndValue; allowCreate: boolean; publicRoute?: boolean; }; diff --git a/frontend/src/pages/modelServing/screens/projects/ServingRuntimeModal/ManageServingRuntimeModal.tsx b/frontend/src/pages/modelServing/screens/projects/ServingRuntimeModal/ManageServingRuntimeModal.tsx index 89576adf8c..e50036a775 100644 --- a/frontend/src/pages/modelServing/screens/projects/ServingRuntimeModal/ManageServingRuntimeModal.tsx +++ b/frontend/src/pages/modelServing/screens/projects/ServingRuntimeModal/ManageServingRuntimeModal.tsx @@ -215,7 +215,7 @@ const ManageServingRuntimeModal: React.FC = ({ setCreateData(key, value)} sizes={sizes} servingRuntimeSelected={servingRuntimeSelected} acceleratorProfileState={initialAcceleratorProfile} @@ -226,7 +226,7 @@ const ManageServingRuntimeModal: React.FC = ({ setCreateData(key, value)} allowCreate={allowCreate} publicRoute /> diff --git a/frontend/src/pages/modelServing/screens/projects/ServingRuntimeModal/ServingRuntimeSizeExpandedField.tsx b/frontend/src/pages/modelServing/screens/projects/ServingRuntimeModal/ServingRuntimeSizeExpandedField.tsx index 398c3da730..08f27a804c 100644 --- a/frontend/src/pages/modelServing/screens/projects/ServingRuntimeModal/ServingRuntimeSizeExpandedField.tsx +++ b/frontend/src/pages/modelServing/screens/projects/ServingRuntimeModal/ServingRuntimeSizeExpandedField.tsx @@ -2,19 +2,14 @@ import * as React from 'react'; import { FormGroup, Grid } from '@patternfly/react-core'; import IndentSection from '~/pages/projects/components/IndentSection'; import { UpdateObjectAtPropAndValue } from '~/pages/projects/types'; -import { - CreatingInferenceServiceObject, - CreatingServingRuntimeObject, -} from '~/pages/modelServing/screens/types'; +import { CreatingModelServingObjectCommon } from '~/pages/modelServing/screens/types'; import { ContainerResourceAttributes, ContainerResources } from '~/types'; import CPUField from '~/components/CPUField'; import MemoryField from '~/components/MemoryField'; type ServingRuntimeSizeExpandedFieldProps = { - data: CreatingServingRuntimeObject | CreatingInferenceServiceObject; - setData: - | UpdateObjectAtPropAndValue - | UpdateObjectAtPropAndValue; + data: CreatingModelServingObjectCommon; + setData: UpdateObjectAtPropAndValue; }; type ResourceKeys = keyof ContainerResources; diff --git a/frontend/src/pages/modelServing/screens/projects/ServingRuntimeModal/ServingRuntimeSizeSection.tsx b/frontend/src/pages/modelServing/screens/projects/ServingRuntimeModal/ServingRuntimeSizeSection.tsx index 0d2286cf30..892fd47a91 100644 --- a/frontend/src/pages/modelServing/screens/projects/ServingRuntimeModal/ServingRuntimeSizeSection.tsx +++ b/frontend/src/pages/modelServing/screens/projects/ServingRuntimeModal/ServingRuntimeSizeSection.tsx @@ -3,8 +3,7 @@ import { FormGroup, Stack, StackItem, Popover, Icon } from '@patternfly/react-co import { OutlinedQuestionCircleIcon } from '@patternfly/react-icons'; import { UpdateObjectAtPropAndValue } from '~/pages/projects/types'; import { - CreatingInferenceServiceObject, - CreatingServingRuntimeObject, + CreatingModelServingObjectCommon, ModelServingSize, } from '~/pages/modelServing/screens/types'; import { ServingRuntimeKind } from '~/k8sTypes'; @@ -18,10 +17,8 @@ import SimpleSelect from '~/components/SimpleSelect'; import ServingRuntimeSizeExpandedField from './ServingRuntimeSizeExpandedField'; type ServingRuntimeSizeSectionProps = { - data: CreatingServingRuntimeObject | CreatingInferenceServiceObject; - setData: - | UpdateObjectAtPropAndValue - | UpdateObjectAtPropAndValue; + data: CreatingModelServingObjectCommon; + setData: UpdateObjectAtPropAndValue; sizes: ModelServingSize[]; servingRuntimeSelected?: ServingRuntimeKind; acceleratorProfileState: AcceleratorProfileState; diff --git a/frontend/src/pages/modelServing/screens/projects/ServingRuntimeModal/ServingRuntimeTokenInput.tsx b/frontend/src/pages/modelServing/screens/projects/ServingRuntimeModal/ServingRuntimeTokenInput.tsx index 4e6cb115ad..92d404f851 100644 --- a/frontend/src/pages/modelServing/screens/projects/ServingRuntimeModal/ServingRuntimeTokenInput.tsx +++ b/frontend/src/pages/modelServing/screens/projects/ServingRuntimeModal/ServingRuntimeTokenInput.tsx @@ -13,17 +13,14 @@ import { import { ExclamationCircleIcon, MinusCircleIcon } from '@patternfly/react-icons'; import { UpdateObjectAtPropAndValue } from '~/pages/projects/types'; import { - CreatingInferenceServiceObject, - CreatingServingRuntimeObject, + CreatingModelServingObjectCommon, ServingRuntimeToken, } from '~/pages/modelServing/screens/types'; import { translateDisplayNameForK8s } from '~/concepts/k8s/utils'; type ServingRuntimeTokenInputProps = { - data: CreatingServingRuntimeObject | CreatingInferenceServiceObject; - setData: - | UpdateObjectAtPropAndValue - | UpdateObjectAtPropAndValue; + data: CreatingModelServingObjectCommon; + setData: UpdateObjectAtPropAndValue; token: ServingRuntimeToken; disabled?: boolean; }; diff --git a/frontend/src/pages/modelServing/screens/projects/ServingRuntimeModal/ServingRuntimeTokenSection.tsx b/frontend/src/pages/modelServing/screens/projects/ServingRuntimeModal/ServingRuntimeTokenSection.tsx index 363a4ddd5f..9dbee1b4d1 100644 --- a/frontend/src/pages/modelServing/screens/projects/ServingRuntimeModal/ServingRuntimeTokenSection.tsx +++ b/frontend/src/pages/modelServing/screens/projects/ServingRuntimeModal/ServingRuntimeTokenSection.tsx @@ -3,17 +3,12 @@ import { Alert, Button, Checkbox, FormGroup, Stack, StackItem } from '@patternfl import { PlusCircleIcon } from '@patternfly/react-icons'; import IndentSection from '~/pages/projects/components/IndentSection'; import { UpdateObjectAtPropAndValue } from '~/pages/projects/types'; -import { - CreatingInferenceServiceObject, - CreatingServingRuntimeObject, -} from '~/pages/modelServing/screens/types'; +import { CreatingModelServingObjectCommon } from '~/pages/modelServing/screens/types'; import ServingRuntimeTokenInput from './ServingRuntimeTokenInput'; type ServingRuntimeTokenSectionProps = { - data: CreatingServingRuntimeObject | CreatingInferenceServiceObject; - setData: - | UpdateObjectAtPropAndValue - | UpdateObjectAtPropAndValue; + data: CreatingModelServingObjectCommon; + setData: UpdateObjectAtPropAndValue; allowCreate: boolean; createNewToken: () => void; }; diff --git a/frontend/src/pages/modelServing/screens/projects/kServeModal/ManageKServeModal.tsx b/frontend/src/pages/modelServing/screens/projects/kServeModal/ManageKServeModal.tsx index 5946582e56..f81ace059a 100644 --- a/frontend/src/pages/modelServing/screens/projects/kServeModal/ManageKServeModal.tsx +++ b/frontend/src/pages/modelServing/screens/projects/kServeModal/ManageKServeModal.tsx @@ -377,7 +377,7 @@ const ManageKServeModal: React.FC = ({ /> setCreateDataInferenceService(key, value)} sizes={sizes} servingRuntimeSelected={servingRuntimeSelected} acceleratorProfileState={acceleratorProfileState} @@ -388,7 +388,7 @@ const ManageKServeModal: React.FC = ({ {isAuthorinoEnabled && ( setCreateDataInferenceService(key, value)} allowCreate={allowCreate} publicRoute /> diff --git a/frontend/src/pages/modelServing/screens/types.ts b/frontend/src/pages/modelServing/screens/types.ts index f443d593de..6a33c6adce 100644 --- a/frontend/src/pages/modelServing/screens/types.ts +++ b/frontend/src/pages/modelServing/screens/types.ts @@ -40,14 +40,9 @@ export type SupportedModelFormatsInfo = { priority?: number; }; -export type CreatingServingRuntimeObject = { - name: string; +export type CreatingServingRuntimeObject = CreatingModelServingObjectCommon & { servingRuntimeTemplateName: string; numReplicas: number; - modelSize: ModelServingSize; - externalRoute: boolean; - tokenAuth: boolean; - tokens: ServingRuntimeToken[]; imageName?: string; supportedModelFormatsInfo?: SupportedModelFormatsInfo; }; @@ -64,19 +59,22 @@ export type ModelServingSize = { resources: ContainerResources; }; -export type CreatingInferenceServiceObject = { - name: string; +export type CreatingInferenceServiceObject = CreatingModelServingObjectCommon & { project: string; servingRuntimeName: string; storage: InferenceServiceStorage; - modelSize: ModelServingSize; format: InferenceServiceFormat; maxReplicas: number; minReplicas: number; + labels?: Record; +}; + +export type CreatingModelServingObjectCommon = { + name: string; + modelSize: ModelServingSize; externalRoute: boolean; tokenAuth: boolean; tokens: ServingRuntimeToken[]; - labels?: Record; }; export enum InferenceServiceStorageType { diff --git a/frontend/src/pages/projects/types.ts b/frontend/src/pages/projects/types.ts index 1c892902fa..2f980aa7d7 100644 --- a/frontend/src/pages/projects/types.ts +++ b/frontend/src/pages/projects/types.ts @@ -9,14 +9,16 @@ import { Volume, VolumeMount, } from '~/types'; -import { ValueOf } from '~/typeHelpers'; import { AWSSecretKind } from '~/k8sTypes'; import { AcceleratorProfileState } from '~/utilities/useAcceleratorProfileState'; import { AcceleratorProfileSelectFieldState } from '~/pages/notebookController/screens/server/AcceleratorProfileSelectField'; import { K8sNameDescriptionFieldData } from '~/concepts/k8s/K8sNameDescriptionField/types'; import { AwsKeys } from './dataConnections/const'; -export type UpdateObjectAtPropAndValue = (propKey: keyof T, propValue: ValueOf) => void; +export type UpdateObjectAtPropAndValue = ( + propKey: K, + propValue: Partial[K], +) => void; export type NameDescType = { name: string; diff --git a/frontend/src/utilities/useGenericObjectState.ts b/frontend/src/utilities/useGenericObjectState.ts index ae2808256d..b5b985fd83 100644 --- a/frontend/src/utilities/useGenericObjectState.ts +++ b/frontend/src/utilities/useGenericObjectState.ts @@ -7,14 +7,14 @@ export type GenericObjectState = [ resetDefault: () => void, ]; -const useGenericObjectState = (defaultData: T): GenericObjectState => { +const useGenericObjectState = (defaultData: T | (() => T)): GenericObjectState => { const [value, setValue] = React.useState(defaultData); const setPropValue = React.useCallback>((propKey, propValue) => { setValue((oldValue) => ({ ...oldValue, [propKey]: propValue })); }, []); - const defaultDataRef = React.useRef(defaultData); + const defaultDataRef = React.useRef(value); const resetToDefault = React.useCallback(() => { setValue(defaultDataRef.current); }, []);