Skip to content

Commit f7c2fe2

Browse files
committed
added kub metrics to kafka logic
1 parent 4a50de9 commit f7c2fe2

File tree

19 files changed

+4759
-33
lines changed

19 files changed

+4759
-33
lines changed

__tests__/test_settings.json

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1 @@
1-
{
2-
"setupRequired": false,
3-
"services": [
4-
5-
],
6-
"mode": "light mode",
7-
"splash": true,
8-
"landingPage": "dashBoard"
9-
}
1+
{"setupRequired":false,"services":[["chronosDB","MongoDB","mongodb+srv://jj289:[email protected]/chronosDB?retryWrites=true&w=majority","","Dec 13, 2022 2:58 PM"],["test","MongoDB","mongodb+srv://troyprejusa:[email protected]/test?retryWrites=true&w=majority","","Dec 13, 2022 5:14 PM"]],"mode":"light mode","splash":true,"landingPage":"dashBoard"}

app/App.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,7 @@ import DashboardContainer from './containers/DashboardContainer';
44
import './stylesheets/scrollBar.scss';
55

66
const App: React.FC = React.memo(() => {
7-
const [firstVisit, setFirstVisit] = useState(true);
8-
return firstVisit ? <Splash setFirstVisit={setFirstVisit} /> : <DashboardContainer />;
7+
return <DashboardContainer />;
98
});
109

1110
export default App;

