Skip to content

Commit 9c25095

Browse files
authored
Version-decoupling for Observability (#1953)
* Version-decoupling for Observability Signed-off-by: sumukhswamy <[email protected]> * added change for support of backend Signed-off-by: sumukhswamy <[email protected]> * added change for support of backend Signed-off-by: sumukhswamy <[email protected]> * added shared filter Signed-off-by: sumukhswamy <[email protected]> --------- Signed-off-by: sumukhswamy <[email protected]>
1 parent 0b472ec commit 9c25095

File tree

11 files changed

+50
-14
lines changed

11 files changed

+50
-14
lines changed

common/utils/shared.ts

+13
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,10 @@
33
* SPDX-License-Identifier: Apache-2.0
44
*/
55

6+
import semver from 'semver';
7+
import { SavedObject } from '../../../../src/core/public';
8+
import { DataSourceAttributes } from '../../../../src/plugins/data_source/common/data_sources';
9+
import * as pluginManifest from '../../opensearch_dashboards.json';
610
import { coreRefs } from '../../public/framework/core_refs';
711

812
/**
@@ -62,3 +66,12 @@ export const basePathLink = (link: string): string => {
6266
return link;
6367
}
6468
};
69+
70+
export const dataSourceFilterFn = (dataSource: SavedObject<DataSourceAttributes>) => {
71+
const dataSourceVersion = dataSource?.attributes?.dataSourceVersion || '';
72+
const installedPlugins = dataSource?.attributes?.installedPlugins || [];
73+
return (
74+
semver.satisfies(dataSourceVersion, pluginManifest.supportedOSDataSourceVersions) &&
75+
pluginManifest.requiredOSDataSourcePlugins.every((plugin) => installedPlugins.includes(plugin))
76+
);
77+
};

opensearch_dashboards.json

+4-1
Original file line numberDiff line numberDiff line change
@@ -27,5 +27,8 @@
2727
],
2828
"configPath": [
2929
"observability"
30-
]
30+
],
31+
"supportedOSDataSourceVersions": ">=2.9.0",
32+
"requiredOSDataSourcePlugins": ["opensearch-sql","opensearch-observability"]
33+
3134
}

public/components/custom_panels/__tests__/__snapshots__/custom_panel_view.test.tsx.snap

+8-4
Original file line numberDiff line numberDiff line change
@@ -303,7 +303,7 @@ exports[`Panels View Component render panel view container and refresh panel 1`]
303303
class="euiToolTipAnchor"
304304
>
305305
<button
306-
class="euiButton euiButton--primary euiSuperUpdateButton"
306+
class="euiButton euiButton--primary euiButton--fill euiSuperUpdateButton"
307307
data-test-subj="superDatePickerApplyTimeButton"
308308
type="button"
309309
>
@@ -734,7 +734,7 @@ exports[`Panels View Component render panel view so container and reload dashboa
734734
class="euiToolTipAnchor"
735735
>
736736
<button
737-
class="euiButton euiButton--primary euiSuperUpdateButton"
737+
class="euiButton euiButton--primary euiButton--fill euiSuperUpdateButton"
738738
data-test-subj="superDatePickerApplyTimeButton"
739739
type="button"
740740
>
@@ -2334,6 +2334,7 @@ exports[`Panels View Component renders panel view container with visualizations
23342334
className="euiSuperUpdateButton"
23352335
color="primary"
23362336
data-test-subj="superDatePickerApplyTimeButton"
2337+
fill={true}
23372338
iconType="refresh"
23382339
isDisabled={false}
23392340
isLoading={false}
@@ -2353,6 +2354,7 @@ exports[`Panels View Component renders panel view container with visualizations
23532354
data-test-subj="superDatePickerApplyTimeButton"
23542355
disabled={false}
23552356
element="button"
2357+
fill={true}
23562358
iconType="refresh"
23572359
isDisabled={false}
23582360
isLoading={false}
@@ -2367,7 +2369,7 @@ exports[`Panels View Component renders panel view container with visualizations
23672369
type="button"
23682370
>
23692371
<button
2370-
className="euiButton euiButton--primary euiSuperUpdateButton"
2372+
className="euiButton euiButton--primary euiButton--fill euiSuperUpdateButton"
23712373
data-test-subj="superDatePickerApplyTimeButton"
23722374
disabled={false}
23732375
onBlur={[Function]}
@@ -4579,6 +4581,7 @@ exports[`Panels View Component renders panel view container without visualizatio
45794581
className="euiSuperUpdateButton"
45804582
color="primary"
45814583
data-test-subj="superDatePickerApplyTimeButton"
4584+
fill={true}
45824585
iconType="refresh"
45834586
isDisabled={false}
45844587
isLoading={false}
@@ -4598,6 +4601,7 @@ exports[`Panels View Component renders panel view container without visualizatio
45984601
data-test-subj="superDatePickerApplyTimeButton"
45994602
disabled={false}
46004603
element="button"
4604+
fill={true}
46014605
iconType="refresh"
46024606
isDisabled={false}
46034607
isLoading={false}
@@ -4612,7 +4616,7 @@ exports[`Panels View Component renders panel view container without visualizatio
46124616
type="button"
46134617
>
46144618
<button
4615-
className="euiButton euiButton--primary euiSuperUpdateButton"
4619+
className="euiButton euiButton--primary euiButton--fill euiSuperUpdateButton"
46164620
data-test-subj="superDatePickerApplyTimeButton"
46174621
disabled={false}
46184622
onBlur={[Function]}

public/components/custom_panels/__tests__/__snapshots__/custom_panel_view_so.test.tsx.snap

+3-3
Original file line numberDiff line numberDiff line change
@@ -303,7 +303,7 @@ exports[`Panels View SO Component render panel view container and refresh panel
303303
class="euiToolTipAnchor"
304304
>
305305
<button
306-
class="euiButton euiButton--primary euiSuperUpdateButton"
306+
class="euiButton euiButton--primary euiButton--fill euiSuperUpdateButton"
307307
data-test-subj="superDatePickerApplyTimeButton"
308308
type="button"
309309
>
@@ -734,7 +734,7 @@ exports[`Panels View SO Component render panel view so container and reload dash
734734
class="euiToolTipAnchor"
735735
>
736736
<button
737-
class="euiButton euiButton--primary euiSuperUpdateButton"
737+
class="euiButton euiButton--primary euiButton--fill euiSuperUpdateButton"
738738
data-test-subj="superDatePickerApplyTimeButton"
739739
type="button"
740740
>
@@ -1167,7 +1167,7 @@ exports[`Panels View SO Component renders panels view SO container with visualiz
11671167
class="euiToolTipAnchor"
11681168
>
11691169
<button
1170-
class="euiButton euiButton--primary euiSuperUpdateButton"
1170+
class="euiButton euiButton--primary euiButton--fill euiSuperUpdateButton"
11711171
data-test-subj="superDatePickerApplyTimeButton"
11721172
type="button"
11731173
>

public/components/metrics/index.tsx

+4-1
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,15 @@ import {
2020
} from '../../../../../src/plugins/data_source_management/public';
2121
import { DataSourceOption } from '../../../../../src/plugins/data_source_management/public/components/data_source_menu/types';
2222
import { OptionType } from '../../../common/types/metrics';
23+
import { setNavBreadCrumbs } from '../../../common/utils/set_nav_bread_crumbs';
24+
import { dataSourceFilterFn } from '../../../common/utils/shared';
2325
import PPLService from '../../services/requests/ppl';
2426
import SavedObjects from '../../services/saved_objects/event_analytics/saved_objects';
2527
import './index.scss';
2628
import { setSelectedDataSourceMDSId } from './redux/slices/metrics_slice';
2729
import { Sidebar } from './sidebar/sidebar';
2830
import { TopMenu } from './top_menu/top_menu';
2931
import { MetricsGrid } from './view/metrics_grid';
30-
import { setNavBreadCrumbs } from '../../../common/utils/set_nav_bread_crumbs';
3132

3233
interface MetricsProps {
3334
parentBreadcrumb: ChromeBreadcrumb;
@@ -82,6 +83,7 @@ export const Home = ({
8283
dispatch(setSelectedDataSourceMDSId(id));
8384
}, 300);
8485
};
86+
8587
const DataSourceMenu = dataSourceManagement?.ui?.getDataSourceMenu<DataSourceSelectableConfig>();
8688
const dataSourceMenuComponent = useMemo(() => {
8789
return (
@@ -94,6 +96,7 @@ export const Home = ({
9496
fullWidth: true,
9597
// activeOption: dataSourceMDSId,
9698
onSelectedDataSources: onSelectedDataSource,
99+
dataSourceFilter: dataSourceFilterFn,
97100
}}
98101
/>
99102
);

public/components/metrics/top_menu/__tests__/__snapshots__/top_menu.test.tsx.snap

+3-1
Original file line numberDiff line numberDiff line change
@@ -697,6 +697,7 @@ exports[`Metrics Top Menu Component renders Top Menu Component when enabled 1`]
697697
className="euiSuperUpdateButton"
698698
color="primary"
699699
data-test-subj="superDatePickerApplyTimeButton"
700+
fill={true}
700701
iconType="refresh"
701702
isDisabled={false}
702703
isLoading={false}
@@ -716,6 +717,7 @@ exports[`Metrics Top Menu Component renders Top Menu Component when enabled 1`]
716717
data-test-subj="superDatePickerApplyTimeButton"
717718
disabled={false}
718719
element="button"
720+
fill={true}
719721
iconType="refresh"
720722
isDisabled={false}
721723
isLoading={false}
@@ -730,7 +732,7 @@ exports[`Metrics Top Menu Component renders Top Menu Component when enabled 1`]
730732
type="button"
731733
>
732734
<button
733-
className="euiButton euiButton--primary euiSuperUpdateButton"
735+
className="euiButton euiButton--primary euiButton--fill euiSuperUpdateButton"
734736
data-test-subj="superDatePickerApplyTimeButton"
735737
disabled={false}
736738
onBlur={[Function]}

public/components/notebooks/components/paragraph_components/paragraphs.tsx

+3
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ import {
3939
} from '../../../../../common/constants/shared';
4040
import { ParaType } from '../../../../../common/types/notebooks';
4141
import { uiSettingsService } from '../../../../../common/utils';
42+
import { dataSourceFilterFn } from '../../../../../common/utils/shared';
4243
import PPLService from '../../../../services/requests/ppl';
4344
import { SavedObjectsActions } from '../../../../services/saved_objects/saved_object_client/saved_objects_actions';
4445
import { ObservabilitySavedVisualization } from '../../../../services/saved_objects/saved_object_client/types';
@@ -549,6 +550,7 @@ export const Paragraphs = forwardRef((props: ParagraphProps, ref) => {
549550
setDataSourceMDSId(dataConnectionId);
550551
handleSelectedDataSourceChange(dataConnectionId, dataConnectionLabel);
551552
};
553+
552554
if (dataSourceEnabled) {
553555
DataSourceSelector = dataSourceManagement.ui.DataSourceSelector;
554556
}
@@ -569,6 +571,7 @@ export const Paragraphs = forwardRef((props: ParagraphProps, ref) => {
569571
{ id: paradataSourceMDSId, label: dataSourceMDSLabel },
570572
]
571573
}
574+
dataSourceFilter={dataSourceFilterFn}
572575
/>
573576
)}
574577
<EuiSpacer size="s" />

public/components/trace_analytics/components/services/service_view.tsx

+3-1
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ import {
3737
DEFAULT_DATA_SOURCE_TYPE,
3838
} from '../../../../../common/constants/data_sources';
3939
import { observabilityLogsID } from '../../../../../common/constants/shared';
40+
import { setNavBreadCrumbs } from '../../../../../common/utils/set_nav_bread_crumbs';
41+
import { dataSourceFilterFn } from '../../../../../common/utils/shared';
4042
import { coreRefs } from '../../../../framework/core_refs';
4143
import { TraceAnalyticsComponentDeps } from '../../home';
4244
import {
@@ -50,7 +52,6 @@ import { SearchBarProps, renderDatePicker } from '../common/search_bar';
5052
import { SpanDetailFlyout } from '../traces/span_detail_flyout';
5153
import { SpanDetailTable } from '../traces/span_detail_table';
5254
import { ServiceMetrics } from './service_metrics';
53-
import { setNavBreadCrumbs } from '../../../../../common/utils/set_nav_bread_crumbs';
5455

5556
interface ServiceViewProps extends TraceAnalyticsComponentDeps {
5657
serviceName: string;
@@ -260,6 +261,7 @@ export function ServiceView(props: ServiceViewProps) {
260261
componentConfig={{
261262
activeOption: props.dataSourceMDSId,
262263
fullWidth: true,
264+
dataSourceFilter: dataSourceFilterFn,
263265
}}
264266
/>
265267
)}

public/components/trace_analytics/components/traces/trace_view.tsx

+3-1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ import {
2626
DataSourceViewConfig,
2727
} from '../../../../../../../src/plugins/data_source_management/public';
2828
import { DataSourceOption } from '../../../../../../../src/plugins/data_source_management/public/components/data_source_menu/types';
29+
import { setNavBreadCrumbs } from '../../../../../common/utils/set_nav_bread_crumbs';
30+
import { dataSourceFilterFn } from '../../../../../common/utils/shared';
2931
import { TraceAnalyticsCoreDeps, TraceAnalyticsMode } from '../../home';
3032
import { handleServiceMapRequest } from '../../requests/services_request_handler';
3133
import {
@@ -37,7 +39,6 @@ import { PanelTitle, filtersToDsl, processTimeStamp } from '../common/helper_fun
3739
import { ServiceMap, ServiceObject } from '../common/plots/service_map';
3840
import { ServiceBreakdownPanel } from './service_breakdown_panel';
3941
import { SpanDetailPanel } from './span_detail_panel';
40-
import { setNavBreadCrumbs } from '../../../../../common/utils/set_nav_bread_crumbs';
4142

4243
interface TraceViewProps extends TraceAnalyticsCoreDeps {
4344
traceId: string;
@@ -260,6 +261,7 @@ export function TraceView(props: TraceViewProps) {
260261
componentConfig={{
261262
activeOption: props.dataSourceMDSId,
262263
fullWidth: true,
264+
dataSourceFilter: dataSourceFilterFn,
263265
}}
264266
/>
265267
)}

public/components/trace_analytics/components/traces/traces_content.tsx

+3-1
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,15 @@
77
import { EuiAccordion, EuiPanel, EuiSpacer, PropertySort } from '@elastic/eui';
88
import React, { useEffect, useState } from 'react';
99
import { DataSourceViewConfig } from '../../../../../../../src/plugins/data_source_management/public';
10+
import { dataSourceFilterFn } from '../../../../../common/utils/shared';
11+
import { coreRefs } from '../../../../framework/core_refs';
1012
import { handleTracesRequest } from '../../requests/traces_request_handler';
1113
import { getValidFilterFields } from '../common/filters/filter_helpers';
1214
import { filtersToDsl, processTimeStamp } from '../common/helper_functions';
1315
import { SearchBar } from '../common/search_bar';
1416
import { DashboardContent } from '../dashboard/dashboard_content';
1517
import { TracesProps } from './traces';
1618
import { TracesTable } from './traces_table';
17-
import { coreRefs } from '../../../../framework/core_refs';
1819

1920
export function TracesContent(props: TracesProps) {
2021
const {
@@ -120,6 +121,7 @@ export function TracesContent(props: TracesProps) {
120121
componentConfig={{
121122
activeOption: dataSourceMDSId,
122123
fullWidth: true,
124+
dataSourceFilter: dataSourceFilterFn,
123125
}}
124126
/>
125127
)}

public/components/trace_analytics/home.tsx

+3-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import { EuiGlobalToastList } from '@elastic/eui';
77
import { Toast } from '@elastic/eui/src/components/toast/global_toast_list';
88
import React, { ReactChild, useEffect, useState } from 'react';
9-
import { HashRouter, Route, RouteComponentProps, Redirect } from 'react-router-dom';
9+
import { HashRouter, Redirect, Route, RouteComponentProps } from 'react-router-dom';
1010
import {
1111
ChromeBreadcrumb,
1212
ChromeStart,
@@ -21,6 +21,7 @@ import {
2121
} from '../../../../../src/plugins/data_source_management/public';
2222
import { DataSourceOption } from '../../../../../src/plugins/data_source_management/public/components/data_source_menu/types';
2323
import { DATA_PREPPER_INDEX_NAME } from '../../../common/constants/trace_analytics';
24+
import { dataSourceFilterFn } from '../../../common/utils/shared';
2425
import { coreRefs } from '../../framework/core_refs';
2526
import { FilterType } from './components/common/filters/filters';
2627
import { getAttributes } from './components/common/helper_functions';
@@ -283,6 +284,7 @@ export const Home = (props: HomeProps) => {
283284
fullWidth: true,
284285
activeOption: dataSourceMDSId,
285286
onSelectedDataSources: onSelectedDataSource,
287+
dataSourceFilter: dataSourceFilterFn,
286288
}}
287289
/>
288290
)}

0 commit comments

Comments
 (0)