@openshift-assisted/ui-lib 2.47.4 → 2.48.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/@types/cim/components/ClusterDeployment/wizardTransition.d.ts +1 -1
- package/build/@types/cim/components/ClusterDeployment/wizardTransition.d.ts.map +1 -1
- package/build/@types/cim/components/InfraEnv/InfraEnvOpenShiftVersionDropdown.d.ts.map +1 -1
- package/build/@types/common/api/assisted-service/ClustersAPI.d.ts +4 -0
- package/build/@types/common/api/assisted-service/ClustersAPI.d.ts.map +1 -1
- package/build/@types/common/api/assisted-service/HostsAPI.d.ts +2 -1
- package/build/@types/common/api/assisted-service/HostsAPI.d.ts.map +1 -1
- package/build/@types/common/api/assisted-service/InfraEnvsAPI.d.ts +2 -1
- package/build/@types/common/api/assisted-service/InfraEnvsAPI.d.ts.map +1 -1
- package/build/@types/common/components/clusterWizard/ReviewValidations.d.ts.map +1 -1
- package/build/@types/common/components/operators/operatorDescriptions.d.ts +2 -0
- package/build/@types/common/components/operators/operatorDescriptions.d.ts.map +1 -1
- package/build/@types/common/components/operators/operatorSpecs.d.ts.map +1 -1
- package/build/@types/common/components/ui/formik/PullSecretField.d.ts.map +1 -1
- package/build/@types/common/config/constants.d.ts +8 -0
- package/build/@types/common/config/constants.d.ts.map +1 -1
- package/build/@types/common/config/docs_links.d.ts +2 -0
- package/build/@types/common/config/docs_links.d.ts.map +1 -1
- package/build/@types/common/reducers/alertsSlice.d.ts +1 -0
- package/build/@types/common/reducers/alertsSlice.d.ts.map +1 -1
- package/build/@types/ocm/components/Routes.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/SubnetsDropdown.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/VirtualIPControlGroup.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/operators/utils.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterWizard/ClusterDetails.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterWizard/ClusterWizardContext.d.ts +3 -0
- package/build/@types/ocm/components/clusterWizard/ClusterWizardContext.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterWizard/ClusterWizardContextProvider.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterWizard/ClusterWizardFooter.d.ts +2 -1
- package/build/@types/ocm/components/clusterWizard/ClusterWizardFooter.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterWizard/HostDiscovery.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterWizard/NewClusterWizard.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterWizard/constants.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterWizard/disconnected/BasicStep.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterWizard/disconnected/OptionalConfigurationsStep.d.ts +4 -0
- package/build/@types/ocm/components/clusterWizard/disconnected/OptionalConfigurationsStep.d.ts.map +1 -0
- package/build/@types/ocm/components/clusterWizard/disconnected/ReviewStep.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterWizard/index.d.ts +1 -0
- package/build/@types/ocm/components/clusterWizard/index.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterWizard/wizardTransition.d.ts +2 -2
- package/build/@types/ocm/components/clusterWizard/wizardTransition.d.ts.map +1 -1
- package/build/@types/ocm/components/hosts/HostsDiscoveryTable.d.ts +3 -2
- package/build/@types/ocm/components/hosts/HostsDiscoveryTable.d.ts.map +1 -1
- package/build/@types/ocm/hooks/index.d.ts +1 -0
- package/build/@types/ocm/hooks/index.d.ts.map +1 -1
- package/build/@types/ocm/hooks/useInfraEnvHosts.d.ts +9 -0
- package/build/@types/ocm/hooks/useInfraEnvHosts.d.ts.map +1 -0
- package/build/@types/ocm/hooks/useInfraEnvId.d.ts.map +1 -1
- package/build/@types/ocm/hooks/useLateBinding.d.ts +4 -0
- package/build/@types/ocm/hooks/useLateBinding.d.ts.map +1 -0
- package/build/@types/ocm/services/ClustersService.d.ts +5 -1
- package/build/@types/ocm/services/ClustersService.d.ts.map +1 -1
- package/build/@types/ocm/services/HostsService.d.ts +2 -1
- package/build/@types/ocm/services/HostsService.d.ts.map +1 -1
- package/build/@types/ocm/services/InfraEnvsService.d.ts +1 -1
- package/build/@types/ocm/services/InfraEnvsService.d.ts.map +1 -1
- package/build/cjs/cim/components/InfraEnv/InfraEnvOpenShiftVersionDropdown.js +3 -1
- package/build/cjs/cim/components/InfraEnv/InfraEnvOpenShiftVersionDropdown.js.map +1 -1
- package/build/cjs/common/api/assisted-service/ClustersAPI.js +3 -0
- package/build/cjs/common/api/assisted-service/ClustersAPI.js.map +1 -1
- package/build/cjs/common/api/assisted-service/HostsAPI.js +8 -0
- package/build/cjs/common/api/assisted-service/HostsAPI.js.map +1 -1
- package/build/cjs/common/api/assisted-service/InfraEnvsAPI.js +5 -0
- package/build/cjs/common/api/assisted-service/InfraEnvsAPI.js.map +1 -1
- package/build/cjs/common/components/clusterWizard/ReviewValidations.js +2 -1
- package/build/cjs/common/components/clusterWizard/ReviewValidations.js.map +1 -1
- package/build/cjs/common/components/operators/operatorDescriptions.js +3 -1
- package/build/cjs/common/components/operators/operatorDescriptions.js.map +1 -1
- package/build/cjs/common/components/operators/operatorSpecs.js +24 -1
- package/build/cjs/common/components/operators/operatorSpecs.js.map +1 -1
- package/build/cjs/common/components/ui/WizardFooter.js +1 -1
- package/build/cjs/common/components/ui/WizardFooter.js.map +1 -1
- package/build/cjs/common/components/ui/formik/PullSecretField.js.map +1 -1
- package/build/cjs/common/config/constants.js +14 -2
- package/build/cjs/common/config/constants.js.map +1 -1
- package/build/cjs/common/config/docs_links.js +5 -1
- package/build/cjs/common/config/docs_links.js.map +1 -1
- package/build/cjs/common/reducers/alertsSlice.js +1 -1
- package/build/cjs/common/reducers/alertsSlice.js.map +1 -1
- package/build/cjs/ocm/components/Routes.js +2 -1
- package/build/cjs/ocm/components/Routes.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/HostInventory.js +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/HostInventory.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfigurationForm.js +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfigurationForm.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/SubnetsDropdown.js +2 -1
- package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/SubnetsDropdown.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/VirtualIPControlGroup.js +2 -2
- package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/VirtualIPControlGroup.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/operators/utils.js +7 -4
- package/build/cjs/ocm/components/clusterConfiguration/operators/utils.js.map +1 -1
- package/build/cjs/ocm/components/clusterWizard/ClusterDetails.js +12 -2
- package/build/cjs/ocm/components/clusterWizard/ClusterDetails.js.map +1 -1
- package/build/cjs/ocm/components/clusterWizard/ClusterWizardContext.js.map +1 -1
- package/build/cjs/ocm/components/clusterWizard/ClusterWizardContextProvider.js +4 -0
- package/build/cjs/ocm/components/clusterWizard/ClusterWizardContextProvider.js.map +1 -1
- package/build/cjs/ocm/components/clusterWizard/ClusterWizardFooter.js +21 -6
- package/build/cjs/ocm/components/clusterWizard/ClusterWizardFooter.js.map +1 -1
- package/build/cjs/ocm/components/clusterWizard/HostDiscovery.js +3 -0
- package/build/cjs/ocm/components/clusterWizard/HostDiscovery.js.map +1 -1
- package/build/cjs/ocm/components/clusterWizard/NewClusterWizard.js +3 -0
- package/build/cjs/ocm/components/clusterWizard/NewClusterWizard.js.map +1 -1
- package/build/cjs/ocm/components/clusterWizard/constants.js +1 -0
- package/build/cjs/ocm/components/clusterWizard/constants.js.map +1 -1
- package/build/cjs/ocm/components/clusterWizard/disconnected/BasicStep.js +45 -1
- package/build/cjs/ocm/components/clusterWizard/disconnected/BasicStep.js.map +1 -1
- package/build/cjs/ocm/components/clusterWizard/disconnected/OptionalConfigurationsStep.js +128 -0
- package/build/cjs/ocm/components/clusterWizard/disconnected/OptionalConfigurationsStep.js.map +1 -0
- package/build/cjs/ocm/components/clusterWizard/disconnected/ReviewStep.js +40 -5
- package/build/cjs/ocm/components/clusterWizard/disconnected/ReviewStep.js.map +1 -1
- package/build/cjs/ocm/components/clusterWizard/index.js +3 -1
- package/build/cjs/ocm/components/clusterWizard/index.js.map +1 -1
- package/build/cjs/ocm/components/clusterWizard/wizardTransition.js +3 -0
- package/build/cjs/ocm/components/clusterWizard/wizardTransition.js.map +1 -1
- package/build/cjs/ocm/components/hosts/HostsDiscoveryTable.js +1 -2
- package/build/cjs/ocm/components/hosts/HostsDiscoveryTable.js.map +1 -1
- package/build/cjs/ocm/hooks/index.js +3 -1
- package/build/cjs/ocm/hooks/index.js.map +1 -1
- package/build/cjs/ocm/hooks/useInfraEnvHosts.js +47 -0
- package/build/cjs/ocm/hooks/useInfraEnvHosts.js.map +1 -0
- package/build/cjs/ocm/hooks/useInfraEnvId.js +11 -2
- package/build/cjs/ocm/hooks/useInfraEnvId.js.map +1 -1
- package/build/cjs/ocm/hooks/useLateBinding.js +61 -0
- package/build/cjs/ocm/hooks/useLateBinding.js.map +1 -0
- package/build/cjs/ocm/services/ClustersService.js +10 -2
- package/build/cjs/ocm/services/ClustersService.js.map +1 -1
- package/build/cjs/ocm/services/HostsService.js +6 -0
- package/build/cjs/ocm/services/HostsService.js.map +1 -1
- package/build/cjs/ocm/services/InfraEnvsService.js +2 -2
- package/build/cjs/ocm/services/InfraEnvsService.js.map +1 -1
- package/lib/cim/components/InfraEnv/InfraEnvOpenShiftVersionDropdown.tsx +11 -9
- package/lib/common/api/assisted-service/ClustersAPI.ts +6 -0
- package/lib/common/api/assisted-service/HostsAPI.ts +13 -0
- package/lib/common/api/assisted-service/InfraEnvsAPI.ts +6 -0
- package/lib/common/components/clusterWizard/ReviewValidations.tsx +4 -1
- package/lib/common/components/operators/operatorDescriptions.tsx +6 -0
- package/lib/common/components/operators/operatorSpecs.tsx +34 -1
- package/lib/common/components/ui/WizardFooter.tsx +1 -1
- package/lib/common/components/ui/formik/PullSecretField.tsx +1 -0
- package/lib/common/config/constants.ts +12 -0
- package/lib/common/config/docs_links.ts +10 -0
- package/lib/common/reducers/alertsSlice.ts +2 -1
- package/lib/ocm/components/Routes.tsx +3 -1
- package/lib/ocm/components/clusterConfiguration/HostInventory.tsx +1 -1
- package/lib/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfigurationForm.tsx +1 -1
- package/lib/ocm/components/clusterConfiguration/networkConfiguration/SubnetsDropdown.tsx +4 -1
- package/lib/ocm/components/clusterConfiguration/networkConfiguration/VirtualIPControlGroup.tsx +0 -2
- package/lib/ocm/components/clusterConfiguration/operators/utils.tsx +9 -5
- package/lib/ocm/components/clusterWizard/ClusterDetails.tsx +16 -2
- package/lib/ocm/components/clusterWizard/ClusterWizardContext.tsx +3 -0
- package/lib/ocm/components/clusterWizard/ClusterWizardContextProvider.tsx +6 -0
- package/lib/ocm/components/clusterWizard/ClusterWizardFooter.tsx +26 -5
- package/lib/ocm/components/clusterWizard/HostDiscovery.tsx +3 -0
- package/lib/ocm/components/clusterWizard/NewClusterWizard.tsx +3 -0
- package/lib/ocm/components/clusterWizard/constants.ts +1 -0
- package/lib/ocm/components/clusterWizard/disconnected/BasicStep.tsx +52 -1
- package/lib/ocm/components/clusterWizard/disconnected/OptionalConfigurationsStep.tsx +200 -0
- package/lib/ocm/components/clusterWizard/disconnected/ReviewStep.tsx +39 -7
- package/lib/ocm/components/clusterWizard/index.ts +1 -0
- package/lib/ocm/components/clusterWizard/wizardTransition.ts +5 -1
- package/lib/ocm/components/hosts/HostsDiscoveryTable.tsx +3 -2
- package/lib/ocm/hooks/index.ts +1 -0
- package/lib/ocm/hooks/useInfraEnvHosts.ts +60 -0
- package/lib/ocm/hooks/useInfraEnvId.ts +15 -2
- package/lib/ocm/hooks/useLateBinding.ts +71 -0
- package/lib/ocm/services/ClustersService.ts +14 -2
- package/lib/ocm/services/HostsService.ts +9 -0
- package/lib/ocm/services/InfraEnvsService.ts +4 -1
- package/package.json +3 -3
|
@@ -5,11 +5,11 @@ const apis_1 = require("./apis");
|
|
|
5
5
|
const InfraEnvIdsCacheService_1 = tslib_1.__importDefault(require("./InfraEnvIdsCacheService"));
|
|
6
6
|
const dummyData_1 = require("../components/clusterConfiguration/staticIp/data/dummyData");
|
|
7
7
|
const InfraEnvsService = {
|
|
8
|
-
getInfraEnvId(clusterId, cpuArchitecture) {
|
|
8
|
+
getInfraEnvId(clusterId, cpuArchitecture, isSingleClusterFeatureEnabled) {
|
|
9
9
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
10
10
|
let infraEnvId = InfraEnvIdsCacheService_1.default.getInfraEnvId(clusterId, cpuArchitecture);
|
|
11
11
|
if (infraEnvId instanceof Error) {
|
|
12
|
-
const { data: infraEnvs } = yield apis_1.InfraEnvsAPI.list(clusterId);
|
|
12
|
+
const { data: infraEnvs } = yield apis_1.InfraEnvsAPI.list(!isSingleClusterFeatureEnabled ? clusterId : '');
|
|
13
13
|
if (infraEnvs.length > 0) {
|
|
14
14
|
InfraEnvIdsCacheService_1.default.updateInfraEnvs(clusterId, infraEnvs);
|
|
15
15
|
infraEnvId = InfraEnvIdsCacheService_1.default.getInfraEnvId(clusterId, cpuArchitecture);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InfraEnvsService.js","sourceRoot":"","sources":["../../../../lib/ocm/services/InfraEnvsService.ts"],"names":[],"mappings":";;;AAEA,iCAAsC;AACtC,gGAAsD;AACtD,0FAAmG;AAQnG,MAAM,gBAAgB,GAAG;IACjB,aAAa,CACjB,SAAwB,EACxB,eAAgC;;
|
|
1
|
+
{"version":3,"file":"InfraEnvsService.js","sourceRoot":"","sources":["../../../../lib/ocm/services/InfraEnvsService.ts"],"names":[],"mappings":"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"}
|
|
@@ -65,15 +65,17 @@ const InfraEnvOpenShiftVersionDropdown = ({ osImages }: { osImages: OsImage[] })
|
|
|
65
65
|
onOpenChange={() => setOsImageOpen(!osImageOpen)}
|
|
66
66
|
>
|
|
67
67
|
<DropdownList>
|
|
68
|
-
{filteredImages
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
68
|
+
{filteredImages
|
|
69
|
+
.sort((a, b) => b.openshiftVersion.localeCompare(a.openshiftVersion))
|
|
70
|
+
.map((image) => (
|
|
71
|
+
<DropdownItem
|
|
72
|
+
key={image.openshiftVersion}
|
|
73
|
+
id={image.openshiftVersion}
|
|
74
|
+
value={image.openshiftVersion}
|
|
75
|
+
>
|
|
76
|
+
{`OpenShift ${image.openshiftVersion}`}
|
|
77
|
+
</DropdownItem>
|
|
78
|
+
))}
|
|
77
79
|
</DropdownList>
|
|
78
80
|
</Dropdown>
|
|
79
81
|
</Tooltip>
|
|
@@ -245,6 +245,12 @@ const ClustersAPI = {
|
|
|
245
245
|
headers: { 'Content-Type': 'application/json' },
|
|
246
246
|
});
|
|
247
247
|
},
|
|
248
|
+
registerDisconnected(params: { name: string; openshiftVersion: string }) {
|
|
249
|
+
return client.post<Cluster, AxiosResponse<Cluster>, { name: string; openshiftVersion: string }>(
|
|
250
|
+
`${ClustersAPI.makeBaseURI()}disconnected`,
|
|
251
|
+
params,
|
|
252
|
+
);
|
|
253
|
+
},
|
|
248
254
|
};
|
|
249
255
|
|
|
250
256
|
export default ClustersAPI;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import {
|
|
2
|
+
Cluster,
|
|
2
3
|
Host,
|
|
3
4
|
HostUpdateParams,
|
|
4
5
|
InfraEnv,
|
|
@@ -62,6 +63,18 @@ const HostsAPI = {
|
|
|
62
63
|
`${HostsAPI.makeActionsBaseURI(infraEnvId, hostId)}/install`,
|
|
63
64
|
);
|
|
64
65
|
},
|
|
66
|
+
bindHost(infraEnvId: InfraEnv['id'], hostId: Host['id'], clusterId: Cluster['id']) {
|
|
67
|
+
return client.post<Host, AxiosResponse<Host>, { cluster_id: string }>(
|
|
68
|
+
`${HostsAPI.makeActionsBaseURI(infraEnvId, hostId)}/bind`,
|
|
69
|
+
{ cluster_id: clusterId },
|
|
70
|
+
{
|
|
71
|
+
headers: {
|
|
72
|
+
accept: 'application/json',
|
|
73
|
+
'Content-Type': 'application/json',
|
|
74
|
+
},
|
|
75
|
+
},
|
|
76
|
+
);
|
|
77
|
+
},
|
|
65
78
|
};
|
|
66
79
|
|
|
67
80
|
export default HostsAPI;
|
|
@@ -4,6 +4,7 @@ import {
|
|
|
4
4
|
InfraEnvCreateParams,
|
|
5
5
|
PresignedUrl,
|
|
6
6
|
InfraEnvUpdateParams,
|
|
7
|
+
Host,
|
|
7
8
|
} from '@openshift-assisted/types/assisted-installer-service';
|
|
8
9
|
import { AxiosResponse } from 'axios';
|
|
9
10
|
|
|
@@ -67,6 +68,11 @@ const InfraEnvsAPI = {
|
|
|
67
68
|
`${InfraEnvsAPI.makeBaseURI(infraEnvId)}/downloads/files-presigned?file_name=ipxe-script`,
|
|
68
69
|
);
|
|
69
70
|
},
|
|
71
|
+
getHosts(infraEnvId: InfraEnv['id']) {
|
|
72
|
+
return client.get<Host[]>(`${InfraEnvsAPI.makeBaseURI(infraEnvId)}/hosts`, {
|
|
73
|
+
signal: _getRequestAbortController.signal,
|
|
74
|
+
});
|
|
75
|
+
},
|
|
70
76
|
};
|
|
71
77
|
|
|
72
78
|
export default InfraEnvsAPI;
|
|
@@ -108,7 +108,10 @@ const FailingValidation = <S extends string>({
|
|
|
108
108
|
</>
|
|
109
109
|
);
|
|
110
110
|
} else {
|
|
111
|
-
if (
|
|
111
|
+
if (
|
|
112
|
+
validation.id === 'platform-requirements-satisfied' ||
|
|
113
|
+
validation.id === 'openshift-ai-gpu-requirements-satisfied'
|
|
114
|
+
) {
|
|
112
115
|
fix = validation.message;
|
|
113
116
|
}
|
|
114
117
|
// console.error(
|
|
@@ -60,6 +60,12 @@ export const DESCRIPTION_LVM =
|
|
|
60
60
|
export const DESCRIPTION_CLUSTER_OBSERVABILITY =
|
|
61
61
|
'Provides observability and monitoring capabilities for your OpenShift cluster.';
|
|
62
62
|
|
|
63
|
+
export const DESCRIPTION_LOKI =
|
|
64
|
+
'Provides a log aggregation system designed to store and query logs from all applications and infrastructure components.';
|
|
65
|
+
|
|
66
|
+
export const DESCRIPTION_OPENSHIFT_LOGGING =
|
|
67
|
+
'Collects, stores, and visualizes logs from OpenShift Container Platform components and applications.';
|
|
68
|
+
|
|
63
69
|
export const DESCRIPTION_NUMA_RESOURCES =
|
|
64
70
|
'Provides NUMA-aware scheduling to improve workload performance on NUMA systems.';
|
|
65
71
|
|
|
@@ -24,6 +24,8 @@ import {
|
|
|
24
24
|
OPERATOR_NAME_NODE_MAINTENANCE,
|
|
25
25
|
OPERATOR_NAME_KUBE_DESCHEDULER,
|
|
26
26
|
OPERATOR_NAME_CLUSTER_OBSERVABILITY,
|
|
27
|
+
OPERATOR_NAME_LOKI,
|
|
28
|
+
OPERATOR_NAME_OPENSHIFT_LOGGING,
|
|
27
29
|
OPERATOR_NAME_NUMA_RESOURCES,
|
|
28
30
|
OPERATOR_NAME_OADP,
|
|
29
31
|
OPERATOR_NAME_METALLB,
|
|
@@ -36,6 +38,7 @@ import {
|
|
|
36
38
|
getClusterObservabilityLink,
|
|
37
39
|
getKmmDocsLink,
|
|
38
40
|
getKubeDeschedulerLink,
|
|
41
|
+
getLokiLink,
|
|
39
42
|
getLsoLink,
|
|
40
43
|
getLvmsDocsLink,
|
|
41
44
|
getMceDocsLink,
|
|
@@ -45,6 +48,7 @@ import {
|
|
|
45
48
|
getNumaResourcesLink,
|
|
46
49
|
getNvidiaGpuLink,
|
|
47
50
|
getOadpLink,
|
|
51
|
+
getOpenShiftLoggingLink,
|
|
48
52
|
MTV_LINK,
|
|
49
53
|
NODE_HEALTHCHECK_LINK,
|
|
50
54
|
NODE_MAINTENANCE_LINK,
|
|
@@ -83,6 +87,8 @@ import {
|
|
|
83
87
|
DESCRIPTION_SERVICEMESH,
|
|
84
88
|
DESCRIPTION_LVM,
|
|
85
89
|
DESCRIPTION_CLUSTER_OBSERVABILITY,
|
|
90
|
+
DESCRIPTION_LOKI,
|
|
91
|
+
DESCRIPTION_OPENSHIFT_LOGGING,
|
|
86
92
|
DESCRIPTION_NUMA_RESOURCES,
|
|
87
93
|
DESCRIPTION_OADP,
|
|
88
94
|
DESCRIPTION_METALLB,
|
|
@@ -473,9 +479,36 @@ export const getOperatorSpecs = (
|
|
|
473
479
|
</ExternalLink>
|
|
474
480
|
</>
|
|
475
481
|
),
|
|
476
|
-
notStandalone: true,
|
|
477
482
|
supportLevel: getFeatureSupportLevel('CLUSTER_OBSERVABILITY'),
|
|
478
483
|
},
|
|
484
|
+
{
|
|
485
|
+
operatorKey: OPERATOR_NAME_LOKI,
|
|
486
|
+
title: 'Loki Operator',
|
|
487
|
+
featureId: 'CLUSTER_OBSERVABILITY',
|
|
488
|
+
descriptionText: DESCRIPTION_LOKI,
|
|
489
|
+
Description: ({ openshiftVersion, searchTerm }) => (
|
|
490
|
+
<>
|
|
491
|
+
<HighlightedText text={DESCRIPTION_LOKI} searchTerm={searchTerm} />{' '}
|
|
492
|
+
<ExternalLink href={getLokiLink(openshiftVersion)}>Learn more</ExternalLink>
|
|
493
|
+
</>
|
|
494
|
+
),
|
|
495
|
+
notStandalone: true,
|
|
496
|
+
supportLevel: getFeatureSupportLevel('LOKI'),
|
|
497
|
+
},
|
|
498
|
+
{
|
|
499
|
+
operatorKey: OPERATOR_NAME_OPENSHIFT_LOGGING,
|
|
500
|
+
title: 'OpenShift Logging',
|
|
501
|
+
featureId: 'CLUSTER_OBSERVABILITY',
|
|
502
|
+
descriptionText: DESCRIPTION_OPENSHIFT_LOGGING,
|
|
503
|
+
Description: ({ openshiftVersion, searchTerm }) => (
|
|
504
|
+
<>
|
|
505
|
+
<HighlightedText text={DESCRIPTION_OPENSHIFT_LOGGING} searchTerm={searchTerm} />{' '}
|
|
506
|
+
<ExternalLink href={getOpenShiftLoggingLink(openshiftVersion)}>Learn more</ExternalLink>
|
|
507
|
+
</>
|
|
508
|
+
),
|
|
509
|
+
notStandalone: true,
|
|
510
|
+
supportLevel: getFeatureSupportLevel('OPENSHIFT_LOGGING'),
|
|
511
|
+
},
|
|
479
512
|
],
|
|
480
513
|
[categories[Category.SCHEDULING]]: [
|
|
481
514
|
{
|
|
@@ -69,7 +69,7 @@ export const WizardFooter: React.FC<WizardFooterProps> = ({
|
|
|
69
69
|
variant={ButtonVariant.primary}
|
|
70
70
|
name="next"
|
|
71
71
|
onClick={onNext}
|
|
72
|
-
isDisabled={isNextDisabled}
|
|
72
|
+
isDisabled={isNextDisabled || isSubmitting}
|
|
73
73
|
isLoading={isNextButtonLoading}
|
|
74
74
|
>
|
|
75
75
|
{nextButtonText || t('ai:Next')}
|
|
@@ -145,6 +145,8 @@ export const hostValidationLabels = (t: TFunction): { [key in HostValidationId]:
|
|
|
145
145
|
'node-maintenance-requirements-satisfied': t('ai:Node Maintenance requirements'),
|
|
146
146
|
'kube-descheduler-requirements-satisfied': t('ai:Kube Descheduler requirements'),
|
|
147
147
|
'cluster-observability-requirements-satisfied': t('ai:Cluster Observability requirements'),
|
|
148
|
+
'loki-requirements-satisfied': t('ai:Loki Operator requirements'),
|
|
149
|
+
'openshift-logging-requirements-satisfied': t('ai:OpenShift Logging Operator requirements'),
|
|
148
150
|
'numa-resources-requirements-satisfied': t('ai:NUMA Resources requirements'),
|
|
149
151
|
'oadp-requirements-satisfied': t('ai:OADP requirements'),
|
|
150
152
|
'metallb-requirements-satisfied': t('ai:MetalLB requirements'),
|
|
@@ -216,6 +218,8 @@ export const hostValidationFailureHints = (
|
|
|
216
218
|
'node-maintenance-requirements-satisfied': '',
|
|
217
219
|
'kube-descheduler-requirements-satisfied': '',
|
|
218
220
|
'cluster-observability-requirements-satisfied': '',
|
|
221
|
+
'loki-requirements-satisfied': '',
|
|
222
|
+
'openshift-logging-requirements-satisfied': '',
|
|
219
223
|
'numa-resources-requirements-satisfied': '',
|
|
220
224
|
'oadp-requirements-satisfied': '',
|
|
221
225
|
'metallb-requirements-satisfied': '',
|
|
@@ -247,8 +251,11 @@ export const clusterValidationLabels = (
|
|
|
247
251
|
'lvm-requirements-satisfied': t('ai:Logical Volume Manager requirements'),
|
|
248
252
|
'cnv-requirements-satisfied': t('ai:CNV requirements'),
|
|
249
253
|
'mce-requirements-satisfied': t('ai:MCE requirements'),
|
|
254
|
+
'openshift-ai-gpu-requirements-satisfied': t('ai:OpenShift AI GPU requirements'),
|
|
250
255
|
'platform-requirements-satisfied': t('ai:Platform requirements'),
|
|
251
256
|
'cluster-observability-requirements-satisfied': t('ai:Cluster Observability requirements'),
|
|
257
|
+
'loki-requirements-satisfied': t('ai:Loki Operator requirements'),
|
|
258
|
+
'openshift-logging-requirements-satisfied': t('ai:OpenShift Logging Operator requirements'),
|
|
252
259
|
'numa-resources-requirements-satisfied': t('ai:NUMA Resources requirements'),
|
|
253
260
|
'oadp-requirements-satisfied': t('ai:OADP requirements'),
|
|
254
261
|
'metallb-requirements-satisfied': t('ai:MetalLB requirements'),
|
|
@@ -333,6 +340,8 @@ export const OPERATOR_NAME_FENCE_AGENTS_REMEDIATION = 'fence-agents-remediation'
|
|
|
333
340
|
export const OPERATOR_NAME_NODE_MAINTENANCE = 'node-maintenance';
|
|
334
341
|
export const OPERATOR_NAME_KUBE_DESCHEDULER = 'kube-descheduler';
|
|
335
342
|
export const OPERATOR_NAME_CLUSTER_OBSERVABILITY = 'cluster-observability';
|
|
343
|
+
export const OPERATOR_NAME_LOKI = 'loki';
|
|
344
|
+
export const OPERATOR_NAME_OPENSHIFT_LOGGING = 'openshift-logging';
|
|
336
345
|
export const OPERATOR_NAME_NUMA_RESOURCES = 'numaresources';
|
|
337
346
|
export const OPERATOR_NAME_OADP = 'oadp';
|
|
338
347
|
export const OPERATOR_NAME_METALLB = 'metallb';
|
|
@@ -345,6 +354,9 @@ export const singleClusterOperators = [
|
|
|
345
354
|
OPERATOR_NAME_NODE_MAINTENANCE,
|
|
346
355
|
OPERATOR_NAME_FENCE_AGENTS_REMEDIATION,
|
|
347
356
|
OPERATOR_NAME_KUBE_DESCHEDULER,
|
|
357
|
+
OPERATOR_NAME_CLUSTER_OBSERVABILITY,
|
|
358
|
+
OPERATOR_NAME_LOKI,
|
|
359
|
+
OPERATOR_NAME_OPENSHIFT_LOGGING,
|
|
348
360
|
];
|
|
349
361
|
|
|
350
362
|
export const singleClusterBundles = ['virtualization'];
|
|
@@ -220,6 +220,16 @@ export const getClusterObservabilityLink = (ocpVersion?: string) =>
|
|
|
220
220
|
ocpVersion,
|
|
221
221
|
)}/html/cluster_observability_operator/cluster-observability-operator-overview`;
|
|
222
222
|
|
|
223
|
+
export const getLokiLink = (ocpVersion?: string) =>
|
|
224
|
+
`https://docs.redhat.com/en/documentation/openshift_container_platform/${getDocsOpenshiftVersion(
|
|
225
|
+
ocpVersion,
|
|
226
|
+
)}/html/network_observability/network-observability-overview`;
|
|
227
|
+
|
|
228
|
+
export const getOpenShiftLoggingLink = (ocpVersion?: string) =>
|
|
229
|
+
`https://docs.redhat.com/en/documentation/openshift_container_platform/${getDocsOpenshiftVersion(
|
|
230
|
+
ocpVersion,
|
|
231
|
+
)}/html/logging`;
|
|
232
|
+
|
|
223
233
|
export const getNumaResourcesLink = (ocpVersion?: string) =>
|
|
224
234
|
`https://docs.redhat.com/en/documentation/openshift_container_platform/${getDocsOpenshiftVersion(
|
|
225
235
|
ocpVersion,
|
|
@@ -6,6 +6,7 @@ export type AlertPayload = {
|
|
|
6
6
|
title: string;
|
|
7
7
|
message?: string;
|
|
8
8
|
variant?: AlertVariant;
|
|
9
|
+
key?: string;
|
|
9
10
|
};
|
|
10
11
|
|
|
11
12
|
export type AlertProps = {
|
|
@@ -22,7 +23,7 @@ export const alertsSlice = createSlice({
|
|
|
22
23
|
name: 'alerts',
|
|
23
24
|
reducers: {
|
|
24
25
|
addAlert: (state, action: PayloadAction<AlertPayload>) => [
|
|
25
|
-
{ key: uuidv4(), variant: AlertVariant.danger, ...action.payload },
|
|
26
|
+
{ key: action.payload.key || uuidv4(), variant: AlertVariant.danger, ...action.payload },
|
|
26
27
|
...state,
|
|
27
28
|
],
|
|
28
29
|
removeAlert: (state, action: PayloadAction<string>) =>
|
|
@@ -34,7 +34,9 @@ export const UILibRoutes = ({
|
|
|
34
34
|
<>
|
|
35
35
|
<Routes>
|
|
36
36
|
<Route path="assisted-installer/clusters" element={<Outlet />}>
|
|
37
|
-
<Route path="~new" element={<NewClusterPage />}
|
|
37
|
+
<Route path="~new" element={<NewClusterPage />}>
|
|
38
|
+
<Route path=":clusterId" element={<NewClusterPage />} />
|
|
39
|
+
</Route>
|
|
38
40
|
<Route path=":clusterId" element={<ClusterPage />} />
|
|
39
41
|
<Route index element={<Clusters />} />
|
|
40
42
|
</Route>
|
|
@@ -78,7 +78,7 @@ const HostInventory = ({ cluster }: { cluster: Cluster }) => {
|
|
|
78
78
|
<Content component="h3">Host Inventory</Content>
|
|
79
79
|
</StackItem>
|
|
80
80
|
<StackItem data-testid="hosts-discovery-table-wrapper">
|
|
81
|
-
<HostsDiscoveryTable cluster={cluster} />
|
|
81
|
+
<HostsDiscoveryTable cluster={cluster} hosts={cluster.hosts || []} />
|
|
82
82
|
</StackItem>
|
|
83
83
|
</Stack>
|
|
84
84
|
);
|
|
@@ -153,7 +153,10 @@ export const SubnetsDropdown = ({
|
|
|
153
153
|
};
|
|
154
154
|
|
|
155
155
|
const currentItem = itemsSubnets.find((i) => i.label === currentDisplayValue);
|
|
156
|
-
const
|
|
156
|
+
const isPrimaryMachineNetwork = name === 'machineNetworks.0.cidr';
|
|
157
|
+
const showBadge = Boolean(
|
|
158
|
+
isPrimaryMachineNetwork && currentItem && Address6.isValid(currentItem.value),
|
|
159
|
+
);
|
|
157
160
|
|
|
158
161
|
const toggle = (toggleRef: React.Ref<MenuToggleElement>) => (
|
|
159
162
|
<MenuToggle
|
package/lib/ocm/components/clusterConfiguration/networkConfiguration/VirtualIPControlGroup.tsx
CHANGED
|
@@ -229,7 +229,6 @@ export const VirtualIPControlGroup = ({
|
|
|
229
229
|
}
|
|
230
230
|
name="apiVips.1.ip"
|
|
231
231
|
helperText={ipHelperText}
|
|
232
|
-
isRequired
|
|
233
232
|
labelInfo={'Secondary'}
|
|
234
233
|
onChange={(e) =>
|
|
235
234
|
setVipValueAtIndex('apiVips', 1, e as React.ChangeEvent<HTMLInputElement>)
|
|
@@ -263,7 +262,6 @@ export const VirtualIPControlGroup = ({
|
|
|
263
262
|
</>
|
|
264
263
|
}
|
|
265
264
|
helperText={ipHelperText}
|
|
266
|
-
isRequired
|
|
267
265
|
labelInfo={'Secondary'}
|
|
268
266
|
onChange={(e) =>
|
|
269
267
|
setVipValueAtIndex(
|
|
@@ -40,13 +40,17 @@ export const getNewOperators = (
|
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
const newOperators = currentOperators.filter((op) => op !== operatorId);
|
|
43
|
-
// uncheck unneeded not-standalone dependencies too
|
|
44
43
|
const notStandaloneDeps = dependencies
|
|
45
44
|
.filter((dep) => opSpecs[dep]?.notStandalone)
|
|
46
|
-
.filter((dep) =>
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
45
|
+
.filter((dep) => {
|
|
46
|
+
const hasDependency = newOperators.some((op) =>
|
|
47
|
+
getOperatorDependencies(op, preflightRequirements).includes(dep),
|
|
48
|
+
);
|
|
49
|
+
if (!hasDependency) {
|
|
50
|
+
newOperators.splice(newOperators.indexOf(dep), 1);
|
|
51
|
+
}
|
|
52
|
+
return !hasDependency;
|
|
53
|
+
});
|
|
50
54
|
|
|
51
55
|
return currentOperators.filter((op) => op !== operatorId && !notStandaloneDeps.includes(op));
|
|
52
56
|
};
|
|
@@ -25,6 +25,7 @@ import {
|
|
|
25
25
|
} from '../../services';
|
|
26
26
|
import { Cluster, InfraEnv } from '@openshift-assisted/types/assisted-installer-service';
|
|
27
27
|
import BundleService from '../../services/BundleService';
|
|
28
|
+
import { useFeature } from '../../hooks/use-feature';
|
|
28
29
|
|
|
29
30
|
type ClusterDetailsProps = {
|
|
30
31
|
cluster?: Cluster;
|
|
@@ -45,6 +46,7 @@ const ClusterDetails = ({ cluster, infraEnv }: ClusterDetailsProps) => {
|
|
|
45
46
|
latestVersions: versions,
|
|
46
47
|
} = useOpenShiftVersionsContext();
|
|
47
48
|
const location = useLocation();
|
|
49
|
+
const isSingleClusterFeatureEnabled = useFeature('ASSISTED_INSTALLER_SINGLE_CLUSTER_FEATURE');
|
|
48
50
|
|
|
49
51
|
const handleClusterUpdate = React.useCallback(
|
|
50
52
|
async (
|
|
@@ -94,7 +96,11 @@ const ClusterDetails = ({ cluster, infraEnv }: ClusterDetailsProps) => {
|
|
|
94
96
|
...(virtOperators ? virtOperators.map((op) => ({ name: op })) : []),
|
|
95
97
|
];
|
|
96
98
|
}
|
|
97
|
-
const cluster = await ClustersService.create(
|
|
99
|
+
const cluster = await ClustersService.create(
|
|
100
|
+
params,
|
|
101
|
+
isAssistedMigration,
|
|
102
|
+
isSingleClusterFeatureEnabled,
|
|
103
|
+
);
|
|
98
104
|
navigate(`../${cluster.id}`, { state: ClusterWizardFlowStateNew });
|
|
99
105
|
|
|
100
106
|
const uiPatch: UISettingsValues = { addCustomManifests };
|
|
@@ -114,7 +120,15 @@ const ClusterDetails = ({ cluster, infraEnv }: ClusterDetailsProps) => {
|
|
|
114
120
|
}
|
|
115
121
|
}
|
|
116
122
|
},
|
|
117
|
-
[
|
|
123
|
+
[
|
|
124
|
+
clearAlerts,
|
|
125
|
+
location.search,
|
|
126
|
+
isSingleClusterFeatureEnabled,
|
|
127
|
+
navigate,
|
|
128
|
+
clusterWizardContext,
|
|
129
|
+
addAlert,
|
|
130
|
+
dispatch,
|
|
131
|
+
],
|
|
118
132
|
);
|
|
119
133
|
|
|
120
134
|
const navigation = <ClusterWizardNavigation cluster={cluster} />;
|
|
@@ -3,6 +3,7 @@ import { HostsNetworkConfigurationType } from '../../services';
|
|
|
3
3
|
import { StaticIpView } from '../clusterConfiguration/staticIp/data/dataTypes';
|
|
4
4
|
import { ClusterWizardStepsType } from './wizardTransition';
|
|
5
5
|
import { UISettingsValues } from '../../../common';
|
|
6
|
+
import { InfraEnv } from '@openshift-assisted/types/assisted-installer-service';
|
|
6
7
|
|
|
7
8
|
export type ClusterWizardContextType = {
|
|
8
9
|
currentStepId: ClusterWizardStepsType;
|
|
@@ -20,6 +21,8 @@ export type ClusterWizardContextType = {
|
|
|
20
21
|
uiSettings?: UISettingsValues;
|
|
21
22
|
installDisconnected: boolean;
|
|
22
23
|
setInstallDisconnected: (enabled: boolean) => void;
|
|
24
|
+
disconnectedInfraEnv?: InfraEnv;
|
|
25
|
+
setDisconnectedInfraEnv: (infraEnv: InfraEnv | undefined) => void;
|
|
23
26
|
};
|
|
24
27
|
|
|
25
28
|
export const ClusterWizardContext = React.createContext<ClusterWizardContextType | null>(null);
|
|
@@ -92,6 +92,9 @@ const ClusterWizardContextProvider = ({
|
|
|
92
92
|
const [wizardPerPage, setWizardPerPage] = React.useState(10);
|
|
93
93
|
const [customManifestsStep, setCustomManifestsStep] = React.useState<boolean>(false);
|
|
94
94
|
const [installDisconnected, setInstallDisconnected] = React.useState(false);
|
|
95
|
+
const [disconnectedInfraEnv, setDisconnectedInfraEnv] = React.useState<InfraEnv | undefined>(
|
|
96
|
+
infraEnv,
|
|
97
|
+
);
|
|
95
98
|
const location = useLocation();
|
|
96
99
|
const locationState = location.state as ClusterWizardFlowStateType | undefined;
|
|
97
100
|
const {
|
|
@@ -259,6 +262,8 @@ const ClusterWizardContextProvider = ({
|
|
|
259
262
|
connectedWizardStepIds?.length && onSetCurrentStepId(connectedWizardStepIds[0]);
|
|
260
263
|
}
|
|
261
264
|
},
|
|
265
|
+
disconnectedInfraEnv,
|
|
266
|
+
setDisconnectedInfraEnv,
|
|
262
267
|
};
|
|
263
268
|
}, [
|
|
264
269
|
wizardStepIds,
|
|
@@ -273,6 +278,7 @@ const ClusterWizardContextProvider = ({
|
|
|
273
278
|
installDisconnected,
|
|
274
279
|
setInstallDisconnected,
|
|
275
280
|
connectedWizardStepIds,
|
|
281
|
+
disconnectedInfraEnv,
|
|
276
282
|
]);
|
|
277
283
|
|
|
278
284
|
if (!contextValue) {
|
|
@@ -17,6 +17,8 @@ import { onFetchEvents } from '../fetching/fetchEvents';
|
|
|
17
17
|
import { Cluster } from '@openshift-assisted/types/assisted-installer-service';
|
|
18
18
|
import { useFeature } from '../../hooks/use-feature';
|
|
19
19
|
import { useModalDialogsContext } from '../hosts/ModalDialogsContext';
|
|
20
|
+
import ClustersService from '../../services/ClustersService';
|
|
21
|
+
import { handleApiError, getApiErrorMessage } from '../../../common/api';
|
|
20
22
|
|
|
21
23
|
type ClusterValidationSectionProps = {
|
|
22
24
|
cluster?: Cluster;
|
|
@@ -71,6 +73,7 @@ type ClusterWizardFooterProps = WizardFooterGenericProps & {
|
|
|
71
73
|
errorFields?: string[];
|
|
72
74
|
alertTitle?: string;
|
|
73
75
|
alertContent?: string | null;
|
|
76
|
+
disconnectedClusterId?: string;
|
|
74
77
|
};
|
|
75
78
|
|
|
76
79
|
const ClusterWizardFooter = ({
|
|
@@ -80,19 +83,37 @@ const ClusterWizardFooter = ({
|
|
|
80
83
|
alertTitle,
|
|
81
84
|
alertContent,
|
|
82
85
|
onCancel,
|
|
86
|
+
disconnectedClusterId,
|
|
83
87
|
...rest
|
|
84
88
|
}: ClusterWizardFooterProps) => {
|
|
85
|
-
const { alerts } = useAlerts();
|
|
89
|
+
const { alerts, addAlert } = useAlerts();
|
|
86
90
|
const navigate = useNavigate();
|
|
87
91
|
const isSingleClusterFeatureEnabled = useFeature('ASSISTED_INSTALLER_SINGLE_CLUSTER_FEATURE');
|
|
88
92
|
const { currentStepId } = useClusterWizardContext();
|
|
89
93
|
const { resetSingleClusterDialog } = useModalDialogsContext();
|
|
94
|
+
const { setDisconnectedInfraEnv } = useClusterWizardContext();
|
|
90
95
|
|
|
91
|
-
const handleCancel = React.useCallback(() =>
|
|
96
|
+
const handleCancel = React.useCallback(async () => {
|
|
97
|
+
if (disconnectedClusterId) {
|
|
98
|
+
try {
|
|
99
|
+
await ClustersService.remove(disconnectedClusterId);
|
|
100
|
+
} catch (e) {
|
|
101
|
+
handleApiError(e, () =>
|
|
102
|
+
addAlert({
|
|
103
|
+
title: 'Failed to remove cluster',
|
|
104
|
+
message: getApiErrorMessage(e),
|
|
105
|
+
}),
|
|
106
|
+
);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
setDisconnectedInfraEnv(undefined);
|
|
110
|
+
navigate('/cluster-list');
|
|
111
|
+
}, [navigate, setDisconnectedInfraEnv, addAlert, disconnectedClusterId]);
|
|
92
112
|
|
|
93
|
-
const handleReset = React.useCallback(
|
|
94
|
-
resetSingleClusterDialog.open({ cluster })
|
|
95
|
-
|
|
113
|
+
const handleReset = React.useCallback(
|
|
114
|
+
() => resetSingleClusterDialog.open({ cluster }),
|
|
115
|
+
[resetSingleClusterDialog, cluster],
|
|
116
|
+
);
|
|
96
117
|
|
|
97
118
|
const alertsSection = alerts.length ? <Alerts /> : undefined;
|
|
98
119
|
|
|
@@ -22,6 +22,7 @@ import {
|
|
|
22
22
|
Cluster,
|
|
23
23
|
V2ClusterUpdateParams,
|
|
24
24
|
} from '@openshift-assisted/types/assisted-installer-service';
|
|
25
|
+
import useLateBinding from '../../hooks/useLateBinding';
|
|
25
26
|
|
|
26
27
|
const HostDiscoveryForm = ({ cluster }: { cluster: Cluster }) => {
|
|
27
28
|
const { alerts } = useAlerts();
|
|
@@ -29,12 +30,14 @@ const HostDiscoveryForm = ({ cluster }: { cluster: Cluster }) => {
|
|
|
29
30
|
const clusterWizardContext = useClusterWizardContext();
|
|
30
31
|
const isAutoSaveRunning = useFormikAutoSave();
|
|
31
32
|
const errorFields = getFormikErrorFields(errors, touched);
|
|
33
|
+
const isBinding = useLateBinding(cluster);
|
|
32
34
|
|
|
33
35
|
const isNextDisabled =
|
|
34
36
|
!isValid ||
|
|
35
37
|
!!alerts.length ||
|
|
36
38
|
isAutoSaveRunning ||
|
|
37
39
|
isSubmitting ||
|
|
40
|
+
isBinding ||
|
|
38
41
|
!canNextHostDiscovery({ cluster });
|
|
39
42
|
|
|
40
43
|
const footer = (
|
|
@@ -4,6 +4,7 @@ import ClusterDetails from './ClusterDetails';
|
|
|
4
4
|
import { useClusterWizardContext } from './ClusterWizardContext';
|
|
5
5
|
import ReviewStep from './disconnected/ReviewStep';
|
|
6
6
|
import BasicStep from './disconnected/BasicStep';
|
|
7
|
+
import OptionalConfigurationsStep from './disconnected/OptionalConfigurationsStep';
|
|
7
8
|
import { ClusterWizardStepsType } from './wizardTransition';
|
|
8
9
|
|
|
9
10
|
const getCurrentStep = (currentStepId: ClusterWizardStepsType) => {
|
|
@@ -12,6 +13,8 @@ const getCurrentStep = (currentStepId: ClusterWizardStepsType) => {
|
|
|
12
13
|
return <ReviewStep />;
|
|
13
14
|
case 'disconnected-basic':
|
|
14
15
|
return <BasicStep />;
|
|
16
|
+
case 'disconnected-optional-configurations':
|
|
17
|
+
return <OptionalConfigurationsStep />;
|
|
15
18
|
default:
|
|
16
19
|
return <ClusterDetails />;
|
|
17
20
|
}
|
|
@@ -14,6 +14,7 @@ export const wizardStepNames: { [key in ClusterWizardStepsType]: string } = {
|
|
|
14
14
|
'credentials-download': 'Download credentials',
|
|
15
15
|
'disconnected-review': 'Review and download ISO',
|
|
16
16
|
'disconnected-basic': 'Basic information',
|
|
17
|
+
'disconnected-optional-configurations': 'Optional configurations',
|
|
17
18
|
};
|
|
18
19
|
|
|
19
20
|
export const defaultWizardSteps: ClusterWizardStepsType[] = [
|