178 lines
4.5 KiB
TypeScript
178 lines
4.5 KiB
TypeScript
import axios from 'axios';
|
|
|
|
import { REQUEST, SUCCESS, FAILURE } from 'app/shared/reducers/action-type.util';
|
|
|
|
export const ACTION_TYPES = {
|
|
FETCH_LOGS: 'administration/FETCH_LOGS',
|
|
FETCH_LOGS_CHANGE_LEVEL: 'administration/FETCH_LOGS_CHANGE_LEVEL',
|
|
FETCH_HEALTH: 'administration/FETCH_HEALTH',
|
|
FETCH_METRICS: 'administration/FETCH_METRICS',
|
|
FETCH_THREAD_DUMP: 'administration/FETCH_THREAD_DUMP',
|
|
FETCH_CONFIGURATIONS: 'administration/FETCH_CONFIGURATIONS',
|
|
FETCH_ENV: 'administration/FETCH_ENV',
|
|
FETCH_AUDITS: 'administration/FETCH_AUDITS'
|
|
};
|
|
|
|
const initialState = {
|
|
loading: false,
|
|
errorMessage: null,
|
|
logs: {
|
|
loggers: [] as any[]
|
|
},
|
|
health: {} as any,
|
|
metrics: {} as any,
|
|
threadDump: [],
|
|
configuration: {
|
|
configProps: {} as any,
|
|
env: {} as any
|
|
},
|
|
audits: [],
|
|
totalItems: 0
|
|
};
|
|
|
|
export type AdministrationState = Readonly<typeof initialState>;
|
|
|
|
// Reducer
|
|
|
|
export default (state: AdministrationState = initialState, action): AdministrationState => {
|
|
switch (action.type) {
|
|
case REQUEST(ACTION_TYPES.FETCH_METRICS):
|
|
case REQUEST(ACTION_TYPES.FETCH_THREAD_DUMP):
|
|
case REQUEST(ACTION_TYPES.FETCH_LOGS):
|
|
case REQUEST(ACTION_TYPES.FETCH_CONFIGURATIONS):
|
|
case REQUEST(ACTION_TYPES.FETCH_ENV):
|
|
case REQUEST(ACTION_TYPES.FETCH_AUDITS):
|
|
case REQUEST(ACTION_TYPES.FETCH_HEALTH):
|
|
return {
|
|
...state,
|
|
errorMessage: null,
|
|
loading: true
|
|
};
|
|
case FAILURE(ACTION_TYPES.FETCH_METRICS):
|
|
case FAILURE(ACTION_TYPES.FETCH_THREAD_DUMP):
|
|
case FAILURE(ACTION_TYPES.FETCH_LOGS):
|
|
case FAILURE(ACTION_TYPES.FETCH_CONFIGURATIONS):
|
|
case FAILURE(ACTION_TYPES.FETCH_ENV):
|
|
case FAILURE(ACTION_TYPES.FETCH_AUDITS):
|
|
case FAILURE(ACTION_TYPES.FETCH_HEALTH):
|
|
return {
|
|
...state,
|
|
loading: false,
|
|
errorMessage: action.payload
|
|
};
|
|
case SUCCESS(ACTION_TYPES.FETCH_METRICS):
|
|
return {
|
|
...state,
|
|
loading: false,
|
|
metrics: action.payload.data
|
|
};
|
|
case SUCCESS(ACTION_TYPES.FETCH_THREAD_DUMP):
|
|
return {
|
|
...state,
|
|
loading: false,
|
|
threadDump: action.payload.data
|
|
};
|
|
case SUCCESS(ACTION_TYPES.FETCH_LOGS):
|
|
return {
|
|
...state,
|
|
loading: false,
|
|
logs: {
|
|
loggers: action.payload.data
|
|
}
|
|
};
|
|
case SUCCESS(ACTION_TYPES.FETCH_CONFIGURATIONS):
|
|
return {
|
|
...state,
|
|
loading: false,
|
|
configuration: {
|
|
...state.configuration,
|
|
configProps: action.payload.data
|
|
}
|
|
};
|
|
case SUCCESS(ACTION_TYPES.FETCH_ENV):
|
|
return {
|
|
...state,
|
|
loading: false,
|
|
configuration: {
|
|
...state.configuration,
|
|
env: action.payload.data
|
|
}
|
|
};
|
|
case SUCCESS(ACTION_TYPES.FETCH_AUDITS):
|
|
return {
|
|
...state,
|
|
loading: false,
|
|
audits: action.payload.data,
|
|
totalItems: action.payload.headers['x-total-count']
|
|
};
|
|
case SUCCESS(ACTION_TYPES.FETCH_HEALTH):
|
|
return {
|
|
...state,
|
|
loading: false,
|
|
health: action.payload.data
|
|
};
|
|
default:
|
|
return state;
|
|
}
|
|
};
|
|
|
|
// Actions
|
|
|
|
export const systemHealth = () => ({
|
|
type: ACTION_TYPES.FETCH_HEALTH,
|
|
payload: axios.get('management/health')
|
|
});
|
|
|
|
export const systemMetrics = () => ({
|
|
type: ACTION_TYPES.FETCH_METRICS,
|
|
payload: axios.get('management/metrics')
|
|
});
|
|
|
|
export const systemThreadDump = () => ({
|
|
type: ACTION_TYPES.FETCH_THREAD_DUMP,
|
|
payload: axios.get('management/threaddump')
|
|
});
|
|
|
|
export const getLoggers = () => ({
|
|
type: ACTION_TYPES.FETCH_LOGS,
|
|
payload: axios.get('management/logs')
|
|
});
|
|
|
|
export const changeLogLevel = (name, level) => {
|
|
const body = {
|
|
level,
|
|
name
|
|
};
|
|
return async dispatch => {
|
|
await dispatch({
|
|
type: ACTION_TYPES.FETCH_LOGS_CHANGE_LEVEL,
|
|
payload: axios.put('management/logs', body)
|
|
});
|
|
dispatch(getLoggers());
|
|
};
|
|
};
|
|
|
|
export const getConfigurations = () => ({
|
|
type: ACTION_TYPES.FETCH_CONFIGURATIONS,
|
|
payload: axios.get('management/configprops')
|
|
});
|
|
|
|
export const getEnv = () => ({
|
|
type: ACTION_TYPES.FETCH_ENV,
|
|
payload: axios.get('management/env')
|
|
});
|
|
|
|
export const getAudits = (page, size, sort, fromDate, toDate) => {
|
|
let requestUrl = `management/audits${sort ? `?page=${page}&size=${size}&sort=${sort}` : ''}`;
|
|
if (fromDate) {
|
|
requestUrl += `&fromDate=${fromDate}`;
|
|
}
|
|
if (toDate) {
|
|
requestUrl += `&toDate=${toDate}`;
|
|
}
|
|
return {
|
|
type: ACTION_TYPES.FETCH_AUDITS,
|
|
payload: axios.get(requestUrl)
|
|
};
|
|
};
|