123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- import { Action, BrokersState, ZooKeeperStatus } from 'redux/interfaces';
- import { ClusterStats } from 'generated-sources';
- import { getType } from 'typesafe-actions';
- import * as actions from 'redux/actions';
- export const initialState: BrokersState = {
- items: [],
- brokerCount: 0,
- zooKeeperStatus: ZooKeeperStatus.offline,
- activeControllers: 0,
- onlinePartitionCount: 0,
- offlinePartitionCount: 0,
- inSyncReplicasCount: 0,
- outOfSyncReplicasCount: 0,
- underReplicatedPartitionCount: 0,
- diskUsage: [],
- };
- const updateBrokerSegmentSize = (
- state: BrokersState,
- payload: ClusterStats
- ) => {
- const brokers = state.items;
- const { diskUsage } = payload;
- const items = brokers.map((broker) => {
- const brokerMetrics =
- diskUsage && diskUsage.find(({ brokerId }) => brokerId === broker.id);
- if (brokerMetrics !== undefined) {
- return { ...broker, ...brokerMetrics };
- }
- return broker;
- });
- return { ...state, items, ...payload };
- };
- const reducer = (state = initialState, action: Action): BrokersState => {
- switch (action.type) {
- case getType(actions.fetchBrokersAction.request):
- return initialState;
- case getType(actions.fetchBrokersAction.success):
- return {
- ...state,
- items: action.payload,
- };
- case getType(actions.fetchClusterStatsAction.success):
- return updateBrokerSegmentSize(state, action.payload);
- default:
- return state;
- }
- };
- export default reducer;
|