|
@@ -17,17 +17,22 @@ export type Event = {
|
|
|
timestamp: string;
|
|
timestamp: string;
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
-type EventsContextType = {
|
|
|
|
|
|
|
+type EventController = { type: string; name: string };
|
|
|
|
|
+
|
|
|
|
|
+export type EventsContextType = {
|
|
|
isPorterAgentInstalled: boolean;
|
|
isPorterAgentInstalled: boolean;
|
|
|
isPorterAgentInstalling: boolean;
|
|
isPorterAgentInstalling: boolean;
|
|
|
isLoading: boolean;
|
|
isLoading: boolean;
|
|
|
eventList: Event[];
|
|
eventList: Event[];
|
|
|
selectedEvent: Event | null;
|
|
selectedEvent: Event | null;
|
|
|
|
|
+ availableControllers: EventController[];
|
|
|
|
|
+ enableNodeEvents: boolean;
|
|
|
selectEvent: (id: number) => void;
|
|
selectEvent: (id: number) => void;
|
|
|
clearSelectedEvent: () => void;
|
|
clearSelectedEvent: () => void;
|
|
|
setLimit: (limit: number) => void;
|
|
setLimit: (limit: number) => void;
|
|
|
setResourceType: (newResourceType: "pod" | "hpa" | "node") => void;
|
|
setResourceType: (newResourceType: "pod" | "hpa" | "node") => void;
|
|
|
installPorterAgent: () => Promise<void>;
|
|
installPorterAgent: () => Promise<void>;
|
|
|
|
|
+ setSelectedController: (controllerName: EventController) => void;
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
const defaultEventContext: EventsContextType = {
|
|
const defaultEventContext: EventsContextType = {
|
|
@@ -36,19 +41,20 @@ const defaultEventContext: EventsContextType = {
|
|
|
isPorterAgentInstalling: false,
|
|
isPorterAgentInstalling: false,
|
|
|
isLoading: true,
|
|
isLoading: true,
|
|
|
selectedEvent: null,
|
|
selectedEvent: null,
|
|
|
|
|
+ enableNodeEvents: false,
|
|
|
|
|
+ availableControllers: [],
|
|
|
selectEvent: () => {},
|
|
selectEvent: () => {},
|
|
|
clearSelectedEvent: () => {},
|
|
clearSelectedEvent: () => {},
|
|
|
setLimit: () => {},
|
|
setLimit: () => {},
|
|
|
setResourceType: () => {},
|
|
setResourceType: () => {},
|
|
|
installPorterAgent: async () => {},
|
|
installPorterAgent: async () => {},
|
|
|
|
|
+ setSelectedController: async () => {},
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
export const EventContext = createContext<EventsContextType>(
|
|
export const EventContext = createContext<EventsContextType>(
|
|
|
defaultEventContext
|
|
defaultEventContext
|
|
|
);
|
|
);
|
|
|
|
|
|
|
|
-type EventController = { type: string; name: string };
|
|
|
|
|
-
|
|
|
|
|
type Props = {
|
|
type Props = {
|
|
|
controllers: EventController[];
|
|
controllers: EventController[];
|
|
|
enableNodeEvents: boolean;
|
|
enableNodeEvents: boolean;
|
|
@@ -104,6 +110,10 @@ const EventsContextProvider: React.FC<Props> = ({
|
|
|
}, [isPorterAgentInstalling]);
|
|
}, [isPorterAgentInstalling]);
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
useEffect(() => {
|
|
|
|
|
+ if (!selectedController || !isPorterAgentInstalled) {
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
setIsLoading(true);
|
|
setIsLoading(true);
|
|
|
// Clear out event list if the resource type or the selected controller changed
|
|
// Clear out event list if the resource type or the selected controller changed
|
|
|
if (
|
|
if (
|
|
@@ -113,8 +123,8 @@ const EventsContextProvider: React.FC<Props> = ({
|
|
|
setEventList([]);
|
|
setEventList([]);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- getEventList();
|
|
|
|
|
- }, [isPorterAgentInstalled, selectedController, resourceType, sortBy]);
|
|
|
|
|
|
|
+ getEventList().then(() => setIsLoading(false));
|
|
|
|
|
+ }, [isPorterAgentInstalled, selectedController, resourceType, sortBy, limit]);
|
|
|
|
|
|
|
|
const checkIfPorterAgentIsInstalled = async () => {
|
|
const checkIfPorterAgentIsInstalled = async () => {
|
|
|
try {
|
|
try {
|
|
@@ -130,7 +140,6 @@ const EventsContextProvider: React.FC<Props> = ({
|
|
|
setIsPorterAgentInstalled(true);
|
|
setIsPorterAgentInstalled(true);
|
|
|
} catch (error) {
|
|
} catch (error) {
|
|
|
setIsPorterAgentInstalled(false);
|
|
setIsPorterAgentInstalled(false);
|
|
|
- setCurrentError(JSON.stringify(error));
|
|
|
|
|
}
|
|
}
|
|
|
};
|
|
};
|
|
|
|
|
|
|
@@ -167,8 +176,8 @@ const EventsContextProvider: React.FC<Props> = ({
|
|
|
skip: eventList.length,
|
|
skip: eventList.length,
|
|
|
type: resourceType,
|
|
type: resourceType,
|
|
|
sort_by: sortBy,
|
|
sort_by: sortBy,
|
|
|
- owner_name: selectedController.name,
|
|
|
|
|
- owner_type: selectedController.type,
|
|
|
|
|
|
|
+ owner_name: selectedController?.name,
|
|
|
|
|
+ owner_type: selectedController?.type,
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
cluster_id: currentCluster.id,
|
|
cluster_id: currentCluster.id,
|
|
@@ -179,7 +188,7 @@ const EventsContextProvider: React.FC<Props> = ({
|
|
|
setEventList(newEventList);
|
|
setEventList(newEventList);
|
|
|
} catch (error) {
|
|
} catch (error) {
|
|
|
setEventList([]);
|
|
setEventList([]);
|
|
|
- setCurrentError(JSON.stringify(error));
|
|
|
|
|
|
|
+ setCurrentError((error as Error)?.message || JSON.stringify(error));
|
|
|
}
|
|
}
|
|
|
};
|
|
};
|
|
|
|
|
|
|
@@ -195,16 +204,19 @@ const EventsContextProvider: React.FC<Props> = ({
|
|
|
return (
|
|
return (
|
|
|
<EventContext.Provider
|
|
<EventContext.Provider
|
|
|
value={{
|
|
value={{
|
|
|
|
|
+ enableNodeEvents,
|
|
|
isPorterAgentInstalled,
|
|
isPorterAgentInstalled,
|
|
|
isPorterAgentInstalling,
|
|
isPorterAgentInstalling,
|
|
|
isLoading,
|
|
isLoading,
|
|
|
eventList,
|
|
eventList,
|
|
|
selectedEvent,
|
|
selectedEvent,
|
|
|
|
|
+ availableControllers: controllers,
|
|
|
selectEvent,
|
|
selectEvent,
|
|
|
clearSelectedEvent,
|
|
clearSelectedEvent,
|
|
|
setLimit,
|
|
setLimit,
|
|
|
setResourceType,
|
|
setResourceType,
|
|
|
installPorterAgent,
|
|
installPorterAgent,
|
|
|
|
|
+ setSelectedController,
|
|
|
}}
|
|
}}
|
|
|
>
|
|
>
|
|
|
{children}
|
|
{children}
|