@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.
Files changed (95) hide show
  1. package/build/@types/cim/components/ClusterDeployment/wizardTransition.d.ts +1 -1
  2. package/build/@types/cim/components/ClusterDeployment/wizardTransition.d.ts.map +1 -1
  3. package/build/@types/common/config/constants.d.ts +8 -0
  4. package/build/@types/common/config/constants.d.ts.map +1 -1
  5. package/build/@types/common/config/docs_links.d.ts +5 -5
  6. package/build/@types/common/config/docs_links.d.ts.map +1 -1
  7. package/build/@types/common/types/clusters.d.ts +2 -0
  8. package/build/@types/common/types/clusters.d.ts.map +1 -1
  9. package/build/@types/ocm/components/clusterConfiguration/operators/AmdGpuCheckbox.d.ts +6 -0
  10. package/build/@types/ocm/components/clusterConfiguration/operators/AmdGpuCheckbox.d.ts.map +1 -0
  11. package/build/@types/ocm/components/clusterConfiguration/operators/CnvCheckbox.d.ts.map +1 -1
  12. package/build/@types/ocm/components/clusterConfiguration/operators/KmmCheckbox.d.ts +6 -0
  13. package/build/@types/ocm/components/clusterConfiguration/operators/KmmCheckbox.d.ts.map +1 -0
  14. package/build/@types/ocm/components/clusterConfiguration/operators/LsoCheckbox.d.ts +2 -1
  15. package/build/@types/ocm/components/clusterConfiguration/operators/LsoCheckbox.d.ts.map +1 -1
  16. package/build/@types/ocm/components/clusterConfiguration/operators/MtvOperatorCheckbox.d.ts.map +1 -1
  17. package/build/@types/ocm/components/clusterConfiguration/operators/NmstateCheckbox.d.ts +2 -1
  18. package/build/@types/ocm/components/clusterConfiguration/operators/NmstateCheckbox.d.ts.map +1 -1
  19. package/build/@types/ocm/components/clusterConfiguration/operators/NodeFeatureDiscoveryCheckbox.d.ts +2 -1
  20. package/build/@types/ocm/components/clusterConfiguration/operators/NodeFeatureDiscoveryCheckbox.d.ts.map +1 -1
  21. package/build/@types/ocm/components/clusterConfiguration/operators/NvidiaGpuCheckbox.d.ts +2 -1
  22. package/build/@types/ocm/components/clusterConfiguration/operators/NvidiaGpuCheckbox.d.ts.map +1 -1
  23. package/build/@types/ocm/components/clusterConfiguration/operators/OdfCheckbox.d.ts.map +1 -1
  24. package/build/@types/ocm/components/clusterConfiguration/operators/OpenshiftAIAmdRequirements.d.ts +4 -0
  25. package/build/@types/ocm/components/clusterConfiguration/operators/OpenshiftAIAmdRequirements.d.ts.map +1 -0
  26. package/build/@types/ocm/components/clusterConfiguration/operators/OpenshiftAINvidiaRequirements.d.ts.map +1 -1
  27. package/build/@types/ocm/components/clusterConfiguration/operators/ServicemeshCheckbox.d.ts +2 -1
  28. package/build/@types/ocm/components/clusterConfiguration/operators/ServicemeshCheckbox.d.ts.map +1 -1
  29. package/build/@types/ocm/components/clusterConfiguration/operators/SupportedOperators.d.ts.map +1 -1
  30. package/build/@types/ocm/components/clusterWizard/Operators.d.ts.map +1 -1
  31. package/build/@types/ocm/components/clusterWizard/OperatorsStep.d.ts.map +1 -1
  32. package/build/@types/ocm/components/clusterWizard/wizardTransition.d.ts +1 -1
  33. package/build/@types/ocm/components/clusterWizard/wizardTransition.d.ts.map +1 -1
  34. package/build/@types/ocm/services/OperatorsService.d.ts.map +1 -1
  35. package/build/cjs/common/config/constants.js +13 -1
  36. package/build/cjs/common/config/constants.js.map +1 -1
  37. package/build/cjs/common/config/docs_links.js +19 -7
  38. package/build/cjs/common/config/docs_links.js.map +1 -1
  39. package/build/cjs/common/types/clusters.js.map +1 -1
  40. package/build/cjs/ocm/components/clusterConfiguration/operators/AmdGpuCheckbox.js +36 -0
  41. package/build/cjs/ocm/components/clusterConfiguration/operators/AmdGpuCheckbox.js.map +1 -0
  42. package/build/cjs/ocm/components/clusterConfiguration/operators/CnvCheckbox.js +8 -3
  43. package/build/cjs/ocm/components/clusterConfiguration/operators/CnvCheckbox.js.map +1 -1
  44. package/build/cjs/ocm/components/clusterConfiguration/operators/KmmCheckbox.js +34 -0
  45. package/build/cjs/ocm/components/clusterConfiguration/operators/KmmCheckbox.js.map +1 -0
  46. package/build/cjs/ocm/components/clusterConfiguration/operators/LsoCheckbox.js +4 -4
  47. package/build/cjs/ocm/components/clusterConfiguration/operators/LsoCheckbox.js.map +1 -1
  48. package/build/cjs/ocm/components/clusterConfiguration/operators/MtvOperatorCheckbox.js +6 -1
  49. package/build/cjs/ocm/components/clusterConfiguration/operators/MtvOperatorCheckbox.js.map +1 -1
  50. package/build/cjs/ocm/components/clusterConfiguration/operators/NmstateCheckbox.js +4 -4
  51. package/build/cjs/ocm/components/clusterConfiguration/operators/NmstateCheckbox.js.map +1 -1
  52. package/build/cjs/ocm/components/clusterConfiguration/operators/NodeFeatureDiscoveryCheckbox.js +4 -4
  53. package/build/cjs/ocm/components/clusterConfiguration/operators/NodeFeatureDiscoveryCheckbox.js.map +1 -1
  54. package/build/cjs/ocm/components/clusterConfiguration/operators/NvidiaGpuCheckbox.js +5 -5
  55. package/build/cjs/ocm/components/clusterConfiguration/operators/NvidiaGpuCheckbox.js.map +1 -1
  56. package/build/cjs/ocm/components/clusterConfiguration/operators/OdfCheckbox.js +4 -1
  57. package/build/cjs/ocm/components/clusterConfiguration/operators/OdfCheckbox.js.map +1 -1
  58. package/build/cjs/ocm/components/clusterConfiguration/operators/OpenshiftAIAmdRequirements.js +32 -0
  59. package/build/cjs/ocm/components/clusterConfiguration/operators/OpenshiftAIAmdRequirements.js.map +1 -0
  60. package/build/cjs/ocm/components/clusterConfiguration/operators/OpenshiftAINvidiaRequirements.js +2 -1
  61. package/build/cjs/ocm/components/clusterConfiguration/operators/OpenshiftAINvidiaRequirements.js.map +1 -1
  62. package/build/cjs/ocm/components/clusterConfiguration/operators/ServicemeshCheckbox.js +4 -4
  63. package/build/cjs/ocm/components/clusterConfiguration/operators/ServicemeshCheckbox.js.map +1 -1
  64. package/build/cjs/ocm/components/clusterConfiguration/operators/SupportedOperators.js +6 -0
  65. package/build/cjs/ocm/components/clusterConfiguration/operators/SupportedOperators.js.map +1 -1
  66. package/build/cjs/ocm/components/clusterWizard/Operators.js +2 -0
  67. package/build/cjs/ocm/components/clusterWizard/Operators.js.map +1 -1
  68. package/build/cjs/ocm/components/clusterWizard/OperatorsStep.js +44 -26
  69. package/build/cjs/ocm/components/clusterWizard/OperatorsStep.js.map +1 -1
  70. package/build/cjs/ocm/components/clusterWizard/wizardTransition.js +2 -0
  71. package/build/cjs/ocm/components/clusterWizard/wizardTransition.js.map +1 -1
  72. package/build/cjs/ocm/services/OperatorsService.js +2 -0
  73. package/build/cjs/ocm/services/OperatorsService.js.map +1 -1
  74. package/lib/common/config/constants.ts +12 -0
  75. package/lib/common/config/docs_links.ts +27 -12
  76. package/lib/common/types/clusters.ts +2 -0
  77. package/lib/ocm/components/clusterConfiguration/operators/AmdGpuCheckbox.tsx +70 -0
  78. package/lib/ocm/components/clusterConfiguration/operators/CnvCheckbox.tsx +7 -3
  79. package/lib/ocm/components/clusterConfiguration/operators/KmmCheckbox.tsx +68 -0
  80. package/lib/ocm/components/clusterConfiguration/operators/LsoCheckbox.tsx +6 -4
  81. package/lib/ocm/components/clusterConfiguration/operators/MtvOperatorCheckbox.tsx +5 -1
  82. package/lib/ocm/components/clusterConfiguration/operators/NmstateCheckbox.tsx +6 -9
  83. package/lib/ocm/components/clusterConfiguration/operators/NodeFeatureDiscoveryCheckbox.tsx +12 -4
  84. package/lib/ocm/components/clusterConfiguration/operators/NvidiaGpuCheckbox.tsx +7 -5
  85. package/lib/ocm/components/clusterConfiguration/operators/OdfCheckbox.tsx +3 -1
  86. package/lib/ocm/components/clusterConfiguration/operators/OpenshiftAIAmdRequirements.tsx +36 -0
  87. package/lib/ocm/components/clusterConfiguration/operators/OpenshiftAINvidiaRequirements.tsx +2 -1
  88. package/lib/ocm/components/clusterConfiguration/operators/ServicemeshCheckbox.tsx +6 -4
  89. package/lib/ocm/components/clusterConfiguration/operators/SupportedOperators.tsx +8 -0
  90. package/lib/ocm/components/clusterWizard/Operators.tsx +4 -0
  91. package/lib/ocm/components/clusterWizard/OperatorsStep.tsx +55 -44
  92. package/lib/ocm/components/clusterWizard/_wizardTransition.test.ts +10 -0
  93. package/lib/ocm/components/clusterWizard/wizardTransition.ts +2 -0
  94. package/lib/ocm/services/OperatorsService.tsx +4 -0
  95. 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={NMSTATE_OPERATOR_LINK} target="_blank" rel="noopener noreferrer">
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, NODE_FEATURE_DISCOVERY_OPERATOR_LINK, PopoverIcon } from '../../../../common';
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 href={NODE_FEATURE_DISCOVERY_OPERATOR_LINK} target="_blank" rel="noopener noreferrer">
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={<NodeFeatureDiscoveryHelperText />}
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, NVIDIA_GPU_OPERATOR_LINK, PopoverIcon } from '../../../../common';
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={'No additional requirements needed'}
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={NVIDIA_GPU_OPERATOR_LINK} target="_blank" rel="noopener noreferrer">
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 GPU. Currently only NVIDIA GPUs are supported.</ListItem>
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, PopoverIcon, SERVICE_MESH_OPERATOR_LINK } from '../../../../common';
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={SERVICE_MESH_OPERATOR_LINK} target="_blank" rel="noopener noreferrer">
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 = (title: string | undefined) => {
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
- <PopoverIcon
199
- component={'a'}
200
- bodyContent={
201
- <>
202
- <span style={{ fontSize: '1.1em' }}>{'Requirements and dependencies'}</span>
203
- {title === 'Virtualization' ? (
204
- <VirtualizationRequirements />
205
- ) : (
206
- <OpenshiftAINvidiaRequirements />
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
- disabledReason = getCnvDisabledWithMtvReason(values);
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
- return (
268
- operators?.some((operatorKey) => {
269
- const disabledReason = getDisabledReasonForOperator(operatorKey, values);
270
- console.log(disabledReason);
271
- return disabledReason !== undefined;
272
- }) ?? false
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 = isSNO && bundle.id === 'openshift-ai-nvidia';
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.title)}
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.1",
4
- "@openshift-assisted/types": "2.38.1",
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.1"
142
+ "version": "2.38.3"
143
143
  }