app/components/TransferColumns.tsx

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -102,13 +102,23 @@ const TransferColumns = React.memo(() => {
102102
useEffect(() => {
103103
if (service === '') {
104104
return;
105-
} else if (service === 'kafkametrics') {
105+
}
106+
if (service === 'kafkametrics') {
106107
if (eventDataList && eventDataList.length > 0) {
107108
setMetricsPool(getMetrics('event', eventDataList));
108109
} else if (eventMetricsReady) {
109110
setMetricsPool(eventMetrics);
110111
}
111-
} else if (!service.includes('kafkametrics')) {
112+
}
113+
// JJ-ADDITION (CAN ALSO JUST ADD OR OPERATOR TO ABOVE CONDITIONAL)
114+
// else if (service === 'kubernetesmetrics') {
115+
// if (eventDataList && eventDataList.length > 0) {
116+
// setMetricsPool(getMetrics('event', eventDataList));
117+
// } else if (eventMetricsReady) {
118+
// setMetricsPool(eventMetrics);
119+
// }
120+
// }
121+
else if (!service.includes('kafkametrics')) {
112122
if (healthDataList && healthDataList.length > 0) {
113123
setMetricsPool(getMetrics('health', healthDataList));
114124
} else if (healthMetricsReady) {

app/containers/EventContainer.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,9 @@ const EventContainer: React.FC<EventContainerProps> = React.memo(props => {
5959
}
6060
return lst;
6161
};
62-
63-
return <div>{service.includes('kafkametrics') ? eventChartsArr : []}</div>;
62+
// JJ-ADDITION
63+
return <div>{service.includes('kafkametrics' || 'kubernetesmetrics') ? eventChartsArr : []}</div>;
64+
// return <div>{service.includes('kafkametrics') ? eventChartsArr : []}</div>;
6465
});
6566

6667
export default EventContainer;

app/containers/GraphsContainer.tsx

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,14 +43,20 @@ const GraphsContainer: React.FC<GraphsContainerProps> = React.memo(props => {
4343
const { fetchHealthData, setHealthData, services } = useContext(HealthContext);
4444
const { setDockerData, dockerData } = useContext(DockerContext);
4545
const { fetchEventData, setEventData } = useContext(EventContext);
46+
// const { fetchKafkaEventData, setKafkaEventData } = useContext(EventContext);
47+
// const { fetchKubernetesEventData, setKubernetesEventData } = useContext(EventContext);
4648
const { fetchCommsData } = useContext(CommsContext);
4749
const { selectedMetrics } = useContext(QueryContext);
4850
const [chart, setChart] = useState<string>('all');
4951
const [prevRoute, setPrevRoute] = useState<string>('');
5052

5153
useEffect(() => {
5254
const serviceArray = service.split(' ');
53-
const healthServiceArray = serviceArray.filter((value: string) => value !== 'kafkametrics');
55+
// const healthServiceArray = serviceArray.filter((value: string) => value !== 'kafkametrics');
56+
// JJ-ADDITION
57+
const healthServiceArray = serviceArray.filter(
58+
(value: string) => value !== 'kafkametrics' || 'kubernetesmetrics'
59+
);
5460
if (live) {
5561
setIntervalID(
5662
setInterval(() => {
@@ -59,6 +65,10 @@ const GraphsContainer: React.FC<GraphsContainerProps> = React.memo(props => {
5965
if (service.includes('kafkametrics')) {
6066
fetchEventData('kafkametrics');
6167
}
68+
// JJ-ADDITION
69+
if (service.includes('kubernetesmetrics')) {
70+
fetchEventData('kubernetesmetrics');
71+
}
6272
}, 3000)
6373
);
6474
} else {
@@ -68,6 +78,10 @@ const GraphsContainer: React.FC<GraphsContainerProps> = React.memo(props => {
6878
if (service.includes('kafkametrics')) {
6979
fetchEventData();
7080
}
81+
// JJ-ADDITION
82+
if (service.includes('kubernetesmetrics')) {
83+
fetchEventData();
84+
}
7185
}
7286

7387
return () => {
@@ -96,7 +110,7 @@ const GraphsContainer: React.FC<GraphsContainerProps> = React.memo(props => {
96110
let colour = '#';
97111
for (let i = 0; i < 3; i++) {
98112
const value = (hash >> (i * 8)) & 0xff;
99-
colour += `00${value.toString(16)}`.substr(-2);
113+
colour += `00${value.toString(16)}`.substring(-2);
100114
}
101115
return colour;
102116
}

app/containers/HealthContainer.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,8 @@ const HealthContainer: React.FC<HealthContainerProps> = React.memo(props => {
6969
}, [healthData, category]);
7070

7171
return <div>{service !== 'kafkametrics' ? healthChartsArr : []}</div>;
72+
// JJ-ADDITION
73+
// return <div>{service.includes('kafkametrics' || 'kubernetesmetrics') ? eventChartsArr : []}</div>;
7274
});
7375

7476
export default HealthContainer;

app/context/EventContext.tsx

Lines changed: 63 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ export const EventContext = React.createContext<any>(null);
1616

1717
const EventContextProvider: React.FC = React.memo(({ children }) => {
1818
const [eventData, setEventData] = useState({ eventDataList: [], eventTimeList: [] });
19+
// const [eventKafkaData, setEventKafkaData] = useState({ eventDataList: [], eventTimeList: [] });
20+
// const [eventKubernetesData, setEventKubernetesData] = useState({ eventDataList: [], eventTimeList: [] });
1921

2022
function tryParseJSON(jsonString: any) {
2123
try {
@@ -29,20 +31,62 @@ const EventContextProvider: React.FC = React.memo(({ children }) => {
2931
return false;
3032
}
3133

32-
const fetchEventData = useCallback(() => {
33-
ipcRenderer.removeAllListeners('kafkaResponse');
34-
ipcRenderer.send('kafkaRequest');
35-
ipcRenderer.on('kafkaResponse', (event: Electron.Event, data: any) => {
36-
let result: any;
37-
if (tryParseJSON(data)) result = JSON.parse(data);
38-
let transformedData: any = {};
39-
if (result && result.length > 0) {
40-
transformedData = transformEventData(result[0]['kafkametrics']);
41-
setEventData(transformedData);
42-
}
43-
});
34+
const fetchEventData = useCallback((arg: any) => {
35+
if (arg === 'kafkametrics') {
36+
ipcRenderer.removeAllListeners('kafkaResponse');
37+
ipcRenderer.send('kafkaRequest');
38+
ipcRenderer.on('kafkaResponse', (event: Electron.Event, data: any) => {
39+
let result: any;
40+
if (tryParseJSON(data)) result = JSON.parse(data);
41+
let transformedData: any = {};
42+
if (result && result.length > 0) {
43+
transformedData = transformEventData(result[0]['kafkametrics']);
44+
setEventData(transformedData);
45+
}
46+
});
47+
} else if (arg === 'kubernetesmetrics') {
48+
ipcRenderer.removeAllListeners('kubernetesResponse');
49+
ipcRenderer.send('kubernetesRequest');
50+
ipcRenderer.on('kubernetesResponse', (event: Electron.Event, data: any) => {
51+
let result: any;
52+
if (tryParseJSON(data)) result = JSON.parse(data);
53+
let transformedData: any = {};
54+
if (result && result.length > 0) {
55+
transformedData = transformEventData(result[0]['kubernetesmetrics']);
56+
setEventData(transformedData);
57+
}
58+
});
59+
}
4460
}, []);
4561

62+
// const fetchKafkaEventData = useCallback(() => {
63+
// ipcRenderer.removeAllListeners('kafkaResponse');
64+
// ipcRenderer.send('kafkaRequest');
65+
// ipcRenderer.on('kafkaResponse', (event: Electron.Event, data: any) => {
66+
// let result: any;
67+
// if (tryParseJSON(data)) result = JSON.parse(data);
68+
// let transformedData: any = {};
69+
// if (result && result.length > 0) {
70+
// transformedData = transformEventData(result[0]['kafkametrics']);
71+
// setEventData(transformedData);
72+
// }
73+
// });
74+
// }, []);
75+
76+
// const fetchKubernetesEventData = useCallback(() => {
77+
// ipcRenderer.removeAllListeners('kafkaResponse');
78+
// ipcRenderer.send('kafkaRequest');
79+
// ipcRenderer.on('kafkaResponse', (event: Electron.Event, data: any) => {
80+
// let result: any;
81+
// if (tryParseJSON(data)) result = JSON.parse(data);
82+
// let transformedData: any = {};
83+
// if (result && result.length > 0) {
84+
// transformedData = transformEventData(result[0]['kafkametrics']);
85+
// setEventData(transformedData);
86+
// }
87+
// });
88+
// }, []);
89+
4690
const transformEventData = (data: any[]) => {
4791
const dataList: any[] = [];
4892
const timeList: any[] = [];
@@ -76,7 +120,13 @@ const EventContextProvider: React.FC = React.memo(({ children }) => {
76120
};
77121

78122
return (
79-
<EventContext.Provider value={{ eventData, setEventData, fetchEventData }}>
123+
<EventContext.Provider
124+
value={{
125+
eventData,
126+
setEventData,
127+
fetchEventData,
128+
}}
129+
>
80130
{children}
81131
</EventContext.Provider>
82132
);

electron/routes/dashboard.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,13 @@ ipcMain.on('getApps', message => {
4848
const temp = JSON.parse(fs.readFileSync(settingsLocation).toString('utf8'));
4949
// Destructure list of services from state to be rendered on the dashboard
5050
const dashboardList = state.services.map((arr: string[]) => [arr[0], arr[1], arr[3], arr[4]]); // .map((arr: string[]) => [...arr]);
51-
51+
// ["chronosDB",
52+
// "MongoDB",
53+
// "mongodb+srv://jj289:[email protected]/chronosDB?retryWrites=true&w=majority",
54+
// "",
55+
// "Dec 13, 2022 10:16 AM"]
5256
// Sync event - return new applications list w/ user settings: Mode
57+
console.log(dashboardList);
5358
message.returnValue = [dashboardList, temp.mode];
5459
});
5560

electron/routes/data.ts

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -231,8 +231,28 @@ ipcMain.on('kafkaRequest', async (message) => {
231231
console.log('Error in "kakfaRequest" event', message);
232232
message.sender.send('kafkaResponse', {});
233233
}
234+
});
235+
236+
// JJ-ADDITION
237+
ipcMain.on('kubernetesRequest', async (message) => {
238+
try {
239+
let result: any;
240+
// Mongo Database
241+
if (currentDatabaseType === 'MongoDB') {
242+
result = await mongoFetch('kubernetesmetrics');
243+
}
244+
// SQL Database
245+
if (currentDatabaseType === 'SQL') {
246+
// Get last 50 documents. If less than 50 get all
247+
result = await postgresFetch('kubernetesmetrics', pool);
248+
}
234249

235-
250+
message.sender.send('kubernetesResponse', JSON.stringify(result));
251+
} catch (error) {
252+
// Catch errors
253+
console.log('Error in "kubernetesRequest" event', message);
254+
message.sender.send('kubernetesResponse', {});
255+
}
236256
});
237257

238258

0 commit comments

Comments
 (0)