Skip to content

Commit 9efb576

Browse files
Merge pull request #15671 from logonoff/CONSOLE-4840-s2e11-booze-cruise
CONSOLE-4840: Remove `FeatureFlag/Model` and `ModelDefinition`
2 parents bb2fd07 + 51c393d commit 9efb576

File tree

20 files changed

+38
-270
lines changed

20 files changed

+38
-270
lines changed

frontend/packages/console-app/src/__tests__/extension-checks/features.spec.ts

Lines changed: 0 additions & 34 deletions
This file was deleted.

frontend/packages/console-app/src/__tests__/extension-checks/models.spec.ts

Lines changed: 0 additions & 25 deletions
This file was deleted.

frontend/packages/console-dynamic-plugin-sdk/CHANGELOG-core.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,12 @@ table in [Console dynamic plugins README](./README.md).
1212

1313
## 4.21.0-prerelease.x - TBD
1414

15+
- Deprecated `setPluginStore` function in `k8s-utils.ts`. The function is now a noop and the export
16+
will be removed in a future release. ([CONSOLE-4840], [#15671])
17+
- Fix `popupComponent` prop type in extension `console.dashboards/overview/health/resource` ([CONSOLE-4796], [#15526])
1518
- Begin alignment of plugin SDK types with `@openshift/dynamic-plugin-sdk` ([CONSOLE-3769], [#15509])
1619
- Add optional `fetch` property to extension `console.dashboards/overview/health/url` ([CONSOLE-4796], [#15526])
1720
- Add optional `infrastructure` parameter to `PrometheusHealthHandler` type ([CONSOLE-4796], [#15526])
18-
- Fix `popupComponent` prop type in extension `console.dashboards/overview/health/resource` ([CONSOLE-4796], [#15526])
1921

2022
## 4.20.0-prerelease.1 - 2025-08-15
2123

@@ -133,6 +135,7 @@ table in [Console dynamic plugins README](./README.md).
133135
[CONSOLE-4654]: https://issues.redhat.com/browse/CONSOLE-4654
134136
[CONSOLE-4656]: https://issues.redhat.com/browse/CONSOLE-4656
135137
[CONSOLE-4796]: https://issues.redhat.com/browse/CONSOLE-4796
138+
[CONSOLE-4840]: https://issues.redhat.com/browse/CONSOLE-4840
136139
[OCPBUGS-19048]: https://issues.redhat.com/browse/OCPBUGS-19048
137140
[OCPBUGS-30077]: https://issues.redhat.com/browse/OCPBUGS-30077
138141
[OCPBUGS-31355]: https://issues.redhat.com/browse/OCPBUGS-31355
@@ -191,3 +194,4 @@ table in [Console dynamic plugins README](./README.md).
191194
[#15386]: https://github.com/openshift/console/pull/15386
192195
[#15509]: https://github.com/openshift/console/pull/15509
193196
[#15526]: https://github.com/openshift/console/pull/15526
197+
[#15671]: https://github.com/openshift/console/pull/15671

frontend/packages/console-dynamic-plugin-sdk/docs/api.md

Lines changed: 2 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
| API kind | Exposed APIs |
44
| -------- | ------------ |
55
| Variable (82) | [ActionServiceProvider](#actionserviceprovider), [BlueInfoCircleIcon](#blueinfocircleicon), [CamelCaseWrap](#camelcasewrap), [checkAccess](#checkaccess), [CodeEditor](#codeeditor), [consoleFetch](#consolefetch), [consoleFetchJSON](#consolefetchjson), [consoleFetchText](#consolefetchtext), [DocumentTitle](#documenttitle), [ErrorBoundaryFallbackPage](#errorboundaryfallbackpage), [ErrorStatus](#errorstatus), [GenericStatus](#genericstatus), [getAPIVersionForModel](#getapiversionformodel), [getGroupVersionKindForModel](#getgroupversionkindformodel), [getGroupVersionKindForResource](#getgroupversionkindforresource), [GreenCheckCircleIcon](#greencheckcircleicon), [HorizontalNav](#horizontalnav), [InfoStatus](#infostatus), [InventoryItem](#inventoryitem), [InventoryItemBody](#inventoryitembody), [InventoryItemLoading](#inventoryitemloading), [InventoryItemStatus](#inventoryitemstatus), [InventoryItemTitle](#inventoryitemtitle), [isAllNamespacesKey](#isallnamespaceskey), [k8sCreate](#k8screate), [k8sDelete](#k8sdelete), [k8sGet](#k8sget), [k8sList](#k8slist), [k8sListItems](#k8slistitems), [k8sPatch](#k8spatch), [k8sUpdate](#k8supdate), [ListPageBody](#listpagebody), [ListPageCreate](#listpagecreate), [ListPageCreateButton](#listpagecreatebutton), [ListPageCreateDropdown](#listpagecreatedropdown), [ListPageCreateLink](#listpagecreatelink), [ListPageHeader](#listpageheader), [NamespaceBar](#namespacebar), [Overview](#overview), [OverviewGrid](#overviewgrid), [PopoverStatus](#popoverstatus), [ProgressStatus](#progressstatus), [QueryBrowser](#querybrowser), [RedExclamationCircleIcon](#redexclamationcircleicon), [ResourceEventStream](#resourceeventstream), [ResourceIcon](#resourceicon), [ResourceLink](#resourcelink), [ResourceStatus](#resourcestatus), [ResourceYAMLEditor](#resourceyamleditor), [StatusComponent](#statuscomponent), [StatusIconAndText](#statusiconandtext), [StatusPopupItem](#statuspopupitem), [StatusPopupSection](#statuspopupsection), [SuccessStatus](#successstatus), [TableData](#tabledata), [Timestamp](#timestamp), [useAccessReview](#useaccessreview), [useActiveColumns](#useactivecolumns), [useActiveNamespace](#useactivenamespace), [useActivePerspective](#useactiveperspective), [useAnnotationsModal](#useannotationsmodal), [useDeleteModal](#usedeletemodal), [useFlag](#useflag), [useK8sModel](#usek8smodel), [useK8sModels](#usek8smodels), [useK8sWatchResource](#usek8swatchresource), [useK8sWatchResources](#usek8swatchresources), [useLabelsModal](#uselabelsmodal), [useOverlay](#useoverlay), [usePrometheusPoll](#useprometheuspoll), [useQuickStartContext](#usequickstartcontext), [useResolvedExtensions](#useresolvedextensions), [useUserSettings](#useusersettings), [YellowExclamationTriangleIcon](#yellowexclamationtriangleicon), [ListPageFilter](#listpagefilter), [PerspectiveContext](#perspectivecontext), [useAccessReviewAllowed](#useaccessreviewallowed), [useListPageFilter](#uselistpagefilter), [useModal](#usemodal), [useSafetyFirst](#usesafetyfirst), [VirtualizedTable](#virtualizedtable), [YAMLEditor](#yamleditor) |
6-
| TypeAlias (28) | [Alert](#alert), [Alerts](#alerts), [AlwaysOnExtension](#alwaysonextension), [ColoredIconProps](#colorediconprops), [DiscoveryResources](#discoveryresources), [ExtensionHook](#extensionhook), [ExtensionHookResult](#extensionhookresult), [ExtensionK8sGroupKindModel](#extensionk8sgroupkindmodel), [ExtensionK8sGroupModel](#extensionk8sgroupmodel), [ExtensionK8sKindVersionModel](#extensionk8skindversionmodel), [ExtensionK8sModel](#extensionk8smodel), [K8sModel](#k8smodel), [K8sVerb](#k8sverb), [MatchExpression](#matchexpression), [MatchLabels](#matchlabels), [ModalComponent](#modalcomponent), [OverlayComponent](#overlaycomponent), [PerspectiveContextType](#perspectivecontexttype), [PrometheusAlert](#prometheusalert), [PrometheusLabels](#prometheuslabels), [PrometheusRule](#prometheusrule), [PrometheusRulesResponse](#prometheusrulesresponse), [PrometheusValue](#prometheusvalue), [ResolvedExtension](#resolvedextension), [Rule](#rule), [Selector](#selector), [Silence](#silence), [K8sKind](#k8skind) |
7-
| Interface (1) | [ModelDefinition](#modeldefinition) |
6+
| TypeAlias (27) | [Alert](#alert), [Alerts](#alerts), [ColoredIconProps](#colorediconprops), [DiscoveryResources](#discoveryresources), [ExtensionHook](#extensionhook), [ExtensionHookResult](#extensionhookresult), [ExtensionK8sGroupKindModel](#extensionk8sgroupkindmodel), [ExtensionK8sGroupModel](#extensionk8sgroupmodel), [ExtensionK8sKindVersionModel](#extensionk8skindversionmodel), [ExtensionK8sModel](#extensionk8smodel), [K8sModel](#k8smodel), [K8sVerb](#k8sverb), [MatchExpression](#matchexpression), [MatchLabels](#matchlabels), [ModalComponent](#modalcomponent), [OverlayComponent](#overlaycomponent), [PerspectiveContextType](#perspectivecontexttype), [PrometheusAlert](#prometheusalert), [PrometheusLabels](#prometheuslabels), [PrometheusRule](#prometheusrule), [PrometheusRulesResponse](#prometheusrulesresponse), [PrometheusValue](#prometheusvalue), [ResolvedExtension](#resolvedextension), [Rule](#rule), [Selector](#selector), [Silence](#silence), [K8sKind](#k8skind) |
7+
| Interface (0) | |
88
| Enum (6) | [AlertSeverity](#alertseverity), [AlertStates](#alertstates), [Operator](#operator), [PrometheusEndpoint](#prometheusendpoint), [RuleStates](#rulestates), [SilenceStates](#silencestates) |
99

1010
---
@@ -115,24 +115,6 @@ Documentation is not available, please refer to the implementation.
115115

116116

117117

118-
### Source
119-
120-
[`frontend/packages/console-dynamic-plugin-sdk/src/api/common-types.ts`](https://github.com/openshift/console/tree/main/frontend/packages/console-dynamic-plugin-sdk/src/api/common-types.ts)
121-
122-
---
123-
124-
## `AlwaysOnExtension`
125-
126-
### Summary
127-
128-
Documentation is not available, please refer to the implementation.
129-
130-
131-
132-
133-
134-
135-
136118
### Source
137119

138120
[`frontend/packages/console-dynamic-plugin-sdk/src/api/common-types.ts`](https://github.com/openshift/console/tree/main/frontend/packages/console-dynamic-plugin-sdk/src/api/common-types.ts)
@@ -1563,24 +1545,6 @@ Documentation is not available, please refer to the implementation.
15631545
15641546
---
15651547
1566-
## `ModelDefinition`
1567-
1568-
### Summary
1569-
1570-
Documentation is not available, please refer to the implementation.
1571-
1572-
1573-
1574-
1575-
1576-
1577-
1578-
### Source
1579-
1580-
[`frontend/packages/console-dynamic-plugin-sdk/src/api/common-types.ts`](https://github.com/openshift/console/tree/main/frontend/packages/console-dynamic-plugin-sdk/src/api/common-types.ts)
1581-
1582-
---
1583-
15841548
## `NamespaceBar`
15851549
15861550
### Summary

frontend/packages/console-dynamic-plugin-sdk/src/api/common-types.ts

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
import { Extension } from '../types';
2-
31
export type { ResolvedExtension } from '../types';
42

53
// Type for extension hook
@@ -222,19 +220,6 @@ export type DiscoveryResources = {
222220
};
223221
};
224222

225-
export type AlwaysOnExtension<P extends {} = any> = Omit<Extension<P>, 'flags'>;
226-
227-
namespace ExtensionProperties {
228-
export interface ModelDefinition {
229-
/** Additional Kubernetes model definitions to register with Console. */
230-
models: K8sModel[];
231-
}
232-
}
233-
234-
export interface ModelDefinition extends AlwaysOnExtension<ExtensionProperties.ModelDefinition> {
235-
type: 'ModelDefinition';
236-
}
237-
238223
export enum PrometheusEndpoint {
239224
LABEL = 'api/v1/label',
240225
QUERY = 'api/v1/query',

frontend/packages/console-dynamic-plugin-sdk/src/runtime/plugin-init.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,13 @@ import {
77
import { RootState } from '@console/internal/redux';
88
import { initSubscriptionService } from '@console/plugin-sdk/src/api/pluginSubscriptionService';
99
import { PluginStore } from '@console/plugin-sdk/src/store';
10-
import { setPluginStore } from '../utils/k8s';
1110
import { registerPluginEntryCallback, loadAndEnablePlugin } from './plugin-loader';
1211

1312
export const initConsolePlugins = _.once(
1413
(pluginStore: PluginStore, reduxStore: Store<RootState>) => {
1514
// Initialize dynamic plugin infrastructure
1615
initSubscriptionService(pluginStore, reduxStore);
1716
registerPluginEntryCallback(pluginStore);
18-
setPluginStore(pluginStore);
1917

2018
// Initialize webpack share scope object and start loading plugins
2119
initSharedScope()

frontend/packages/console-dynamic-plugin-sdk/src/utils/k8s/hooks/__tests__/useK8sModels.spec.tsx

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import thunk from 'redux-thunk';
66
import { receivedResources } from '@console/internal/actions/k8s';
77
import { ConfigMapModel, SecretModel } from '@console/internal/models';
88
import { SDKReducers } from '../../../../app';
9-
import { setPluginStore } from '../../k8s-utils';
109
import { useK8sModels } from '../useK8sModels';
1110

1211
// Redux wrapper
@@ -26,8 +25,6 @@ const WatchModels: React.FC<{}> = () => {
2625
return null;
2726
};
2827

29-
setPluginStore({ getExtensions: () => [] });
30-
3128
beforeEach(() => {
3229
store = createStore(combineReducers(SDKReducers), {}, applyMiddleware(thunk));
3330
modelUpdate.mockClear();

frontend/packages/console-dynamic-plugin-sdk/src/utils/k8s/hooks/__tests__/useK8sWatchResource.spec.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { receivedResources } from '@console/internal/actions/k8s';
77
import { SDKReducers } from '../../../../app';
88
import { WatchK8sResource } from '../../../../extensions/console-types';
99
import { k8sList, k8sGet } from '../../k8s-resource';
10-
import { setPluginStore, k8sWatch } from '../../k8s-utils';
10+
import { k8sWatch } from '../../k8s-utils';
1111
import { useK8sWatchResource } from '../useK8sWatchResource';
1212
import { PodModel, podData, podList } from './useK8sWatchResource.data';
1313

@@ -43,7 +43,6 @@ const WatchResource: React.FC<{ initResource: WatchK8sResource }> = ({ initResou
4343

4444
beforeEach(() => {
4545
// Init k8s redux store with just one model
46-
setPluginStore({ getExtensions: () => [] });
4746
store = createStore(combineReducers(SDKReducers), {}, applyMiddleware(thunk));
4847
store.dispatch(
4948
receivedResources({

frontend/packages/console-dynamic-plugin-sdk/src/utils/k8s/hooks/__tests__/useK8sWatchResources.spec.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import { receivedResources } from '@console/internal/actions/k8s';
88
import { SDKReducers } from '../../../../app';
99
import { WatchK8sResources } from '../../../../extensions/console-types';
1010
import { k8sList, k8sGet } from '../../k8s-resource';
11-
import { setPluginStore, k8sWatch } from '../../k8s-utils';
11+
import { k8sWatch } from '../../k8s-utils';
1212
import { useK8sWatchResources } from '../useK8sWatchResources';
1313
import { PodModel, podData, podList } from './useK8sWatchResource.data';
1414

@@ -43,7 +43,6 @@ const WatchResource: React.FC<{ initResources: WatchK8sResources<{}> }> = ({ ini
4343

4444
beforeEach(() => {
4545
// Init k8s redux store with just one model
46-
setPluginStore({ getExtensions: () => [] });
4746
store = createStore(combineReducers(SDKReducers), {}, applyMiddleware(thunk));
4847
store.dispatch(
4948
receivedResources({

frontend/packages/console-dynamic-plugin-sdk/src/utils/k8s/k8s-utils.ts

Lines changed: 5 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,8 @@
11
import { Map as ImmutableMap } from 'immutable';
22
import * as _ from 'lodash';
3-
import {
4-
K8sModel,
5-
MatchExpression,
6-
MatchLabels,
7-
ModelDefinition,
8-
Selector,
9-
} from '../../api/common-types';
3+
import { K8sModel, MatchExpression, MatchLabels, Selector } from '../../api/common-types';
104
import { Options } from '../../api/internal-types';
115
import { QueryParams, K8sResourceKindReference } from '../../extensions/console-types';
12-
import { Extension } from '../../types';
136
import { k8sBasePath } from './k8s';
147
import { getReferenceForModel } from './k8s-ref';
158
import { WSFactory, WSOptions } from './ws-factory';
@@ -178,14 +171,10 @@ export const k8sWatch = (
178171
return new WSFactory(path, wsOptionsUpdated as WSOptions);
179172
};
180173

181-
interface PluginStore {
182-
getExtensions: () => Extension[];
183-
}
184-
185-
let pluginStore: PluginStore;
186-
187-
export const setPluginStore = (store: PluginStore): void => {
188-
pluginStore = store;
174+
/** @deprecated - This function is now a noop and will be removed in future releases. */
175+
export const setPluginStore = (store: any) => {
176+
// eslint-disable-next-line no-void
177+
void store;
189178
};
190179

191180
const modelKey = (model: K8sModel): string => {
@@ -201,10 +190,6 @@ export const modelsToMap = (
201190
});
202191
};
203192

204-
export const isModelDefinition = (e: Extension): e is ModelDefinition => {
205-
return e.type === 'ModelDefinition';
206-
};
207-
208193
/**
209194
* Contains static resource definitions for Kubernetes objects.
210195
* Keys are of type `group:version:Kind`, but TypeScript doesn't support regex types (https://github.com/Microsoft/TypeScript/issues/6579).
@@ -215,18 +200,6 @@ const getK8sModels = () => {
215200
if (!k8sModels) {
216201
// TODO this was migrated from console and is only used for the fallback API discovery and can likely be removed
217202
k8sModels = modelsToMap(_.values(staticModels));
218-
219-
const hasModel = (model: K8sModel) => k8sModels.has(modelKey(model));
220-
221-
k8sModels = k8sModels.withMutations((map) => {
222-
const pluginModels = _.flatMap(
223-
pluginStore
224-
.getExtensions()
225-
.filter(isModelDefinition)
226-
.map((md) => md.properties.models),
227-
);
228-
map.merge(modelsToMap(pluginModels.filter((model) => !hasModel(model))));
229-
});
230203
}
231204
return k8sModels;
232205
};

0 commit comments

Comments
 (0)