@openshift-assisted/ui-lib 2.9.6-cim → 2.9.8-cim

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 (203) hide show
  1. package/build/@types/cim/components/ClusterDeployment/ACMClusterDeploymentDetailsStep.d.ts +1 -0
  2. package/build/@types/cim/components/ClusterDeployment/ACMClusterDeploymentDetailsStep.d.ts.map +1 -1
  3. package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentDetails.d.ts.map +1 -1
  4. package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentDetailsForm.d.ts +1 -0
  5. package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentDetailsForm.d.ts.map +1 -1
  6. package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentDetailsStep.d.ts +2 -1
  7. package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentDetailsStep.d.ts.map +1 -1
  8. package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentHostSelectionStep.d.ts.map +1 -1
  9. package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentHostsSelection.d.ts.map +1 -1
  10. package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentNetworkingForm.d.ts +1 -0
  11. package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentNetworkingForm.d.ts.map +1 -1
  12. package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentNetworkingStep.d.ts.map +1 -1
  13. package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentWizard.d.ts.map +1 -1
  14. package/build/@types/cim/components/ClusterDeployment/ClusterDetailsFormFields.d.ts +1 -0
  15. package/build/@types/cim/components/ClusterDeployment/ClusterDetailsFormFields.d.ts.map +1 -1
  16. package/build/@types/cim/components/ClusterDeployment/helpers.d.ts.map +1 -1
  17. package/build/@types/cim/components/ClusterDeployment/types.d.ts +4 -0
  18. package/build/@types/cim/components/ClusterDeployment/types.d.ts.map +1 -1
  19. package/build/@types/cim/components/Hypershift/utils/nodepool.d.ts.map +1 -1
  20. package/build/@types/cim/components/InfraEnv/InfraEnvFormPage.d.ts +2 -0
  21. package/build/@types/cim/components/InfraEnv/InfraEnvFormPage.d.ts.map +1 -1
  22. package/build/@types/cim/components/helpers/versions.d.ts +1 -1
  23. package/build/@types/cim/components/helpers/versions.d.ts.map +1 -1
  24. package/build/@types/cim/components/modals/AddHostModal.d.ts.map +1 -1
  25. package/build/@types/common/api/assisted-service/ClustersAPI.d.ts +1 -3
  26. package/build/@types/common/api/assisted-service/ClustersAPI.d.ts.map +1 -1
  27. package/build/@types/common/api/assisted-service/NewFeatureSupportLevelsAPI.d.ts +1 -1
  28. package/build/@types/common/api/assisted-service/NewFeatureSupportLevelsAPI.d.ts.map +1 -1
  29. package/build/@types/common/components/clusterConfiguration/DiscoveryImageConfigForm.d.ts +4 -1
  30. package/build/@types/common/components/clusterConfiguration/DiscoveryImageConfigForm.d.ts.map +1 -1
  31. package/build/@types/common/components/clusterConfiguration/DownloadIso.d.ts +2 -1
  32. package/build/@types/common/components/clusterConfiguration/DownloadIso.d.ts.map +1 -1
  33. package/build/@types/common/components/hosts/HostRowDetail.d.ts +2 -1
  34. package/build/@types/common/components/hosts/HostRowDetail.d.ts.map +1 -1
  35. package/build/@types/common/components/newFeatureSupportLevels/types.d.ts +3 -3
  36. package/build/@types/common/components/newFeatureSupportLevels/types.d.ts.map +1 -1
  37. package/build/@types/common/components/ui/formik/validationSchemas.d.ts.map +1 -1
  38. package/build/@types/common/config/constants.d.ts +1 -1
  39. package/build/@types/common/config/constants.d.ts.map +1 -1
  40. package/build/@types/common/services/DateAndTime.d.ts.map +1 -0
  41. package/build/@types/common/types/featureSupportLevel.d.ts +3 -3
  42. package/build/@types/common/types/featureSupportLevel.d.ts.map +1 -1
  43. package/build/@types/ocm/components/HostsClusterDetailTab/HostsClusterDetailTabContent.d.ts.map +1 -1
  44. package/build/@types/ocm/components/clusterConfiguration/CpuArchitectureDropdown.d.ts +3 -3
  45. package/build/@types/ocm/components/clusterConfiguration/CpuArchitectureDropdown.d.ts.map +1 -1
  46. package/build/@types/ocm/components/clusterConfiguration/OcmClusterDetailsFormFields.d.ts.map +1 -1
  47. package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfiguration.d.ts.map +1 -1
  48. package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfigurationForm.d.ts.map +1 -1
  49. package/build/@types/ocm/components/clusterConfiguration/platformIntegration/ExternalPlatformDropdown.d.ts +2 -2
  50. package/build/@types/ocm/components/clusterConfiguration/platformIntegration/ExternalPlatformDropdown.d.ts.map +1 -1
  51. package/build/@types/ocm/components/clusterConfiguration/platformIntegration/constants.d.ts +0 -3
  52. package/build/@types/ocm/components/clusterConfiguration/platformIntegration/constants.d.ts.map +1 -1
  53. package/build/@types/ocm/components/clusterDetail/AssistedInstallerDetailCard.d.ts.map +1 -1
  54. package/build/@types/ocm/components/clusterDetail/AssistedInstallerExtraDetailCard.d.ts.map +1 -1
  55. package/build/@types/ocm/components/clusterWizard/ClusterDetails.d.ts.map +1 -1
  56. package/build/@types/ocm/components/clusters/ClusterPage.d.ts.map +1 -1
  57. package/build/@types/ocm/components/featureSupportLevels/FeatureSupportLevelProvider.d.ts +4 -3
  58. package/build/@types/ocm/components/featureSupportLevels/FeatureSupportLevelProvider.d.ts.map +1 -1
  59. package/build/@types/ocm/components/featureSupportLevels/ReviewClusterFeatureSupportLevels.d.ts.map +1 -1
  60. package/build/@types/ocm/components/featureSupportLevels/featureStateUtils.d.ts +3 -3
  61. package/build/@types/ocm/components/featureSupportLevels/featureStateUtils.d.ts.map +1 -1
  62. package/build/@types/ocm/components/hosts/HostsDiscoveryTable.d.ts.map +1 -1
  63. package/build/@types/ocm/hooks/index.d.ts +0 -1
  64. package/build/@types/ocm/hooks/index.d.ts.map +1 -1
  65. package/build/@types/ocm/hooks/useSupportLevelsAPI.d.ts +3 -1
  66. package/build/@types/ocm/hooks/useSupportLevelsAPI.d.ts.map +1 -1
  67. package/build/cjs/cim/components/ClusterDeployment/ACMClusterDeploymentDetailsStep.js +3 -2
  68. package/build/cjs/cim/components/ClusterDeployment/ACMClusterDeploymentDetailsStep.js.map +1 -1
  69. package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentDetails.js +58 -55
  70. package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentDetails.js.map +1 -1
  71. package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentDetailsForm.js +3 -3
  72. package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentDetailsForm.js.map +1 -1
  73. package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentDetailsStep.js +5 -4
  74. package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentDetailsStep.js.map +1 -1
  75. package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentHostSelectionStep.js +2 -2
  76. package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentHostSelectionStep.js.map +1 -1
  77. package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentHostsSelection.js +14 -9
  78. package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentHostsSelection.js.map +1 -1
  79. package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentNetworkingForm.js +2 -2
  80. package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentNetworkingForm.js.map +1 -1
  81. package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentNetworkingStep.js +2 -2
  82. package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentNetworkingStep.js.map +1 -1
  83. package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentWizard.js +4 -4
  84. package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentWizard.js.map +1 -1
  85. package/build/cjs/cim/components/ClusterDeployment/ClusterDetailsFormFields.js +4 -3
  86. package/build/cjs/cim/components/ClusterDeployment/ClusterDetailsFormFields.js.map +1 -1
  87. package/build/cjs/cim/components/ClusterDeployment/helpers.js +4 -2
  88. package/build/cjs/cim/components/ClusterDeployment/helpers.js.map +1 -1
  89. package/build/cjs/cim/components/Hypershift/hooks/useSupportedOCPVersions.js +1 -1
  90. package/build/cjs/cim/components/Hypershift/hooks/useSupportedOCPVersions.js.map +1 -1
  91. package/build/cjs/cim/components/Hypershift/utils/nodepool.js +6 -5
  92. package/build/cjs/cim/components/Hypershift/utils/nodepool.js.map +1 -1
  93. package/build/cjs/cim/components/InfraEnv/InfraEnvFormPage.js +2 -2
  94. package/build/cjs/cim/components/InfraEnv/InfraEnvFormPage.js.map +1 -1
  95. package/build/cjs/cim/components/helpers/versions.js +9 -2
  96. package/build/cjs/cim/components/helpers/versions.js.map +1 -1
  97. package/build/cjs/cim/components/modals/AddHostModal.js +4 -4
  98. package/build/cjs/cim/components/modals/AddHostModal.js.map +1 -1
  99. package/build/cjs/common/api/assisted-service/ClustersAPI.js +0 -6
  100. package/build/cjs/common/api/assisted-service/ClustersAPI.js.map +1 -1
  101. package/build/cjs/common/api/assisted-service/NewFeatureSupportLevelsAPI.js +8 -5
  102. package/build/cjs/common/api/assisted-service/NewFeatureSupportLevelsAPI.js.map +1 -1
  103. package/build/cjs/common/components/clusterConfiguration/DiscoveryImageConfigForm.js +4 -4
  104. package/build/cjs/common/components/clusterConfiguration/DiscoveryImageConfigForm.js.map +1 -1
  105. package/build/cjs/common/components/clusterConfiguration/DownloadIso.js +2 -2
  106. package/build/cjs/common/components/clusterConfiguration/DownloadIso.js.map +1 -1
  107. package/build/cjs/common/components/hosts/HostRowDetail.js +2 -2
  108. package/build/cjs/common/components/hosts/HostRowDetail.js.map +1 -1
  109. package/build/cjs/common/components/ui/formik/validationSchemas.js +14 -6
  110. package/build/cjs/common/components/ui/formik/validationSchemas.js.map +1 -1
  111. package/build/cjs/common/config/constants.js +3 -2
  112. package/build/cjs/common/config/constants.js.map +1 -1
  113. package/build/cjs/common/services/DateAndTime.js.map +1 -0
  114. package/build/cjs/common/types/featureSupportLevel.js.map +1 -1
  115. package/build/cjs/ocm/components/HostsClusterDetailTab/HostsClusterDetailTabContent.js +2 -2
  116. package/build/cjs/ocm/components/HostsClusterDetailTab/HostsClusterDetailTabContent.js.map +1 -1
  117. package/build/cjs/ocm/components/clusterConfiguration/CpuArchitectureDropdown.js.map +1 -1
  118. package/build/cjs/ocm/components/clusterConfiguration/OcmClusterDetailsFormFields.js.map +1 -1
  119. package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfiguration.js +17 -21
  120. package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfiguration.js.map +1 -1
  121. package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfigurationForm.js +1 -2
  122. package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfigurationForm.js.map +1 -1
  123. package/build/cjs/ocm/components/clusterConfiguration/platformIntegration/ExternalPlatformDropdown.js +4 -4
  124. package/build/cjs/ocm/components/clusterConfiguration/platformIntegration/ExternalPlatformDropdown.js.map +1 -1
  125. package/build/cjs/ocm/components/clusterConfiguration/platformIntegration/constants.js +2 -5
  126. package/build/cjs/ocm/components/clusterConfiguration/platformIntegration/constants.js.map +1 -1
  127. package/build/cjs/ocm/components/clusterDetail/AssistedInstallerDetailCard.js +2 -1
  128. package/build/cjs/ocm/components/clusterDetail/AssistedInstallerDetailCard.js.map +1 -1
  129. package/build/cjs/ocm/components/clusterDetail/AssistedInstallerExtraDetailCard.js +2 -1
  130. package/build/cjs/ocm/components/clusterDetail/AssistedInstallerExtraDetailCard.js.map +1 -1
  131. package/build/cjs/ocm/components/clusterDetail/ClusterDetailStatusMessages.js +1 -1
  132. package/build/cjs/ocm/components/clusterDetail/ClusterDetailStatusMessages.js.map +1 -1
  133. package/build/cjs/ocm/components/clusterWizard/ClusterDetails.js +6 -5
  134. package/build/cjs/ocm/components/clusterWizard/ClusterDetails.js.map +1 -1
  135. package/build/cjs/ocm/components/clusters/ClusterPage.js +2 -1
  136. package/build/cjs/ocm/components/clusters/ClusterPage.js.map +1 -1
  137. package/build/cjs/ocm/components/featureSupportLevels/FeatureSupportLevelProvider.js +4 -4
  138. package/build/cjs/ocm/components/featureSupportLevels/FeatureSupportLevelProvider.js.map +1 -1
  139. package/build/cjs/ocm/components/featureSupportLevels/ReviewClusterFeatureSupportLevels.js +1 -3
  140. package/build/cjs/ocm/components/featureSupportLevels/ReviewClusterFeatureSupportLevels.js.map +1 -1
  141. package/build/cjs/ocm/components/featureSupportLevels/featureStateUtils.js +8 -2
  142. package/build/cjs/ocm/components/featureSupportLevels/featureStateUtils.js.map +1 -1
  143. package/build/cjs/ocm/components/hosts/HostsDiscoveryTable.js +1 -1
  144. package/build/cjs/ocm/components/hosts/HostsDiscoveryTable.js.map +1 -1
  145. package/build/cjs/ocm/hooks/index.js +1 -3
  146. package/build/cjs/ocm/hooks/index.js.map +1 -1
  147. package/build/cjs/ocm/hooks/useSupportLevelsAPI.js +5 -4
  148. package/build/cjs/ocm/hooks/useSupportLevelsAPI.js.map +1 -1
  149. package/lib/cim/components/ClusterDeployment/ACMClusterDeploymentDetailsStep.tsx +8 -1
  150. package/lib/cim/components/ClusterDeployment/ClusterDeploymentDetails.tsx +112 -102
  151. package/lib/cim/components/ClusterDeployment/ClusterDeploymentDetailsForm.tsx +7 -1
  152. package/lib/cim/components/ClusterDeployment/ClusterDeploymentDetailsStep.tsx +6 -1
  153. package/lib/cim/components/ClusterDeployment/ClusterDeploymentHostSelectionStep.tsx +2 -0
  154. package/lib/cim/components/ClusterDeployment/ClusterDeploymentHostsSelection.tsx +14 -12
  155. package/lib/cim/components/ClusterDeployment/ClusterDeploymentNetworkingForm.tsx +3 -1
  156. package/lib/cim/components/ClusterDeployment/ClusterDeploymentNetworkingStep.tsx +3 -0
  157. package/lib/cim/components/ClusterDeployment/ClusterDeploymentWizard.tsx +4 -0
  158. package/lib/cim/components/ClusterDeployment/ClusterDetailsFormFields.tsx +8 -2
  159. package/lib/cim/components/ClusterDeployment/helpers.ts +13 -10
  160. package/lib/cim/components/ClusterDeployment/types.ts +4 -0
  161. package/lib/cim/components/Hypershift/hooks/useSupportedOCPVersions.ts +1 -1
  162. package/lib/cim/components/Hypershift/utils/nodepool.ts +3 -2
  163. package/lib/cim/components/InfraEnv/InfraEnvFormPage.tsx +11 -2
  164. package/lib/cim/components/helpers/versions.ts +8 -1
  165. package/lib/cim/components/modals/AddHostModal.tsx +5 -0
  166. package/lib/common/api/assisted-service/ClustersAPI.ts +0 -9
  167. package/lib/common/api/assisted-service/NewFeatureSupportLevelsAPI.ts +9 -5
  168. package/lib/common/components/clusterConfiguration/DiscoveryImageConfigForm.tsx +6 -4
  169. package/lib/common/components/clusterConfiguration/DownloadIso.tsx +3 -1
  170. package/lib/common/components/hosts/HostRowDetail.tsx +3 -1
  171. package/lib/common/components/newFeatureSupportLevels/types.ts +4 -2
  172. package/lib/common/components/ui/formik/validationSchemas.ts +16 -6
  173. package/lib/common/config/constants.ts +2 -2
  174. package/lib/common/types/featureSupportLevel.ts +6 -5
  175. package/lib/ocm/components/HostsClusterDetailTab/HostsClusterDetailTabContent.tsx +2 -1
  176. package/lib/ocm/components/clusterConfiguration/CpuArchitectureDropdown.tsx +5 -3
  177. package/lib/ocm/components/clusterConfiguration/OcmClusterDetailsFormFields.tsx +3 -2
  178. package/lib/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfiguration.tsx +46 -36
  179. package/lib/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfigurationForm.tsx +3 -4
  180. package/lib/ocm/components/clusterConfiguration/platformIntegration/ExternalPlatformDropdown.tsx +14 -19
  181. package/lib/ocm/components/clusterConfiguration/platformIntegration/constants.tsx +1 -5
  182. package/lib/ocm/components/clusterDetail/AssistedInstallerDetailCard.tsx +2 -1
  183. package/lib/ocm/components/clusterDetail/AssistedInstallerExtraDetailCard.tsx +2 -1
  184. package/lib/ocm/components/clusterDetail/ClusterDetailStatusMessages.tsx +1 -1
  185. package/lib/ocm/components/clusterWizard/ClusterDetails.tsx +11 -6
  186. package/lib/ocm/components/clusters/ClusterPage.tsx +2 -1
  187. package/lib/ocm/components/featureSupportLevels/FeatureSupportLevelProvider.tsx +14 -3
  188. package/lib/ocm/components/featureSupportLevels/ReviewClusterFeatureSupportLevels.tsx +1 -8
  189. package/lib/ocm/components/featureSupportLevels/featureStateUtils.ts +18 -3
  190. package/lib/ocm/components/hosts/HostsDiscoveryTable.tsx +1 -0
  191. package/lib/ocm/hooks/index.ts +0 -1
  192. package/lib/ocm/hooks/useSupportLevelsAPI.ts +12 -4
  193. package/package.json +3 -4
  194. package/build/@types/common/sevices/DateAndTime.d.ts.map +0 -1
  195. package/build/@types/ocm/hooks/useClusterSupportedPlatforms.d.ts +0 -11
  196. package/build/@types/ocm/hooks/useClusterSupportedPlatforms.d.ts.map +0 -1
  197. package/build/cjs/common/sevices/DateAndTime.js.map +0 -1
  198. package/build/cjs/ocm/hooks/useClusterSupportedPlatforms.js +0 -53
  199. package/build/cjs/ocm/hooks/useClusterSupportedPlatforms.js.map +0 -1
  200. package/lib/ocm/hooks/useClusterSupportedPlatforms.ts +0 -70
  201. /package/build/@types/common/{sevices → services}/DateAndTime.d.ts +0 -0
  202. /package/build/cjs/common/{sevices → services}/DateAndTime.js +0 -0
  203. /package/lib/common/{sevices → services}/DateAndTime.tsx +0 -0
