@openshift-assisted/ui-lib 2.38.0 → 2.38.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/@types/common/config/docs_links.d.ts +8 -0
- package/build/@types/common/config/docs_links.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/operators/AuthorinoCheckbox.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/operators/CnvCheckbox.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/operators/LsoCheckbox.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/operators/NmstateCheckbox.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/operators/NodeFeatureDiscoveryCheckbox.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/operators/NvidiaGpuCheckbox.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/operators/OdfCheckbox.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/operators/OpenShiftAIRequirements.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/operators/OpenshiftAINvidiaRequirements.d.ts +4 -0
- package/build/@types/ocm/components/clusterConfiguration/operators/OpenshiftAINvidiaRequirements.d.ts.map +1 -0
- package/build/@types/ocm/components/clusterConfiguration/operators/PipelinesChekbox.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/operators/ServerlessCheckbox.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/operators/ServicemeshCheckbox.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/operators/VirtualizationRequirements.d.ts +4 -0
- package/build/@types/ocm/components/clusterConfiguration/operators/VirtualizationRequirements.d.ts.map +1 -0
- package/build/@types/ocm/components/clusterWizard/OperatorsStep.d.ts.map +1 -1
- package/build/cjs/common/config/docs_links.js +9 -1
- package/build/cjs/common/config/docs_links.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/operators/AuthorinoCheckbox.js +6 -1
- package/build/cjs/ocm/components/clusterConfiguration/operators/AuthorinoCheckbox.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/operators/CnvCheckbox.js +6 -1
- package/build/cjs/ocm/components/clusterConfiguration/operators/CnvCheckbox.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/operators/LsoCheckbox.js +6 -1
- package/build/cjs/ocm/components/clusterConfiguration/operators/LsoCheckbox.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/operators/NmstateCheckbox.js +6 -1
- package/build/cjs/ocm/components/clusterConfiguration/operators/NmstateCheckbox.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/operators/NodeFeatureDiscoveryCheckbox.js +6 -1
- package/build/cjs/ocm/components/clusterConfiguration/operators/NodeFeatureDiscoveryCheckbox.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/operators/NvidiaGpuCheckbox.js +6 -1
- package/build/cjs/ocm/components/clusterConfiguration/operators/NvidiaGpuCheckbox.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/operators/OdfCheckbox.js +6 -1
- package/build/cjs/ocm/components/clusterConfiguration/operators/OdfCheckbox.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/operators/OpenShiftAIRequirements.js +1 -12
- package/build/cjs/ocm/components/clusterConfiguration/operators/OpenShiftAIRequirements.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/operators/OpenshiftAINvidiaRequirements.js +30 -0
- package/build/cjs/ocm/components/clusterConfiguration/operators/OpenshiftAINvidiaRequirements.js.map +1 -0
- package/build/cjs/ocm/components/clusterConfiguration/operators/PipelinesChekbox.js +6 -1
- package/build/cjs/ocm/components/clusterConfiguration/operators/PipelinesChekbox.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/operators/ServerlessCheckbox.js +6 -1
- package/build/cjs/ocm/components/clusterConfiguration/operators/ServerlessCheckbox.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/operators/ServicemeshCheckbox.js +7 -2
- package/build/cjs/ocm/components/clusterConfiguration/operators/ServicemeshCheckbox.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/operators/VirtualizationRequirements.js +19 -0
- package/build/cjs/ocm/components/clusterConfiguration/operators/VirtualizationRequirements.js.map +1 -0
- package/build/cjs/ocm/components/clusterWizard/OperatorsStep.js +59 -29
- package/build/cjs/ocm/components/clusterWizard/OperatorsStep.js.map +1 -1
- package/build/cjs/ocm/components/featureSupportLevels/featureStateUtils.js +1 -1
- package/build/cjs/ocm/components/featureSupportLevels/featureStateUtils.js.map +1 -1
- package/lib/common/config/docs_links.ts +23 -0
- package/lib/ocm/components/clusterConfiguration/operators/AuthorinoCheckbox.tsx +5 -1
- package/lib/ocm/components/clusterConfiguration/operators/CnvCheckbox.tsx +13 -2
- package/lib/ocm/components/clusterConfiguration/operators/LsoCheckbox.tsx +5 -1
- package/lib/ocm/components/clusterConfiguration/operators/NmstateCheckbox.tsx +10 -1
- package/lib/ocm/components/clusterConfiguration/operators/NodeFeatureDiscoveryCheckbox.tsx +5 -1
- package/lib/ocm/components/clusterConfiguration/operators/NvidiaGpuCheckbox.tsx +5 -1
- package/lib/ocm/components/clusterConfiguration/operators/OdfCheckbox.tsx +13 -2
- package/lib/ocm/components/clusterConfiguration/operators/OpenShiftAIRequirements.tsx +0 -14
- package/lib/ocm/components/clusterConfiguration/operators/OpenshiftAINvidiaRequirements.tsx +36 -0
- package/lib/ocm/components/clusterConfiguration/operators/PipelinesChekbox.tsx +5 -1
- package/lib/ocm/components/clusterConfiguration/operators/ServerlessCheckbox.tsx +5 -1
- package/lib/ocm/components/clusterConfiguration/operators/ServicemeshCheckbox.tsx +6 -2
- package/lib/ocm/components/clusterConfiguration/operators/VirtualizationRequirements.tsx +26 -0
- package/lib/ocm/components/clusterWizard/OperatorsStep.tsx +155 -110
- package/lib/ocm/components/featureSupportLevels/featureStateUtils.ts +1 -1
- package/package.json +3 -3
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { FormGroup, HelperText, HelperTextItem, Tooltip } from '@patternfly/react-core';
|
|
3
|
-
import { getFieldId, PopoverIcon } from '../../../../common';
|
|
3
|
+
import { getFieldId, PopoverIcon, SERVICE_MESH_OPERATOR_LINK } from '../../../../common';
|
|
4
4
|
import { OcmCheckboxField } from '../../ui/OcmFormFields';
|
|
5
5
|
import { SupportLevel } from '@openshift-assisted/types/./assisted-installer-service';
|
|
6
6
|
import NewFeatureSupportLevelBadge from '../../../../common/components/newFeatureSupportLevels/NewFeatureSupportLevelBadge';
|
|
7
|
+
import ExternalLinkAltIcon from '@patternfly/react-icons/dist/js/icons/external-link-alt-icon';
|
|
7
8
|
|
|
8
|
-
const SERVICEMESH_FIELD_NAME = '
|
|
9
|
+
const SERVICEMESH_FIELD_NAME = 'useServicemesh';
|
|
9
10
|
|
|
10
11
|
const ServiceMeshLabel = ({
|
|
11
12
|
disabledReason,
|
|
@@ -34,6 +35,9 @@ const ServiceMeshHelperText = () => {
|
|
|
34
35
|
<HelperText>
|
|
35
36
|
<HelperTextItem variant="indeterminate">
|
|
36
37
|
Platform that provides behavioral insight and operational control over a service mesh.{' '}
|
|
38
|
+
<a href={SERVICE_MESH_OPERATOR_LINK} target="_blank" rel="noopener noreferrer">
|
|
39
|
+
{'Learn more'} <ExternalLinkAltIcon />
|
|
40
|
+
</a>
|
|
37
41
|
</HelperTextItem>
|
|
38
42
|
</HelperText>
|
|
39
43
|
);
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { List, ListItem } from '@patternfly/react-core';
|
|
3
|
+
|
|
4
|
+
const VirtualizationRequirements = () => {
|
|
5
|
+
return (
|
|
6
|
+
<>
|
|
7
|
+
<List>
|
|
8
|
+
<ListItem>
|
|
9
|
+
Enabled CPU virtualization support in BIOS (Intel-VT / AMD-V) on all nodes.
|
|
10
|
+
</ListItem>
|
|
11
|
+
<ListItem>
|
|
12
|
+
Each control plane node requires an additional 1024 MiB of memory and 3 CPUs.
|
|
13
|
+
</ListItem>
|
|
14
|
+
<ListItem>Each worker node requires an additional 1024 MiB of memory and 5 CPUs.</ListItem>
|
|
15
|
+
</List>
|
|
16
|
+
Bundle operators:
|
|
17
|
+
<List>
|
|
18
|
+
<ListItem>OpenShift Virtualization</ListItem>
|
|
19
|
+
<ListItem>Migration Toolkit for Virtualization</ListItem>
|
|
20
|
+
<ListItem>Nmstate</ListItem>
|
|
21
|
+
</List>
|
|
22
|
+
</>
|
|
23
|
+
);
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
export default VirtualizationRequirements;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/* eslint-disable no-console */
|
|
1
2
|
import React, { useEffect, useState } from 'react';
|
|
2
3
|
import { useSelector } from 'react-redux';
|
|
3
4
|
import {
|
|
@@ -20,6 +21,8 @@ import {
|
|
|
20
21
|
ClusterOperatorProps,
|
|
21
22
|
ClusterWizardStepHeader,
|
|
22
23
|
numberOfEnabledOperators,
|
|
24
|
+
OPERATOR_NAME_CNV,
|
|
25
|
+
OPERATOR_NAME_ODF,
|
|
23
26
|
OperatorsValues,
|
|
24
27
|
PopoverIcon,
|
|
25
28
|
} from '../../../common';
|
|
@@ -45,6 +48,8 @@ import {
|
|
|
45
48
|
getOdfIncompatibleWithLvmsReason,
|
|
46
49
|
getOpenShiftAIIncompatibleWithLvmsReason,
|
|
47
50
|
} from '../featureSupportLevels/featureStateUtils';
|
|
51
|
+
import OpenshiftAINvidiaRequirements from '../clusterConfiguration/operators/OpenshiftAINvidiaRequirements';
|
|
52
|
+
import VirtualizationRequirements from '../clusterConfiguration/operators/VirtualizationRequirements';
|
|
48
53
|
|
|
49
54
|
const operatorsThatCanNotBeInstalledAlone = [
|
|
50
55
|
'nvdia-gpu',
|
|
@@ -73,6 +78,8 @@ export const OperatorsStep = (props: ClusterOperatorProps) => {
|
|
|
73
78
|
const { updateUISettings, uiSettings } = useClusterWizardContext();
|
|
74
79
|
const { values, setFieldValue } = useFormikContext<OperatorsValues>();
|
|
75
80
|
const featureSupportLevelData = useNewFeatureSupportLevel();
|
|
81
|
+
const [hasUnsupportedOperators, setHasUnsupportedOperators] = useState<boolean>(false);
|
|
82
|
+
const [hasIncompatibleOperators, setHasIncompatibleOperators] = useState<boolean>(false);
|
|
76
83
|
|
|
77
84
|
useEffect(() => {
|
|
78
85
|
const fetchBundles = async () => {
|
|
@@ -156,6 +163,9 @@ export const OperatorsStep = (props: ClusterOperatorProps) => {
|
|
|
156
163
|
newBundleOperators.push(op);
|
|
157
164
|
const fieldId = mapOperatorsToFieldIds[op]; // Obtener el ID del campo correspondiente
|
|
158
165
|
setFieldValue(fieldId, checked);
|
|
166
|
+
if (op === OPERATOR_NAME_CNV || op === OPERATOR_NAME_ODF) {
|
|
167
|
+
setFieldValue('useLso', checked);
|
|
168
|
+
}
|
|
159
169
|
}
|
|
160
170
|
});
|
|
161
171
|
} else {
|
|
@@ -165,6 +175,9 @@ export const OperatorsStep = (props: ClusterOperatorProps) => {
|
|
|
165
175
|
operators.forEach((op) => {
|
|
166
176
|
const fieldId = mapOperatorsToFieldIds[op]; // Obtener el ID del campo correspondiente
|
|
167
177
|
setFieldValue(fieldId, checked);
|
|
178
|
+
if (op === OPERATOR_NAME_CNV || op === OPERATOR_NAME_ODF) {
|
|
179
|
+
setFieldValue('useLso', checked);
|
|
180
|
+
}
|
|
168
181
|
});
|
|
169
182
|
}
|
|
170
183
|
|
|
@@ -178,7 +191,7 @@ export const OperatorsStep = (props: ClusterOperatorProps) => {
|
|
|
178
191
|
setBundleOperators(newBundleOperators);
|
|
179
192
|
};
|
|
180
193
|
|
|
181
|
-
const getBundleLabel = (title: string | undefined
|
|
194
|
+
const getBundleLabel = (title: string | undefined) => {
|
|
182
195
|
return (
|
|
183
196
|
<>
|
|
184
197
|
<span>{title} </span>
|
|
@@ -186,15 +199,11 @@ export const OperatorsStep = (props: ClusterOperatorProps) => {
|
|
|
186
199
|
component={'a'}
|
|
187
200
|
bodyContent={
|
|
188
201
|
<>
|
|
189
|
-
<
|
|
190
|
-
{
|
|
191
|
-
<
|
|
192
|
-
{operators.map((operator, index) => (
|
|
193
|
-
<li key={index}>{operator}</li>
|
|
194
|
-
))}
|
|
195
|
-
</ul>
|
|
202
|
+
<span style={{ fontSize: '1.1em' }}>{'Requirements and dependencies'}</span>
|
|
203
|
+
{title === 'Virtualization' ? (
|
|
204
|
+
<VirtualizationRequirements />
|
|
196
205
|
) : (
|
|
197
|
-
<
|
|
206
|
+
<OpenshiftAINvidiaRequirements />
|
|
198
207
|
)}
|
|
199
208
|
</>
|
|
200
209
|
}
|
|
@@ -202,49 +211,79 @@ export const OperatorsStep = (props: ClusterOperatorProps) => {
|
|
|
202
211
|
</>
|
|
203
212
|
);
|
|
204
213
|
};
|
|
205
|
-
const bundleHasOperatorsNotSupported = (operators: string[] | undefined) => {
|
|
206
|
-
return (
|
|
207
|
-
operators?.some(
|
|
208
|
-
(operator) =>
|
|
209
|
-
!featureSupportLevelData.isFeatureSupported(mapOperatorIdToFeatureId[operator]),
|
|
210
|
-
) ?? false
|
|
211
|
-
);
|
|
212
|
-
};
|
|
213
214
|
|
|
214
|
-
const
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
215
|
+
const bundleHasOperatorsNotSupported = React.useCallback(
|
|
216
|
+
(operators: string[] | undefined) => {
|
|
217
|
+
return (
|
|
218
|
+
operators?.some(
|
|
219
|
+
(operator) =>
|
|
220
|
+
!featureSupportLevelData.isFeatureSupported(mapOperatorIdToFeatureId[operator]),
|
|
221
|
+
) ?? false
|
|
222
|
+
);
|
|
223
|
+
},
|
|
224
|
+
[featureSupportLevelData],
|
|
225
|
+
);
|
|
226
|
+
|
|
227
|
+
const getDisabledReasonForOperator = React.useCallback(
|
|
228
|
+
(operatorKey: string, values: OperatorsValues) => {
|
|
229
|
+
let disabledReason = featureSupportLevelData.getFeatureDisabledReason(
|
|
230
|
+
mapOperatorIdToFeatureId[operatorKey],
|
|
231
|
+
);
|
|
232
|
+
if (operatorKey === 'cnv') {
|
|
233
|
+
if (!disabledReason) {
|
|
234
|
+
const lvmSupport = featureSupportLevelData.getFeatureSupportLevel('LVM');
|
|
235
|
+
disabledReason = getCnvIncompatibleWithLvmReason(values, lvmSupport);
|
|
236
|
+
}
|
|
237
|
+
if (!disabledReason) {
|
|
238
|
+
disabledReason = getCnvDisabledWithMtvReason(values);
|
|
239
|
+
}
|
|
225
240
|
}
|
|
226
|
-
|
|
227
|
-
if (operatorKey === 'lvm') {
|
|
228
|
-
if (!disabledReason) {
|
|
229
|
-
const lvmSupport = featureSupportLevelData.getFeatureSupportLevel('LVM');
|
|
230
|
-
disabledReason = getLvmIncompatibleWithCnvReason(values, lvmSupport);
|
|
241
|
+
if (operatorKey === 'lvm') {
|
|
231
242
|
if (!disabledReason) {
|
|
232
|
-
|
|
243
|
+
const lvmSupport = featureSupportLevelData.getFeatureSupportLevel('LVM');
|
|
244
|
+
disabledReason = getLvmIncompatibleWithCnvReason(values, lvmSupport);
|
|
245
|
+
if (!disabledReason) {
|
|
246
|
+
disabledReason = getLvmsIncompatibleWithOdfReason(values);
|
|
247
|
+
}
|
|
233
248
|
}
|
|
234
249
|
}
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
250
|
+
if (operatorKey === 'odf') {
|
|
251
|
+
if (!disabledReason) {
|
|
252
|
+
disabledReason = getOdfIncompatibleWithLvmsReason(values);
|
|
253
|
+
}
|
|
239
254
|
}
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
255
|
+
if (operatorKey === 'openshift-ai') {
|
|
256
|
+
if (!disabledReason) {
|
|
257
|
+
disabledReason = getOpenShiftAIIncompatibleWithLvmsReason(values);
|
|
258
|
+
}
|
|
244
259
|
}
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
260
|
+
return disabledReason;
|
|
261
|
+
},
|
|
262
|
+
[featureSupportLevelData],
|
|
263
|
+
);
|
|
264
|
+
|
|
265
|
+
const bundleHasOperatorsNotCompatibles = React.useCallback(
|
|
266
|
+
(operators: string[] | undefined, values: OperatorsValues) => {
|
|
267
|
+
return (
|
|
268
|
+
operators?.some((operatorKey) => {
|
|
269
|
+
const disabledReason = getDisabledReasonForOperator(operatorKey, values);
|
|
270
|
+
console.log(disabledReason);
|
|
271
|
+
return disabledReason !== undefined;
|
|
272
|
+
}) ?? false
|
|
273
|
+
);
|
|
274
|
+
},
|
|
275
|
+
[getDisabledReasonForOperator],
|
|
276
|
+
);
|
|
277
|
+
|
|
278
|
+
useEffect(() => {
|
|
279
|
+
setHasUnsupportedOperators(
|
|
280
|
+
bundles.some((bundle) => bundleHasOperatorsNotSupported(bundle.operators)),
|
|
281
|
+
);
|
|
282
|
+
|
|
283
|
+
setHasIncompatibleOperators(
|
|
284
|
+
bundles.some((bundle) => bundleHasOperatorsNotCompatibles(bundle.operators, values)),
|
|
285
|
+
);
|
|
286
|
+
}, [values, bundles, bundleHasOperatorsNotSupported, bundleHasOperatorsNotCompatibles]);
|
|
248
287
|
|
|
249
288
|
return (
|
|
250
289
|
<Stack hasGutter data-testid={'operators-page'}>
|
|
@@ -274,75 +313,81 @@ export const OperatorsStep = (props: ClusterOperatorProps) => {
|
|
|
274
313
|
</StackItem>
|
|
275
314
|
{/* Mostrar bundles como tarjetas */}
|
|
276
315
|
<Gallery hasGutter minWidths={{ default: '350px' }} maxWidths={{ default: '2fr' }}>
|
|
277
|
-
{filteredBundles.map((bundle) =>
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
bundle.id && selectedBundles[bundle.id]
|
|
295
|
-
? { border: '1px solid #004080', height: '200px' }
|
|
296
|
-
: { height: '200px' }
|
|
297
|
-
}
|
|
298
|
-
isDisabled={
|
|
299
|
-
bundleHasOperatorsNotSupported(bundle.operators) ||
|
|
300
|
-
(isSNO && bundle.id === 'openshift-ai-nvidia')
|
|
316
|
+
{filteredBundles.map((bundle) => {
|
|
317
|
+
const isSnoAndBlockedBundle = isSNO && bundle.id === 'openshift-ai-nvidia';
|
|
318
|
+
|
|
319
|
+
const tooltipContent = hasUnsupportedOperators
|
|
320
|
+
? 'Some operators in this bundle are not supported with the current configuration.'
|
|
321
|
+
: hasIncompatibleOperators
|
|
322
|
+
? 'Some operators in this bundle can not be installed with some single operators selected.'
|
|
323
|
+
: isSnoAndBlockedBundle
|
|
324
|
+
? 'This bundle is not available when deploying a Single Node OpenShift.'
|
|
325
|
+
: '';
|
|
326
|
+
|
|
327
|
+
return (
|
|
328
|
+
<GalleryItem key={bundle.id}>
|
|
329
|
+
<Tooltip
|
|
330
|
+
content={tooltipContent}
|
|
331
|
+
hidden={
|
|
332
|
+
!hasUnsupportedOperators && !hasIncompatibleOperators && !isSnoAndBlockedBundle
|
|
301
333
|
}
|
|
302
334
|
>
|
|
303
|
-
<
|
|
304
|
-
style={
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
onChange={(_event, checked) =>
|
|
313
|
-
void handleBundleSelection(bundle.id || '', bundle.operators || [], checked)
|
|
314
|
-
}
|
|
315
|
-
isDisabled={
|
|
316
|
-
bundleHasOperatorsNotSupported(bundle.operators) ||
|
|
317
|
-
(isSNO && bundle.id === 'openshift-ai-nvidia')
|
|
318
|
-
}
|
|
319
|
-
/>
|
|
320
|
-
</CardTitle>
|
|
321
|
-
<CardBody
|
|
322
|
-
style={{
|
|
323
|
-
display: 'flex',
|
|
324
|
-
flexDirection: 'column',
|
|
325
|
-
justifyContent: 'space-between',
|
|
326
|
-
height: '100%',
|
|
327
|
-
}}
|
|
335
|
+
<Card
|
|
336
|
+
style={
|
|
337
|
+
bundle.id && selectedBundles[bundle.id]
|
|
338
|
+
? { border: '1px solid #004080', height: '200px' }
|
|
339
|
+
: { height: '200px' }
|
|
340
|
+
}
|
|
341
|
+
isDisabled={
|
|
342
|
+
hasUnsupportedOperators || hasIncompatibleOperators || isSnoAndBlockedBundle
|
|
343
|
+
}
|
|
328
344
|
>
|
|
329
|
-
<
|
|
330
|
-
|
|
331
|
-
|
|
345
|
+
<CardTitle
|
|
346
|
+
style={{
|
|
347
|
+
display: 'flex',
|
|
348
|
+
justifyContent: 'space-between',
|
|
349
|
+
alignItems: 'center',
|
|
350
|
+
}}
|
|
351
|
+
>
|
|
352
|
+
<div style={{ display: 'flex', alignItems: 'center', gap: '8px' }}>
|
|
353
|
+
{getBundleLabel(bundle.title)}
|
|
354
|
+
</div>
|
|
355
|
+
<Checkbox
|
|
356
|
+
id={`bundle-${bundle.id || ''}`}
|
|
357
|
+
isChecked={bundle.id ? selectedBundles[bundle.id] : false}
|
|
358
|
+
onChange={(_event, checked) =>
|
|
359
|
+
void handleBundleSelection(bundle.id || '', bundle.operators || [], checked)
|
|
360
|
+
}
|
|
361
|
+
isDisabled={
|
|
362
|
+
hasUnsupportedOperators || hasIncompatibleOperators || isSnoAndBlockedBundle
|
|
363
|
+
}
|
|
364
|
+
/>
|
|
365
|
+
</CardTitle>
|
|
366
|
+
<CardBody
|
|
367
|
+
style={{
|
|
368
|
+
display: 'flex',
|
|
369
|
+
flexDirection: 'column',
|
|
370
|
+
justifyContent: 'space-between',
|
|
371
|
+
height: '100%',
|
|
372
|
+
}}
|
|
373
|
+
>
|
|
374
|
+
<div>{bundle.description}</div>
|
|
332
375
|
|
|
333
|
-
|
|
334
|
-
{
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
376
|
+
{/* Badge aligned to the bottom-left */}
|
|
377
|
+
<div style={{ marginTop: '10px', alignSelf: 'flex-end', height: '25px' }}>
|
|
378
|
+
{bundle.id === 'openshift-ai-nvidia' && (
|
|
379
|
+
<NewFeatureSupportLevelBadge
|
|
380
|
+
featureId="OPENSHIFT_AI"
|
|
381
|
+
supportLevel="dev-preview"
|
|
382
|
+
/>
|
|
383
|
+
)}
|
|
384
|
+
</div>
|
|
385
|
+
</CardBody>
|
|
386
|
+
</Card>
|
|
387
|
+
</Tooltip>
|
|
388
|
+
</GalleryItem>
|
|
389
|
+
);
|
|
390
|
+
})}
|
|
346
391
|
</Gallery>
|
|
347
392
|
<ExpandableSection
|
|
348
393
|
toggleText={`Single Operators (${supportedOperators.length} | ${
|
|
@@ -351,7 +351,7 @@ const getOpenShiftAIDisabledReason = (
|
|
|
351
351
|
export const getCnvDisabledWithMtvReason = (operatorValues: OperatorsValues) => {
|
|
352
352
|
const mustDisableCnv =
|
|
353
353
|
operatorValues.useContainerNativeVirtualization &&
|
|
354
|
-
operatorValues.useMigrationToolkitforVirtualization;
|
|
354
|
+
!operatorValues.useMigrationToolkitforVirtualization;
|
|
355
355
|
return mustDisableCnv
|
|
356
356
|
? `Currently, you need to install ${CNV_OPERATOR_LABEL} operator at the same time as ${MTV_OPERATOR_LABEL} operator.`
|
|
357
357
|
: undefined;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"dependencies": {
|
|
3
|
-
"@openshift-assisted/locales": "2.38.
|
|
4
|
-
"@openshift-assisted/types": "2.38.
|
|
3
|
+
"@openshift-assisted/locales": "2.38.1",
|
|
4
|
+
"@openshift-assisted/types": "2.38.1",
|
|
5
5
|
"@openshift-console/dynamic-plugin-sdk": "0.0.3",
|
|
6
6
|
"@patternfly/patternfly": "5.2.0",
|
|
7
7
|
"@patternfly/react-code-editor": "5.2.0",
|
|
@@ -139,5 +139,5 @@
|
|
|
139
139
|
]
|
|
140
140
|
}
|
|
141
141
|
},
|
|
142
|
-
"version": "2.38.
|
|
142
|
+
"version": "2.38.1"
|
|
143
143
|
}
|