@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.
- package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentDetails.d.ts.map +1 -1
- package/build/@types/cim/components/ClusterDeployment/helpers.d.ts.map +1 -1
- package/build/@types/cim/components/Hypershift/utils/nodepool.d.ts.map +1 -1
- package/build/@types/cim/components/InfraEnv/InfraEnvFormPage.d.ts +2 -0
- package/build/@types/cim/components/InfraEnv/InfraEnvFormPage.d.ts.map +1 -1
- package/build/@types/cim/components/modals/AddHostModal.d.ts.map +1 -1
- package/build/@types/common/api/assisted-service/NewFeatureSupportLevelsAPI.d.ts +1 -1
- package/build/@types/common/api/assisted-service/NewFeatureSupportLevelsAPI.d.ts.map +1 -1
- package/build/@types/common/components/clusterConfiguration/DiscoveryImageConfigForm.d.ts +4 -1
- package/build/@types/common/components/clusterConfiguration/DiscoveryImageConfigForm.d.ts.map +1 -1
- package/build/@types/common/components/clusterConfiguration/DownloadIso.d.ts +2 -1
- package/build/@types/common/components/clusterConfiguration/DownloadIso.d.ts.map +1 -1
- package/build/@types/common/components/hosts/HostRowDetail.d.ts +2 -1
- package/build/@types/common/components/hosts/HostRowDetail.d.ts.map +1 -1
- package/build/@types/common/components/newFeatureSupportLevels/types.d.ts +3 -3
- package/build/@types/common/components/newFeatureSupportLevels/types.d.ts.map +1 -1
- package/build/@types/common/components/ui/formik/validationSchemas.d.ts.map +1 -1
- package/build/@types/common/config/constants.d.ts +1 -1
- package/build/@types/common/config/constants.d.ts.map +1 -1
- package/build/@types/common/services/DateAndTime.d.ts.map +1 -0
- package/build/@types/common/types/featureSupportLevel.d.ts +3 -3
- package/build/@types/common/types/featureSupportLevel.d.ts.map +1 -1
- package/build/@types/ocm/components/HostsClusterDetailTab/HostsClusterDetailTabContent.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/CpuArchitectureDropdown.d.ts +3 -3
- package/build/@types/ocm/components/clusterConfiguration/CpuArchitectureDropdown.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/OcmClusterDetailsFormFields.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfiguration.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/platformIntegration/ExternalPlatformDropdown.d.ts +2 -1
- package/build/@types/ocm/components/clusterConfiguration/platformIntegration/ExternalPlatformDropdown.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterDetail/AssistedInstallerDetailCard.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterDetail/AssistedInstallerExtraDetailCard.d.ts.map +1 -1
- package/build/@types/ocm/components/clusters/ClusterPage.d.ts.map +1 -1
- package/build/@types/ocm/components/featureSupportLevels/FeatureSupportLevelProvider.d.ts +4 -3
- package/build/@types/ocm/components/featureSupportLevels/FeatureSupportLevelProvider.d.ts.map +1 -1
- package/build/@types/ocm/components/featureSupportLevels/ReviewClusterFeatureSupportLevels.d.ts.map +1 -1
- package/build/@types/ocm/components/featureSupportLevels/featureStateUtils.d.ts +3 -3
- package/build/@types/ocm/components/featureSupportLevels/featureStateUtils.d.ts.map +1 -1
- package/build/@types/ocm/components/hosts/HostsDiscoveryTable.d.ts.map +1 -1
- package/build/@types/ocm/hooks/useSupportLevelsAPI.d.ts +3 -1
- package/build/@types/ocm/hooks/useSupportLevelsAPI.d.ts.map +1 -1
- package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentDetails.js +58 -55
- package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentDetails.js.map +1 -1
- package/build/cjs/cim/components/ClusterDeployment/helpers.js +4 -2
- package/build/cjs/cim/components/ClusterDeployment/helpers.js.map +1 -1
- package/build/cjs/cim/components/Hypershift/utils/nodepool.js +6 -5
- package/build/cjs/cim/components/Hypershift/utils/nodepool.js.map +1 -1
- package/build/cjs/cim/components/InfraEnv/InfraEnvFormPage.js +2 -2
- package/build/cjs/cim/components/InfraEnv/InfraEnvFormPage.js.map +1 -1
- package/build/cjs/cim/components/modals/AddHostModal.js +4 -4
- package/build/cjs/cim/components/modals/AddHostModal.js.map +1 -1
- package/build/cjs/common/api/assisted-service/NewFeatureSupportLevelsAPI.js +8 -5
- package/build/cjs/common/api/assisted-service/NewFeatureSupportLevelsAPI.js.map +1 -1
- package/build/cjs/common/components/clusterConfiguration/DiscoveryImageConfigForm.js +4 -4
- package/build/cjs/common/components/clusterConfiguration/DiscoveryImageConfigForm.js.map +1 -1
- package/build/cjs/common/components/clusterConfiguration/DownloadIso.js +2 -2
- package/build/cjs/common/components/clusterConfiguration/DownloadIso.js.map +1 -1
- package/build/cjs/common/components/hosts/HostRowDetail.js +2 -2
- package/build/cjs/common/components/hosts/HostRowDetail.js.map +1 -1
- package/build/cjs/common/components/ui/formik/validationSchemas.js +14 -6
- package/build/cjs/common/components/ui/formik/validationSchemas.js.map +1 -1
- package/build/cjs/common/config/constants.js +3 -2
- package/build/cjs/common/config/constants.js.map +1 -1
- package/build/cjs/common/services/DateAndTime.js.map +1 -0
- package/build/cjs/common/types/featureSupportLevel.js.map +1 -1
- package/build/cjs/ocm/components/HostsClusterDetailTab/HostsClusterDetailTabContent.js +2 -2
- package/build/cjs/ocm/components/HostsClusterDetailTab/HostsClusterDetailTabContent.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/CpuArchitectureDropdown.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/OcmClusterDetailsFormFields.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfiguration.js +17 -17
- package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfiguration.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/platformIntegration/ExternalPlatformDropdown.js +2 -1
- package/build/cjs/ocm/components/clusterConfiguration/platformIntegration/ExternalPlatformDropdown.js.map +1 -1
- package/build/cjs/ocm/components/clusterDetail/AssistedInstallerDetailCard.js +2 -1
- package/build/cjs/ocm/components/clusterDetail/AssistedInstallerDetailCard.js.map +1 -1
- package/build/cjs/ocm/components/clusterDetail/AssistedInstallerExtraDetailCard.js +2 -1
- package/build/cjs/ocm/components/clusterDetail/AssistedInstallerExtraDetailCard.js.map +1 -1
- package/build/cjs/ocm/components/clusterDetail/ClusterDetailStatusMessages.js +1 -1
- package/build/cjs/ocm/components/clusterDetail/ClusterDetailStatusMessages.js.map +1 -1
- package/build/cjs/ocm/components/clusters/ClusterPage.js +2 -1
- package/build/cjs/ocm/components/clusters/ClusterPage.js.map +1 -1
- package/build/cjs/ocm/components/featureSupportLevels/FeatureSupportLevelProvider.js +4 -4
- package/build/cjs/ocm/components/featureSupportLevels/FeatureSupportLevelProvider.js.map +1 -1
- package/build/cjs/ocm/components/featureSupportLevels/ReviewClusterFeatureSupportLevels.js +1 -3
- package/build/cjs/ocm/components/featureSupportLevels/ReviewClusterFeatureSupportLevels.js.map +1 -1
- package/build/cjs/ocm/components/featureSupportLevels/featureStateUtils.js +8 -2
- package/build/cjs/ocm/components/featureSupportLevels/featureStateUtils.js.map +1 -1
- package/build/cjs/ocm/components/hosts/HostsDiscoveryTable.js +1 -1
- package/build/cjs/ocm/components/hosts/HostsDiscoveryTable.js.map +1 -1
- package/build/cjs/ocm/hooks/useSupportLevelsAPI.js +5 -4
- package/build/cjs/ocm/hooks/useSupportLevelsAPI.js.map +1 -1
- package/lib/cim/components/ClusterDeployment/ClusterDeploymentDetails.tsx +112 -102
- package/lib/cim/components/ClusterDeployment/helpers.ts +13 -10
- package/lib/cim/components/Hypershift/utils/nodepool.ts +3 -2
- package/lib/cim/components/InfraEnv/InfraEnvFormPage.tsx +11 -2
- package/lib/cim/components/modals/AddHostModal.tsx +5 -0
- package/lib/common/api/assisted-service/NewFeatureSupportLevelsAPI.ts +9 -5
- package/lib/common/components/clusterConfiguration/DiscoveryImageConfigForm.tsx +6 -4
- package/lib/common/components/clusterConfiguration/DownloadIso.tsx +3 -1
- package/lib/common/components/hosts/HostRowDetail.tsx +3 -1
- package/lib/common/components/newFeatureSupportLevels/types.ts +4 -2
- package/lib/common/components/ui/formik/validationSchemas.ts +16 -6
- package/lib/common/config/constants.ts +2 -2
- package/lib/common/types/featureSupportLevel.ts +6 -5
- package/lib/ocm/components/HostsClusterDetailTab/HostsClusterDetailTabContent.tsx +2 -1
- package/lib/ocm/components/clusterConfiguration/CpuArchitectureDropdown.tsx +5 -3
- package/lib/ocm/components/clusterConfiguration/OcmClusterDetailsFormFields.tsx +3 -2
- package/lib/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfiguration.tsx +48 -25
- package/lib/ocm/components/clusterConfiguration/platformIntegration/ExternalPlatformDropdown.tsx +12 -5
- package/lib/ocm/components/clusterDetail/AssistedInstallerDetailCard.tsx +2 -1
- package/lib/ocm/components/clusterDetail/AssistedInstallerExtraDetailCard.tsx +2 -1
- package/lib/ocm/components/clusterDetail/ClusterDetailStatusMessages.tsx +1 -1
- package/lib/ocm/components/clusters/ClusterPage.tsx +2 -1
- package/lib/ocm/components/featureSupportLevels/FeatureSupportLevelProvider.tsx +14 -3
- package/lib/ocm/components/featureSupportLevels/ReviewClusterFeatureSupportLevels.tsx +1 -8
- package/lib/ocm/components/featureSupportLevels/featureStateUtils.ts +18 -3
- package/lib/ocm/components/hosts/HostsDiscoveryTable.tsx +1 -0
- package/lib/ocm/hooks/useSupportLevelsAPI.ts +12 -4
- package/package.json +3 -3
- package/build/@types/common/sevices/DateAndTime.d.ts.map +0 -1
- package/build/cjs/common/sevices/DateAndTime.js.map +0 -1
- /package/build/@types/common/{sevices → services}/DateAndTime.d.ts +0 -0
- /package/build/cjs/common/{sevices → services}/DateAndTime.js +0 -0
- /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,
|
|
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 {
|
|
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
|
-
|
|
64
|
-
|
|
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-
|
|
116
|
+
<Card id="cluster-inventory-card" isExpanded={inventoryCardExpanded}>
|
|
67
117
|
<CardHeader
|
|
68
|
-
onExpand={() =>
|
|
118
|
+
onExpand={() => setInventoryCardExpanded(!inventoryCardExpanded)}
|
|
69
119
|
toggleButtonProps={{
|
|
70
|
-
id: '
|
|
71
|
-
'aria-label': '
|
|
72
|
-
'aria-labelledby': 'titleId
|
|
73
|
-
'aria-expanded':
|
|
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:
|
|
126
|
+
<CardTitle id="titleId">{t('ai:Hosts inventory')}</CardTitle>
|
|
77
127
|
</CardHeader>
|
|
78
128
|
<CardExpandableContent>
|
|
79
129
|
<CardBody>
|
|
80
|
-
<
|
|
81
|
-
{
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
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
|
-
|
|
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
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
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 = '
|
|
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] ===
|
|
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={() =>
|
|
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
|
|
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 {
|
|
30
|
+
import { getOCPStaticIPDocLink } from '../../config/constants';
|
|
31
31
|
import { useTranslation } from '../../hooks/use-translation-wrapper';
|
|
32
32
|
|
|
33
|
-
export const StaticIPInfo:
|
|
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(
|
|
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
|
-
{
|
|
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?:
|
|
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 = (
|
|
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 (
|
|
235
|
-
|
|
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
|
|
371
|
-
|
|
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
|
|