Skip to content

Commit 0d4dd6f

Browse files
authored
Update sample data naming conventions (#24)
Signed-off-by: Tyler Ohlsen <ohltyler@amazon.com>
1 parent 8039eca commit 0d4dd6f

File tree

7 files changed

+95
-58
lines changed

7 files changed

+95
-58
lines changed

public/pages/DetectorResults/containers/AnomalyResults.tsx

+2-5
Original file line numberDiff line numberDiff line change
@@ -72,10 +72,7 @@ import {
7272
FEATURE_DATA_CHECK_WINDOW_OFFSET,
7373
} from '../../utils/anomalyResultUtils';
7474
import { getDetectorResults } from '../../../redux/reducers/anomalyResults';
75-
import {
76-
detectorIsSample,
77-
getAssociatedIndex,
78-
} from '../../SampleData/utils/helpers';
75+
import { detectorIsSample } from '../../SampleData/utils/helpers';
7976
import { SampleIndexDetailsCallout } from '../../SampleData/components/SampleIndexDetailsCallout/SampleIndexDetailsCallout';
8077
import { CoreStart } from '../../../../../../src/core/public';
8178
import { CoreServicesContext } from '../../../components/CoreServices/CoreServices';
@@ -133,7 +130,7 @@ export function AnomalyResults(props: AnomalyResultsProps) {
133130
useEffect(() => {
134131
if (detector && detectorIsSample(detector)) {
135132
setIsSampleDetector(true);
136-
setSampleIndexName(getAssociatedIndex(detector));
133+
setSampleIndexName(detector.indices[0]);
137134
} else {
138135
setIsSampleDetector(false);
139136
}

public/pages/SampleData/components/SampleDetailsFlyout/SampleDetailsFlyout.tsx

+12-2
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,14 @@ import {
3939
getFieldsAndTypesGrid,
4040
getFeaturesAndAggsAndFieldsGrid,
4141
} from '../../utils/helpers';
42+
import { Detector } from '../../../../models/interfaces';
4243
import { SAMPLE_DATA } from '../../utils/constants';
4344
import { EuiHorizontalRule } from '@elastic/eui';
4445

4546
interface SampleDetailsFlyoutProps {
4647
title: string;
4748
sampleData: SAMPLE_DATA;
49+
detector: Detector | undefined;
4850
interval: number;
4951
onClose(): void;
5052
}
@@ -98,7 +100,11 @@ export const SampleDetailsFlyout = (props: SampleDetailsFlyoutProps) => {
98100
>
99101
<EuiText style={{ lineHeight: 2.0 }}>
100102
<b>Name: </b>
101-
<i>{props.sampleData.detectorName}</i>
103+
<i>
104+
{props.detector
105+
? props.detector.name
106+
: props.sampleData.detectorName}
107+
</i>
102108
<br></br>
103109
<b>Detection interval: </b>
104110
Every {detectorInterval} minutes
@@ -125,7 +131,11 @@ export const SampleDetailsFlyout = (props: SampleDetailsFlyoutProps) => {
125131
>
126132
<EuiText style={{ lineHeight: 2.0 }}>
127133
<b>Name: </b>
128-
<i>{props.sampleData.indexName}</i>
134+
<i>
135+
{props.detector
136+
? props.detector.indices[0]
137+
: props.sampleData.indexName}
138+
</i>
129139
<br></br>
130140
<b>Log frequency: </b>Every {props.interval} minute(s)
131141
<br></br>

public/pages/SampleData/containers/SampleData/SampleData.tsx

+22-16
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,8 @@ import {
5353
} from '../../utils/constants';
5454
import {
5555
containsSampleIndex,
56-
containsSampleDetector,
5756
getDetectorId,
57+
getSampleDetector,
5858
} from '../../utils/helpers';
5959
import { SampleDataBox } from '../../components/SampleDataBox/SampleDataBox';
6060
import { SampleDetailsFlyout } from '../../components/SampleDetailsFlyout/SampleDetailsFlyout';
@@ -217,13 +217,14 @@ export const SampleData = () => {
217217
);
218218
}}
219219
isLoadingData={isLoadingHttpData}
220-
isDataLoaded={containsSampleDetector(
221-
allDetectors,
222-
SAMPLE_TYPE.HTTP_RESPONSES
223-
)}
220+
isDataLoaded={
221+
getSampleDetector(allDetectors, SAMPLE_TYPE.HTTP_RESPONSES) !==
222+
undefined
223+
}
224224
detectorId={getDetectorId(
225225
allDetectors,
226-
sampleHttpResponses.detectorName
226+
sampleHttpResponses.detectorName,
227+
sampleHttpResponses.legacyDetectorName
227228
)}
228229
/>
229230
</EuiFlexItem>
@@ -247,13 +248,14 @@ export const SampleData = () => {
247248
);
248249
}}
249250
isLoadingData={isLoadingEcommerceData}
250-
isDataLoaded={containsSampleDetector(
251-
allDetectors,
252-
SAMPLE_TYPE.ECOMMERCE
253-
)}
251+
isDataLoaded={
252+
getSampleDetector(allDetectors, SAMPLE_TYPE.ECOMMERCE) !==
253+
undefined
254+
}
254255
detectorId={getDetectorId(
255256
allDetectors,
256-
sampleEcommerce.detectorName
257+
sampleEcommerce.detectorName,
258+
sampleEcommerce.legacyDetectorName
257259
)}
258260
/>
259261
</EuiFlexItem>
@@ -277,13 +279,14 @@ export const SampleData = () => {
277279
);
278280
}}
279281
isLoadingData={isLoadingHostHealthData}
280-
isDataLoaded={containsSampleDetector(
281-
allDetectors,
282-
SAMPLE_TYPE.HOST_HEALTH
283-
)}
282+
isDataLoaded={
283+
getSampleDetector(allDetectors, SAMPLE_TYPE.HOST_HEALTH) !==
284+
undefined
285+
}
284286
detectorId={getDetectorId(
285287
allDetectors,
286-
sampleHostHealth.detectorName
288+
sampleHostHealth.detectorName,
289+
sampleHostHealth.legacyDetectorName
287290
)}
288291
/>
289292
</EuiFlexItem>
@@ -293,6 +296,7 @@ export const SampleData = () => {
293296
<SampleDetailsFlyout
294297
title="Monitor HTTP responses"
295298
sampleData={sampleHttpResponses}
299+
detector={getSampleDetector(allDetectors, SAMPLE_TYPE.HTTP_RESPONSES)}
296300
interval={1}
297301
onClose={() => setShowHttpResponseDetailsFlyout(false)}
298302
/>
@@ -301,6 +305,7 @@ export const SampleData = () => {
301305
<SampleDetailsFlyout
302306
title="Monitor eCommerce orders"
303307
sampleData={sampleEcommerce}
308+
detector={getSampleDetector(allDetectors, SAMPLE_TYPE.ECOMMERCE)}
304309
interval={1}
305310
onClose={() => setShowEcommerceDetailsFlyout(false)}
306311
/>
@@ -309,6 +314,7 @@ export const SampleData = () => {
309314
<SampleDetailsFlyout
310315
title="Monitor host health"
311316
sampleData={sampleHostHealth}
317+
detector={getSampleDetector(allDetectors, SAMPLE_TYPE.HOST_HEALTH)}
312318
interval={1}
313319
onClose={() => setShowHostHealthDetailsFlyout(false)}
314320
/>

public/pages/SampleData/utils/constants.tsx

+21-6
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,9 @@ export const indexSettings = {
3939

4040
export interface SAMPLE_DATA {
4141
indexName: string;
42+
legacyIndexName: string;
4243
detectorName: string;
44+
legacyDetectorName: string;
4345
description: string;
4446
icon: any;
4547
fieldMappings: {};
@@ -50,8 +52,11 @@ export interface SAMPLE_DATA {
5052
/*
5153
*** SAMPLE HTTP RESPONSES CONSTANTS ***
5254
*/
53-
const httpResponsesIndexName = 'opendistro-sample-http-responses';
54-
const httpResponsesDetectorName = 'opendistro-sample-http-responses-detector';
55+
const httpResponsesIndexName = 'sample-http-responses';
56+
const legacyHttpResponsesIndexName = 'opendistro-sample-http-responses';
57+
const httpResponsesDetectorName = 'sample-http-responses-detector';
58+
const legacyHttpResponsesDetectorName =
59+
'opendistro-sample-http-responses-detector';
5560
const httpFieldMappings = {
5661
timestamp: {
5762
type: 'date',
@@ -77,7 +82,9 @@ const httpFieldMappings = {
7782
};
7883
export const sampleHttpResponses = {
7984
indexName: httpResponsesIndexName,
85+
legacyIndexName: legacyHttpResponsesIndexName,
8086
detectorName: httpResponsesDetectorName,
87+
legacyDetectorName: legacyHttpResponsesDetectorName,
8188
description:
8289
'Detect high numbers of error response codes in an index containing HTTP response data.',
8390
icon: <EuiIcon type="visLine" size="l" />,
@@ -144,8 +151,10 @@ export const sampleHttpResponses = {
144151
/*
145152
*** ECOMMERCE CONSTANTS ***
146153
*/
147-
const ecommerceIndexName = 'opendistro-sample-ecommerce';
148-
const ecommerceDetectorName = 'opendistro-sample-ecommerce-detector';
154+
const ecommerceIndexName = 'sample-ecommerce';
155+
const legacyEcommerceIndexName = 'opendistro-sample-ecommerce';
156+
const ecommerceDetectorName = 'sample-ecommerce-detector';
157+
const legacyEcommerceDetectorName = 'opendistro-sample-ecommerce-detector';
149158
const ecommerceFieldMappings = {
150159
timestamp: {
151160
type: 'date',
@@ -165,7 +174,9 @@ const ecommerceFieldMappings = {
165174
};
166175
export const sampleEcommerce = {
167176
indexName: ecommerceIndexName,
177+
legacyIndexName: legacyEcommerceIndexName,
168178
detectorName: ecommerceDetectorName,
179+
legacyDetectorName: legacyEcommerceDetectorName,
169180
description:
170181
'Detect any unusual increase or decrease of orders in an index containing online order data.',
171182
icon: <EuiIcon type="package" size="l" />,
@@ -261,8 +272,10 @@ export const sampleEcommerce = {
261272
/*
262273
*** HOST HEALTH CONSTANTS ***
263274
*/
264-
const hostHealthIndexName = 'opendistro-sample-host-health';
265-
const hostHealthDetectorName = 'opendistro-sample-host-health-detector';
275+
const hostHealthIndexName = 'sample-host-health';
276+
const legacyHostHealthIndexName = 'opendistro-sample-host-health';
277+
const hostHealthDetectorName = 'sample-host-health-detector';
278+
const legacyHostHealthDetectorName = 'opendistro-sample-host-health-detector';
266279
const hostHealthFieldMappings = {
267280
timestamp: {
268281
type: 'date',
@@ -276,7 +289,9 @@ const hostHealthFieldMappings = {
276289
};
277290
export const sampleHostHealth = {
278291
indexName: hostHealthIndexName,
292+
legacyIndexName: legacyHostHealthIndexName,
279293
detectorName: hostHealthDetectorName,
294+
legacyDetectorName: legacyHostHealthDetectorName,
280295
description:
281296
'Detect increases in CPU and memory utilization in an index containing various health metrics from a host.',
282297
icon: <EuiIcon type="visGauge" size="l" />,

public/pages/SampleData/utils/helpers.tsx

+33-24
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
*/
2626

2727
import React from 'react';
28-
import { isEmpty } from 'lodash';
28+
import { isEmpty, get } from 'lodash';
2929
import { EuiDataGrid } from '@elastic/eui';
3030
import { CatIndex } from '../../../../server/models/types';
3131
import { Detector, DetectorListItem } from '../../../models/interfaces';
@@ -49,77 +49,86 @@ export const containsSampleIndex = (
4949
sampleType: SAMPLE_TYPE
5050
) => {
5151
let indexName = '';
52+
let legacyIndexName = '';
5253
switch (sampleType) {
5354
case SAMPLE_TYPE.HTTP_RESPONSES: {
5455
indexName = sampleHttpResponses.indexName;
56+
legacyIndexName = sampleHttpResponses.legacyIndexName;
5557
break;
5658
}
5759
case SAMPLE_TYPE.ECOMMERCE: {
5860
indexName = sampleEcommerce.indexName;
61+
legacyIndexName = sampleEcommerce.legacyIndexName;
5962
break;
6063
}
6164
case SAMPLE_TYPE.HOST_HEALTH: {
6265
indexName = sampleHostHealth.indexName;
66+
legacyIndexName = sampleHostHealth.legacyIndexName;
6367
break;
6468
}
6569
}
66-
return indices.map((index) => index.index).includes(indexName);
70+
// Checking for legacy sample indices
71+
const indexNames = indices.map((index) => index.index);
72+
return indexNames.includes(indexName) || indexNames.includes(legacyIndexName);
6773
};
6874

69-
export const containsSampleDetector = (
75+
export const getSampleDetector = (
7076
detectors: DetectorListItem[],
7177
sampleType: SAMPLE_TYPE
7278
) => {
7379
let detectorName = '';
80+
let legacyDetectorName = '';
7481
switch (sampleType) {
7582
case SAMPLE_TYPE.HTTP_RESPONSES: {
7683
detectorName = sampleHttpResponses.detectorName;
84+
legacyDetectorName = sampleHttpResponses.legacyDetectorName;
7785
break;
7886
}
7987
case SAMPLE_TYPE.ECOMMERCE: {
8088
detectorName = sampleEcommerce.detectorName;
89+
legacyDetectorName = sampleEcommerce.legacyDetectorName;
8190
break;
8291
}
8392
case SAMPLE_TYPE.HOST_HEALTH: {
8493
detectorName = sampleHostHealth.detectorName;
94+
legacyDetectorName = sampleHostHealth.legacyDetectorName;
8595
break;
8696
}
8797
}
88-
return detectors.map((detector) => detector.name).includes(detectorName);
98+
// Checking for legacy sample detectors
99+
return get(
100+
detectors.filter(
101+
(detector) =>
102+
detector.name.includes(detectorName) ||
103+
detector.name.includes(legacyDetectorName)
104+
),
105+
'0',
106+
undefined
107+
);
89108
};
90109

91110
export const detectorIsSample = (detector: Detector) => {
92111
return (
93112
detector.name === sampleHttpResponses.detectorName ||
113+
detector.name === sampleHttpResponses.legacyDetectorName ||
94114
detector.name === sampleEcommerce.detectorName ||
95-
detector.name === sampleHostHealth.detectorName
96-
);
97-
};
98-
99-
export const getAssociatedIndex = (detector: Detector) => {
100-
if (detector.name === sampleHttpResponses.detectorName) {
101-
return sampleHttpResponses.indexName;
102-
}
103-
if (detector.name === sampleEcommerce.detectorName) {
104-
return sampleEcommerce.indexName;
105-
}
106-
if (detector.name === sampleHostHealth.detectorName) {
107-
return sampleHostHealth.indexName;
108-
}
109-
console.error(
110-
'Error getting associated sample index for detector ',
111-
detector.name
115+
detector.name === sampleEcommerce.legacyDetectorName ||
116+
detector.name === sampleHostHealth.detectorName ||
117+
detector.name === sampleHostHealth.legacyDetectorName
112118
);
113-
return '';
114119
};
115120

116121
export const getDetectorId = (
117122
detectors: DetectorListItem[],
118-
detectorName: string
123+
detectorName: string,
124+
legacyDetectorName: string
119125
) => {
120126
let detectorId = '';
121127
detectors.some((detector) => {
122-
if (detector.name === detectorName) {
128+
if (
129+
detector.name === detectorName ||
130+
detector.name === legacyDetectorName
131+
) {
123132
detectorId = detector.id;
124133
return true;
125134
}

public/pages/utils/constants.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -81,14 +81,14 @@ export const GET_ALL_DETECTORS_QUERY_PARAMS = {
8181

8282
export const GET_SAMPLE_DETECTORS_QUERY_PARAMS = {
8383
from: 0,
84-
search: 'opendistro-sample',
84+
search: 'sample',
8585
indices: '',
8686
size: MAX_DETECTORS,
8787
sortDirection: SORT_DIRECTION.ASC,
8888
sortField: 'name',
8989
};
9090

91-
export const GET_SAMPLE_INDICES_QUERY = 'opendistro-sample-*';
91+
export const GET_SAMPLE_INDICES_QUERY = '*sample-*';
9292

9393
export const TOP_ENTITIES_FIELD = 'top_entities';
9494
export const TOP_ENTITY_AGGS = 'top_entity_aggs';

server/routes/sampleData.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -73,23 +73,23 @@ export default class SampleDataService {
7373
__dirname,
7474
'../sampleData/rawData/httpResponses.json.gz'
7575
);
76-
indexName = 'opendistro-sample-http-responses';
76+
indexName = 'sample-http-responses';
7777
break;
7878
}
7979
case SAMPLE_TYPE.ECOMMERCE: {
8080
filePath = path.resolve(
8181
__dirname,
8282
'../sampleData/rawData/ecommerce.json.gz'
8383
);
84-
indexName = 'opendistro-sample-ecommerce';
84+
indexName = 'sample-ecommerce';
8585
break;
8686
}
8787
case SAMPLE_TYPE.HOST_HEALTH: {
8888
filePath = path.resolve(
8989
__dirname,
9090
'../sampleData/rawData/hostHealth.json.gz'
9191
);
92-
indexName = 'opendistro-sample-host-health';
92+
indexName = 'sample-host-health';
9393
break;
9494
}
9595
}

0 commit comments

Comments
 (0)