Skip to content

Commit ecf5a50

Browse files
committed
made StateActionToggle generic and import fixes
1 parent fba6a28 commit ecf5a50

File tree

4 files changed

+25
-11
lines changed

4 files changed

+25
-11
lines changed

frontend/src/__tests__/cypress/cypress/tests/mocked/modelServing/runtime/servingRuntimeList.cy.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1350,7 +1350,10 @@ describe('Serving Runtime List', () => {
13501350
isModelMesh: false,
13511351
activeModelState: 'Unknown',
13521352
});
1353-
stoppedInferenceService.metadata.annotations = { 'serving.kserve.io/stop': 'true' };
1353+
stoppedInferenceService.metadata.annotations = {
1354+
...stoppedInferenceService.metadata.annotations,
1355+
'serving.kserve.io/stop': 'true',
1356+
};
13541357

13551358
cy.intercept(
13561359
'PATCH',

frontend/src/components/StateActionToggle.tsx

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,28 @@
11
import * as React from 'react';
22
import { Button } from '@patternfly/react-core';
3-
import { NotebookState } from '#~/pages/projects/notebook/types';
4-
import { ModelServingState } from '#~/pages/modelServing/screens/types.ts';
53

6-
type Props = {
7-
currentState: NotebookState | ModelServingState;
4+
// Define a minimal interface for the required state fields
5+
export interface ToggleState {
6+
isStarting: boolean;
7+
isStopping: boolean;
8+
isRunning: boolean;
9+
isStopped: boolean;
10+
}
11+
12+
// Make the component generic, constrained to ToggleState
13+
export type StateActionToggleProps<T extends ToggleState> = {
14+
currentState: T;
815
onStart: () => void;
916
onStop: () => void;
1017
isDisabled?: boolean;
1118
};
1219

13-
const StateActionToggle: React.FC<Props> = ({ currentState, onStart, onStop, isDisabled }) => {
20+
const StateActionToggle = <T extends ToggleState>({
21+
currentState,
22+
onStart,
23+
onStop,
24+
isDisabled,
25+
}: StateActionToggleProps<T>): React.ReactElement => {
1426
const { isStarting, isRunning, isStopping } = currentState;
1527
const actionDisabled = isDisabled || isStopping || isStarting;
1628

frontend/src/pages/modelServing/__tests__/utils.spec.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -322,9 +322,8 @@ describe('getModelServingStatus', () => {
322322

323323
it('should return correct status when model is stopped', () => {
324324
const inferenceService = mockInferenceServiceK8sResource({});
325-
if (inferenceService.metadata.annotations) {
326-
inferenceService.metadata.annotations['serving.kserve.io/stop'] = 'true';
327-
}
325+
inferenceService.metadata.annotations ??= {};
326+
inferenceService.metadata.annotations['serving.kserve.io/stop'] = 'true';
328327
expect(getModelServingStatus(inferenceService)).toEqual({
329328
inferenceService,
330329
isStopped: true,

frontend/src/pages/modelServing/screens/global/InferenceServiceTableRow.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ import { getDisplayNameFromK8sResource } from '#~/concepts/k8s/utils';
1212
import { byName, ProjectsContext } from '#~/concepts/projects/ProjectsContext';
1313
import { isProjectNIMSupported } from '#~/pages/modelServing/screens/projects/nimUtils';
1414
import useServingPlatformStatuses from '#~/pages/modelServing/useServingPlatformStatuses';
15-
import StateActionToggle from '#~/components/StateActionToggle.tsx';
16-
import { patchInferenceServiceStatus } from '#~/api/k8s/inferenceServices.ts';
15+
import StateActionToggle from '#~/components/StateActionToggle';
16+
import { patchInferenceServiceStatus } from '#~/api/k8s/inferenceServices';
1717
import InferenceServiceEndpoint from './InferenceServiceEndpoint';
1818
import InferenceServiceProject from './InferenceServiceProject';
1919
import InferenceServiceStatus from './InferenceServiceStatus';

0 commit comments

Comments
 (0)