@openshift-assisted/ui-lib 2.9.7-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 (123) hide show
  1. package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentDetails.d.ts.map +1 -1
  2. package/build/@types/cim/components/ClusterDeployment/helpers.d.ts.map +1 -1
  3. package/build/@types/cim/components/Hypershift/utils/nodepool.d.ts.map +1 -1
  4. package/build/@types/cim/components/InfraEnv/InfraEnvFormPage.d.ts +2 -0
  5. package/build/@types/cim/components/InfraEnv/InfraEnvFormPage.d.ts.map +1 -1
  6. package/build/@types/cim/components/modals/AddHostModal.d.ts.map +1 -1
  7. package/build/@types/common/api/assisted-service/NewFeatureSupportLevelsAPI.d.ts +1 -1
  8. package/build/@types/common/api/assisted-service/NewFeatureSupportLevelsAPI.d.ts.map +1 -1
  9. package/build/@types/common/components/clusterConfiguration/DiscoveryImageConfigForm.d.ts +4 -1
  10. package/build/@types/common/components/clusterConfiguration/DiscoveryImageConfigForm.d.ts.map +1 -1
  11. package/build/@types/common/components/clusterConfiguration/DownloadIso.d.ts +2 -1
  12. package/build/@types/common/components/clusterConfiguration/DownloadIso.d.ts.map +1 -1
  13. package/build/@types/common/components/hosts/HostRowDetail.d.ts +2 -1
  14. package/build/@types/common/components/hosts/HostRowDetail.d.ts.map +1 -1
  15. package/build/@types/common/components/newFeatureSupportLevels/types.d.ts +3 -3
  16. package/build/@types/common/components/newFeatureSupportLevels/types.d.ts.map +1 -1
  17. package/build/@types/common/components/ui/formik/validationSchemas.d.ts.map +1 -1
  18. package/build/@types/common/config/constants.d.ts +1 -1
  19. package/build/@types/common/config/constants.d.ts.map +1 -1
  20. package/build/@types/common/services/DateAndTime.d.ts.map +1 -0
  21. package/build/@types/common/types/featureSupportLevel.d.ts +3 -3
  22. package/build/@types/common/types/featureSupportLevel.d.ts.map +1 -1
  23. package/build/@types/ocm/components/HostsClusterDetailTab/HostsClusterDetailTabContent.d.ts.map +1 -1
  24. package/build/@types/ocm/components/clusterConfiguration/CpuArchitectureDropdown.d.ts +3 -3
  25. package/build/@types/ocm/components/clusterConfiguration/CpuArchitectureDropdown.d.ts.map +1 -1
  26. package/build/@types/ocm/components/clusterConfiguration/OcmClusterDetailsFormFields.d.ts.map +1 -1
  27. package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfiguration.d.ts.map +1 -1
  28. package/build/@types/ocm/components/clusterConfiguration/platformIntegration/ExternalPlatformDropdown.d.ts +2 -1
  29. package/build/@types/ocm/components/clusterConfiguration/platformIntegration/ExternalPlatformDropdown.d.ts.map +1 -1
  30. package/build/@types/ocm/components/clusterDetail/AssistedInstallerDetailCard.d.ts.map +1 -1
  31. package/build/@types/ocm/components/clusterDetail/AssistedInstallerExtraDetailCard.d.ts.map +1 -1
  32. package/build/@types/ocm/components/clusters/ClusterPage.d.ts.map +1 -1
  33. package/build/@types/ocm/components/featureSupportLevels/FeatureSupportLevelProvider.d.ts +4 -3
  34. package/build/@types/ocm/components/featureSupportLevels/FeatureSupportLevelProvider.d.ts.map +1 -1
  35. package/build/@types/ocm/components/featureSupportLevels/ReviewClusterFeatureSupportLevels.d.ts.map +1 -1
  36. package/build/@types/ocm/components/featureSupportLevels/featureStateUtils.d.ts +3 -3
  37. package/build/@types/ocm/components/featureSupportLevels/featureStateUtils.d.ts.map +1 -1
  38. package/build/@types/ocm/components/hosts/HostsDiscoveryTable.d.ts.map +1 -1
  39. package/build/@types/ocm/hooks/useSupportLevelsAPI.d.ts +3 -1
  40. package/build/@types/ocm/hooks/useSupportLevelsAPI.d.ts.map +1 -1
  41. package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentDetails.js +58 -55
  42. package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentDetails.js.map +1 -1
  43. package/build/cjs/cim/components/ClusterDeployment/helpers.js +4 -2
  44. package/build/cjs/cim/components/ClusterDeployment/helpers.js.map +1 -1
  45. package/build/cjs/cim/components/Hypershift/utils/nodepool.js +6 -5
  46. package/build/cjs/cim/components/Hypershift/utils/nodepool.js.map +1 -1
  47. package/build/cjs/cim/components/InfraEnv/InfraEnvFormPage.js +2 -2
  48. package/build/cjs/cim/components/InfraEnv/InfraEnvFormPage.js.map +1 -1
  49. package/build/cjs/cim/components/modals/AddHostModal.js +4 -4
  50. package/build/cjs/cim/components/modals/AddHostModal.js.map +1 -1
  51. package/build/cjs/common/api/assisted-service/NewFeatureSupportLevelsAPI.js +8 -5
  52. package/build/cjs/common/api/assisted-service/NewFeatureSupportLevelsAPI.js.map +1 -1
  53. package/build/cjs/common/components/clusterConfiguration/DiscoveryImageConfigForm.js +4 -4
  54. package/build/cjs/common/components/clusterConfiguration/DiscoveryImageConfigForm.js.map +1 -1
  55. package/build/cjs/common/components/clusterConfiguration/DownloadIso.js +2 -2
  56. package/build/cjs/common/components/clusterConfiguration/DownloadIso.js.map +1 -1
  57. package/build/cjs/common/components/hosts/HostRowDetail.js +2 -2
  58. package/build/cjs/common/components/hosts/HostRowDetail.js.map +1 -1
  59. package/build/cjs/common/components/ui/formik/validationSchemas.js +14 -6
  60. package/build/cjs/common/components/ui/formik/validationSchemas.js.map +1 -1
  61. package/build/cjs/common/config/constants.js +3 -2
  62. package/build/cjs/common/config/constants.js.map +1 -1
  63. package/build/cjs/common/services/DateAndTime.js.map +1 -0
  64. package/build/cjs/common/types/featureSupportLevel.js.map +1 -1
  65. package/build/cjs/ocm/components/HostsClusterDetailTab/HostsClusterDetailTabContent.js +2 -2
  66. package/build/cjs/ocm/components/HostsClusterDetailTab/HostsClusterDetailTabContent.js.map +1 -1
  67. package/build/cjs/ocm/components/clusterConfiguration/CpuArchitectureDropdown.js.map +1 -1
  68. package/build/cjs/ocm/components/clusterConfiguration/OcmClusterDetailsFormFields.js.map +1 -1
  69. package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfiguration.js +17 -17
  70. package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfiguration.js.map +1 -1
  71. package/build/cjs/ocm/components/clusterConfiguration/platformIntegration/ExternalPlatformDropdown.js +2 -1
  72. package/build/cjs/ocm/components/clusterConfiguration/platformIntegration/ExternalPlatformDropdown.js.map +1 -1
  73. package/build/cjs/ocm/components/clusterDetail/AssistedInstallerDetailCard.js +2 -1
  74. package/build/cjs/ocm/components/clusterDetail/AssistedInstallerDetailCard.js.map +1 -1
  75. package/build/cjs/ocm/components/clusterDetail/AssistedInstallerExtraDetailCard.js +2 -1
  76. package/build/cjs/ocm/components/clusterDetail/AssistedInstallerExtraDetailCard.js.map +1 -1
  77. package/build/cjs/ocm/components/clusterDetail/ClusterDetailStatusMessages.js +1 -1
  78. package/build/cjs/ocm/components/clusterDetail/ClusterDetailStatusMessages.js.map +1 -1
  79. package/build/cjs/ocm/components/clusters/ClusterPage.js +2 -1
  80. package/build/cjs/ocm/components/clusters/ClusterPage.js.map +1 -1
  81. package/build/cjs/ocm/components/featureSupportLevels/FeatureSupportLevelProvider.js +4 -4
  82. package/build/cjs/ocm/components/featureSupportLevels/FeatureSupportLevelProvider.js.map +1 -1
  83. package/build/cjs/ocm/components/featureSupportLevels/ReviewClusterFeatureSupportLevels.js +1 -3
  84. package/build/cjs/ocm/components/featureSupportLevels/ReviewClusterFeatureSupportLevels.js.map +1 -1
  85. package/build/cjs/ocm/components/featureSupportLevels/featureStateUtils.js +8 -2
  86. package/build/cjs/ocm/components/featureSupportLevels/featureStateUtils.js.map +1 -1
  87. package/build/cjs/ocm/components/hosts/HostsDiscoveryTable.js +1 -1
  88. package/build/cjs/ocm/components/hosts/HostsDiscoveryTable.js.map +1 -1
  89. package/build/cjs/ocm/hooks/useSupportLevelsAPI.js +5 -4
  90. package/build/cjs/ocm/hooks/useSupportLevelsAPI.js.map +1 -1
  91. package/lib/cim/components/ClusterDeployment/ClusterDeploymentDetails.tsx +112 -102
  92. package/lib/cim/components/ClusterDeployment/helpers.ts +13 -10
  93. package/lib/cim/components/Hypershift/utils/nodepool.ts +3 -2
  94. package/lib/cim/components/InfraEnv/InfraEnvFormPage.tsx +11 -2
  95. package/lib/cim/components/modals/AddHostModal.tsx +5 -0
  96. package/lib/common/api/assisted-service/NewFeatureSupportLevelsAPI.ts +9 -5
  97. package/lib/common/components/clusterConfiguration/DiscoveryImageConfigForm.tsx +6 -4
  98. package/lib/common/components/clusterConfiguration/DownloadIso.tsx +3 -1
  99. package/lib/common/components/hosts/HostRowDetail.tsx +3 -1
  100. package/lib/common/components/newFeatureSupportLevels/types.ts +4 -2
  101. package/lib/common/components/ui/formik/validationSchemas.ts +16 -6
  102. package/lib/common/config/constants.ts +2 -2
  103. package/lib/common/types/featureSupportLevel.ts +6 -5
  104. package/lib/ocm/components/HostsClusterDetailTab/HostsClusterDetailTabContent.tsx +2 -1
  105. package/lib/ocm/components/clusterConfiguration/CpuArchitectureDropdown.tsx +5 -3
  106. package/lib/ocm/components/clusterConfiguration/OcmClusterDetailsFormFields.tsx +3 -2
  107. package/lib/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfiguration.tsx +48 -25
  108. package/lib/ocm/components/clusterConfiguration/platformIntegration/ExternalPlatformDropdown.tsx +12 -5
  109. package/lib/ocm/components/clusterDetail/AssistedInstallerDetailCard.tsx +2 -1
  110. package/lib/ocm/components/clusterDetail/AssistedInstallerExtraDetailCard.tsx +2 -1
  111. package/lib/ocm/components/clusterDetail/ClusterDetailStatusMessages.tsx +1 -1
  112. package/lib/ocm/components/clusters/ClusterPage.tsx +2 -1
  113. package/lib/ocm/components/featureSupportLevels/FeatureSupportLevelProvider.tsx +14 -3
  114. package/lib/ocm/components/featureSupportLevels/ReviewClusterFeatureSupportLevels.tsx +1 -8
  115. package/lib/ocm/components/featureSupportLevels/featureStateUtils.ts +18 -3
  116. package/lib/ocm/components/hosts/HostsDiscoveryTable.tsx +1 -0
  117. package/lib/ocm/hooks/useSupportLevelsAPI.ts +12 -4
  118. package/package.json +3 -3
  119. package/build/@types/common/sevices/DateAndTime.d.ts.map +0 -1
  120. package/build/cjs/common/sevices/DateAndTime.js.map +0 -1
  121. /package/build/@types/common/{sevices → services}/DateAndTime.d.ts +0 -0
  122. /package/build/cjs/common/{sevices → services}/DateAndTime.js +0 -0
  123. /package/lib/common/{sevices → services}/DateAndTime.tsx +0 -0
