-
Notifications
You must be signed in to change notification settings - Fork 8k
/
use_log_entry_rate_module.tsx
80 lines (70 loc) · 2.41 KB
/
use_log_entry_rate_module.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License;
* you may not use this file except in compliance with the Elastic License.
*/
import createContainer from 'constate';
import { useMemo } from 'react';
import { ModuleSourceConfiguration } from '../../log_analysis_module_types';
import { useLogAnalysisModule } from '../../log_analysis_module';
import { useLogAnalysisModuleConfiguration } from '../../log_analysis_module_configuration';
import { useLogAnalysisModuleDefinition } from '../../log_analysis_module_definition';
import { logEntryRateModule } from './module_descriptor';
export const useLogEntryRateModule = ({
indexPattern,
sourceId,
spaceId,
timestampField,
}: {
indexPattern: string;
sourceId: string;
spaceId: string;
timestampField: string;
}) => {
const sourceConfiguration: ModuleSourceConfiguration = useMemo(
() => ({
indices: indexPattern.split(','),
sourceId,
spaceId,
timestampField,
}),
[indexPattern, sourceId, spaceId, timestampField]
);
const logAnalysisModule = useLogAnalysisModule({
moduleDescriptor: logEntryRateModule,
sourceConfiguration,
});
const { getIsJobConfigurationOutdated } = useLogAnalysisModuleConfiguration({
sourceConfiguration,
moduleDescriptor: logEntryRateModule,
});
const { fetchModuleDefinition, getIsJobDefinitionOutdated } = useLogAnalysisModuleDefinition({
sourceConfiguration,
moduleDescriptor: logEntryRateModule,
});
const hasOutdatedJobConfigurations = useMemo(
() => logAnalysisModule.jobSummaries.some(getIsJobConfigurationOutdated),
[getIsJobConfigurationOutdated, logAnalysisModule.jobSummaries]
);
const hasOutdatedJobDefinitions = useMemo(
() => logAnalysisModule.jobSummaries.some(getIsJobDefinitionOutdated),
[getIsJobDefinitionOutdated, logAnalysisModule.jobSummaries]
);
const hasStoppedJobs = useMemo(
() =>
Object.values(logAnalysisModule.jobStatus).some(
(currentJobStatus) => currentJobStatus === 'stopped'
),
[logAnalysisModule.jobStatus]
);
return {
...logAnalysisModule,
fetchModuleDefinition,
hasOutdatedJobConfigurations,
hasOutdatedJobDefinitions,
hasStoppedJobs,
};
};
export const [LogEntryRateModuleProvider, useLogEntryRateModuleContext] = createContainer(
useLogEntryRateModule
);