@openshift-assisted/ui-lib 2.14.1-cim → 2.14.3-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/ACMClusterDeploymentDetailsStep.d.ts +2 -3
- package/build/@types/cim/components/ClusterDeployment/ACMClusterDeploymentDetailsStep.d.ts.map +1 -1
- package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentDetailsForm.d.ts +3 -0
- package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentDetailsForm.d.ts.map +1 -1
- package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentDetailsStep.d.ts.map +1 -1
- package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentHostDiscoveryTable.d.ts.map +1 -1
- package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentHostSelectionStep.d.ts.map +1 -1
- package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentHostsDiscovery.d.ts.map +1 -1
- package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentHostsDiscoveryStep.d.ts +1 -1
- package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentHostsDiscoveryStep.d.ts.map +1 -1
- package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentNetworkingStep.d.ts +15 -2
- package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentNetworkingStep.d.ts.map +1 -1
- package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentReviewStep.d.ts +1 -2
- package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentReviewStep.d.ts.map +1 -1
- package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentWizard.d.ts +1 -2
- package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentWizard.d.ts.map +1 -1
- package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentWizardContext.d.ts +8 -7
- package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentWizardContext.d.ts.map +1 -1
- package/build/@types/cim/components/ClusterDeployment/components/ClusterDeploymentHostsSelectionAdvanced.d.ts +17 -0
- package/build/@types/cim/components/ClusterDeployment/components/ClusterDeploymentHostsSelectionAdvanced.d.ts.map +1 -0
- package/build/@types/cim/components/ClusterDeployment/components/ClusterScaleUpAutoHostsSelection.d.ts +8 -0
- package/build/@types/cim/components/ClusterDeployment/components/ClusterScaleUpAutoHostsSelection.d.ts.map +1 -0
- package/build/@types/cim/components/ClusterDeployment/components/ValidationSection.d.ts +16 -0
- package/build/@types/cim/components/ClusterDeployment/components/ValidationSection.d.ts.map +1 -0
- package/build/@types/cim/components/ClusterDeployment/constants.d.ts +2 -0
- package/build/@types/cim/components/ClusterDeployment/constants.d.ts.map +1 -1
- package/build/@types/cim/components/ClusterDeployment/index.d.ts +1 -2
- package/build/@types/cim/components/ClusterDeployment/index.d.ts.map +1 -1
- package/build/@types/cim/components/ClusterDeployment/networkConfigurationValidation.d.ts +1 -11
- package/build/@types/cim/components/ClusterDeployment/networkConfigurationValidation.d.ts.map +1 -1
- package/build/@types/cim/components/ClusterDeployment/types.d.ts +7 -9
- package/build/@types/cim/components/ClusterDeployment/types.d.ts.map +1 -1
- package/build/@types/cim/components/ClusterDeployment/use-networking-formik.d.ts +8 -2
- package/build/@types/cim/components/ClusterDeployment/use-networking-formik.d.ts.map +1 -1
- package/build/@types/cim/components/Hypershift/DetailsPage/HypershiftKubeconfigDownload.d.ts.map +1 -1
- package/build/@types/cim/components/Hypershift/types.d.ts +6 -3
- package/build/@types/cim/components/Hypershift/types.d.ts.map +1 -1
- package/build/@types/cim/components/InfraEnv/InfraEnvAgentTable.d.ts.map +1 -1
- package/build/@types/cim/components/helpers/agents.d.ts +3 -0
- package/build/@types/cim/components/helpers/agents.d.ts.map +1 -1
- package/build/@types/cim/components/helpers/toAssisted.d.ts.map +1 -1
- package/build/@types/cim/components/modals/EditAgentModal.d.ts.map +1 -1
- package/build/@types/cim/components/modals/ScaleUpModal.d.ts +3 -0
- package/build/@types/cim/components/modals/ScaleUpModal.d.ts.map +1 -1
- package/build/@types/common/components/clusterWizard/networkingSteps/AvailableSubnetsControl.d.ts.map +1 -1
- package/build/@types/common/components/hosts/EditHostForm.d.ts.map +1 -1
- package/build/@types/common/components/ui/formik/validationSchemas.d.ts.map +1 -1
- package/build/cjs/cim/components/ClusterDeployment/ACMClusterDeploymentDetailsStep.js +9 -7
- package/build/cjs/cim/components/ClusterDeployment/ACMClusterDeploymentDetailsStep.js.map +1 -1
- package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentDetailsForm.js +26 -1
- package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentDetailsForm.js.map +1 -1
- package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentDetailsStep.js +13 -29
- package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentDetailsStep.js.map +1 -1
- package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentHostDiscoveryTable.js +2 -12
- package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentHostDiscoveryTable.js.map +1 -1
- package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentHostSelectionStep.js +50 -26
- package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentHostSelectionStep.js.map +1 -1
- package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentHostsDiscovery.js +3 -3
- package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentHostsDiscovery.js.map +1 -1
- package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentHostsDiscoveryStep.js +39 -21
- package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentHostsDiscoveryStep.js.map +1 -1
- package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentNetworkingStep.js +58 -27
- package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentNetworkingStep.js.map +1 -1
- package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentReviewStep.js +24 -24
- package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentReviewStep.js.map +1 -1
- package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentWizard.js +26 -42
- package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentWizard.js.map +1 -1
- package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentWizardContext.js +12 -8
- package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentWizardContext.js.map +1 -1
- package/build/cjs/cim/components/ClusterDeployment/NetworkConfiguration.js +5 -5
- package/build/cjs/cim/components/ClusterDeployment/NetworkConfiguration.js.map +1 -1
- package/build/cjs/cim/components/ClusterDeployment/components/ClusterDeploymentHostsSelectionAdvanced.js +50 -0
- package/build/cjs/cim/components/ClusterDeployment/components/ClusterDeploymentHostsSelectionAdvanced.js.map +1 -0
- package/build/cjs/cim/components/ClusterDeployment/components/ClusterScaleUpAutoHostsSelection.js +24 -0
- package/build/cjs/cim/components/ClusterDeployment/components/ClusterScaleUpAutoHostsSelection.js.map +1 -0
- package/build/cjs/cim/components/ClusterDeployment/components/ValidationSection.js +17 -0
- package/build/cjs/cim/components/ClusterDeployment/components/ValidationSection.js.map +1 -0
- package/build/cjs/cim/components/ClusterDeployment/constants.js +2 -0
- package/build/cjs/cim/components/ClusterDeployment/constants.js.map +1 -1
- package/build/cjs/cim/components/ClusterDeployment/index.js +2 -5
- package/build/cjs/cim/components/ClusterDeployment/index.js.map +1 -1
- package/build/cjs/cim/components/ClusterDeployment/networkConfigurationValidation.js +1 -14
- package/build/cjs/cim/components/ClusterDeployment/networkConfigurationValidation.js.map +1 -1
- package/build/cjs/cim/components/ClusterDeployment/use-networking-formik.js +2 -2
- package/build/cjs/cim/components/ClusterDeployment/use-networking-formik.js.map +1 -1
- package/build/cjs/cim/components/Hypershift/DetailsPage/HypershiftKubeconfigDownload.js +6 -4
- package/build/cjs/cim/components/Hypershift/DetailsPage/HypershiftKubeconfigDownload.js.map +1 -1
- package/build/cjs/cim/components/InfraEnv/InfraEnvAgentTable.js +2 -12
- package/build/cjs/cim/components/InfraEnv/InfraEnvAgentTable.js.map +1 -1
- package/build/cjs/cim/components/helpers/agents.js +19 -1
- package/build/cjs/cim/components/helpers/agents.js.map +1 -1
- package/build/cjs/cim/components/helpers/toAssisted.js +25 -23
- package/build/cjs/cim/components/helpers/toAssisted.js.map +1 -1
- package/build/cjs/cim/components/modals/EditAgentModal.js +2 -2
- package/build/cjs/cim/components/modals/EditAgentModal.js.map +1 -1
- package/build/cjs/cim/components/modals/ScaleUpModal.js +3 -2
- package/build/cjs/cim/components/modals/ScaleUpModal.js.map +1 -1
- package/build/cjs/common/components/clusterWizard/networkingSteps/AvailableSubnetsControl.js +14 -18
- package/build/cjs/common/components/clusterWizard/networkingSteps/AvailableSubnetsControl.js.map +1 -1
- package/build/cjs/common/components/clusterWizard/networkingSteps/VirtualIPControlGroup.js +4 -4
- package/build/cjs/common/components/clusterWizard/networkingSteps/VirtualIPControlGroup.js.map +1 -1
- package/build/cjs/common/components/hosts/EditHostForm.js +3 -3
- package/build/cjs/common/components/hosts/EditHostForm.js.map +1 -1
- package/build/cjs/common/components/ui/formik/validationSchemas.js +18 -15
- package/build/cjs/common/components/ui/formik/validationSchemas.js.map +1 -1
- package/build/cjs/common/config/constants.js +1 -1
- package/build/cjs/common/config/constants.js.map +1 -1
- package/lib/cim/components/ClusterDeployment/ACMClusterDeploymentDetailsStep.tsx +11 -9
- package/lib/cim/components/ClusterDeployment/ClusterDeploymentDetailsForm.tsx +66 -3
- package/lib/cim/components/ClusterDeployment/ClusterDeploymentDetailsStep.tsx +25 -53
- package/lib/cim/components/ClusterDeployment/ClusterDeploymentHostDiscoveryTable.tsx +7 -16
- package/lib/cim/components/ClusterDeployment/ClusterDeploymentHostSelectionStep.tsx +102 -59
- package/lib/cim/components/ClusterDeployment/ClusterDeploymentHostsDiscovery.tsx +16 -10
- package/lib/cim/components/ClusterDeployment/ClusterDeploymentHostsDiscoveryStep.tsx +84 -48
- package/lib/cim/components/ClusterDeployment/ClusterDeploymentNetworkingStep.tsx +106 -54
- package/lib/cim/components/ClusterDeployment/ClusterDeploymentReviewStep.tsx +96 -85
- package/lib/cim/components/ClusterDeployment/ClusterDeploymentWizard.tsx +109 -119
- package/lib/cim/components/ClusterDeployment/ClusterDeploymentWizardContext.tsx +27 -14
- package/lib/cim/components/ClusterDeployment/NetworkConfiguration.tsx +5 -5
- package/lib/cim/components/ClusterDeployment/components/ClusterDeploymentHostsSelectionAdvanced.tsx +107 -0
- package/lib/cim/components/ClusterDeployment/components/ClusterScaleUpAutoHostsSelection.tsx +49 -0
- package/lib/cim/components/ClusterDeployment/components/ValidationSection.tsx +41 -0
- package/lib/cim/components/ClusterDeployment/constants.ts +3 -1
- package/lib/cim/components/ClusterDeployment/index.ts +1 -3
- package/lib/cim/components/ClusterDeployment/networkConfigurationValidation.ts +1 -26
- package/lib/cim/components/ClusterDeployment/types.ts +7 -10
- package/lib/cim/components/ClusterDeployment/use-networking-formik.ts +3 -3
- package/lib/cim/components/Hypershift/DetailsPage/HypershiftKubeconfigDownload.tsx +4 -2
- package/lib/cim/components/Hypershift/types.ts +6 -3
- package/lib/cim/components/InfraEnv/InfraEnvAgentTable.tsx +7 -16
- package/lib/cim/components/helpers/agents.ts +30 -1
- package/lib/cim/components/helpers/toAssisted.ts +12 -8
- package/lib/cim/components/modals/EditAgentModal.tsx +2 -1
- package/lib/cim/components/modals/ScaleUpModal.tsx +12 -2
- package/lib/common/components/clusterWizard/networkingSteps/AvailableSubnetsControl.tsx +50 -61
- package/lib/common/components/clusterWizard/networkingSteps/VirtualIPControlGroup.tsx +4 -4
- package/lib/common/components/hosts/EditHostForm.tsx +16 -6
- package/lib/common/components/ui/formik/validationSchemas.ts +13 -10
- package/lib/common/config/constants.ts +1 -1
- package/package.json +4 -3
- package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentCreateProgress.d.ts +0 -10
- package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentCreateProgress.d.ts.map +0 -1
- package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentWizardFooter.d.ts +0 -13
- package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentWizardFooter.d.ts.map +0 -1
- package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentWizardNavigation.d.ts +0 -4
- package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentWizardNavigation.d.ts.map +0 -1
- package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentWizardStep.d.ts +0 -7
- package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentWizardStep.d.ts.map +0 -1
- package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentCreateProgress.js +0 -31
- package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentCreateProgress.js.map +0 -1
- package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentWizardFooter.js +0 -50
- package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentWizardFooter.js.map +0 -1
- package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentWizardNavigation.js +0 -35
- package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentWizardNavigation.js.map +0 -1
- package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentWizardStep.js +0 -9
- package/build/cjs/cim/components/ClusterDeployment/ClusterDeploymentWizardStep.js.map +0 -1
- package/lib/cim/components/ClusterDeployment/ClusterDeploymentCreateProgress.tsx +0 -79
- package/lib/cim/components/ClusterDeployment/ClusterDeploymentWizardFooter.tsx +0 -128
- package/lib/cim/components/ClusterDeployment/ClusterDeploymentWizardNavigation.tsx +0 -81
- package/lib/cim/components/ClusterDeployment/ClusterDeploymentWizardStep.tsx +0 -13
|
@@ -17,14 +17,13 @@ import { BMCFormProps } from '../Agent/types';
|
|
|
17
17
|
import { AgentMachineK8sResource } from '../Hypershift/types';
|
|
18
18
|
import { AddHostDropdownProps, ProvisioningConfigResult } from '../InfraEnv/types';
|
|
19
19
|
import { AddHostModalProps, EditBMHModalProps, UploadActionModalProps } from '../modals/types';
|
|
20
|
+
import { Host } from '@openshift-assisted/types/assisted-installer-service';
|
|
20
21
|
|
|
21
22
|
export type EditAgentModalProps = {
|
|
22
|
-
agent: AgentK8sResource
|
|
23
|
-
isOpen: boolean;
|
|
23
|
+
agent: AgentK8sResource;
|
|
24
24
|
usedHostnames: string[] | undefined;
|
|
25
25
|
onClose: () => void;
|
|
26
|
-
|
|
27
|
-
onSave: (agent: AgentK8sResource, hostname: string) => Promise<any>;
|
|
26
|
+
onSave: (host: Host, hostname: string) => Promise<unknown>;
|
|
28
27
|
};
|
|
29
28
|
|
|
30
29
|
export type AgentTableActions = {
|
|
@@ -85,7 +84,6 @@ export type ScaleUpFormValues = Omit<
|
|
|
85
84
|
|
|
86
85
|
export type ClusterDeploymentDetailsStepProps = ClusterDeploymentDetailsProps & {
|
|
87
86
|
onSaveDetails: (values: ClusterDeploymentDetailsValues) => Promise<unknown>;
|
|
88
|
-
onClose: () => void;
|
|
89
87
|
isPreviewOpen: boolean;
|
|
90
88
|
isNutanix: boolean;
|
|
91
89
|
};
|
|
@@ -98,7 +96,6 @@ export type ClusterDeploymentDetailsNetworkingProps = Pick<
|
|
|
98
96
|
agentClusterInstall: AgentClusterInstallK8sResource;
|
|
99
97
|
agents: AgentK8sResource[];
|
|
100
98
|
onSaveNetworking: (values: ClusterDeploymentNetworkingValues) => Promise<string | void>;
|
|
101
|
-
onClose: () => void;
|
|
102
99
|
fetchInfraEnv: (name: string, namespace: string) => Promise<InfraEnvK8sResource>;
|
|
103
100
|
isPreviewOpen: boolean;
|
|
104
101
|
isNutanix: boolean;
|
|
@@ -115,7 +112,6 @@ export type ClusterDeploymentHostSelectionStepProps = Omit<
|
|
|
115
112
|
'onHostSelect' | 'onAutoSelectChange'
|
|
116
113
|
> & {
|
|
117
114
|
onSaveHostsSelection: (values: ClusterDeploymentHostsSelectionValues) => Promise<string | void>;
|
|
118
|
-
onClose: () => void;
|
|
119
115
|
};
|
|
120
116
|
|
|
121
117
|
export type ClusterDeploymentHostsDiscoveryStepProps = Omit<
|
|
@@ -123,7 +119,6 @@ export type ClusterDeploymentHostsDiscoveryStepProps = Omit<
|
|
|
123
119
|
'usedHostnames'
|
|
124
120
|
> & {
|
|
125
121
|
onSaveHostsDiscovery: () => Promise<void>;
|
|
126
|
-
onClose: () => void;
|
|
127
122
|
};
|
|
128
123
|
|
|
129
124
|
export type ClusterDeploymentWizardProps = {
|
|
@@ -146,6 +141,7 @@ export type ClusterDeploymentWizardProps = {
|
|
|
146
141
|
clusterDeployment: ClusterDeploymentK8sResource;
|
|
147
142
|
agentClusterInstall: AgentClusterInstallK8sResource;
|
|
148
143
|
agents: AgentK8sResource[];
|
|
144
|
+
bareMetalHosts: BareMetalHostK8sResource[];
|
|
149
145
|
aiConfigMap?: ConfigMapK8sResource;
|
|
150
146
|
infraEnv?: InfraEnvK8sResource;
|
|
151
147
|
infraNMStates: NMStateK8sResource[];
|
|
@@ -155,7 +151,8 @@ export type ClusterDeploymentWizardProps = {
|
|
|
155
151
|
setPreviewOpen: (open: boolean) => void;
|
|
156
152
|
fetchManagedClusters: () => Promise<K8sResourceCommon[]>;
|
|
157
153
|
fetchKlusterletAddonConfig: () => Promise<K8sResourceCommon[]>;
|
|
158
|
-
|
|
154
|
+
onChangeHostname: ClusterDeploymentHostsDiscoveryStepProps['onChangeHostname'];
|
|
155
|
+
onChangeBMHHostname: ClusterDeploymentHostsDiscoveryStepProps['onChangeBMHHostname'];
|
|
159
156
|
onSaveBMH: EditBMHModalProps['onEdit'];
|
|
160
157
|
onSaveISOParams?: AddHostModalProps['onSaveISOParams'];
|
|
161
158
|
onSaveHostsDiscovery: ClusterDeploymentHostsDiscoveryStepProps['onSaveHostsDiscovery'];
|
|
@@ -225,7 +222,7 @@ export type ClusterDeploymentHostsDiscoveryProps = AddHostDropdownProps & {
|
|
|
225
222
|
aiConfigMap?: ConfigMapK8sResource;
|
|
226
223
|
infraNMStates: NMStateK8sResource[];
|
|
227
224
|
|
|
228
|
-
|
|
225
|
+
onChangeHostname: InfraEnvAgentTableProps['onChangeHostname'];
|
|
229
226
|
onEditRole: ClusterDeploymentHostDiscoveryTableProps['onEditRole'];
|
|
230
227
|
onSetInstallationDiskId: AgentTableActions['onSetInstallationDiskId'];
|
|
231
228
|
onSaveBMH: EditBMHModalProps['onEdit'];
|
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
HostSubnets,
|
|
18
18
|
hostPrefixValidationSchema,
|
|
19
19
|
ipBlockValidationSchema,
|
|
20
|
-
|
|
20
|
+
vipArrayValidationSchema,
|
|
21
21
|
sshPublicKeyValidationSchema,
|
|
22
22
|
hostSubnetValidationSchema,
|
|
23
23
|
httpProxyValidationSchema,
|
|
@@ -50,8 +50,8 @@ const getNetworkConfigurationValidationSchema = (
|
|
|
50
50
|
clusterNetworkHostPrefix: hostPrefixValidationSchema(values.clusterNetworkCidr),
|
|
51
51
|
clusterNetworkCidr: ipBlockValidationSchema(values.serviceNetworkCidr),
|
|
52
52
|
serviceNetworkCidr: ipBlockValidationSchema(values.clusterNetworkCidr),
|
|
53
|
-
|
|
54
|
-
|
|
53
|
+
apiVips: vipArrayValidationSchema(hostSubnets, values, initialValues.apiVips),
|
|
54
|
+
ingressVips: vipArrayValidationSchema(hostSubnets, values, initialValues.ingressVips),
|
|
55
55
|
sshPublicKey: sshPublicKeyValidationSchema,
|
|
56
56
|
hostSubnet: hostSubnetValidationSchema,
|
|
57
57
|
httpProxy: httpProxyValidationSchema({ values, pairValueName: 'httpsProxy' }),
|
|
@@ -15,8 +15,10 @@ const HypershiftKubeconfigDownload = ({
|
|
|
15
15
|
fetchSecret,
|
|
16
16
|
}: HypershiftKubeconfigDownloadProps) => {
|
|
17
17
|
const { t } = useTranslation();
|
|
18
|
+
const kubeconfigSecretName = hostedCluster.status?.customkubeconfig
|
|
19
|
+
? hostedCluster.status.customkubeconfig?.name
|
|
20
|
+
: hostedCluster.status?.kubeconfig?.name;
|
|
18
21
|
const handleKubeconfigDownload = async () => {
|
|
19
|
-
const kubeconfigSecretName = hostedCluster.status?.kubeconfig?.name;
|
|
20
22
|
const kubeconfigSecretNamespace = hostedCluster.metadata?.namespace;
|
|
21
23
|
|
|
22
24
|
if (kubeconfigSecretName && kubeconfigSecretNamespace) {
|
|
@@ -41,7 +43,7 @@ const HypershiftKubeconfigDownload = ({
|
|
|
41
43
|
variant={ButtonVariant.secondary}
|
|
42
44
|
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
|
43
45
|
onClick={handleKubeconfigDownload}
|
|
44
|
-
isDisabled={!
|
|
46
|
+
isDisabled={!kubeconfigSecretName}
|
|
45
47
|
>
|
|
46
48
|
{t('ai:Download kubeconfig')}
|
|
47
49
|
</Button>
|
|
@@ -133,11 +133,11 @@ export type HostedClusterK8sResource = K8sResourceCommon & {
|
|
|
133
133
|
endpointAccess: 'Public';
|
|
134
134
|
kubeCloudControllerCreds: { name?: string };
|
|
135
135
|
nodePoolManagementCreds: { name?: string };
|
|
136
|
-
region:
|
|
136
|
+
region: string;
|
|
137
137
|
resourceTags: [
|
|
138
138
|
{
|
|
139
|
-
key:
|
|
140
|
-
value:
|
|
139
|
+
key: string;
|
|
140
|
+
value: string;
|
|
141
141
|
},
|
|
142
142
|
];
|
|
143
143
|
};
|
|
@@ -157,6 +157,9 @@ export type HostedClusterK8sResource = K8sResourceCommon & {
|
|
|
157
157
|
kubeconfig?: {
|
|
158
158
|
name: string;
|
|
159
159
|
};
|
|
160
|
+
customkubeconfig?: {
|
|
161
|
+
name: string;
|
|
162
|
+
};
|
|
160
163
|
kubeadminPassword?: {
|
|
161
164
|
name: string;
|
|
162
165
|
};
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { Button, Stack, StackItem } from '@patternfly/react-core';
|
|
3
3
|
import { DropdownItem } from '@patternfly/react-core/deprecated';
|
|
4
|
-
import noop from 'lodash-es/noop.js';
|
|
5
4
|
|
|
6
5
|
import { Host } from '@openshift-assisted/types/assisted-installer-service';
|
|
7
6
|
import {
|
|
@@ -33,12 +32,12 @@ import {
|
|
|
33
32
|
} from '../../../common';
|
|
34
33
|
import { InfraEnvAgentTableProps } from '../ClusterDeployment/types';
|
|
35
34
|
import { MassApproveAgentModal, MassDeleteAgentModal } from '../modals';
|
|
36
|
-
import { MassChangeHostnameModalProps } from '../../../common/components/hosts/MassChangeHostnameModal';
|
|
37
35
|
import MassApproveAction from '../modals/MassApproveAction';
|
|
38
36
|
import { usePagination } from '../../../common/components/hosts/usePagination';
|
|
39
37
|
import InfraTableToolbar from './InfraTableToolbar';
|
|
40
38
|
import { useTranslation } from '../../../common/hooks/use-translation-wrapper';
|
|
41
39
|
import { agentStatus, bmhStatus } from '../helpers/agentStatus';
|
|
40
|
+
import { onAgentChangeHostname } from '../helpers';
|
|
42
41
|
|
|
43
42
|
type NoFilterMatchStateProps = {
|
|
44
43
|
onClearFilters: VoidFunction;
|
|
@@ -205,19 +204,6 @@ const InfraEnvAgentTable: React.FC<InfraEnvAgentTableProps> = ({
|
|
|
205
204
|
<DeleteHostAction key="delete" onDeleteHost={() => setMassDeleteOpen(!isMassDeleteOpen)} />,
|
|
206
205
|
];
|
|
207
206
|
|
|
208
|
-
const onAgentChangeHostname: MassChangeHostnameModalProps['onChangeHostname'] = async (
|
|
209
|
-
host,
|
|
210
|
-
hostname,
|
|
211
|
-
) => {
|
|
212
|
-
const agent = agents.find((a) => a.metadata?.uid === host.id);
|
|
213
|
-
if (agent) {
|
|
214
|
-
return onChangeHostname(agent, hostname);
|
|
215
|
-
} else {
|
|
216
|
-
const bmh = bareMetalHosts.find((bmh) => bmh.metadata?.uid === host.id);
|
|
217
|
-
return bmh ? onChangeBMHHostname(bmh, hostname) : noop;
|
|
218
|
-
}
|
|
219
|
-
};
|
|
220
|
-
|
|
221
207
|
const paginationProps = usePagination(hosts.length);
|
|
222
208
|
|
|
223
209
|
return (
|
|
@@ -272,7 +258,12 @@ const InfraEnvAgentTable: React.FC<InfraEnvAgentTableProps> = ({
|
|
|
272
258
|
isOpen={isMassChangeHostOpen}
|
|
273
259
|
hosts={hosts}
|
|
274
260
|
selectedHostIDs={selectedHostIDs}
|
|
275
|
-
onChangeHostname={onAgentChangeHostname
|
|
261
|
+
onChangeHostname={onAgentChangeHostname(
|
|
262
|
+
agents,
|
|
263
|
+
bareMetalHosts,
|
|
264
|
+
onChangeHostname,
|
|
265
|
+
onChangeBMHHostname,
|
|
266
|
+
)}
|
|
276
267
|
onClose={() => setMassChangeHostOpen(false)}
|
|
277
268
|
canChangeHostname={canChangeHostname(agents, agentStatuses, bareMetalHosts, t)}
|
|
278
269
|
/>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { AgentStatus, getAgentStatusKey } from './status';
|
|
2
2
|
import { Host } from '@openshift-assisted/types/assisted-installer-service';
|
|
3
3
|
import { AgentK8sResource, BareMetalHostK8sResource } from '../../types';
|
|
4
|
-
import { INFRAENV_AGENTINSTALL_LABEL_KEY } from '../common/constants';
|
|
4
|
+
import { AGENT_BMH_NAME_LABEL_KEY, INFRAENV_AGENTINSTALL_LABEL_KEY } from '../common/constants';
|
|
5
5
|
|
|
6
6
|
const AGENT_FOR_SELECTION_STATUSES: AgentStatus[] = [
|
|
7
7
|
'known',
|
|
@@ -33,3 +33,32 @@ export const getInfraEnvNameOfAgent = (resource?: AgentK8sResource | BareMetalHo
|
|
|
33
33
|
|
|
34
34
|
export const getClusterNameOfAgent = (agent?: AgentK8sResource) =>
|
|
35
35
|
agent?.spec?.clusterDeploymentName?.name;
|
|
36
|
+
|
|
37
|
+
type OnAgentChangeHostname<A = AgentK8sResource, B = BareMetalHostK8sResource> = (
|
|
38
|
+
agents: A[],
|
|
39
|
+
bmhs: B[],
|
|
40
|
+
onChangeHostname: (agent: A, hostname: string) => Promise<unknown>,
|
|
41
|
+
onChangeBMHHostname: (bmh: B, hostname: string) => Promise<unknown>,
|
|
42
|
+
) => (host: Host, hostname: string) => Promise<unknown>;
|
|
43
|
+
|
|
44
|
+
export const onAgentChangeHostname: OnAgentChangeHostname<
|
|
45
|
+
AgentK8sResource,
|
|
46
|
+
BareMetalHostK8sResource
|
|
47
|
+
> = (agents, bmhs, onChangeHostname, onChangeBMHHostname) => (host, hostname) => {
|
|
48
|
+
const agent = agents.find((a) => a.metadata?.uid === host.id);
|
|
49
|
+
let bmh: BareMetalHostK8sResource | undefined;
|
|
50
|
+
if (agent) {
|
|
51
|
+
const bmhName = agent.metadata?.labels?.[AGENT_BMH_NAME_LABEL_KEY];
|
|
52
|
+
if (!bmhName) {
|
|
53
|
+
return onChangeHostname(agent, hostname);
|
|
54
|
+
}
|
|
55
|
+
// If Agent is backed by BMH, we need to update hostname on BMH
|
|
56
|
+
bmh = bmhs.find(
|
|
57
|
+
(bmh) =>
|
|
58
|
+
bmh.metadata?.namespace === agent.metadata?.namespace && bmh.metadata?.name === bmhName,
|
|
59
|
+
);
|
|
60
|
+
} else {
|
|
61
|
+
bmh = bmhs.find((bmh) => bmh.metadata?.uid === host.id);
|
|
62
|
+
}
|
|
63
|
+
return bmh ? onChangeBMHHostname(bmh, hostname) : Promise.resolve(undefined);
|
|
64
|
+
};
|
|
@@ -135,14 +135,18 @@ export const getAICluster = ({
|
|
|
135
135
|
name: clusterDeployment.spec?.clusterName,
|
|
136
136
|
baseDnsDomain: clusterDeployment.spec?.baseDomain,
|
|
137
137
|
openshiftVersion: installVersion,
|
|
138
|
-
apiVips:
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
138
|
+
apiVips:
|
|
139
|
+
agentClusterInstall?.status?.apiVIP || agentClusterInstall?.spec?.apiVIP
|
|
140
|
+
? [
|
|
141
|
+
{
|
|
142
|
+
ip: agentClusterInstall?.status?.apiVIP || agentClusterInstall?.spec?.apiVIP,
|
|
143
|
+
},
|
|
144
|
+
]
|
|
145
|
+
: [],
|
|
146
|
+
ingressVips:
|
|
147
|
+
agentClusterInstall?.status?.ingressVIP || agentClusterInstall?.spec?.ingressVIP
|
|
148
|
+
? [{ ip: agentClusterInstall?.status?.ingressVIP || agentClusterInstall?.spec?.ingressVIP }]
|
|
149
|
+
: [],
|
|
146
150
|
highAvailabilityMode:
|
|
147
151
|
agentClusterInstall?.spec?.provisionRequirements?.controlPlaneAgents === 1 ? 'None' : 'Full',
|
|
148
152
|
status,
|
|
@@ -7,11 +7,12 @@ const EditAgentModal: React.FC<EditAgentModalProps> = ({ agent, onSave, ...rest
|
|
|
7
7
|
const [host] = agent ? getAIHosts([agent]) : [];
|
|
8
8
|
return (
|
|
9
9
|
<EditHostModal
|
|
10
|
+
isOpen
|
|
10
11
|
host={host}
|
|
11
12
|
inventory={agent?.status?.inventory}
|
|
12
13
|
{...rest}
|
|
13
14
|
onSave={async ({ hostname }) => {
|
|
14
|
-
agent && (await onSave(
|
|
15
|
+
agent && (await onSave(host, hostname));
|
|
15
16
|
rest.onClose();
|
|
16
17
|
}}
|
|
17
18
|
/>
|
|
@@ -25,6 +25,8 @@ import EditAgentModal from './EditAgentModal';
|
|
|
25
25
|
import { getAgentsHostsNames } from '../ClusterDeployment/helpers';
|
|
26
26
|
import { getErrorMessage } from '../../../common/utils';
|
|
27
27
|
import { useTranslation } from '../../../common/hooks/use-translation-wrapper';
|
|
28
|
+
import { onAgentChangeHostname } from '../helpers';
|
|
29
|
+
import { BareMetalHostK8sResource } from '../../types';
|
|
28
30
|
|
|
29
31
|
const getAgentsToAdd = (
|
|
30
32
|
selectedHostIds: ScaleUpFormValues['selectedHostIds'] | ScaleUpFormValues['autoSelectedHostIds'],
|
|
@@ -56,7 +58,9 @@ type ScaleUpModalProps = {
|
|
|
56
58
|
addHostsToCluster: (agentsToAdd: AgentK8sResource[]) => Promise<void>;
|
|
57
59
|
clusterDeployment: ClusterDeploymentK8sResource;
|
|
58
60
|
agents: AgentK8sResource[];
|
|
61
|
+
bareMetalHosts: BareMetalHostK8sResource[];
|
|
59
62
|
onChangeHostname: (agent: AgentK8sResource, hostname: string) => Promise<AgentK8sResource>;
|
|
63
|
+
onChangeBMHHostname: (bmh: BareMetalHostK8sResource, hostname: string) => Promise<unknown>;
|
|
60
64
|
onSetInstallationDiskId: AgentTableActions['onSetInstallationDiskId'];
|
|
61
65
|
isNutanix: boolean;
|
|
62
66
|
};
|
|
@@ -67,7 +71,9 @@ const ScaleUpModal: React.FC<ScaleUpModalProps> = ({
|
|
|
67
71
|
addHostsToCluster,
|
|
68
72
|
clusterDeployment,
|
|
69
73
|
agents,
|
|
74
|
+
bareMetalHosts,
|
|
70
75
|
onChangeHostname,
|
|
76
|
+
onChangeBMHHostname,
|
|
71
77
|
onSetInstallationDiskId,
|
|
72
78
|
isNutanix,
|
|
73
79
|
}) => {
|
|
@@ -176,9 +182,13 @@ const ScaleUpModal: React.FC<ScaleUpModalProps> = ({
|
|
|
176
182
|
{editAgent && (
|
|
177
183
|
<EditAgentModal
|
|
178
184
|
agent={editAgent}
|
|
179
|
-
isOpen
|
|
180
185
|
onClose={() => setEditAgent(undefined)}
|
|
181
|
-
onSave={
|
|
186
|
+
onSave={onAgentChangeHostname(
|
|
187
|
+
agents,
|
|
188
|
+
bareMetalHosts,
|
|
189
|
+
onChangeHostname,
|
|
190
|
+
onChangeBMHHostname,
|
|
191
|
+
)}
|
|
182
192
|
usedHostnames={getAgentsHostsNames(clusterAgents)}
|
|
183
193
|
/>
|
|
184
194
|
)}
|
|
@@ -1,68 +1,11 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { Alert, AlertActionLink, AlertVariant, Popover } from '@patternfly/react-core';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { HostSubnets } from '../../../types/clusters';
|
|
4
|
+
import { Host } from '@openshift-assisted/types/assisted-installer-service';
|
|
5
5
|
import { SelectField } from '../../ui';
|
|
6
6
|
import { NO_SUBNET_SET } from '../../../config';
|
|
7
7
|
import { useTranslation } from '../../../hooks/use-translation-wrapper';
|
|
8
8
|
|
|
9
|
-
interface SubnetHelperTextProps {
|
|
10
|
-
matchingSubnet: HostSubnet;
|
|
11
|
-
hosts: Cluster['hosts'];
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
const SubnetHelperText = ({ matchingSubnet, hosts }: SubnetHelperTextProps) => {
|
|
15
|
-
const { t } = useTranslation();
|
|
16
|
-
const excludedHosts =
|
|
17
|
-
hosts?.filter(
|
|
18
|
-
(host) =>
|
|
19
|
-
!['disabled', 'disconnected'].includes(host.status) &&
|
|
20
|
-
!matchingSubnet.hostIDs.includes(host.requestedHostname || ''),
|
|
21
|
-
) || [];
|
|
22
|
-
|
|
23
|
-
// Workaround for bug in CIM backend. hostIDs are empty
|
|
24
|
-
if (excludedHosts.length === 0 || !matchingSubnet.hostIDs.length) {
|
|
25
|
-
return null;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
const actionLinks = (
|
|
29
|
-
<Popover
|
|
30
|
-
position="right"
|
|
31
|
-
bodyContent={
|
|
32
|
-
<ul>
|
|
33
|
-
{excludedHosts
|
|
34
|
-
.sort(
|
|
35
|
-
(hostA, hostB) =>
|
|
36
|
-
hostA.requestedHostname?.localeCompare(hostB.requestedHostname || '') || 0,
|
|
37
|
-
)
|
|
38
|
-
.map((host) => (
|
|
39
|
-
<li key={host.id}>{host.requestedHostname || host.id}</li>
|
|
40
|
-
))}
|
|
41
|
-
</ul>
|
|
42
|
-
}
|
|
43
|
-
minWidth="30rem"
|
|
44
|
-
maxWidth="50rem"
|
|
45
|
-
>
|
|
46
|
-
<AlertActionLink id="form-input-hostSubnet-field-helper-view-excluded">
|
|
47
|
-
{t('ai:View {{count}} affected host', {
|
|
48
|
-
count: excludedHosts.length,
|
|
49
|
-
})}
|
|
50
|
-
</AlertActionLink>
|
|
51
|
-
</Popover>
|
|
52
|
-
);
|
|
53
|
-
|
|
54
|
-
return (
|
|
55
|
-
<Alert
|
|
56
|
-
title={t('ai:This subnet range is not available on all hosts')}
|
|
57
|
-
variant={AlertVariant.warning}
|
|
58
|
-
actionLinks={actionLinks}
|
|
59
|
-
isInline
|
|
60
|
-
>
|
|
61
|
-
{t('ai:Hosts outside of this range will not be included in the new cluster.')}
|
|
62
|
-
</Alert>
|
|
63
|
-
);
|
|
64
|
-
};
|
|
65
|
-
|
|
66
9
|
export interface AvailableSubnetsControlProps {
|
|
67
10
|
hostSubnets: HostSubnets;
|
|
68
11
|
hosts: Host[];
|
|
@@ -79,14 +22,60 @@ export const AvailableSubnetsControl = ({
|
|
|
79
22
|
const { t } = useTranslation();
|
|
80
23
|
const getHelperText = (value: string) => {
|
|
81
24
|
const matchingSubnet = hostSubnets.find((hn) => hn.subnet === value);
|
|
82
|
-
if (matchingSubnet) {
|
|
25
|
+
if (matchingSubnet && isMultiNodeCluster) {
|
|
26
|
+
const excludedHosts =
|
|
27
|
+
hosts?.filter(
|
|
28
|
+
(host) =>
|
|
29
|
+
!['disabled', 'disconnected'].includes(host.status) &&
|
|
30
|
+
!matchingSubnet.hostIDs.includes(host.requestedHostname || ''),
|
|
31
|
+
) || [];
|
|
32
|
+
|
|
33
|
+
// Workaround for bug in CIM backend. hostIDs are empty
|
|
34
|
+
if (excludedHosts.length === 0 || !matchingSubnet.hostIDs.length) {
|
|
35
|
+
return undefined;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
const actionLinks = (
|
|
39
|
+
<Popover
|
|
40
|
+
position="right"
|
|
41
|
+
bodyContent={
|
|
42
|
+
<ul>
|
|
43
|
+
{excludedHosts
|
|
44
|
+
.sort(
|
|
45
|
+
(hostA, hostB) =>
|
|
46
|
+
hostA.requestedHostname?.localeCompare(hostB.requestedHostname || '') || 0,
|
|
47
|
+
)
|
|
48
|
+
.map((host) => (
|
|
49
|
+
<li key={host.id}>{host.requestedHostname || host.id}</li>
|
|
50
|
+
))}
|
|
51
|
+
</ul>
|
|
52
|
+
}
|
|
53
|
+
minWidth="30rem"
|
|
54
|
+
maxWidth="50rem"
|
|
55
|
+
>
|
|
56
|
+
<AlertActionLink id="form-input-hostSubnet-field-helper-view-excluded">
|
|
57
|
+
{t('ai:View {{count}} affected host', {
|
|
58
|
+
count: excludedHosts.length,
|
|
59
|
+
})}
|
|
60
|
+
</AlertActionLink>
|
|
61
|
+
</Popover>
|
|
62
|
+
);
|
|
63
|
+
|
|
83
64
|
return (
|
|
84
|
-
|
|
65
|
+
<Alert
|
|
66
|
+
title={t('ai:This subnet range is not available on all hosts')}
|
|
67
|
+
variant={AlertVariant.warning}
|
|
68
|
+
actionLinks={actionLinks}
|
|
69
|
+
isInline
|
|
70
|
+
>
|
|
71
|
+
{t('ai:Hosts outside of this range will not be included in the new cluster.')}
|
|
72
|
+
</Alert>
|
|
85
73
|
);
|
|
86
74
|
}
|
|
87
75
|
|
|
88
76
|
return undefined;
|
|
89
77
|
};
|
|
78
|
+
|
|
90
79
|
const hostSubnetLength = hostSubnets.length;
|
|
91
80
|
return (
|
|
92
81
|
<SelectField
|
|
@@ -122,7 +122,7 @@ export const VirtualIPControlGroup = ({
|
|
|
122
122
|
<>
|
|
123
123
|
<FormikStaticField
|
|
124
124
|
label={t('ai:API IP')}
|
|
125
|
-
name="
|
|
125
|
+
name="apiVips.0.ip"
|
|
126
126
|
helperText={apiVipHelperText}
|
|
127
127
|
value={selectApiVip(cluster)}
|
|
128
128
|
isValid={!apiVipFailedValidationMessage}
|
|
@@ -136,7 +136,7 @@ export const VirtualIPControlGroup = ({
|
|
|
136
136
|
</FormikStaticField>
|
|
137
137
|
<FormikStaticField
|
|
138
138
|
label={t('ai:Ingress IP')}
|
|
139
|
-
name="
|
|
139
|
+
name="ingressVips.0.ip"
|
|
140
140
|
helperText={ingressVipHelperText}
|
|
141
141
|
value={selectIngressVip(cluster)}
|
|
142
142
|
isValid={!ingressVipFailedValidationMessage}
|
|
@@ -153,13 +153,13 @@ export const VirtualIPControlGroup = ({
|
|
|
153
153
|
<>
|
|
154
154
|
<InputField
|
|
155
155
|
label={t('ai:API IP')}
|
|
156
|
-
name="
|
|
156
|
+
name="apiVips.0.ip"
|
|
157
157
|
helperText={apiVipHelperText}
|
|
158
158
|
isRequired
|
|
159
159
|
isDisabled={!hostSubnets.length || values.hostSubnet === NO_SUBNET_SET}
|
|
160
160
|
/>
|
|
161
161
|
<InputField
|
|
162
|
-
name="
|
|
162
|
+
name="ingressVips.0.ip"
|
|
163
163
|
label={t('ai:Ingress IP')}
|
|
164
164
|
helperText={ingressVipHelperText}
|
|
165
165
|
isRequired
|
|
@@ -56,6 +56,7 @@ const EditHostForm = ({
|
|
|
56
56
|
onHostSaveError,
|
|
57
57
|
getEditErrorMessage,
|
|
58
58
|
}: EditHostFormProps) => {
|
|
59
|
+
const { t } = useTranslation();
|
|
59
60
|
const hostnameInputRef = React.useRef<HTMLInputElement>();
|
|
60
61
|
const [isSaveInProgress, setIsSaveInProgress] = React.useState<boolean>(false);
|
|
61
62
|
|
|
@@ -71,7 +72,7 @@ const EditHostForm = ({
|
|
|
71
72
|
hostId: host.id,
|
|
72
73
|
hostname: requestedHostname || '',
|
|
73
74
|
};
|
|
74
|
-
|
|
75
|
+
|
|
75
76
|
return (
|
|
76
77
|
<Formik
|
|
77
78
|
validateOnMount
|
|
@@ -110,11 +111,19 @@ const EditHostForm = ({
|
|
|
110
111
|
status={status as StatusErrorType}
|
|
111
112
|
onClose={() => setStatus({ error: null })}
|
|
112
113
|
/>
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
114
|
+
{canHostnameBeChanged(host.status) ? (
|
|
115
|
+
<Alert
|
|
116
|
+
variant={AlertVariant.info}
|
|
117
|
+
title={t('ai:This name will replace the original discovered hostname.')}
|
|
118
|
+
isInline
|
|
119
|
+
/>
|
|
120
|
+
) : (
|
|
121
|
+
<Alert
|
|
122
|
+
variant={AlertVariant.warning}
|
|
123
|
+
title={t('ai:The hostname cannot be changed.')}
|
|
124
|
+
isInline
|
|
125
|
+
/>
|
|
126
|
+
)}
|
|
118
127
|
<StaticTextField name="discoveredHostname" label={t('ai:Discovered hostname')}>
|
|
119
128
|
{hostname || ''}
|
|
120
129
|
</StaticTextField>
|
|
@@ -134,6 +143,7 @@ const EditHostForm = ({
|
|
|
134
143
|
data-testid="change-hostname-form__button-change"
|
|
135
144
|
type={ButtonType.submit}
|
|
136
145
|
isDisabled={isSubmitting || !isValid || !dirty}
|
|
146
|
+
isLoading={isSubmitting}
|
|
137
147
|
>
|
|
138
148
|
{t('ai:Change')}
|
|
139
149
|
</Button>
|
|
@@ -3,6 +3,8 @@ import { Address4, Address6 } from 'ip-address';
|
|
|
3
3
|
import isCIDR from 'is-cidr';
|
|
4
4
|
import { isInSubnet } from 'is-in-subnet';
|
|
5
5
|
import * as Yup from 'yup';
|
|
6
|
+
import { head } from 'lodash-es';
|
|
7
|
+
import parseUrl from 'parse-url';
|
|
6
8
|
|
|
7
9
|
import { TFunction } from 'i18next';
|
|
8
10
|
import {
|
|
@@ -27,7 +29,6 @@ import {
|
|
|
27
29
|
} from './constants';
|
|
28
30
|
import { allSubnetsIPv4, getAddress, trimCommaSeparatedList, trimSshPublicKey } from './utils';
|
|
29
31
|
import { selectApiVip, selectIngressVip } from '../../../selectors';
|
|
30
|
-
import { head } from 'lodash-es';
|
|
31
32
|
import { ClusterDetailsValues } from '../../clusterWizard/types';
|
|
32
33
|
|
|
33
34
|
const ALPHANUMERIC_REGEX = /^[a-zA-Z0-9]+$/;
|
|
@@ -45,10 +46,6 @@ const IP_V4_ZERO = '0.0.0.0';
|
|
|
45
46
|
const IP_V6_ZERO = '0000:0000:0000:0000:0000:0000:0000:0000';
|
|
46
47
|
const MAC_REGEX = /^([0-9A-Fa-f]{2}[:]){5}([0-9A-Fa-f]{2})$/;
|
|
47
48
|
const HOST_NAME_REGEX = /^[^.]{1,63}(?:[.][^.]{1,63})*$/;
|
|
48
|
-
|
|
49
|
-
// Source of information: https://github.com/metal3-io/baremetal-operator/blob/main/docs/api.md#baremetalhost-spec
|
|
50
|
-
const BMC_REGEX =
|
|
51
|
-
/^((redfish-virtualmedia|idrac-virtualmedia)(\+https?)?:(\/\/([a-z0-9\-._~%!$&'()*+,;=]+@)?([a-z0-9\-._~%]+|\[[a-f0-9:.]+\]|\[v[a-f0-9][a-z0-9\-._~%!$&'()*+,;=:]+\])(:[0-9]+)?(\/[a-z0-9\-._~%!$&'()*+,;=:@]+)*\/?|(\/?[a-z0-9\-._~%!$&'()*+,;=:@]+(\/[a-z0-9\-._~%!$&'()*+,;=:@]+)*\/?)?)|([a-z0-9\-._~%!$&'()*+,;=@]+(\/[a-z0-9\-._~%!$&'()*+,;=:@]+)*\/?|(\/[a-z0-9\-._~%!$&'()*+,;=:@]+)+\/?))(\?[a-z0-9\-._~%!$&'()*+,;=:@/?]*)?(#[a-z0-9\-._~%!$&'()*+,;=:@/?]*)?$/i;
|
|
52
49
|
const LOCATION_CHARS_REGEX = /^[a-zA-Z0-9-._]*$/;
|
|
53
50
|
|
|
54
51
|
export const nameValidationSchema = (
|
|
@@ -318,7 +315,7 @@ export const vipArrayValidationSchema = <T extends Yup.Maybe<Yup.AnyObject>>(
|
|
|
318
315
|
values: NetworkConfigurationValues,
|
|
319
316
|
initialValues?: ApiVip[] | IngressVip[],
|
|
320
317
|
) =>
|
|
321
|
-
(values.
|
|
318
|
+
(values.managedNetworkingType === 'clusterManaged'
|
|
322
319
|
? Yup.array<T>().of(
|
|
323
320
|
Yup.object({
|
|
324
321
|
clusterId: Yup.string(),
|
|
@@ -643,10 +640,16 @@ export const day2ApiVipValidationSchema = Yup.string().test(
|
|
|
643
640
|
export const bmcAddressValidationSchema = (t: TFunction) => {
|
|
644
641
|
const bmcAddressValidationMessagesList = bmcAddressValidationMessages(t);
|
|
645
642
|
|
|
646
|
-
return Yup.string()
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
643
|
+
return Yup.string()
|
|
644
|
+
.required()
|
|
645
|
+
.test('valid-bmc-address', bmcAddressValidationMessagesList.INVALID_VALUE, (val) => {
|
|
646
|
+
try {
|
|
647
|
+
const url = parseUrl(val);
|
|
648
|
+
return ['redfish-virtualmedia', 'idrac-virtualmedia'].includes(url.protocol as string);
|
|
649
|
+
} catch (error) {
|
|
650
|
+
return false;
|
|
651
|
+
}
|
|
652
|
+
});
|
|
650
653
|
};
|
|
651
654
|
export const locationValidationSchema = (t: TFunction) => {
|
|
652
655
|
const locationValidationMessagesList = locationValidationMessages(t);
|
|
@@ -33,7 +33,7 @@ export const hostRoles = (t: TFunction): HostRole[] => [
|
|
|
33
33
|
},
|
|
34
34
|
{
|
|
35
35
|
value: 'worker',
|
|
36
|
-
label: t('ai:Worker'),
|
|
36
|
+
label: t('ai:Worker', { count: 1 }),
|
|
37
37
|
description: t(
|
|
38
38
|
'ai:Runs application workloads. Connect at least 5 hosts to enable dedicated workers.',
|
|
39
39
|
),
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"dependencies": {
|
|
3
|
-
"@openshift-assisted/locales": "2.14.
|
|
4
|
-
"@openshift-assisted/types": "2.14.
|
|
3
|
+
"@openshift-assisted/locales": "2.14.3-cim",
|
|
4
|
+
"@openshift-assisted/types": "2.14.3-cim",
|
|
5
5
|
"@openshift-console/dynamic-plugin-sdk": "0.0.3",
|
|
6
6
|
"@patternfly/patternfly": "5.2.0",
|
|
7
7
|
"@patternfly/react-code-editor": "5.2.0",
|
|
@@ -25,6 +25,7 @@
|
|
|
25
25
|
"is-in-subnet": "^4",
|
|
26
26
|
"js-yaml": "^4.1.0",
|
|
27
27
|
"lodash-es": "^4.17.21",
|
|
28
|
+
"parse-url": "^9.2.0",
|
|
28
29
|
"prism-react-renderer": "^1.1.1",
|
|
29
30
|
"react-error-boundary": "^3.1.4",
|
|
30
31
|
"react-measure": "^2.5.2",
|
|
@@ -139,5 +140,5 @@
|
|
|
139
140
|
]
|
|
140
141
|
}
|
|
141
142
|
},
|
|
142
|
-
"version": "2.14.
|
|
143
|
+
"version": "2.14.3-cim"
|
|
143
144
|
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
|
-
import { AgentClusterInstallK8sResource } from '../../types';
|
|
3
|
-
type ClusterDeploymentCreateProgressProps = {
|
|
4
|
-
agentClusterInstall: AgentClusterInstallK8sResource;
|
|
5
|
-
toDetails: VoidFunction;
|
|
6
|
-
toListView: VoidFunction;
|
|
7
|
-
};
|
|
8
|
-
declare const ClusterDeploymentCreateProgress: React.FC<ClusterDeploymentCreateProgressProps>;
|
|
9
|
-
export default ClusterDeploymentCreateProgress;
|
|
10
|
-
//# sourceMappingURL=ClusterDeploymentCreateProgress.d.ts.map
|
package/build/@types/cim/components/ClusterDeployment/ClusterDeploymentCreateProgress.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ClusterDeploymentCreateProgress.d.ts","sourceRoot":"","sources":["../../../../../lib/cim/components/ClusterDeployment/ClusterDeploymentCreateProgress.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAc/B,OAAO,EAAE,8BAA8B,EAAE,MAAM,aAAa,CAAC;AAO7D,KAAK,oCAAoC,GAAG;IAC1C,mBAAmB,EAAE,8BAA8B,CAAC;IACpD,SAAS,EAAE,YAAY,CAAC;IACxB,UAAU,EAAE,YAAY,CAAC;CAC1B,CAAC;AAEF,QAAA,MAAM,+BAA+B,EAAE,KAAK,CAAC,EAAE,CAAC,oCAAoC,CAiDnF,CAAC;AAEF,eAAe,+BAA+B,CAAC"}
|