@openshift-assisted/ui-lib 2.38.1 → 2.38.3
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/cim/components/ClusterDeployment/wizardTransition.d.ts +1 -1
- package/build/@types/cim/components/ClusterDeployment/wizardTransition.d.ts.map +1 -1
- package/build/@types/common/config/constants.d.ts +8 -0
- package/build/@types/common/config/constants.d.ts.map +1 -1
- package/build/@types/common/config/docs_links.d.ts +5 -5
- package/build/@types/common/config/docs_links.d.ts.map +1 -1
- package/build/@types/common/types/clusters.d.ts +2 -0
- package/build/@types/common/types/clusters.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/operators/AmdGpuCheckbox.d.ts +6 -0
- package/build/@types/ocm/components/clusterConfiguration/operators/AmdGpuCheckbox.d.ts.map +1 -0
- package/build/@types/ocm/components/clusterConfiguration/operators/CnvCheckbox.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/operators/KmmCheckbox.d.ts +6 -0
- package/build/@types/ocm/components/clusterConfiguration/operators/KmmCheckbox.d.ts.map +1 -0
- package/build/@types/ocm/components/clusterConfiguration/operators/LsoCheckbox.d.ts +2 -1
- package/build/@types/ocm/components/clusterConfiguration/operators/LsoCheckbox.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/operators/MtvOperatorCheckbox.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/operators/NmstateCheckbox.d.ts +2 -1
- package/build/@types/ocm/components/clusterConfiguration/operators/NmstateCheckbox.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/operators/NodeFeatureDiscoveryCheckbox.d.ts +2 -1
- package/build/@types/ocm/components/clusterConfiguration/operators/NodeFeatureDiscoveryCheckbox.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/operators/NvidiaGpuCheckbox.d.ts +2 -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/OpenshiftAIAmdRequirements.d.ts +4 -0
- package/build/@types/ocm/components/clusterConfiguration/operators/OpenshiftAIAmdRequirements.d.ts.map +1 -0
- package/build/@types/ocm/components/clusterConfiguration/operators/OpenshiftAINvidiaRequirements.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/operators/ServicemeshCheckbox.d.ts +2 -1
- package/build/@types/ocm/components/clusterConfiguration/operators/ServicemeshCheckbox.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/operators/SupportedOperators.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterWizard/Operators.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterWizard/OperatorsStep.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterWizard/wizardTransition.d.ts +1 -1
- package/build/@types/ocm/components/clusterWizard/wizardTransition.d.ts.map +1 -1
- package/build/@types/ocm/services/OperatorsService.d.ts.map +1 -1
- package/build/cjs/common/config/constants.js +13 -1
- package/build/cjs/common/config/constants.js.map +1 -1
- package/build/cjs/common/config/docs_links.js +19 -7
- package/build/cjs/common/config/docs_links.js.map +1 -1
- package/build/cjs/common/types/clusters.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/operators/AmdGpuCheckbox.js +36 -0
- package/build/cjs/ocm/components/clusterConfiguration/operators/AmdGpuCheckbox.js.map +1 -0
- package/build/cjs/ocm/components/clusterConfiguration/operators/CnvCheckbox.js +8 -3
- package/build/cjs/ocm/components/clusterConfiguration/operators/CnvCheckbox.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/operators/KmmCheckbox.js +34 -0
- package/build/cjs/ocm/components/clusterConfiguration/operators/KmmCheckbox.js.map +1 -0
- package/build/cjs/ocm/components/clusterConfiguration/operators/LsoCheckbox.js +4 -4
- package/build/cjs/ocm/components/clusterConfiguration/operators/LsoCheckbox.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/operators/MtvOperatorCheckbox.js +6 -1
- package/build/cjs/ocm/components/clusterConfiguration/operators/MtvOperatorCheckbox.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/operators/NmstateCheckbox.js +4 -4
- package/build/cjs/ocm/components/clusterConfiguration/operators/NmstateCheckbox.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/operators/NodeFeatureDiscoveryCheckbox.js +4 -4
- package/build/cjs/ocm/components/clusterConfiguration/operators/NodeFeatureDiscoveryCheckbox.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/operators/NvidiaGpuCheckbox.js +5 -5
- package/build/cjs/ocm/components/clusterConfiguration/operators/NvidiaGpuCheckbox.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/operators/OdfCheckbox.js +4 -1
- package/build/cjs/ocm/components/clusterConfiguration/operators/OdfCheckbox.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/operators/OpenshiftAIAmdRequirements.js +32 -0
- package/build/cjs/ocm/components/clusterConfiguration/operators/OpenshiftAIAmdRequirements.js.map +1 -0
- package/build/cjs/ocm/components/clusterConfiguration/operators/OpenshiftAINvidiaRequirements.js +2 -1
- package/build/cjs/ocm/components/clusterConfiguration/operators/OpenshiftAINvidiaRequirements.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/operators/ServicemeshCheckbox.js +4 -4
- package/build/cjs/ocm/components/clusterConfiguration/operators/ServicemeshCheckbox.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/operators/SupportedOperators.js +6 -0
- package/build/cjs/ocm/components/clusterConfiguration/operators/SupportedOperators.js.map +1 -1
- package/build/cjs/ocm/components/clusterWizard/Operators.js +2 -0
- package/build/cjs/ocm/components/clusterWizard/Operators.js.map +1 -1
- package/build/cjs/ocm/components/clusterWizard/OperatorsStep.js +44 -26
- package/build/cjs/ocm/components/clusterWizard/OperatorsStep.js.map +1 -1
- package/build/cjs/ocm/components/clusterWizard/wizardTransition.js +2 -0
- package/build/cjs/ocm/components/clusterWizard/wizardTransition.js.map +1 -1
- package/build/cjs/ocm/services/OperatorsService.js +2 -0
- package/build/cjs/ocm/services/OperatorsService.js.map +1 -1
- package/lib/common/config/constants.ts +12 -0
- package/lib/common/config/docs_links.ts +27 -12
- package/lib/common/types/clusters.ts +2 -0
- package/lib/ocm/components/clusterConfiguration/operators/AmdGpuCheckbox.tsx +70 -0
- package/lib/ocm/components/clusterConfiguration/operators/CnvCheckbox.tsx +7 -3
- package/lib/ocm/components/clusterConfiguration/operators/KmmCheckbox.tsx +68 -0
- package/lib/ocm/components/clusterConfiguration/operators/LsoCheckbox.tsx +6 -4
- package/lib/ocm/components/clusterConfiguration/operators/MtvOperatorCheckbox.tsx +5 -1
- package/lib/ocm/components/clusterConfiguration/operators/NmstateCheckbox.tsx +6 -9
- package/lib/ocm/components/clusterConfiguration/operators/NodeFeatureDiscoveryCheckbox.tsx +12 -4
- package/lib/ocm/components/clusterConfiguration/operators/NvidiaGpuCheckbox.tsx +7 -5
- package/lib/ocm/components/clusterConfiguration/operators/OdfCheckbox.tsx +3 -1
- package/lib/ocm/components/clusterConfiguration/operators/OpenshiftAIAmdRequirements.tsx +36 -0
- package/lib/ocm/components/clusterConfiguration/operators/OpenshiftAINvidiaRequirements.tsx +2 -1
- package/lib/ocm/components/clusterConfiguration/operators/ServicemeshCheckbox.tsx +6 -4
- package/lib/ocm/components/clusterConfiguration/operators/SupportedOperators.tsx +8 -0
- package/lib/ocm/components/clusterWizard/Operators.tsx +4 -0
- package/lib/ocm/components/clusterWizard/OperatorsStep.tsx +55 -44
- package/lib/ocm/components/clusterWizard/_wizardTransition.test.ts +10 -0
- package/lib/ocm/components/clusterWizard/wizardTransition.ts +2 -0
- package/lib/ocm/services/OperatorsService.tsx +4 -0
- package/package.json +3 -3
|
@@ -1,11 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { FormGroup, HelperText, HelperTextItem, Tooltip } from '@patternfly/react-core';
|
|
3
|
-
import {
|
|
4
|
-
getFieldId,
|
|
5
|
-
PopoverIcon,
|
|
6
|
-
ClusterOperatorProps,
|
|
7
|
-
NMSTATE_OPERATOR_LINK,
|
|
8
|
-
} from '../../../../common';
|
|
3
|
+
import { getFieldId, PopoverIcon, ClusterOperatorProps, getNmstateLink } from '../../../../common';
|
|
9
4
|
import { OcmCheckboxField } from '../../ui/OcmFormFields';
|
|
10
5
|
import NmstateRequirements from './NmstateRequirements';
|
|
11
6
|
import { SupportLevel } from '@openshift-assisted/types/./assisted-installer-service';
|
|
@@ -39,13 +34,13 @@ const NmstateLabel = ({
|
|
|
39
34
|
);
|
|
40
35
|
};
|
|
41
36
|
|
|
42
|
-
const NmstateHelperText = () => {
|
|
37
|
+
const NmstateHelperText = ({ openshiftVersion }: { openshiftVersion?: string }) => {
|
|
43
38
|
return (
|
|
44
39
|
<HelperText>
|
|
45
40
|
<HelperTextItem variant="indeterminate">
|
|
46
41
|
Provides users with functionality to configure various network interface types, DNS, and
|
|
47
42
|
routing on cluster nodes.{' '}
|
|
48
|
-
<a href={
|
|
43
|
+
<a href={getNmstateLink(openshiftVersion)} target="_blank" rel="noopener noreferrer">
|
|
49
44
|
{'Learn more'} <ExternalLinkAltIcon />
|
|
50
45
|
</a>
|
|
51
46
|
</HelperTextItem>
|
|
@@ -57,10 +52,12 @@ const NmstateCheckbox = ({
|
|
|
57
52
|
clusterId,
|
|
58
53
|
disabledReason,
|
|
59
54
|
supportLevel,
|
|
55
|
+
openshiftVersion,
|
|
60
56
|
}: {
|
|
61
57
|
clusterId: ClusterOperatorProps['clusterId'];
|
|
62
58
|
disabledReason?: string;
|
|
63
59
|
supportLevel?: SupportLevel | undefined;
|
|
60
|
+
openshiftVersion?: string;
|
|
64
61
|
}) => {
|
|
65
62
|
const fieldId = getFieldId(NMSTATE_FIELD_NAME, 'input');
|
|
66
63
|
|
|
@@ -75,7 +72,7 @@ const NmstateCheckbox = ({
|
|
|
75
72
|
supportLevel={supportLevel}
|
|
76
73
|
/>
|
|
77
74
|
}
|
|
78
|
-
helperText={<NmstateHelperText />}
|
|
75
|
+
helperText={<NmstateHelperText openshiftVersion={openshiftVersion || '4.17'} />}
|
|
79
76
|
isDisabled={!!disabledReason}
|
|
80
77
|
/>
|
|
81
78
|
</FormGroup>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { FormGroup, HelperText, HelperTextItem, Tooltip } from '@patternfly/react-core';
|
|
3
|
-
import { getFieldId,
|
|
3
|
+
import { getFieldId, getNodeFeatureDiscoveryLink, PopoverIcon } from '../../../../common';
|
|
4
4
|
import { OcmCheckboxField } from '../../ui/OcmFormFields';
|
|
5
5
|
import NewFeatureSupportLevelBadge from '../../../../common/components/newFeatureSupportLevels/NewFeatureSupportLevelBadge';
|
|
6
6
|
import { SupportLevel } from '@openshift-assisted/types/./assisted-installer-service';
|
|
@@ -30,13 +30,17 @@ const NodeFeatureDiscoveryLabel = ({
|
|
|
30
30
|
);
|
|
31
31
|
};
|
|
32
32
|
|
|
33
|
-
const NodeFeatureDiscoveryHelperText = () => {
|
|
33
|
+
const NodeFeatureDiscoveryHelperText = ({ openshiftVersion }: { openshiftVersion?: string }) => {
|
|
34
34
|
return (
|
|
35
35
|
<HelperText>
|
|
36
36
|
<HelperTextItem variant="indeterminate">
|
|
37
37
|
Manage the detection of hardware features and configuration by labeling nodes with
|
|
38
38
|
hardware-specific information.{' '}
|
|
39
|
-
<a
|
|
39
|
+
<a
|
|
40
|
+
href={getNodeFeatureDiscoveryLink(openshiftVersion)}
|
|
41
|
+
target="_blank"
|
|
42
|
+
rel="noopener noreferrer"
|
|
43
|
+
>
|
|
40
44
|
{'Learn more'} <ExternalLinkAltIcon />
|
|
41
45
|
</a>
|
|
42
46
|
</HelperTextItem>
|
|
@@ -47,9 +51,11 @@ const NodeFeatureDiscoveryHelperText = () => {
|
|
|
47
51
|
const NodeFeatureDiscoveryCheckbox = ({
|
|
48
52
|
disabledReason,
|
|
49
53
|
supportLevel,
|
|
54
|
+
openshiftVersion,
|
|
50
55
|
}: {
|
|
51
56
|
disabledReason?: string;
|
|
52
57
|
supportLevel?: SupportLevel | undefined;
|
|
58
|
+
openshiftVersion?: string;
|
|
53
59
|
}) => {
|
|
54
60
|
const fieldId = getFieldId(NODEFEATUREDISCOVERY_FIELD_NAME, 'input');
|
|
55
61
|
|
|
@@ -60,7 +66,9 @@ const NodeFeatureDiscoveryCheckbox = ({
|
|
|
60
66
|
label={
|
|
61
67
|
<NodeFeatureDiscoveryLabel disabledReason={disabledReason} supportLevel={supportLevel} />
|
|
62
68
|
}
|
|
63
|
-
helperText={
|
|
69
|
+
helperText={
|
|
70
|
+
<NodeFeatureDiscoveryHelperText openshiftVersion={openshiftVersion || '4.17'} />
|
|
71
|
+
}
|
|
64
72
|
isDisabled={!!disabledReason}
|
|
65
73
|
/>
|
|
66
74
|
</FormGroup>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { FormGroup, HelperText, HelperTextItem, Tooltip } from '@patternfly/react-core';
|
|
3
|
-
import { getFieldId,
|
|
3
|
+
import { getFieldId, getNvidiaGpuLink, PopoverIcon } 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';
|
|
@@ -23,19 +23,19 @@ const NvidiaGpuLabel = ({
|
|
|
23
23
|
<PopoverIcon
|
|
24
24
|
id={NVIDIAGPU_FIELD_NAME}
|
|
25
25
|
component={'a'}
|
|
26
|
-
bodyContent={'
|
|
26
|
+
bodyContent={'Requires at least one supported NVIDIA GPU'}
|
|
27
27
|
/>
|
|
28
28
|
<NewFeatureSupportLevelBadge featureId="NVIDIA_GPU" supportLevel={supportLevel} />
|
|
29
29
|
</>
|
|
30
30
|
);
|
|
31
31
|
};
|
|
32
32
|
|
|
33
|
-
const NvidiaGpuHelperText = () => {
|
|
33
|
+
const NvidiaGpuHelperText = ({ openshiftVersion }: { openshiftVersion?: string }) => {
|
|
34
34
|
return (
|
|
35
35
|
<HelperText>
|
|
36
36
|
<HelperTextItem variant="indeterminate">
|
|
37
37
|
Automate the management of NVIDIA software components needed to provision and monitor GPUs.{' '}
|
|
38
|
-
<a href={
|
|
38
|
+
<a href={getNvidiaGpuLink(openshiftVersion)} target="_blank" rel="noopener noreferrer">
|
|
39
39
|
{'Learn more'} <ExternalLinkAltIcon />
|
|
40
40
|
</a>
|
|
41
41
|
</HelperTextItem>
|
|
@@ -46,9 +46,11 @@ const NvidiaGpuHelperText = () => {
|
|
|
46
46
|
const NvidiaGpuCheckbox = ({
|
|
47
47
|
disabledReason,
|
|
48
48
|
supportLevel,
|
|
49
|
+
openshiftVersion,
|
|
49
50
|
}: {
|
|
50
51
|
disabledReason?: string;
|
|
51
52
|
supportLevel?: SupportLevel | undefined;
|
|
53
|
+
openshiftVersion?: string;
|
|
52
54
|
}) => {
|
|
53
55
|
const fieldId = getFieldId(NVIDIAGPU_FIELD_NAME, 'input');
|
|
54
56
|
|
|
@@ -57,7 +59,7 @@ const NvidiaGpuCheckbox = ({
|
|
|
57
59
|
<OcmCheckboxField
|
|
58
60
|
name={NVIDIAGPU_FIELD_NAME}
|
|
59
61
|
label={<NvidiaGpuLabel disabledReason={disabledReason} supportLevel={supportLevel} />}
|
|
60
|
-
helperText={<NvidiaGpuHelperText />}
|
|
62
|
+
helperText={<NvidiaGpuHelperText openshiftVersion={openshiftVersion || '4.17'} />}
|
|
61
63
|
isDisabled={!!disabledReason}
|
|
62
64
|
/>
|
|
63
65
|
</FormGroup>
|
|
@@ -12,6 +12,7 @@ import { OcmCheckboxField } from '../../ui/OcmFormFields';
|
|
|
12
12
|
import NewFeatureSupportLevelBadge from '../../../../common/components/newFeatureSupportLevels/NewFeatureSupportLevelBadge';
|
|
13
13
|
import { SupportLevel } from '@openshift-assisted/types/./assisted-installer-service';
|
|
14
14
|
import { useFormikContext } from 'formik';
|
|
15
|
+
import { useNewFeatureSupportLevel } from '../../../../common/components/newFeatureSupportLevels';
|
|
15
16
|
|
|
16
17
|
const ODF_FIELD_NAME = 'useOpenShiftDataFoundation';
|
|
17
18
|
|
|
@@ -60,9 +61,10 @@ const OdfCheckbox = ({
|
|
|
60
61
|
supportLevel?: SupportLevel | undefined;
|
|
61
62
|
}) => {
|
|
62
63
|
const { setFieldValue } = useFormikContext<OperatorsValues>();
|
|
64
|
+
const featureSupportLevelData = useNewFeatureSupportLevel();
|
|
63
65
|
const fieldId = getFieldId(ODF_FIELD_NAME, 'input');
|
|
64
66
|
const selectLsoOperator = (checked: boolean) => {
|
|
65
|
-
setFieldValue('useLso', checked);
|
|
67
|
+
if (featureSupportLevelData.isFeatureSupported('LSO')) setFieldValue('useLso', checked);
|
|
66
68
|
};
|
|
67
69
|
return (
|
|
68
70
|
<FormGroup isInline fieldId={fieldId}>
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { List, ListItem } from '@patternfly/react-core';
|
|
3
|
+
import { ExternalLinkAltIcon } from '@patternfly/react-icons/dist/js/icons/external-link-alt-icon';
|
|
4
|
+
import { OPENSHIFT_AI_REQUIREMENTS_LINK } from '../../../../common';
|
|
5
|
+
|
|
6
|
+
const OpenshiftAIAmdRequirements = () => {
|
|
7
|
+
return (
|
|
8
|
+
<>
|
|
9
|
+
<List>
|
|
10
|
+
<ListItem>At least two worker nodes.</ListItem>
|
|
11
|
+
<ListItem>
|
|
12
|
+
Each worker node requires 32 additional GiB of memory and 8 additional CPUs.
|
|
13
|
+
</ListItem>
|
|
14
|
+
<ListItem>At least one supported AMD GPU.</ListItem>
|
|
15
|
+
<ListItem>Nodes that have AMD GPUs installed need to have secure boot disabled.</ListItem>
|
|
16
|
+
</List>
|
|
17
|
+
Bundle operators:
|
|
18
|
+
<List>
|
|
19
|
+
<ListItem>Openshift AI</ListItem>
|
|
20
|
+
<ListItem>OpenShift Data Foundation</ListItem>
|
|
21
|
+
<ListItem>AMD GPU</ListItem>
|
|
22
|
+
<ListItem>Node Feature Discovery</ListItem>
|
|
23
|
+
<ListItem>Kernel Module Management</ListItem>
|
|
24
|
+
<ListItem>Pipelines</ListItem>
|
|
25
|
+
<ListItem>Service Mesh</ListItem>
|
|
26
|
+
<ListItem>Serverless</ListItem>
|
|
27
|
+
<ListItem>Authorino</ListItem>
|
|
28
|
+
</List>
|
|
29
|
+
<a href={OPENSHIFT_AI_REQUIREMENTS_LINK} target="_blank" rel="noopener noreferrer">
|
|
30
|
+
Learn more <ExternalLinkAltIcon />.
|
|
31
|
+
</a>
|
|
32
|
+
</>
|
|
33
|
+
);
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
export default OpenshiftAIAmdRequirements;
|
|
@@ -11,7 +11,7 @@ const OpenshiftAINvidiaRequirements = () => {
|
|
|
11
11
|
<ListItem>
|
|
12
12
|
Each worker node requires 32 additional GiB of memory and 8 additional CPUs.
|
|
13
13
|
</ListItem>
|
|
14
|
-
<ListItem>At least one supported
|
|
14
|
+
<ListItem>At least one supported NVIDIA GPU.</ListItem>
|
|
15
15
|
<ListItem>
|
|
16
16
|
Nodes that have NVIDIA GPUs installed need to have secure boot disabled.
|
|
17
17
|
</ListItem>
|
|
@@ -21,6 +21,7 @@ const OpenshiftAINvidiaRequirements = () => {
|
|
|
21
21
|
<ListItem>Openshift AI</ListItem>
|
|
22
22
|
<ListItem>OpenShift Data Foundation</ListItem>
|
|
23
23
|
<ListItem>NVIDIA GPU</ListItem>
|
|
24
|
+
<ListItem>Node Feature Discovery</ListItem>
|
|
24
25
|
<ListItem>Pipelines</ListItem>
|
|
25
26
|
<ListItem>Service Mesh</ListItem>
|
|
26
27
|
<ListItem>Serverless</ListItem>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { FormGroup, HelperText, HelperTextItem, Tooltip } from '@patternfly/react-core';
|
|
3
|
-
import { getFieldId,
|
|
3
|
+
import { getFieldId, getServiceMeshLink, PopoverIcon } 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';
|
|
@@ -30,12 +30,12 @@ const ServiceMeshLabel = ({
|
|
|
30
30
|
);
|
|
31
31
|
};
|
|
32
32
|
|
|
33
|
-
const ServiceMeshHelperText = () => {
|
|
33
|
+
const ServiceMeshHelperText = ({ openshiftVersion }: { openshiftVersion?: string }) => {
|
|
34
34
|
return (
|
|
35
35
|
<HelperText>
|
|
36
36
|
<HelperTextItem variant="indeterminate">
|
|
37
37
|
Platform that provides behavioral insight and operational control over a service mesh.{' '}
|
|
38
|
-
<a href={
|
|
38
|
+
<a href={getServiceMeshLink(openshiftVersion)} target="_blank" rel="noopener noreferrer">
|
|
39
39
|
{'Learn more'} <ExternalLinkAltIcon />
|
|
40
40
|
</a>
|
|
41
41
|
</HelperTextItem>
|
|
@@ -46,9 +46,11 @@ const ServiceMeshHelperText = () => {
|
|
|
46
46
|
const ServiceMeshCheckbox = ({
|
|
47
47
|
disabledReason,
|
|
48
48
|
supportLevel,
|
|
49
|
+
openshiftVersion,
|
|
49
50
|
}: {
|
|
50
51
|
disabledReason?: string;
|
|
51
52
|
supportLevel?: SupportLevel | undefined;
|
|
53
|
+
openshiftVersion?: string;
|
|
52
54
|
}) => {
|
|
53
55
|
const fieldId = getFieldId(SERVICEMESH_FIELD_NAME, 'input');
|
|
54
56
|
|
|
@@ -57,7 +59,7 @@ const ServiceMeshCheckbox = ({
|
|
|
57
59
|
<OcmCheckboxField
|
|
58
60
|
name={SERVICEMESH_FIELD_NAME}
|
|
59
61
|
label={<ServiceMeshLabel disabledReason={disabledReason} supportLevel={supportLevel} />}
|
|
60
|
-
helperText={<ServiceMeshHelperText />}
|
|
62
|
+
helperText={<ServiceMeshHelperText openshiftVersion={openshiftVersion || '4.17'} />}
|
|
61
63
|
isDisabled={!!disabledReason}
|
|
62
64
|
/>
|
|
63
65
|
</FormGroup>
|
|
@@ -14,10 +14,14 @@ import AuthorinoCheckbox from './AuthorinoCheckbox';
|
|
|
14
14
|
import PipelinesCheckbox from './PipelinesChekbox';
|
|
15
15
|
import ServiceMeshCheckbox from './ServicemeshCheckbox';
|
|
16
16
|
import NvidiaGpuCheckbox from './NvidiaGpuCheckbox';
|
|
17
|
+
import AmdGpuCheckbox from './AmdGpuCheckbox';
|
|
18
|
+
import KmmCheckbox from './KmmCheckbox';
|
|
17
19
|
import {
|
|
18
20
|
FeatureId,
|
|
21
|
+
OPERATOR_NAME_AMD_GPU,
|
|
19
22
|
OPERATOR_NAME_AUTHORINO,
|
|
20
23
|
OPERATOR_NAME_CNV,
|
|
24
|
+
OPERATOR_NAME_KMM,
|
|
21
25
|
OPERATOR_NAME_LSO,
|
|
22
26
|
OPERATOR_NAME_LVM,
|
|
23
27
|
OPERATOR_NAME_MCE,
|
|
@@ -66,6 +70,8 @@ export const operatorComponentMap: Record<string, (props: OperatorProps) => JSX.
|
|
|
66
70
|
pipelines: (props) => <PipelinesCheckbox {...props} />,
|
|
67
71
|
servicemesh: (props) => <ServiceMeshCheckbox {...props} />,
|
|
68
72
|
'nvidia-gpu': (props) => <NvidiaGpuCheckbox {...props} />,
|
|
73
|
+
'amd-gpu': (props) => <AmdGpuCheckbox {...props} />,
|
|
74
|
+
kmm: (props) => <KmmCheckbox {...props} />,
|
|
69
75
|
};
|
|
70
76
|
|
|
71
77
|
export const mapOperatorsToFieldIds: { [key: string]: string } = {
|
|
@@ -84,6 +90,8 @@ export const mapOperatorsToFieldIds: { [key: string]: string } = {
|
|
|
84
90
|
[OPERATOR_NAME_PIPELINES]: 'usePipelines',
|
|
85
91
|
[OPERATOR_NAME_SERVICEMESH]: 'useServicemesh',
|
|
86
92
|
[OPERATOR_NAME_NVIDIA_GPU]: 'useNvidiaGpu',
|
|
93
|
+
[OPERATOR_NAME_AMD_GPU]: 'useAmdGpu',
|
|
94
|
+
[OPERATOR_NAME_KMM]: 'useKmm',
|
|
87
95
|
};
|
|
88
96
|
|
|
89
97
|
export const mapOperatorIdToFeatureId: { [key: string]: FeatureId } = {
|
|
@@ -5,8 +5,10 @@ import { Formik, FormikConfig, useFormikContext } from 'formik';
|
|
|
5
5
|
import {
|
|
6
6
|
ClusterWizardStep,
|
|
7
7
|
getFormikErrorFields,
|
|
8
|
+
OPERATOR_NAME_AMD_GPU,
|
|
8
9
|
OPERATOR_NAME_AUTHORINO,
|
|
9
10
|
OPERATOR_NAME_CNV,
|
|
11
|
+
OPERATOR_NAME_KMM,
|
|
10
12
|
OPERATOR_NAME_LSO,
|
|
11
13
|
OPERATOR_NAME_LVM,
|
|
12
14
|
OPERATOR_NAME_MCE,
|
|
@@ -56,6 +58,8 @@ export const getOperatorsInitialValues = (
|
|
|
56
58
|
usePipelines: isOperatorEnabled([OPERATOR_NAME_PIPELINES]),
|
|
57
59
|
useServicemesh: isOperatorEnabled([OPERATOR_NAME_SERVICEMESH]),
|
|
58
60
|
useNvidiaGpu: isOperatorEnabled([OPERATOR_NAME_NVIDIA_GPU]),
|
|
61
|
+
useAmdGpu: isOperatorEnabled([OPERATOR_NAME_AMD_GPU]),
|
|
62
|
+
useKmm: isOperatorEnabled([OPERATOR_NAME_KMM]),
|
|
59
63
|
};
|
|
60
64
|
};
|
|
61
65
|
|
|
@@ -49,6 +49,7 @@ import {
|
|
|
49
49
|
getOpenShiftAIIncompatibleWithLvmsReason,
|
|
50
50
|
} from '../featureSupportLevels/featureStateUtils';
|
|
51
51
|
import OpenshiftAINvidiaRequirements from '../clusterConfiguration/operators/OpenshiftAINvidiaRequirements';
|
|
52
|
+
import OpenshiftAIAmdRequirements from '../clusterConfiguration/operators/OpenshiftAIAmdRequirements';
|
|
52
53
|
import VirtualizationRequirements from '../clusterConfiguration/operators/VirtualizationRequirements';
|
|
53
54
|
|
|
54
55
|
const operatorsThatCanNotBeInstalledAlone = [
|
|
@@ -78,8 +79,6 @@ export const OperatorsStep = (props: ClusterOperatorProps) => {
|
|
|
78
79
|
const { updateUISettings, uiSettings } = useClusterWizardContext();
|
|
79
80
|
const { values, setFieldValue } = useFormikContext<OperatorsValues>();
|
|
80
81
|
const featureSupportLevelData = useNewFeatureSupportLevel();
|
|
81
|
-
const [hasUnsupportedOperators, setHasUnsupportedOperators] = useState<boolean>(false);
|
|
82
|
-
const [hasIncompatibleOperators, setHasIncompatibleOperators] = useState<boolean>(false);
|
|
83
82
|
|
|
84
83
|
useEffect(() => {
|
|
85
84
|
const fetchBundles = async () => {
|
|
@@ -164,7 +163,7 @@ export const OperatorsStep = (props: ClusterOperatorProps) => {
|
|
|
164
163
|
const fieldId = mapOperatorsToFieldIds[op]; // Obtener el ID del campo correspondiente
|
|
165
164
|
setFieldValue(fieldId, checked);
|
|
166
165
|
if (op === OPERATOR_NAME_CNV || op === OPERATOR_NAME_ODF) {
|
|
167
|
-
setFieldValue('useLso', checked);
|
|
166
|
+
if (featureSupportLevelData.isFeatureSupported('LSO')) setFieldValue('useLso', checked);
|
|
168
167
|
}
|
|
169
168
|
}
|
|
170
169
|
});
|
|
@@ -176,7 +175,7 @@ export const OperatorsStep = (props: ClusterOperatorProps) => {
|
|
|
176
175
|
const fieldId = mapOperatorsToFieldIds[op]; // Obtener el ID del campo correspondiente
|
|
177
176
|
setFieldValue(fieldId, checked);
|
|
178
177
|
if (op === OPERATOR_NAME_CNV || op === OPERATOR_NAME_ODF) {
|
|
179
|
-
setFieldValue('useLso', checked);
|
|
178
|
+
if (featureSupportLevelData.isFeatureSupported('LSO')) setFieldValue('useLso', checked);
|
|
180
179
|
}
|
|
181
180
|
});
|
|
182
181
|
}
|
|
@@ -191,23 +190,34 @@ export const OperatorsStep = (props: ClusterOperatorProps) => {
|
|
|
191
190
|
setBundleOperators(newBundleOperators);
|
|
192
191
|
};
|
|
193
192
|
|
|
194
|
-
const getBundleLabel = (
|
|
193
|
+
const getBundleLabel = (bundle: Bundle) => {
|
|
194
|
+
let requirements: React.ReactElement | null = null;
|
|
195
|
+
switch (bundle.id) {
|
|
196
|
+
case 'virtualization':
|
|
197
|
+
requirements = <VirtualizationRequirements />;
|
|
198
|
+
break;
|
|
199
|
+
case 'openshift-ai-nvidia':
|
|
200
|
+
requirements = <OpenshiftAINvidiaRequirements />;
|
|
201
|
+
break;
|
|
202
|
+
case 'openshift-ai-amd':
|
|
203
|
+
requirements = <OpenshiftAIAmdRequirements />;
|
|
204
|
+
break;
|
|
205
|
+
}
|
|
206
|
+
|
|
195
207
|
return (
|
|
196
208
|
<>
|
|
197
|
-
<span>{title} </span>
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
}
|
|
210
|
-
/>
|
|
209
|
+
<span>{bundle.title} </span>
|
|
210
|
+
{requirements && (
|
|
211
|
+
<PopoverIcon
|
|
212
|
+
component={'a'}
|
|
213
|
+
bodyContent={
|
|
214
|
+
<>
|
|
215
|
+
<span style={{ fontSize: '1.1em' }}>{'Requirements and dependencies'}</span>
|
|
216
|
+
{requirements}
|
|
217
|
+
</>
|
|
218
|
+
}
|
|
219
|
+
/>
|
|
220
|
+
)}
|
|
211
221
|
</>
|
|
212
222
|
);
|
|
213
223
|
};
|
|
@@ -235,7 +245,9 @@ export const OperatorsStep = (props: ClusterOperatorProps) => {
|
|
|
235
245
|
disabledReason = getCnvIncompatibleWithLvmReason(values, lvmSupport);
|
|
236
246
|
}
|
|
237
247
|
if (!disabledReason) {
|
|
238
|
-
|
|
248
|
+
if (featureSupportLevelData.isFeatureSupported('MTV')) {
|
|
249
|
+
disabledReason = getCnvDisabledWithMtvReason(values);
|
|
250
|
+
}
|
|
239
251
|
}
|
|
240
252
|
}
|
|
241
253
|
if (operatorKey === 'lvm') {
|
|
@@ -263,28 +275,20 @@ export const OperatorsStep = (props: ClusterOperatorProps) => {
|
|
|
263
275
|
);
|
|
264
276
|
|
|
265
277
|
const bundleHasOperatorsNotCompatibles = React.useCallback(
|
|
266
|
-
(operators: string[] | undefined, values: OperatorsValues) => {
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
278
|
+
(operators: string[] | undefined, values: OperatorsValues, isSelected: boolean) => {
|
|
279
|
+
if (!isSelected) {
|
|
280
|
+
return (
|
|
281
|
+
operators?.some((operatorKey) => {
|
|
282
|
+
const disabledReason = getDisabledReasonForOperator(operatorKey, values);
|
|
283
|
+
console.log(disabledReason);
|
|
284
|
+
return disabledReason !== undefined;
|
|
285
|
+
}) ?? false
|
|
286
|
+
);
|
|
287
|
+
} else return false;
|
|
274
288
|
},
|
|
275
289
|
[getDisabledReasonForOperator],
|
|
276
290
|
);
|
|
277
291
|
|
|
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]);
|
|
287
|
-
|
|
288
292
|
return (
|
|
289
293
|
<Stack hasGutter data-testid={'operators-page'}>
|
|
290
294
|
<StackItem>
|
|
@@ -314,14 +318,20 @@ export const OperatorsStep = (props: ClusterOperatorProps) => {
|
|
|
314
318
|
{/* Mostrar bundles como tarjetas */}
|
|
315
319
|
<Gallery hasGutter minWidths={{ default: '350px' }} maxWidths={{ default: '2fr' }}>
|
|
316
320
|
{filteredBundles.map((bundle) => {
|
|
317
|
-
const isSnoAndBlockedBundle =
|
|
318
|
-
|
|
321
|
+
const isSnoAndBlockedBundle =
|
|
322
|
+
isSNO && (bundle.id === 'openshift-ai-nvidia' || bundle.id === 'openshift-ai-amd');
|
|
323
|
+
const hasUnsupportedOperators = bundleHasOperatorsNotSupported(bundle.operators);
|
|
324
|
+
const hasIncompatibleOperators = bundleHasOperatorsNotCompatibles(
|
|
325
|
+
bundle.operators,
|
|
326
|
+
values,
|
|
327
|
+
bundle.id ? selectedBundles[bundle.id] : false,
|
|
328
|
+
);
|
|
319
329
|
const tooltipContent = hasUnsupportedOperators
|
|
320
330
|
? '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
331
|
: isSnoAndBlockedBundle
|
|
324
332
|
? 'This bundle is not available when deploying a Single Node OpenShift.'
|
|
333
|
+
: hasIncompatibleOperators
|
|
334
|
+
? 'Some operators in this bundle can not be installed with some single operators selected.'
|
|
325
335
|
: '';
|
|
326
336
|
|
|
327
337
|
return (
|
|
@@ -350,7 +360,7 @@ export const OperatorsStep = (props: ClusterOperatorProps) => {
|
|
|
350
360
|
}}
|
|
351
361
|
>
|
|
352
362
|
<div style={{ display: 'flex', alignItems: 'center', gap: '8px' }}>
|
|
353
|
-
{getBundleLabel(bundle
|
|
363
|
+
{getBundleLabel(bundle)}
|
|
354
364
|
</div>
|
|
355
365
|
<Checkbox
|
|
356
366
|
id={`bundle-${bundle.id || ''}`}
|
|
@@ -375,7 +385,8 @@ export const OperatorsStep = (props: ClusterOperatorProps) => {
|
|
|
375
385
|
|
|
376
386
|
{/* Badge aligned to the bottom-left */}
|
|
377
387
|
<div style={{ marginTop: '10px', alignSelf: 'flex-end', height: '25px' }}>
|
|
378
|
-
{bundle.id === 'openshift-ai-nvidia'
|
|
388
|
+
{(bundle.id === 'openshift-ai-nvidia' ||
|
|
389
|
+
bundle.id === 'openshift-ai-amd') && (
|
|
379
390
|
<NewFeatureSupportLevelBadge
|
|
380
391
|
featureId="OPENSHIFT_AI"
|
|
381
392
|
supportLevel="dev-preview"
|
|
@@ -92,6 +92,11 @@ const validationInfoHostsDisovery: ValidationsInfo = {
|
|
|
92
92
|
message: 'a validation unrelated to the canNextHostDiscovery',
|
|
93
93
|
status: 'error',
|
|
94
94
|
},
|
|
95
|
+
{
|
|
96
|
+
id: 'amd-gpu-requirements-satisfied',
|
|
97
|
+
message: 'a validation message',
|
|
98
|
+
status: 'success',
|
|
99
|
+
},
|
|
95
100
|
],
|
|
96
101
|
};
|
|
97
102
|
|
|
@@ -205,6 +210,11 @@ const flatValidationHostsDiscovery: HostValidation[] = [
|
|
|
205
210
|
message: 'a host validation message',
|
|
206
211
|
status: 'success',
|
|
207
212
|
},
|
|
213
|
+
{
|
|
214
|
+
id: 'amd-gpu-requirements-satisfied',
|
|
215
|
+
message: 'a host validation message',
|
|
216
|
+
status: 'success',
|
|
217
|
+
},
|
|
208
218
|
];
|
|
209
219
|
|
|
210
220
|
const flatValidationHostsStorage: HostValidation[] = [
|
|
@@ -174,6 +174,7 @@ const hostDiscoveryStepValidationsMap: WizardStepValidationMap = {
|
|
|
174
174
|
'nvidia-gpu-requirements-satisfied',
|
|
175
175
|
'openshift-ai-requirements-satisfied',
|
|
176
176
|
'osc-requirements-satisfied',
|
|
177
|
+
'amd-gpu-requirements-satisfied',
|
|
177
178
|
],
|
|
178
179
|
},
|
|
179
180
|
host: {
|
|
@@ -189,6 +190,7 @@ const hostDiscoveryStepValidationsMap: WizardStepValidationMap = {
|
|
|
189
190
|
'nvidia-gpu-requirements-satisfied',
|
|
190
191
|
'openshift-ai-requirements-satisfied',
|
|
191
192
|
'osc-requirements-satisfied',
|
|
193
|
+
'amd-gpu-requirements-satisfied',
|
|
192
194
|
],
|
|
193
195
|
},
|
|
194
196
|
softValidationIds: ['no-skip-installation-disk', 'no-skip-missing-disk', 'compatible-agent'],
|
|
@@ -16,6 +16,8 @@ import {
|
|
|
16
16
|
OPERATOR_NAME_PIPELINES,
|
|
17
17
|
OPERATOR_NAME_SERVICEMESH,
|
|
18
18
|
OPERATOR_NAME_NVIDIA_GPU,
|
|
19
|
+
OPERATOR_NAME_AMD_GPU,
|
|
20
|
+
OPERATOR_NAME_KMM,
|
|
19
21
|
} from '../../common';
|
|
20
22
|
import { getOlmOperatorCreateParamsByName } from '../components/clusters/utils';
|
|
21
23
|
import {
|
|
@@ -52,6 +54,8 @@ const OperatorsService = {
|
|
|
52
54
|
setOperator(OPERATOR_NAME_PIPELINES, values.usePipelines);
|
|
53
55
|
setOperator(OPERATOR_NAME_SERVICEMESH, values.useServicemesh);
|
|
54
56
|
setOperator(OPERATOR_NAME_NVIDIA_GPU, values.useNvidiaGpu);
|
|
57
|
+
setOperator(OPERATOR_NAME_AMD_GPU, values.useAmdGpu);
|
|
58
|
+
setOperator(OPERATOR_NAME_KMM, values.useKmm);
|
|
55
59
|
|
|
56
60
|
return Object.values(enabledOlmOperatorsByName);
|
|
57
61
|
},
|
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.3",
|
|
4
|
+
"@openshift-assisted/types": "2.38.3",
|
|
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.3"
|
|
143
143
|
}
|