@@ -5,7 +5,7 @@ const react_1 = tslib_1.__importDefault(require("react"));
5
5
  const common_1 = require("../../common");
6
6
  const api_1 = require("../api");
7
7
  const NewFeatureSupportLevelsAPI_1 = tslib_1.__importDefault(require("../../common/api/assisted-service/NewFeatureSupportLevelsAPI"));
8
- function useSupportLevelsAPI(resourceKind, openshiftVersion, cpuArchitecture) {
8
+ function useSupportLevelsAPI(resourceKind, openshiftVersion, cpuArchitecture, platformType) {
9
9
  const [cpuArchitectures, setCpuArchitectures] = react_1.default.useState(null);
10
10
  const [features, setFeatures] = react_1.default.useState(null);
11
11
  const { addAlert } = (0, common_1.useAlerts)();
@@ -22,9 +22,9 @@ function useSupportLevelsAPI(resourceKind, openshiftVersion, cpuArchitecture) {
22
22
  setCpuArchitectures(null);
23
23
  }
24
24
  }), [addAlert]);
25
- const fetchFeaturesSupportLevels = react_1.default.useCallback((openshiftVersion, cpuArchitecture) => tslib_1.__awaiter(this, void 0, void 0, function* () {
25
+ const fetchFeaturesSupportLevels = react_1.default.useCallback((openshiftVersion, cpuArchitecture, platformType) => tslib_1.__awaiter(this, void 0, void 0, function* () {
26
26
  try {
27
- const { data: features } = yield NewFeatureSupportLevelsAPI_1.default.featuresSupportLevel(openshiftVersion, cpuArchitecture);
27
+ const { data: features } = yield NewFeatureSupportLevelsAPI_1.default.featuresSupportLevel(openshiftVersion, cpuArchitecture, platformType);
28
28
  setFeatures(features.features);
29
29
  }
30
30
  catch (e) {
@@ -41,7 +41,7 @@ function useSupportLevelsAPI(resourceKind, openshiftVersion, cpuArchitecture) {
41
41
  void fetchArchitecturesSupportLevels(openshiftVersion);
42
42
  }
43
43
  else {
44
- void fetchFeaturesSupportLevels(openshiftVersion, cpuArchitecture);
44
+ void fetchFeaturesSupportLevels(openshiftVersion, cpuArchitecture, platformType);
45
45
  }
46
46
  }
47
47
  }, [
@@ -50,6 +50,7 @@ function useSupportLevelsAPI(resourceKind, openshiftVersion, cpuArchitecture) {
50
50
  fetchArchitecturesSupportLevels,
51
51
  fetchFeaturesSupportLevels,
52
52
  resourceKind,
53
+ platformType,
53
54
  ]);
54
55
  if (resourceKind === 'architectures') {
55
56
  return cpuArchitectures;
@@ -1 +1 @@
1
- {"version":3,"file":"useSupportLevelsAPI.js","sourceRoot":"","sources":["../../../../lib/ocm/hooks/useSupportLevelsAPI.ts"],"names":[],"mappings":";;;AAAA,0DAA0B;AAC1B,yCAAyC;AAKzC,gCAA4D;AAC5D,sIAAsG;AAStG,SAAwB,mBAAmB,CACzC,YAAe,EACf,gBAAyB,EACzB,eAAwB;IAExB,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAC3C,eAAK,CAAC,QAAQ,CAAqC,IAAI,CAAC,CAAC;IAC3D,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,eAAK,CAAC,QAAQ,CAAmC,IAAI,CAAC,CAAC;IACvF,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAA,kBAAS,GAAE,CAAC;IAEjC,MAAM,+BAA+B,GAAG,eAAK,CAAC,WAAW,CACvD,CAAO,gBAAwB,EAAE,EAAE;QACjC,IAAI;YACF,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,MAAM,oCAA0B,CAAC,yBAAyB,CACxF,gBAAgB,CACjB,CAAC;YACF,mBAAmB,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;SAClD;QAAC,OAAO,CAAC,EAAE;YACV,IAAA,oBAAc,EAAC,CAAC,EAAE,GAAG,EAAE,CACrB,QAAQ,CAAC;gBACP,KAAK,EAAE,sCAAsC;gBAC7C,OAAO,EAAE,IAAA,wBAAkB,EAAC,CAAC,CAAC;aAC/B,CAAC,CACH,CAAC;YACF,mBAAmB,CAAC,IAAI,CAAC,CAAC;SAC3B;IACH,CAAC,CAAA,EACD,CAAC,QAAQ,CAAC,CACX,CAAC;IAEF,MAAM,0BAA0B,GAAG,eAAK,CAAC,WAAW,CAClD,CAAO,gBAAwB,EAAE,eAAwB,EAAE,EAAE;QAC3D,IAAI;YACF,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,oCAA0B,CAAC,oBAAoB,CAC9E,gBAAgB,EAChB,eAAe,CAChB,CAAC;YACF,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;SAChC;QAAC,OAAO,CAAC,EAAE;YACV,IAAA,oBAAc,EAAC,CAAC,EAAE,GAAG,EAAE,CACrB,QAAQ,CAAC;gBACP,KAAK,EAAE,2CAA2C;gBAClD,OAAO,EAAE,IAAA,wBAAkB,EAAC,CAAC,CAAC;aAC/B,CAAC,CACH,CAAC;YACF,WAAW,CAAC,IAAI,CAAC,CAAC;SACnB;IACH,CAAC,CAAA,EACD,CAAC,QAAQ,CAAC,CACX,CAAC;IAEF,eAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,gBAAgB,EAAE;YACpB,IAAI,YAAY,KAAK,eAAe,EAAE;gBACpC,KAAK,+BAA+B,CAAC,gBAAgB,CAAC,CAAC;aACxD;iBAAM;gBACL,KAAK,0BAA0B,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAAC;aACpE;SACF;IACH,CAAC,EAAE;QACD,gBAAgB;QAChB,eAAe;QACf,+BAA+B;QAC/B,0BAA0B;QAC1B,YAAY;KACb,CAAC,CAAC;IAEH,IAAI,YAAY,KAAK,eAAe,EAAE;QACpC,OAAO,gBAAiD,CAAC;KAC1D;SAAM;QACL,OAAO,QAAyC,CAAC;KAClD;AACH,CAAC;AAxED,sCAwEC"}
1
+ {"version":3,"file":"useSupportLevelsAPI.js","sourceRoot":"","sources":["../../../../lib/ocm/hooks/useSupportLevelsAPI.ts"],"names":[],"mappings":";;;AAAA,0DAA0B;AAC1B,yCAA0D;AAK1D,gCAA4D;AAC5D,sIAAsG;AAUtG,SAAwB,mBAAmB,CACzC,YAAe,EACf,gBAAyB,EACzB,eAAiC,EACjC,YAA2B;IAE3B,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAC3C,eAAK,CAAC,QAAQ,CAAqC,IAAI,CAAC,CAAC;IAC3D,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,eAAK,CAAC,QAAQ,CAAmC,IAAI,CAAC,CAAC;IACvF,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAA,kBAAS,GAAE,CAAC;IAEjC,MAAM,+BAA+B,GAAG,eAAK,CAAC,WAAW,CACvD,CAAO,gBAAwB,EAAE,EAAE;QACjC,IAAI;YACF,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,MAAM,oCAA0B,CAAC,yBAAyB,CACxF,gBAAgB,CACjB,CAAC;YACF,mBAAmB,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;SAClD;QAAC,OAAO,CAAC,EAAE;YACV,IAAA,oBAAc,EAAC,CAAC,EAAE,GAAG,EAAE,CACrB,QAAQ,CAAC;gBACP,KAAK,EAAE,sCAAsC;gBAC7C,OAAO,EAAE,IAAA,wBAAkB,EAAC,CAAC,CAAC;aAC/B,CAAC,CACH,CAAC;YACF,mBAAmB,CAAC,IAAI,CAAC,CAAC;SAC3B;IACH,CAAC,CAAA,EACD,CAAC,QAAQ,CAAC,CACX,CAAC;IAEF,MAAM,0BAA0B,GAAG,eAAK,CAAC,WAAW,CAClD,CACE,gBAAwB,EACxB,eAAiC,EACjC,YAA2B,EAC3B,EAAE;QACF,IAAI;YACF,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,oCAA0B,CAAC,oBAAoB,CAC9E,gBAAgB,EAChB,eAAe,EACf,YAAY,CACb,CAAC;YACF,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;SAChC;QAAC,OAAO,CAAC,EAAE;YACV,IAAA,oBAAc,EAAC,CAAC,EAAE,GAAG,EAAE,CACrB,QAAQ,CAAC;gBACP,KAAK,EAAE,2CAA2C;gBAClD,OAAO,EAAE,IAAA,wBAAkB,EAAC,CAAC,CAAC;aAC/B,CAAC,CACH,CAAC;YACF,WAAW,CAAC,IAAI,CAAC,CAAC;SACnB;IACH,CAAC,CAAA,EACD,CAAC,QAAQ,CAAC,CACX,CAAC;IAEF,eAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,gBAAgB,EAAE;YACpB,IAAI,YAAY,KAAK,eAAe,EAAE;gBACpC,KAAK,+BAA+B,CAAC,gBAAgB,CAAC,CAAC;aACxD;iBAAM;gBACL,KAAK,0BAA0B,CAAC,gBAAgB,EAAE,eAAe,EAAE,YAAY,CAAC,CAAC;aAClF;SACF;IACH,CAAC,EAAE;QACD,gBAAgB;QAChB,eAAe;QACf,+BAA+B;QAC/B,0BAA0B;QAC1B,YAAY;QACZ,YAAY;KACb,CAAC,CAAC;IAEH,IAAI,YAAY,KAAK,eAAe,EAAE;QACpC,OAAO,gBAAiD,CAAC;KAC1D;SAAM;QACL,OAAO,QAAyC,CAAC;KAClD;AACH,CAAC;AA/ED,sCA+EC"}
@@ -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
 
@@ -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) => {
@@ -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> = ({
@@ -74,6 +74,7 @@ const AddHostModal: React.FC<AddHostModalProps> = ({
74
74
  hasDHCP={hasDHCP}
75
75
  isIPXE={isIPXE}
76
76
  allowEmpty
77
+ docVersion={docVersion}
77
78
  />
78
79
  )}
79
80
  {dialogType === 'download' && (
@@ -90,6 +91,7 @@ const AddHostModal: React.FC<AddHostModalProps> = ({
90
91
  infraEnv={infraEnv}
91
92
  onReset={agentClusterInstall ? () => setDialogType('config') : undefined}
92
93
  hasDHCP={hasDHCP}
94
+ docVersion={docVersion}
93
95
  />
94
96
  )}
95
97
  </>
@@ -104,11 +106,13 @@ const GeneratingIsoDownload = ({
104
106
  onClose,
105
107
  onReset,
106
108
  hasDHCP,
109
+ docVersion,
107
110
  }: {
108
111
  infraEnv: InfraEnvK8sResource;
109
112
  onClose: VoidFunction;
110
113
  onReset?: VoidFunction;
111
114
  hasDHCP: boolean;
115
+ docVersion: string;
112
116
  }) => {
113
117
  const { t } = useTranslation();
114
118
  return infraEnv.status?.isoDownloadURL ? (
@@ -117,6 +121,7 @@ const GeneratingIsoDownload = ({
117
121
  downloadUrl={infraEnv.status.isoDownloadURL}
118
122
  onReset={onReset}
119
123
  hasDHCP={hasDHCP}
124
+ docVersion={docVersion}
120
125
  />
121
126
  ) : (
122
127
  <EmptyState>
@@ -9,12 +9,16 @@ const NewFeatureSupportLevelsAPI = {
9
9
  return `/v2/support-levels`;
10
10
  },
11
11
 
12
- featuresSupportLevel(openshiftVersion: string, cpuArchitecture?: string) {
13
- let queryParams = '?';
14
- queryParams += openshiftVersion ? `openshift_version=${openshiftVersion}&` : '';
15
- queryParams += cpuArchitecture ? `cpu_architecture=${cpuArchitecture}` : '';
12
+ featuresSupportLevel(openshiftVersion: string, cpuArchitecture?: string, platformType?: string) {
16
13
  return clientWithoutCaseConverter.get<FeaturesSupportsLevel>(
17
- `${NewFeatureSupportLevelsAPI.makeBaseURI()}/features${queryParams}`,
14
+ `${NewFeatureSupportLevelsAPI.makeBaseURI()}/features`,
15
+ {
16
+ params: {
17
+ openshift_version: openshiftVersion,
18
+ cpu_architecture: cpuArchitecture,
19
+ platform_type: platformType,
20
+ },
21
+ },
18
22
  );
19
23
  },
20
24
 
@@ -27,10 +27,10 @@ import { ProxyFieldsType, StatusErrorType } from '../../types';
27
27
  import ProxyFields from './ProxyFields';
28
28
  import UploadSSH from './UploadSSH';
29
29
  import DiscoveryImageTypeControlGroup from './DiscoveryImageTypeControlGroup';
30
- import { OCP_STATIC_IP_DOC } from '../../config/constants';
30
+ import { getOCPStaticIPDocLink } from '../../config/constants';
31
31
  import { useTranslation } from '../../hooks/use-translation-wrapper';
32
32
 
33
- export const StaticIPInfo: React.FC = () => {
33
+ export const StaticIPInfo = ({ docVersion }: { docVersion?: string }) => {
34
34
  const { t } = useTranslation();
35
35
  return (
36
36
  <Alert
@@ -45,7 +45,7 @@ export const StaticIPInfo: React.FC = () => {
45
45
  icon={<ExternalLinkAltIcon />}
46
46
  iconPosition="right"
47
47
  isInline
48
- onClick={() => window.open(OCP_STATIC_IP_DOC, '_blank', 'noopener')}
48
+ onClick={() => window.open(getOCPStaticIPDocLink(docVersion), '_blank', 'noopener')}
49
49
  >
50
50
  {t('ai:View documentation')}
51
51
  </Button>
@@ -77,6 +77,7 @@ type DiscoveryImageConfigFormProps = Proxy & {
77
77
  imageType?: ImageType;
78
78
  isIPXE?: boolean;
79
79
  allowEmpty?: boolean;
80
+ docVersion: string;
80
81
  };
81
82
 
82
83
  export const DiscoveryImageConfigForm: React.FC<DiscoveryImageConfigFormProps> = ({
@@ -91,6 +92,7 @@ export const DiscoveryImageConfigForm: React.FC<DiscoveryImageConfigFormProps> =
91
92
  hasDHCP,
92
93
  isIPXE,
93
94
  allowEmpty,
95
+ docVersion,
94
96
  }) => {
95
97
  const initialValues: DiscoveryImageFormValues = {
96
98
  sshPublicKey: sshPublicKey || '',
@@ -127,7 +129,7 @@ export const DiscoveryImageConfigForm: React.FC<DiscoveryImageConfigFormProps> =
127
129
  </StackItem>
128
130
  {hasDHCP === false && (
129
131
  <StackItem>
130
- <StaticIPInfo />
132
+ <StaticIPInfo docVersion={docVersion} />
131
133
  </StackItem>
132
134
  )}
133
135
  <StackItem>
@@ -23,6 +23,7 @@ export type DownloadISOProps = {
23
23
  downloadUrl?: string;
24
24
  onClose: () => void;
25
25
  onReset?: () => void;
26
+ docVersion?: string;
26
27
  };
27
28
 
28
29
  const DownloadIso = ({
@@ -32,6 +33,7 @@ const DownloadIso = ({
32
33
  onReset,
33
34
  hasDHCP,
34
35
  isSNO = false,
36
+ docVersion,
35
37
  }: DownloadISOProps) => {
36
38
  const wgetCommand = `wget -O ${fileName} '${downloadUrl || ''}'`;
37
39
  const { t } = useTranslation();
@@ -53,7 +55,7 @@ const DownloadIso = ({
53
55
  </StackItem>
54
56
  {hasDHCP === false && (
55
57
  <StackItem>
56
- <StaticIPInfo />
58
+ <StaticIPInfo docVersion={docVersion} />
57
59
  </StackItem>
58
60
  )}
59
61
  <StackItem>
@@ -36,6 +36,7 @@ type HostDetailProps = {
36
36
  hostId: Host['id'],
37
37
  diskId: Disk['id'],
38
38
  ) => Promise<unknown>;
39
+ hideStorage?: boolean;
39
40
  };
40
41
 
41
42
  type SectionColumnProps = {
@@ -115,6 +116,7 @@ export const HostDetail = ({
115
116
  AdditionalNTPSourcesDialogToggleComponent,
116
117
  hideNTPStatus = false,
117
118
  updateDiskSkipFormatting,
119
+ hideStorage,
118
120
  }: HostDetailProps) => {
119
121
  const { t } = useTranslation();
120
122
  const { id, validationsInfo: hostValidationsInfo } = host;
@@ -205,7 +207,7 @@ export const HostDetail = ({
205
207
  value={ntpValidationStatus}
206
208
  />
207
209
  </SectionColumn>
208
- {onDiskRole && canEditDisks && (
210
+ {!hideStorage && (
209
211
  <StorageDetail
210
212
  host={host}
211
213
  onDiskRole={onDiskRole}
@@ -1,9 +1,10 @@
1
1
  import {
2
2
  ArchitectureSupportLevelId,
3
3
  FeatureSupportLevelId,
4
+ PlatformType,
4
5
  SupportLevel,
5
6
  } from '@openshift-assisted/types/assisted-installer-service';
6
- import { CpuArchitecture, FeatureId } from '../../types';
7
+ import { CpuArchitecture, FeatureId, SupportedCpuArchitecture } from '../../types';
7
8
 
8
9
  export type NewFeatureSupportLevelMap = Record<FeatureSupportLevelId, SupportLevel>;
9
10
  export type ArchitectureSupportLevelMap = Record<ArchitectureSupportLevelId, SupportLevel>;
@@ -23,7 +24,8 @@ export type NewFeatureSupportLevelData = {
23
24
  getFeatureDisabledReason(
24
25
  featureId: FeatureId,
25
26
  supportLevelData?: NewFeatureSupportLevelMap,
26
- cpuArchitecture?: string,
27
+ cpuArchitecture?: SupportedCpuArchitecture,
28
+ platformType?: PlatformType,
27
29
  ): string | undefined;
28
30
  isFeatureSupported(featureId: FeatureId, supportLevelData?: NewFeatureSupportLevelMap): boolean;
29
31
  activeFeatureConfiguration?: ActiveFeatureConfiguration;
@@ -226,15 +226,25 @@ export const vipRangeValidationSchema = (
226
226
  },
227
227
  );
228
228
 
229
- const vipUniqueValidationSchema = ({ ingressVips, apiVips }: NetworkConfigurationValues) =>
229
+ const vipUniqueValidationSchema = (
230
+ { ingressVips, apiVips, apiVip, ingressVip }: NetworkConfigurationValues,
231
+ useIPArray: boolean,
232
+ ) =>
230
233
  Yup.string().test(
231
234
  'vip-uniqueness-validation',
232
235
  'The Ingress and API IP addresses cannot be the same.',
233
236
  (value) => {
234
- if (!value || ingressVips?.length === 0 || apiVips?.length === 0) {
235
- return true;
237
+ if (useIPArray) {
238
+ if (!value || ingressVips?.length === 0 || apiVips?.length === 0) {
239
+ return true;
240
+ }
241
+ return selectApiVip({ apiVips }) !== selectIngressVip({ ingressVips });
242
+ } else {
243
+ if (!value) {
244
+ return true;
245
+ }
246
+ return apiVip !== ingressVip;
236
247
  }
237
- return selectApiVip({ apiVips }) !== selectIngressVip({ ingressVips });
238
248
  },
239
249
  );
240
250
 
@@ -276,7 +286,7 @@ export const vipValidationSchema = (
276
286
  !vipDhcpAllocation && managedNetworkingType !== 'userManaged',
277
287
  then: requiredOnceSet(initialValue, 'Required. Please provide an IP address')
278
288
  .concat(vipRangeValidationSchema(hostSubnets, values, true))
279
- .concat(vipUniqueValidationSchema(values))
289
+ .concat(vipUniqueValidationSchema(values, false))
280
290
  .when('hostSubnet', {
281
291
  is: (hostSubnet) => hostSubnet !== NO_SUBNET_SET,
282
292
  then: Yup.string().required('Required. Please provide an IP address'),
@@ -295,7 +305,7 @@ export const vipNoSuffixValidationSchema = (
295
305
  .concat(ipNoSuffixValidationSchema)
296
306
  .concat(vipRangeValidationSchema(hostSubnets, values, false))
297
307
  .concat(vipBroadcastValidationSchema(values))
298
- .concat(vipUniqueValidationSchema(values))
308
+ .concat(vipUniqueValidationSchema(values, true))
299
309
  .when('hostSubnet', {
300
310
  is: (hostSubnet) => hostSubnet !== NO_SUBNET_SET,
301
311
  then: Yup.string().required('Required. Please provide an IP address'),
@@ -367,8 +367,8 @@ export const operatorLabels = (
367
367
  };
368
368
  };
369
369
 
370
- export const OCP_STATIC_IP_DOC =
371
- 'https://docs.openshift.com/container-platform/latest/scalability_and_performance/ztp-deploying-disconnected.html#ztp-configuring-a-static-ip_ztp-deploying-disconnected';
370
+ export const getOCPStaticIPDocLink = (docVersion = '2.8') =>
371
+ `https://access.redhat.com/documentation/en-us/red_hat_advanced_cluster_management_for_kubernetes/${docVersion}/html-single/clusters/index#on-prem-creating-your-cluster-with-the-cli-nmstateconfig`;
372
372
 
373
373
  export const AI_UI_TAG = 'ui_ocm';
374
374