@@ -19,7 +19,7 @@ import {
19
19
  } from '../../types';
20
20
  import ClusterDeploymentCredentials from './ClusterDeploymentCredentials';
21
21
  import { shouldShowClusterCredentials, shouldShowClusterInstallationProgress } from './helpers';
22
- import { EventsModalButton } from '../../../common/components/ui/eventsModal';
22
+ import { EventsModal } from '../../../common/components/ui/eventsModal';
23
23
  import ClusterDeploymentDetailsTable from './ClusterDeploymentDetailsTable';
24
24
  import { FetchSecret } from './types';
25
25
  import { getClusterProperties, getConsoleUrl } from '../helpers/clusterDeployment';
@@ -45,6 +45,7 @@ const ClusterDeploymentDetails: React.FC<ClusterDeploymentDetailsProps> = ({
45
45
  const [progressCardExpanded, setProgressCardExpanded] = React.useState(true);
46
46
  const [inventoryCardExpanded, setInventoryCardExpanded] = React.useState(true);
47
47
  const [detailsCardExpanded, setDetailsCardExpanded] = React.useState(true);
48
+ const [isEventsModalOpen, setIsEventsModalOpen] = React.useState(false);
48
49
 
49
50
  const clusterAgents = agents.filter(
50
51
  (a) =>
@@ -60,120 +61,129 @@ const ClusterDeploymentDetails: React.FC<ClusterDeploymentDetailsProps> = ({
60
61
  );
61
62
  const { t } = useTranslation();
62
63
  return (
63
- <Stack hasGutter>
64
- {shouldShowClusterInstallationProgress(agentClusterInstall) && (
64
+ <>
65
+ <Stack hasGutter>
66
+ {shouldShowClusterInstallationProgress(agentClusterInstall) && (
67
+ <StackItem>
68
+ <Card id="cluster-installation-progress-card" isExpanded={progressCardExpanded}>
69
+ <CardHeader
70
+ onExpand={() => setProgressCardExpanded(!progressCardExpanded)}
71
+ toggleButtonProps={{
72
+ id: 'progress-card-toggle-button',
73
+ 'aria-label': 'Cluster installation process',
74
+ 'aria-labelledby': 'titleId progress-card-toggle-button',
75
+ 'aria-expanded': progressCardExpanded,
76
+ }}
77
+ >
78
+ <CardTitle id="titleId">{t('ai:Cluster installation process')}</CardTitle>
79
+ </CardHeader>
80
+ <CardExpandableContent>
81
+ <CardBody>
82
+ <Stack hasGutter>
83
+ {shouldShowClusterCredentials(agentClusterInstall) && (
84
+ <StackItem>
85
+ <ClusterDeploymentCredentials
86
+ clusterDeployment={clusterDeployment}
87
+ agentClusterInstall={agentClusterInstall}
88
+ agents={clusterAgents}
89
+ fetchSecret={fetchSecret}
90
+ consoleUrl={getConsoleUrl(clusterDeployment)}
91
+ />
92
+ </StackItem>
93
+ )}
94
+ <StackItem>
95
+ <ClusterDeploymentKubeconfigDownload
96
+ clusterDeployment={clusterDeployment}
97
+ agentClusterInstall={agentClusterInstall}
98
+ fetchSecret={fetchSecret}
99
+ />{' '}
100
+ <Button
101
+ id="cluster-events-button"
102
+ variant={ButtonVariant.link}
103
+ style={{ textAlign: 'right' }}
104
+ onClick={() => setIsEventsModalOpen(true)}
105
+ >
106
+ {t('ai:View cluster events')}
107
+ </Button>
108
+ </StackItem>
109
+ </Stack>
110
+ </CardBody>
111
+ </CardExpandableContent>
112
+ </Card>
113
+ </StackItem>
114
+ )}
65
115
  <StackItem>
66
- <Card id="cluster-installation-progress-card" isExpanded={progressCardExpanded}>
116
+ <Card id="cluster-inventory-card" isExpanded={inventoryCardExpanded}>
67
117
  <CardHeader
68
- onExpand={() => setProgressCardExpanded(!progressCardExpanded)}
118
+ onExpand={() => setInventoryCardExpanded(!inventoryCardExpanded)}
69
119
  toggleButtonProps={{
70
- id: 'progress-card-toggle-button',
71
- 'aria-label': 'Cluster installation process',
72
- 'aria-labelledby': 'titleId progress-card-toggle-button',
73
- 'aria-expanded': progressCardExpanded,
120
+ id: 'inventory-card-toggle-button',
121
+ 'aria-label': 'Hosts inventory',
122
+ 'aria-labelledby': 'titleId inventory-card-toggle-button',
123
+ 'aria-expanded': inventoryCardExpanded,
74
124
  }}
75
125
  >
76
- <CardTitle id="titleId">{t('ai:Cluster installation process')}</CardTitle>
126
+ <CardTitle id="titleId">{t('ai:Hosts inventory')}</CardTitle>
77
127
  </CardHeader>
78
128
  <CardExpandableContent>
79
129
  <CardBody>
80
- <Stack hasGutter>
81
- {shouldShowClusterCredentials(agentClusterInstall) && (
82
- <StackItem>
83
- <ClusterDeploymentCredentials
84
- clusterDeployment={clusterDeployment}
85
- agentClusterInstall={agentClusterInstall}
86
- agents={clusterAgents}
87
- fetchSecret={fetchSecret}
88
- consoleUrl={getConsoleUrl(clusterDeployment)}
89
- />
90
- </StackItem>
91
- )}
92
- <StackItem>
93
- <ClusterDeploymentKubeconfigDownload
94
- clusterDeployment={clusterDeployment}
95
- agentClusterInstall={agentClusterInstall}
96
- fetchSecret={fetchSecret}
97
- />{' '}
98
- <EventsModalButton
99
- id="cluster-events-button"
100
- entityKind="cluster"
101
- cluster={cluster}
102
- title={t('ai:Cluster Events')}
103
- variant={ButtonVariant.link}
104
- style={{ textAlign: 'right' }}
105
- onFetchEvents={onFetchEvents}
106
- ButtonComponent={Button}
107
- disablePagination
108
- >
109
- {t('ai:View cluster events')}
110
- </EventsModalButton>
111
- </StackItem>
112
- </Stack>
130
+ <ClusterDeploymentDetailsTable
131
+ agents={clusterAgents}
132
+ agentClusterInstall={agentClusterInstall}
133
+ />
134
+ </CardBody>
135
+ </CardExpandableContent>
136
+ </Card>
137
+ </StackItem>
138
+ <StackItem>
139
+ <Card id="cluster-details-card" isExpanded={detailsCardExpanded}>
140
+ <CardHeader
141
+ onExpand={() => setDetailsCardExpanded(!detailsCardExpanded)}
142
+ toggleButtonProps={{
143
+ id: 'details-card-toggle-button',
144
+ 'aria-label': 'Details',
145
+ 'aria-labelledby': 'titleId details-card-toggle-button',
146
+ 'aria-expanded': detailsCardExpanded,
147
+ }}
148
+ >
149
+ <CardTitle id="titleId">{t('ai:Details')}</CardTitle>
150
+ </CardHeader>
151
+ <CardExpandableContent>
152
+ <CardBody>
153
+ <ClusterPropertiesList
154
+ leftItems={[
155
+ clusterProperties.name,
156
+ clusterProperties.openshiftVersion,
157
+ clusterProperties.clusterId,
158
+ clusterProperties.installedTimestamp,
159
+ clusterProperties.baseDnsDomain,
160
+ ]}
161
+ rightItems={[
162
+ clusterProperties.apiVip,
163
+ clusterProperties.ingressVip,
164
+ clusterProperties.clusterNetworkCidr,
165
+ clusterProperties.clusterNetworkHostPrefix,
166
+ clusterProperties.serviceNetworkCidr,
167
+ ]}
168
+ />
113
169
  </CardBody>
114
170
  </CardExpandableContent>
115
171
  </Card>
116
172
  </StackItem>
173
+ </Stack>
174
+ {isEventsModalOpen && (
175
+ <EventsModal
176
+ entityKind="cluster"
177
+ cluster={cluster}
178
+ title={t('ai:Cluster Events')}
179
+ onFetchEvents={onFetchEvents}
180
+ hostId={undefined}
181
+ disablePagination
182
+ isOpen
183
+ onClose={() => setIsEventsModalOpen(false)}
184
+ />
117
185
  )}
118
- <StackItem>
119
- <Card id="cluster-inventory-card" isExpanded={inventoryCardExpanded}>
120
- <CardHeader
121
- onExpand={() => setInventoryCardExpanded(!inventoryCardExpanded)}
122
- toggleButtonProps={{
123
- id: 'inventory-card-toggle-button',
124
- 'aria-label': 'Hosts inventory',
125
- 'aria-labelledby': 'titleId inventory-card-toggle-button',
126
- 'aria-expanded': inventoryCardExpanded,
127
- }}
128
- >
129
- <CardTitle id="titleId">{t('ai:Hosts inventory')}</CardTitle>
130
- </CardHeader>
131
- <CardExpandableContent>
132
- <CardBody>
133
- <ClusterDeploymentDetailsTable
134
- agents={clusterAgents}
135
- agentClusterInstall={agentClusterInstall}
136
- />
137
- </CardBody>
138
- </CardExpandableContent>
139
- </Card>
140
- </StackItem>
141
- <StackItem>
142
- <Card id="cluster-details-card" isExpanded={detailsCardExpanded}>
143
- <CardHeader
144
- onExpand={() => setDetailsCardExpanded(!detailsCardExpanded)}
145
- toggleButtonProps={{
146
- id: 'details-card-toggle-button',
147
- 'aria-label': 'Details',
148
- 'aria-labelledby': 'titleId details-card-toggle-button',
149
- 'aria-expanded': detailsCardExpanded,
150
- }}
151
- >
152
- <CardTitle id="titleId">{t('ai:Details')}</CardTitle>
153
- </CardHeader>
154
- <CardExpandableContent>
155
- <CardBody>
156
- <ClusterPropertiesList
157
- leftItems={[
158
- clusterProperties.name,
159
- clusterProperties.openshiftVersion,
160
- clusterProperties.clusterId,
161
- clusterProperties.installedTimestamp,
162
- clusterProperties.baseDnsDomain,
163
- ]}
164
- rightItems={[
165
- clusterProperties.apiVip,
166
- clusterProperties.ingressVip,
167
- clusterProperties.clusterNetworkCidr,
168
- clusterProperties.clusterNetworkHostPrefix,
169
- clusterProperties.serviceNetworkCidr,
170
- ]}
171
- />
172
- </CardBody>
173
- </CardExpandableContent>
174
- </Card>
175
- </StackItem>
176
- </Stack>
186
+ </>
177
187
  );
178
188
  };
179
189
 
@@ -14,6 +14,7 @@ type ClusterDeploymentDetailsFormProps = {
14
14
  clusterDeployment?: ClusterDeploymentK8sResource;
15
15
  agentClusterInstall?: AgentClusterInstallK8sResource;
16
16
  extensionAfter?: ClusterDetailsFormFieldsProps['extensionAfter'];
17
+ isNutanix?: boolean;
17
18
  };
18
19
 
19
20
  const ClusterDeploymentDetailsForm: React.FC<ClusterDeploymentDetailsFormProps> = ({
@@ -21,8 +22,12 @@ const ClusterDeploymentDetailsForm: React.FC<ClusterDeploymentDetailsFormProps>
21
22
  clusterDeployment,
22
23
  clusterImages,
23
24
  extensionAfter,
25
+ isNutanix,
24
26
  }) => {
25
- const ocpVersions = React.useMemo(() => getOCPVersions(clusterImages), [clusterImages]);
27
+ const ocpVersions = React.useMemo(
28
+ () => getOCPVersions(clusterImages, isNutanix),
29
+ [clusterImages, isNutanix],
30
+ );
26
31
  const forceOpenshiftVersion = agentClusterInstall
27
32
  ? getSelectedVersion(clusterImages, agentClusterInstall)
28
33
  : undefined;
@@ -45,6 +50,7 @@ const ClusterDeploymentDetailsForm: React.FC<ClusterDeploymentDetailsFormProps>
45
50
  isEditFlow={isEditFlow}
46
51
  forceOpenshiftVersion={forceOpenshiftVersion}
47
52
  extensionAfter={extensionAfter}
53
+ isNutanix={isNutanix}
48
54
  />
49
55
  </StackItem>
50
56
  </Stack>
@@ -36,6 +36,7 @@ type UseDetailsFormikArgs = {
36
36
  agentClusterInstall?: AgentClusterInstallK8sResource;
37
37
  agents?: AgentK8sResource[];
38
38
  infraEnv?: InfraEnvK8sResource;
39
+ isNutanix: boolean;
39
40
  };
40
41
 
41
42
  export const useDetailsFormik = ({
@@ -45,10 +46,11 @@ export const useDetailsFormik = ({
45
46
  clusterImages,
46
47
  usedClusterNames,
47
48
  infraEnv,
49
+ isNutanix,
48
50
  }: UseDetailsFormikArgs): [ClusterDetailsValues, Lazy] => {
49
51
  const { t } = useTranslation();
50
52
  const featureSupportLevels = useFeatureSupportLevel();
51
- const ocpVersions = getOCPVersions(clusterImages);
53
+ const ocpVersions = getOCPVersions(clusterImages, isNutanix);
52
54
  const cluster = React.useMemo(
53
55
  () =>
54
56
  clusterDeployment && agentClusterInstall
@@ -98,6 +100,7 @@ const ClusterDeploymentDetailsStep: React.FC<ClusterDeploymentDetailsStepProps>
98
100
  onClose,
99
101
  isPreviewOpen,
100
102
  infraEnv,
103
+ isNutanix,
101
104
  }) => {
102
105
  const { addAlert } = useAlerts();
103
106
  const { setCurrentStepId } = React.useContext(ClusterDeploymentWizardContext);
@@ -109,6 +112,7 @@ const ClusterDeploymentDetailsStep: React.FC<ClusterDeploymentDetailsStepProps>
109
112
  clusterImages,
110
113
  usedClusterNames,
111
114
  infraEnv,
115
+ isNutanix,
112
116
  });
113
117
  const next = () =>
114
118
  isCIMFlow(clusterDeployment)
@@ -165,6 +169,7 @@ const ClusterDeploymentDetailsStep: React.FC<ClusterDeploymentDetailsStepProps>
165
169
  agentClusterInstall={agentClusterInstall}
166
170
  clusterDeployment={clusterDeployment}
167
171
  clusterImages={clusterImages}
172
+ isNutanix={isNutanix}
168
173
  />
169
174
  </GridItem>
170
175
  </Grid>
@@ -140,6 +140,7 @@ const HostSelectionForm: React.FC<HostSelectionFormProps> = ({
140
140
  aiConfigMap,
141
141
  onEditRole: onEditRoleInit,
142
142
  onSetInstallationDiskId,
143
+ isNutanix,
143
144
  }) => {
144
145
  const { setCurrentStepId } = React.useContext(ClusterDeploymentWizardContext);
145
146
  const [showClusterErrors, setShowClusterErrors] = React.useState(false);
@@ -279,6 +280,7 @@ const HostSelectionForm: React.FC<HostSelectionFormProps> = ({
279
280
  onSetInstallationDiskId={onSetInstallationDiskId}
280
281
  onAutoSelectChange={onAutoSelectChange}
281
282
  onHostSelect={onHostSelect}
283
+ isNutanix={isNutanix}
282
284
  />
283
285
  </GridItem>
284
286
  </Grid>
@@ -26,6 +26,7 @@ const ClusterDeploymentHostsSelection: React.FC<ClusterDeploymentHostsSelectionP
26
26
  onAutoSelectChange,
27
27
  onHostSelect,
28
28
  onSetInstallationDiskId,
29
+ isNutanix,
29
30
  }) => {
30
31
  const { values } = useFormikContext<ClusterDeploymentHostsSelectionValues>();
31
32
  const { autoSelectHosts } = values;
@@ -35,18 +36,19 @@ const ClusterDeploymentHostsSelection: React.FC<ClusterDeploymentHostsSelectionP
35
36
  const cdNamespace = clusterDeployment?.metadata?.namespace;
36
37
  const cpuArchitecture = getClusterDeploymentCpuArchitecture(clusterDeployment);
37
38
 
38
- const availableAgents = React.useMemo(
39
- () =>
40
- getAgentsForSelection(agents).filter(
41
- (agent) =>
42
- (agent.spec.clusterDeploymentName?.name === cdName &&
43
- agent.spec.clusterDeploymentName?.namespace === cdNamespace) ||
44
- (!agent.spec.clusterDeploymentName?.name &&
45
- !agent.spec.clusterDeploymentName?.namespace &&
46
- agent.status?.inventory.cpu?.architecture === cpuArchitecture),
47
- ),
48
- [agents, cdNamespace, cdName, cpuArchitecture],
49
- );
39
+ const availableAgents = React.useMemo(() => {
40
+ const filtered = getAgentsForSelection(agents).filter(
41
+ (agent) =>
42
+ (agent.spec.clusterDeploymentName?.name === cdName &&
43
+ agent.spec.clusterDeploymentName?.namespace === cdNamespace) ||
44
+ (!agent.spec.clusterDeploymentName?.name &&
45
+ !agent.spec.clusterDeploymentName?.namespace &&
46
+ agent.status?.inventory.cpu?.architecture === cpuArchitecture),
47
+ );
48
+ return isNutanix
49
+ ? filtered.filter((a) => a.status?.inventory?.systemVendor?.manufacturer === 'Nutanix')
50
+ : filtered;
51
+ }, [agents, cdNamespace, cdName, cpuArchitecture, isNutanix]);
50
52
  const { t } = useTranslation();
51
53
  return (
52
54
  <Grid hasGutter>
@@ -53,6 +53,7 @@ type ClusterDeploymentNetworkingFormProps = {
53
53
  onEditHost: AgentTableActions['onEditHost'];
54
54
  onEditRole: AgentTableActions['onEditRole'];
55
55
  onSetInstallationDiskId: AgentTableActions['onSetInstallationDiskId'];
56
+ isNutanix: boolean;
56
57
  };
57
58
 
58
59
  const ClusterDeploymentNetworkingForm: React.FC<ClusterDeploymentNetworkingFormProps> = ({
@@ -68,6 +69,7 @@ const ClusterDeploymentNetworkingForm: React.FC<ClusterDeploymentNetworkingFormP
68
69
  onEditHost,
69
70
  onEditRole,
70
71
  onSetInstallationDiskId,
72
+ isNutanix,
71
73
  }) => {
72
74
  const { values, touched, setFieldValue, setFieldTouched } =
73
75
  useFormikContext<ClusterDeploymentNetworkingValues>();
@@ -139,7 +141,7 @@ const ClusterDeploymentNetworkingForm: React.FC<ClusterDeploymentNetworkingFormP
139
141
  hostSubnets={hostSubnets}
140
142
  isVipDhcpAllocationDisabled
141
143
  defaultNetworkSettings={defaultNetworkSettings}
142
- hideManagedNetworking={getIsSNOCluster(agentClusterInstall)}
144
+ hideManagedNetworking={getIsSNOCluster(agentClusterInstall) || isNutanix}
143
145
  />
144
146
  </GridItem>
145
147
  </Grid>
@@ -35,6 +35,7 @@ type NetworkingFormProps = {
35
35
  onEditRole: AgentTableActions['onEditRole'];
36
36
  onSetInstallationDiskId: AgentTableActions['onSetInstallationDiskId'];
37
37
  isPreviewOpen: ClusterDeploymentDetailsNetworkingProps['isPreviewOpen'];
38
+ isNutanix: ClusterDeploymentDetailsNetworkingProps['isNutanix'];
38
39
  };
39
40
 
40
41
  const NetworkingForm: React.FC<NetworkingFormProps> = ({
@@ -47,6 +48,7 @@ const NetworkingForm: React.FC<NetworkingFormProps> = ({
47
48
  onEditRole,
48
49
  isPreviewOpen,
49
50
  onSetInstallationDiskId,
51
+ isNutanix,
50
52
  }) => {
51
53
  const [showFormErrors, setShowFormErrors] = React.useState(false);
52
54
  const [showClusterErrors, setShowClusterErrors] = React.useState(false);
@@ -149,6 +151,7 @@ const NetworkingForm: React.FC<NetworkingFormProps> = ({
149
151
  onEditRole={onEditRole}
150
152
  isPreviewOpen={isPreviewOpen}
151
153
  onSetInstallationDiskId={onSetInstallationDiskId}
154
+ isNutanix={isNutanix}
152
155
  />
153
156
  </GridItem>
154
157
  </Grid>
@@ -36,6 +36,7 @@ const ClusterDeploymentWizard: React.FC<ClusterDeploymentWizardProps> = ({
36
36
  fetchKlusterletAddonConfig,
37
37
  onSaveISOParams,
38
38
  onCreateBMH,
39
+ isNutanix,
39
40
  ...rest
40
41
  }) => {
41
42
  const [currentStepId, setCurrentStepId] = React.useState<ClusterDeploymentWizardStepsType>(
@@ -70,6 +71,7 @@ const ClusterDeploymentWizard: React.FC<ClusterDeploymentWizardProps> = ({
70
71
  aiConfigMap={aiConfigMap}
71
72
  onEditRole={hostActions.onEditRole}
72
73
  onSetInstallationDiskId={hostActions.onSetInstallationDiskId}
74
+ isNutanix={isNutanix}
73
75
  />
74
76
  );
75
77
  }
@@ -115,6 +117,7 @@ const ClusterDeploymentWizard: React.FC<ClusterDeploymentWizardProps> = ({
115
117
  fetchInfraEnv={fetchInfraEnv}
116
118
  isPreviewOpen={isPreviewOpen}
117
119
  onSetInstallationDiskId={hostActions.onSetInstallationDiskId}
120
+ isNutanix={isNutanix}
118
121
  />
119
122
  );
120
123
  case 'review':
@@ -142,6 +145,7 @@ const ClusterDeploymentWizard: React.FC<ClusterDeploymentWizardProps> = ({
142
145
  onClose={onClose}
143
146
  isPreviewOpen={isPreviewOpen}
144
147
  infraEnv={infraEnv}
148
+ isNutanix={isNutanix}
145
149
  />
146
150
  );
147
151
  }
@@ -21,6 +21,7 @@ export type ClusterDetailsFormFieldsProps = {
21
21
  forceOpenshiftVersion?: string;
22
22
  extensionAfter?: { [key: string]: React.ReactElement };
23
23
  versions: OpenshiftVersionOptionType[];
24
+ isNutanix?: boolean;
24
25
  };
25
26
 
26
27
  export const BaseDnsHelperText: React.FC<{ name?: string; baseDnsDomain?: string }> = ({
@@ -46,6 +47,7 @@ export const ClusterDetailsFormFields: React.FC<ClusterDetailsFormFieldsProps> =
46
47
  versions,
47
48
  forceOpenshiftVersion,
48
49
  extensionAfter,
50
+ isNutanix,
49
51
  }) => {
50
52
  const { values } = useFormikContext<ClusterDetailsValues>();
51
53
  const { name, baseDnsDomain, highAvailabilityMode } = values;
@@ -99,8 +101,12 @@ export const ClusterDetailsFormFields: React.FC<ClusterDetailsFormFieldsProps> =
99
101
  ) : (
100
102
  <OpenShiftVersionSelect versions={versions} />
101
103
  )}
102
- <SNOControlGroup versions={versions} highAvailabilityMode={highAvailabilityMode} />
103
- <ArmCheckbox versions={versions} />
104
+ {!isNutanix && (
105
+ <>
106
+ <SNOControlGroup versions={versions} highAvailabilityMode={highAvailabilityMode} />
107
+ <ArmCheckbox versions={versions} />
108
+ </>
109
+ )}
104
110
  {extensionAfter?.['openshiftVersion'] && extensionAfter['openshiftVersion']}
105
111
  {!isEditFlow && <PullSecret />}
106
112
  {extensionAfter?.['pullSecret'] && extensionAfter['pullSecret']}
@@ -38,16 +38,19 @@ export const shouldShowClusterInstallationProgress = (
38
38
  agentClusterInstall?: AgentClusterInstallK8sResource,
39
39
  ) => {
40
40
  const [clusterStatus] = getClusterStatus(agentClusterInstall);
41
- return [
42
- 'preparing-for-installation',
43
- 'installing',
44
- 'installing-pending-user-action',
45
- 'finalizing',
46
- 'installed',
47
- 'error',
48
- 'cancelled',
49
- 'adding-hosts',
50
- ].includes(clusterStatus);
41
+ return (
42
+ [
43
+ 'preparing-for-installation',
44
+ 'installing',
45
+ 'installing-pending-user-action',
46
+ 'finalizing',
47
+ 'installed',
48
+ 'error',
49
+ 'cancelled',
50
+ 'adding-hosts',
51
+ 'ready',
52
+ ].includes(clusterStatus) && !agentClusterInstall?.spec?.holdInstallation
53
+ );
51
54
  };
52
55
 
53
56
  export const isInstallationInProgress = (agentClusterInstall: AgentClusterInstallK8sResource) => {
@@ -87,6 +87,7 @@ export type ClusterDeploymentDetailsStepProps = ClusterDeploymentDetailsProps &
87
87
  onSaveDetails: (values: ClusterDeploymentDetailsValues) => Promise<unknown>;
88
88
  onClose: () => void;
89
89
  isPreviewOpen: boolean;
90
+ isNutanix: boolean;
90
91
  };
91
92
 
92
93
  export type ClusterDeploymentDetailsNetworkingProps = Pick<
@@ -100,6 +101,7 @@ export type ClusterDeploymentDetailsNetworkingProps = Pick<
100
101
  onClose: () => void;
101
102
  fetchInfraEnv: (name: string, namespace: string) => Promise<InfraEnvK8sResource>;
102
103
  isPreviewOpen: boolean;
104
+ isNutanix: boolean;
103
105
  };
104
106
 
105
107
  export type AgentSelectorChangeProps = {
@@ -163,6 +165,7 @@ export type ClusterDeploymentWizardProps = {
163
165
  docVersion: string; // ACM version
164
166
  onCreateBmcByYaml: UploadActionModalProps['onCreateBmcByYaml'];
165
167
  provisioningConfigResult: ProvisioningConfigResult;
168
+ isNutanix: boolean;
166
169
  };
167
170
 
168
171
  export type FetchSecret = (name: string, namespace: string) => Promise<SecretK8sResource>;
@@ -176,6 +179,7 @@ export type ClusterDeploymentHostsSelectionProps = {
176
179
  onSetInstallationDiskId: AgentTableActions['onSetInstallationDiskId'];
177
180
  onAutoSelectChange: VoidFunction;
178
181
  onHostSelect: VoidFunction;
182
+ isNutanix: boolean;
179
183
  };
180
184
 
181
185
  export type InfraEnvAgentTableProps = Pick<
@@ -13,7 +13,7 @@ export const useSupportedOCPVersions = (
13
13
  supportedVersionsCM?: ConfigMapK8sResource,
14
14
  ) => {
15
15
  return React.useMemo(() => {
16
- const ocpVersions = getOCPVersions(clusterImages);
16
+ const ocpVersions = getOCPVersions(clusterImages, false);
17
17
  const supportedVersionsString = supportedVersionsCM?.data?.['supported-versions'];
18
18
  if (supportedVersionsString) {
19
19
  try {
@@ -2,7 +2,7 @@ import { AgentK8sResource } from '../../../types';
2
2
  import { AgentMachineK8sResource, HostedClusterK8sResource, NodePoolK8sResource } from '../types';
3
3
 
4
4
  const CLUSTER_NAME_LABEL = 'cluster.x-k8s.io/cluster-name';
5
- const NODEPOOL_NAME_ANNOTATION = 'cluster.x-k8s.io/cloned-from-name';
5
+ const NODEPOOL_NAME_ANNOTATION = 'hypershift.openshift.io/nodePool';
6
6
 
7
7
  export const getNodepoolAgents = (
8
8
  nodePool: NodePoolK8sResource,
@@ -16,7 +16,8 @@ export const getNodepoolAgents = (
16
16
  am.metadata?.namespace ===
17
17
  `${hostedCluster.metadata?.namespace || ''}-${hostedCluster.metadata?.name || ''}` &&
18
18
  am.metadata?.labels?.[CLUSTER_NAME_LABEL] === hostedCluster.spec.infraID &&
19
- am.metadata?.annotations?.[NODEPOOL_NAME_ANNOTATION] === nodePool.metadata?.name &&
19
+ am.metadata?.annotations?.[NODEPOOL_NAME_ANNOTATION] ===
20
+ `${nodePool.metadata?.namespace || ''}/${nodePool.metadata?.name || ''}` &&
20
21
  am.status?.agentRef?.name &&
21
22
  am.status?.agentRef?.namespace,
22
23
  )
@@ -31,7 +31,6 @@ import {
31
31
  RadioField,
32
32
  PopoverIcon,
33
33
  pullSecretValidationSchema,
34
- OCP_STATIC_IP_DOC,
35
34
  CheckboxField,
36
35
  AdditionalNTPSourcesField,
37
36
  richNameValidationSchema,
@@ -42,6 +41,7 @@ import {
42
41
  locationValidationMessages,
43
42
  ntpSourceValidationSchema,
44
43
  CpuArchitecture,
44
+ getOCPStaticIPDocLink,
45
45
  } from '../../../common';
46
46
 
47
47
  import './infra-env.css';
@@ -118,6 +118,7 @@ type InfraEnvFormProps = {
118
118
  onValuesChanged?: (values: EnvironmentStepFormValues) => void;
119
119
  pullSecret?: string;
120
120
  sshPublicKey?: string;
121
+ docVersion: string;
121
122
  };
122
123
 
123
124
  const InfraEnvForm: React.FC<InfraEnvFormProps> = ({
@@ -125,6 +126,7 @@ const InfraEnvForm: React.FC<InfraEnvFormProps> = ({
125
126
  children,
126
127
  pullSecret,
127
128
  sshPublicKey,
129
+ docVersion,
128
130
  }) => {
129
131
  const { values, setFieldValue } = useFormikContext<EnvironmentStepFormValues>();
130
132
  const { t } = useTranslation();
@@ -194,7 +196,13 @@ const InfraEnvForm: React.FC<InfraEnvFormProps> = ({
194
196
  icon={<ExternalLinkAltIcon />}
195
197
  iconPosition="right"
196
198
  isInline
197
- onClick={() => window.open(OCP_STATIC_IP_DOC, '_blank', 'noopener')}
199
+ onClick={() =>
200
+ window.open(
201
+ getOCPStaticIPDocLink(docVersion),
202
+ '_blank',
203
+ 'noopener',
204
+ )
205
+ }
198
206
  >
199
207
  {t('ai:View documentation')}
200
208
  </Button>
@@ -282,6 +290,7 @@ type InfraEnvFormPageProps = InfraEnvFormProps & {
282
290
  formRef: React.Ref<FormikProps<EnvironmentStepFormValues>>;
283
291
  pullSecret?: string;
284
292
  sshPublicKey?: string;
293
+ docVersion: string;
285
294
  };
286
295
 
287
296
  export const InfraEnvFormPage: React.FC<InfraEnvFormPageProps> = ({
@@ -36,9 +36,16 @@ const getSupportLevelFromChannel = (
36
36
 
37
37
  export const getOCPVersions = (
38
38
  clusterImageSets: ClusterImageSetK8sResource[],
39
+ isNutanix?: boolean | undefined,
39
40
  ): OpenshiftVersionOptionType[] => {
40
41
  const versions = clusterImageSets
41
- .filter((clusterImageSet) => clusterImageSet.metadata?.labels?.visible !== 'false')
42
+ .filter((clusterImageSet) => {
43
+ let supportedPlatform = true;
44
+ if (isNutanix && clusterImageSet.spec?.releaseImage) {
45
+ supportedPlatform = clusterImageSet.spec.releaseImage.endsWith('-x86_64');
46
+ }
47
+ return supportedPlatform && clusterImageSet.metadata?.labels?.visible !== 'false';
48
+ })
42
49
  .map((clusterImageSet): OpenshiftVersionOptionType => {
43
50
  const version = getVersionFromReleaseImage(clusterImageSet.spec?.releaseImage);
44
51
  return {