@openshift-assisted/ui-lib 2.17.1-cim → 2.17.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/clusterDetails/ClusterDeploymentDetailsForm.d.ts.map +1 -1
- package/build/@types/cim/components/ClusterDeployment/clusterDetails/ClusterDetailsFormFields.d.ts +0 -1
- package/build/@types/cim/components/ClusterDeployment/clusterDetails/ClusterDetailsFormFields.d.ts.map +1 -1
- package/build/@types/cim/components/ClusterDeployment/hostSelection/ClusterDeploymentHostSelectionStep.d.ts.map +1 -1
- package/build/@types/cim/components/ClusterDeployment/use-networking-formik.d.ts.map +1 -1
- package/build/@types/cim/components/Hypershift/HostedClusterWizard/HostsStep/HostsStep.d.ts.map +1 -1
- package/build/@types/cim/components/InfraEnv/InfraEnvFormPage.d.ts.map +1 -1
- package/build/@types/cim/components/helpers/versions.d.ts +1 -1
- package/build/@types/cim/components/helpers/versions.d.ts.map +1 -1
- package/build/@types/cim/components/modals/CimConfiguration/CimConfigurationModal.d.ts.map +1 -1
- package/build/@types/cim/components/modals/EditProxyModal.d.ts.map +1 -1
- package/build/@types/cim/components/modals/EditSSHKeyModal.d.ts.map +1 -1
- package/build/@types/common/components/clusterConfiguration/DiscoveryImageConfigForm.d.ts.map +1 -1
- package/build/@types/common/components/clusterWizard/clusterDetailsValidation.d.ts.map +1 -1
- package/build/@types/common/components/hosts/AdditionalNTPSourcesDialog.d.ts.map +1 -1
- package/build/@types/common/components/hosts/EditHostForm.d.ts.map +1 -1
- package/build/@types/common/components/hosts/MassChangeHostnameModal.d.ts.map +1 -1
- package/build/@types/common/components/ui/formik/index.d.ts +0 -2
- package/build/@types/common/components/ui/formik/index.d.ts.map +1 -1
- package/build/@types/common/index.d.ts +1 -0
- package/build/@types/common/index.d.ts.map +1 -1
- package/build/@types/common/utils.d.ts +2 -2
- package/build/@types/common/utils.d.ts.map +1 -1
- package/build/@types/common/validationSchemas/addressValidation.d.ts +18 -0
- package/build/@types/common/validationSchemas/addressValidation.d.ts.map +1 -0
- package/build/@types/common/validationSchemas/clusterDetailsValidation.d.ts +8 -0
- package/build/@types/common/validationSchemas/clusterDetailsValidation.d.ts.map +1 -0
- package/build/@types/common/{components/ui/formik → validationSchemas}/constants.d.ts +1 -3
- package/build/@types/common/validationSchemas/constants.d.ts.map +1 -0
- package/build/@types/common/validationSchemas/hostnameValidation.d.ts +4 -0
- package/build/@types/common/validationSchemas/hostnameValidation.d.ts.map +1 -0
- package/build/@types/common/validationSchemas/index.d.ts +11 -0
- package/build/@types/common/validationSchemas/index.d.ts.map +1 -0
- package/build/@types/common/validationSchemas/networkingValidation.d.ts +18 -0
- package/build/@types/common/validationSchemas/networkingValidation.d.ts.map +1 -0
- package/build/@types/common/validationSchemas/ntpValidation.d.ts +4 -0
- package/build/@types/common/validationSchemas/ntpValidation.d.ts.map +1 -0
- package/build/@types/common/validationSchemas/proxyValidation.d.ts +11 -0
- package/build/@types/common/validationSchemas/proxyValidation.d.ts.map +1 -0
- package/build/@types/common/validationSchemas/pullSecretValidation.d.ts +4 -0
- package/build/@types/common/validationSchemas/pullSecretValidation.d.ts.map +1 -0
- package/build/@types/common/validationSchemas/regexes.d.ts +14 -0
- package/build/@types/common/validationSchemas/regexes.d.ts.map +1 -0
- package/build/@types/common/validationSchemas/sshValidation.d.ts +5 -0
- package/build/@types/common/validationSchemas/sshValidation.d.ts.map +1 -0
- package/build/@types/common/validationSchemas/utils.d.ts +7 -0
- package/build/@types/common/validationSchemas/utils.d.ts.map +1 -0
- package/build/@types/ocm/components/clusterConfiguration/OcmDiscoveryImageConfigForm.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/manifestsConfiguration/components/CustomManifests.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/manifestsConfiguration/components/customManifestsValidationSchema.d.ts +2 -1
- package/build/@types/ocm/components/clusterConfiguration/manifestsConfiguration/components/customManifestsValidationSchema.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfigurationForm.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/networkConfigurationValidation.d.ts +2 -1
- package/build/@types/ocm/components/clusterConfiguration/networkConfiguration/networkConfigurationValidation.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/staticIp/components/FormViewHosts/FormViewHosts.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/staticIp/components/FormViewHosts/formViewHostsValidationSchema.d.ts +2 -1
- package/build/@types/ocm/components/clusterConfiguration/staticIp/components/FormViewHosts/formViewHostsValidationSchema.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/staticIp/components/YamlView/YamlView.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterConfiguration/staticIp/components/YamlView/yamlViewValidationSchema.d.ts +2 -1
- package/build/@types/ocm/components/clusterConfiguration/staticIp/components/YamlView/yamlViewValidationSchema.d.ts.map +1 -1
- package/build/@types/ocm/components/clusterWizard/disconnected/OptionalConfigurationsStep.d.ts.map +1 -1
- package/build/@types/ocm/components/hosts/UpdateDay2ApiVipForm.d.ts.map +1 -1
- package/build/cjs/cim/components/Agent/BMCForm.js +3 -3
- package/build/cjs/cim/components/Agent/BMCForm.js.map +1 -1
- package/build/cjs/cim/components/ClusterDeployment/clusterDetails/ClusterDeploymentDetailsForm.js +9 -15
- package/build/cjs/cim/components/ClusterDeployment/clusterDetails/ClusterDeploymentDetailsForm.js.map +1 -1
- package/build/cjs/cim/components/ClusterDeployment/clusterDetails/ClusterDetailsFormFields.js +8 -6
- package/build/cjs/cim/components/ClusterDeployment/clusterDetails/ClusterDetailsFormFields.js.map +1 -1
- package/build/cjs/cim/components/ClusterDeployment/hostSelection/ClusterDeploymentHostSelectionStep.js +1 -3
- package/build/cjs/cim/components/ClusterDeployment/hostSelection/ClusterDeploymentHostSelectionStep.js.map +1 -1
- package/build/cjs/cim/components/ClusterDeployment/use-networking-formik.js +16 -15
- package/build/cjs/cim/components/ClusterDeployment/use-networking-formik.js.map +1 -1
- package/build/cjs/cim/components/Hypershift/HostedClusterWizard/DetailsStep/DetailsStep.js +2 -2
- package/build/cjs/cim/components/Hypershift/HostedClusterWizard/DetailsStep/DetailsStep.js.map +1 -1
- package/build/cjs/cim/components/Hypershift/HostedClusterWizard/HostsStep/HostsStep.js +2 -11
- package/build/cjs/cim/components/Hypershift/HostedClusterWizard/HostsStep/HostsStep.js.map +1 -1
- package/build/cjs/cim/components/Hypershift/HostedClusterWizard/NetworkStep/NetworkStep.js +8 -8
- package/build/cjs/cim/components/Hypershift/HostedClusterWizard/NetworkStep/NetworkStep.js.map +1 -1
- package/build/cjs/cim/components/InfraEnv/InfraEnvFormPage.js +8 -6
- package/build/cjs/cim/components/InfraEnv/InfraEnvFormPage.js.map +1 -1
- package/build/cjs/cim/components/helpers/versions.js +42 -27
- package/build/cjs/cim/components/helpers/versions.js.map +1 -1
- package/build/cjs/cim/components/modals/CimConfiguration/CimConfigurationModal.js +9 -3
- package/build/cjs/cim/components/modals/CimConfiguration/CimConfigurationModal.js.map +1 -1
- package/build/cjs/cim/components/modals/EditProxyModal.js +5 -3
- package/build/cjs/cim/components/modals/EditProxyModal.js.map +1 -1
- package/build/cjs/cim/components/modals/EditPullSecretModal.js +1 -1
- package/build/cjs/cim/components/modals/EditPullSecretModal.js.map +1 -1
- package/build/cjs/cim/components/modals/EditSSHKeyModal.js +3 -3
- package/build/cjs/cim/components/modals/EditSSHKeyModal.js.map +1 -1
- package/build/cjs/common/components/clusterConfiguration/DiscoveryImageConfigForm.js +7 -6
- package/build/cjs/common/components/clusterConfiguration/DiscoveryImageConfigForm.js.map +1 -1
- package/build/cjs/common/components/clusterWizard/clusterDetailsValidation.js +8 -8
- package/build/cjs/common/components/clusterWizard/clusterDetailsValidation.js.map +1 -1
- package/build/cjs/common/components/hosts/AdditionalNTPSourcesDialog.js +2 -1
- package/build/cjs/common/components/hosts/AdditionalNTPSourcesDialog.js.map +1 -1
- package/build/cjs/common/components/hosts/EditHostForm.js +3 -2
- package/build/cjs/common/components/hosts/EditHostForm.js.map +1 -1
- package/build/cjs/common/components/hosts/MassChangeHostnameModal.js +6 -5
- package/build/cjs/common/components/hosts/MassChangeHostnameModal.js.map +1 -1
- package/build/cjs/common/components/ui/formik/index.js +0 -2
- package/build/cjs/common/components/ui/formik/index.js.map +1 -1
- package/build/cjs/common/config/docs_links.js +1 -1
- package/build/cjs/common/index.js +1 -0
- package/build/cjs/common/index.js.map +1 -1
- package/build/cjs/common/utils.js +5 -3
- package/build/cjs/common/utils.js.map +1 -1
- package/build/cjs/common/validationSchemas/addressValidation.js +246 -0
- package/build/cjs/common/validationSchemas/addressValidation.js.map +1 -0
- package/build/cjs/common/validationSchemas/clusterDetailsValidation.js +104 -0
- package/build/cjs/common/validationSchemas/clusterDetailsValidation.js.map +1 -0
- package/build/cjs/common/{components/ui/formik → validationSchemas}/constants.js +3 -5
- package/build/cjs/common/validationSchemas/constants.js.map +1 -0
- package/build/cjs/common/validationSchemas/hostnameValidation.js +36 -0
- package/build/cjs/common/validationSchemas/hostnameValidation.js.map +1 -0
- package/build/cjs/common/validationSchemas/index.js +17 -0
- package/build/cjs/common/validationSchemas/index.js.map +1 -0
- package/build/cjs/common/validationSchemas/networkingValidation.js +74 -0
- package/build/cjs/common/validationSchemas/networkingValidation.js.map +1 -0
- package/build/cjs/common/validationSchemas/ntpValidation.js +25 -0
- package/build/cjs/common/validationSchemas/ntpValidation.js.map +1 -0
- package/build/cjs/common/validationSchemas/proxyValidation.js +43 -0
- package/build/cjs/common/validationSchemas/proxyValidation.js.map +1 -0
- package/build/cjs/common/validationSchemas/pullSecretValidation.js +21 -0
- package/build/cjs/common/validationSchemas/pullSecretValidation.js.map +1 -0
- package/build/cjs/common/validationSchemas/regexes.js +17 -0
- package/build/cjs/common/validationSchemas/regexes.js.map +1 -0
- package/build/cjs/common/validationSchemas/sshValidation.js +32 -0
- package/build/cjs/common/validationSchemas/sshValidation.js.map +1 -0
- package/build/cjs/common/validationSchemas/utils.js +40 -0
- package/build/cjs/common/validationSchemas/utils.js.map +1 -0
- package/build/cjs/ocm/components/clusterConfiguration/OcmDiscoveryImageConfigForm.js +7 -6
- package/build/cjs/ocm/components/clusterConfiguration/OcmDiscoveryImageConfigForm.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/manifestsConfiguration/components/CustomManifests.js +4 -2
- package/build/cjs/ocm/components/clusterConfiguration/manifestsConfiguration/components/CustomManifests.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/manifestsConfiguration/components/customManifestsValidationSchema.js +7 -6
- package/build/cjs/ocm/components/clusterConfiguration/manifestsConfiguration/components/customManifestsValidationSchema.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfigurationForm.js +2 -1
- package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfigurationForm.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/networkConfigurationValidation.js +11 -11
- package/build/cjs/ocm/components/clusterConfiguration/networkConfiguration/networkConfigurationValidation.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/staticIp/components/FormViewHosts/FormViewHosts.js +3 -1
- package/build/cjs/ocm/components/clusterConfiguration/staticIp/components/FormViewHosts/FormViewHosts.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/staticIp/components/FormViewHosts/formViewHostsValidationSchema.js +6 -6
- package/build/cjs/ocm/components/clusterConfiguration/staticIp/components/FormViewHosts/formViewHostsValidationSchema.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/staticIp/components/YamlView/YamlView.js +3 -1
- package/build/cjs/ocm/components/clusterConfiguration/staticIp/components/YamlView/YamlView.js.map +1 -1
- package/build/cjs/ocm/components/clusterConfiguration/staticIp/components/YamlView/yamlViewValidationSchema.js +12 -12
- package/build/cjs/ocm/components/clusterConfiguration/staticIp/components/YamlView/yamlViewValidationSchema.js.map +1 -1
- package/build/cjs/ocm/components/clusterWizard/disconnected/OptionalConfigurationsStep.js +4 -3
- package/build/cjs/ocm/components/clusterWizard/disconnected/OptionalConfigurationsStep.js.map +1 -1
- package/build/cjs/ocm/components/hosts/UpdateDay2ApiVipForm.js +2 -1
- package/build/cjs/ocm/components/hosts/UpdateDay2ApiVipForm.js.map +1 -1
- package/lib/cim/components/Agent/BMCForm.tsx +3 -3
- package/lib/cim/components/ClusterDeployment/clusterDetails/ClusterDeploymentDetailsForm.tsx +8 -18
- package/lib/cim/components/ClusterDeployment/clusterDetails/ClusterDetailsFormFields.tsx +7 -10
- package/lib/cim/components/ClusterDeployment/hostSelection/ClusterDeploymentHostSelectionStep.tsx +1 -3
- package/lib/cim/components/ClusterDeployment/use-networking-formik.ts +19 -15
- package/lib/cim/components/Hypershift/HostedClusterWizard/DetailsStep/DetailsStep.tsx +2 -2
- package/lib/cim/components/Hypershift/HostedClusterWizard/HostsStep/HostsStep.tsx +2 -13
- package/lib/cim/components/Hypershift/HostedClusterWizard/NetworkStep/NetworkStep.tsx +8 -8
- package/lib/cim/components/InfraEnv/InfraEnvFormPage.tsx +8 -6
- package/lib/cim/components/helpers/versions.ts +51 -34
- package/lib/cim/components/modals/CimConfiguration/CimConfigurationModal.tsx +9 -3
- package/lib/cim/components/modals/EditProxyModal.tsx +6 -3
- package/lib/cim/components/modals/EditPullSecretModal.tsx +1 -1
- package/lib/cim/components/modals/EditSSHKeyModal.tsx +8 -6
- package/lib/common/components/clusterConfiguration/DiscoveryImageConfigForm.tsx +9 -8
- package/lib/common/components/clusterWizard/clusterDetailsValidation.ts +21 -11
- package/lib/common/components/hosts/AdditionalNTPSourcesDialog.tsx +3 -6
- package/lib/common/components/hosts/EditHostForm.tsx +2 -8
- package/lib/common/components/hosts/MassChangeHostnameModal.tsx +4 -6
- package/lib/common/components/ui/formik/index.tsx +0 -2
- package/lib/common/config/docs_links.ts +1 -1
- package/lib/common/index.ts +2 -0
- package/lib/common/utils.ts +5 -7
- package/lib/common/{components/ui/formik → validationSchemas}/_validationSchemas.test.ts +51 -39
- package/lib/common/validationSchemas/addressValidation.tsx +349 -0
- package/lib/common/validationSchemas/clusterDetailsValidation.tsx +168 -0
- package/lib/common/{components/ui/formik → validationSchemas}/constants.tsx +3 -6
- package/lib/common/validationSchemas/hostnameValidation.tsx +46 -0
- package/lib/common/validationSchemas/index.tsx +11 -0
- package/lib/common/validationSchemas/networkingValidation.tsx +113 -0
- package/lib/common/validationSchemas/ntpValidation.tsx +30 -0
- package/lib/common/validationSchemas/proxyValidation.tsx +67 -0
- package/lib/common/validationSchemas/pullSecretValidation.tsx +24 -0
- package/lib/common/validationSchemas/regexes.tsx +22 -0
- package/lib/common/validationSchemas/sshValidation.tsx +46 -0
- package/lib/common/validationSchemas/utils.tsx +36 -0
- package/lib/ocm/components/clusterConfiguration/OcmDiscoveryImageConfigForm.tsx +17 -15
- package/lib/ocm/components/clusterConfiguration/manifestsConfiguration/components/CustomManifests.tsx +4 -2
- package/lib/ocm/components/clusterConfiguration/manifestsConfiguration/components/customManifestsValidationSchema.tsx +31 -31
- package/lib/ocm/components/clusterConfiguration/networkConfiguration/NetworkConfigurationForm.tsx +9 -2
- package/lib/ocm/components/clusterConfiguration/networkConfiguration/networkConfigurationValidation.ts +14 -16
- package/lib/ocm/components/clusterConfiguration/staticIp/components/FormViewHosts/FormViewHosts.tsx +3 -1
- package/lib/ocm/components/clusterConfiguration/staticIp/components/FormViewHosts/formViewHostsValidationSchema.tsx +11 -6
- package/lib/ocm/components/clusterConfiguration/staticIp/components/YamlView/YamlView.tsx +5 -1
- package/lib/ocm/components/clusterConfiguration/staticIp/components/YamlView/yamlViewValidationSchema.tsx +33 -28
- package/lib/ocm/components/clusterWizard/disconnected/OptionalConfigurationsStep.tsx +5 -3
- package/lib/ocm/components/hosts/UpdateDay2ApiVipForm.tsx +3 -7
- package/package.json +3 -3
- package/build/@types/common/components/ui/formik/constants.d.ts.map +0 -1
- package/build/@types/common/components/ui/formik/validationSchemas.d.ts +0 -50
- package/build/@types/common/components/ui/formik/validationSchemas.d.ts.map +0 -1
- package/build/cjs/common/components/ui/formik/constants.js.map +0 -1
- package/build/cjs/common/components/ui/formik/validationSchemas.js +0 -553
- package/build/cjs/common/components/ui/formik/validationSchemas.js.map +0 -1
- package/lib/common/components/ui/formik/validationSchemas.ts +0 -803
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import * as Yup from 'yup';
|
|
3
|
+
import { TFunction } from 'i18next';
|
|
3
4
|
import {
|
|
4
5
|
Alert,
|
|
5
6
|
Button,
|
|
@@ -20,11 +21,12 @@ import { EditSSHKeyFormikValues } from './types';
|
|
|
20
21
|
import { getWarningMessage } from './utils';
|
|
21
22
|
import { useTranslation } from '../../../common/hooks/use-translation-wrapper';
|
|
22
23
|
|
|
23
|
-
const validationSchema =
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
24
|
+
const validationSchema = (t: TFunction) =>
|
|
25
|
+
Yup.object({
|
|
26
|
+
sshPublicKey: sshPublicKeyValidationSchema(t).required(
|
|
27
|
+
t('ai:An SSH key is required to debug hosts as they register.'),
|
|
28
|
+
),
|
|
29
|
+
});
|
|
28
30
|
|
|
29
31
|
export type EditSSHKeyModalProps = {
|
|
30
32
|
isOpen: boolean;
|
|
@@ -61,7 +63,7 @@ const EditSSHKeyModal: React.FC<EditSSHKeyModalProps> = ({
|
|
|
61
63
|
initialValues={{
|
|
62
64
|
sshPublicKey: infraEnv.spec?.sshAuthorizedKey || '',
|
|
63
65
|
}}
|
|
64
|
-
validationSchema={validationSchema}
|
|
66
|
+
validationSchema={validationSchema(t)}
|
|
65
67
|
onSubmit={async (values) => {
|
|
66
68
|
try {
|
|
67
69
|
await onSubmit(values, infraEnv);
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import * as Yup from 'yup';
|
|
3
|
+
import { TFunction } from 'i18next';
|
|
3
4
|
import {
|
|
4
5
|
Button,
|
|
5
6
|
Form,
|
|
@@ -17,12 +18,12 @@ import {
|
|
|
17
18
|
ImageType,
|
|
18
19
|
Proxy,
|
|
19
20
|
} from '@openshift-assisted/types/assisted-installer-service';
|
|
21
|
+
import { AlertFormikError } from '../../../common/components/ui';
|
|
20
22
|
import {
|
|
21
|
-
AlertFormikError,
|
|
22
23
|
httpProxyValidationSchema,
|
|
23
24
|
noProxyValidationSchema,
|
|
24
25
|
sshPublicKeyValidationSchema,
|
|
25
|
-
} from '
|
|
26
|
+
} from '../../validationSchemas';
|
|
26
27
|
import { ProxyFieldsType, StatusErrorType } from '../../types';
|
|
27
28
|
import ProxyFields from './ProxyFields';
|
|
28
29
|
import UploadSSH from './UploadSSH';
|
|
@@ -55,13 +56,13 @@ export const StaticIPInfo = ({ docVersion }: { docVersion?: string }) => {
|
|
|
55
56
|
|
|
56
57
|
export type DiscoveryImageFormValues = ImageCreateParams & ProxyFieldsType;
|
|
57
58
|
|
|
58
|
-
const getValidationSchema = (allowEmpty: boolean) =>
|
|
59
|
+
const getValidationSchema = (allowEmpty: boolean, t: TFunction) =>
|
|
59
60
|
Yup.lazy((values: DiscoveryImageFormValues) =>
|
|
60
61
|
Yup.object<DiscoveryImageFormValues>().shape({
|
|
61
|
-
sshPublicKey: sshPublicKeyValidationSchema,
|
|
62
|
-
httpProxy: httpProxyValidationSchema({ values, pairValueName: 'httpsProxy', allowEmpty }),
|
|
63
|
-
httpsProxy: httpProxyValidationSchema({ values, pairValueName: 'httpProxy', allowEmpty }), // share the schema, httpS is currently not supported
|
|
64
|
-
noProxy: noProxyValidationSchema,
|
|
62
|
+
sshPublicKey: sshPublicKeyValidationSchema(t),
|
|
63
|
+
httpProxy: httpProxyValidationSchema({ values, pairValueName: 'httpsProxy', allowEmpty, t }),
|
|
64
|
+
httpsProxy: httpProxyValidationSchema({ values, pairValueName: 'httpProxy', allowEmpty, t }), // share the schema, httpS is currently not supported
|
|
65
|
+
noProxy: noProxyValidationSchema(t),
|
|
65
66
|
}),
|
|
66
67
|
);
|
|
67
68
|
|
|
@@ -108,7 +109,7 @@ export const DiscoveryImageConfigForm: React.FC<DiscoveryImageConfigFormProps> =
|
|
|
108
109
|
<Formik
|
|
109
110
|
initialValues={initialValues}
|
|
110
111
|
initialStatus={{ error: null }}
|
|
111
|
-
validationSchema={getValidationSchema(!!allowEmpty)}
|
|
112
|
+
validationSchema={getValidationSchema(!!allowEmpty, t)}
|
|
112
113
|
onSubmit={handleSubmit}
|
|
113
114
|
>
|
|
114
115
|
{({ submitForm, isSubmitting, status }) => {
|
|
@@ -7,13 +7,13 @@ import {
|
|
|
7
7
|
} from '@openshift-assisted/types/assisted-installer-service';
|
|
8
8
|
import { getDefaultCpuArchitecture, OpenshiftVersionOptionType } from '../../types';
|
|
9
9
|
import { TangServer } from '../clusterConfiguration/DiskEncryptionFields/DiskEncryptionValues';
|
|
10
|
+
import { getDefaultOpenShiftVersion } from '../ui';
|
|
10
11
|
import {
|
|
11
12
|
baseDomainValidationSchema,
|
|
12
13
|
dnsNameValidationSchema,
|
|
13
|
-
getDefaultOpenShiftVersion,
|
|
14
14
|
nameValidationSchema,
|
|
15
15
|
pullSecretValidationSchema,
|
|
16
|
-
} from '
|
|
16
|
+
} from '../../validationSchemas';
|
|
17
17
|
import { ClusterDetailsValues } from './types';
|
|
18
18
|
|
|
19
19
|
const emptyTangServers = (): TangServer[] => {
|
|
@@ -98,22 +98,32 @@ export const getClusterDetailsValidationSchema = ({
|
|
|
98
98
|
t: TFunction;
|
|
99
99
|
}) =>
|
|
100
100
|
Yup.lazy((values: { baseDnsDomain: string; isSNODevPreview: boolean }) => {
|
|
101
|
-
const validateName = () =>
|
|
102
|
-
nameValidationSchema(t, usedClusterNames, values.baseDnsDomain, validateUniqueName, isOcm);
|
|
103
101
|
if (pullSecretSet) {
|
|
104
102
|
return Yup.object({
|
|
105
|
-
name:
|
|
103
|
+
name: nameValidationSchema(
|
|
104
|
+
t,
|
|
105
|
+
usedClusterNames,
|
|
106
|
+
values.baseDnsDomain,
|
|
107
|
+
validateUniqueName,
|
|
108
|
+
isOcm,
|
|
109
|
+
),
|
|
106
110
|
baseDnsDomain: isOcm
|
|
107
|
-
? baseDomainValidationSchema.required(t('ai:Required field'))
|
|
108
|
-
: dnsNameValidationSchema.required(t('ai:Required field')),
|
|
111
|
+
? baseDomainValidationSchema(t).required(t('ai:Required field'))
|
|
112
|
+
: dnsNameValidationSchema(t).required(t('ai:Required field')),
|
|
109
113
|
});
|
|
110
114
|
}
|
|
111
115
|
return Yup.object({
|
|
112
|
-
name:
|
|
116
|
+
name: nameValidationSchema(
|
|
117
|
+
t,
|
|
118
|
+
usedClusterNames,
|
|
119
|
+
values.baseDnsDomain,
|
|
120
|
+
validateUniqueName,
|
|
121
|
+
isOcm,
|
|
122
|
+
),
|
|
113
123
|
baseDnsDomain: isOcm
|
|
114
|
-
? baseDomainValidationSchema.required(t('ai:Required field'))
|
|
115
|
-
: dnsNameValidationSchema.required(t('ai:Required field')),
|
|
116
|
-
pullSecret: pullSecretValidationSchema.required(t('ai:Required field')),
|
|
124
|
+
? baseDomainValidationSchema(t).required(t('ai:Required field'))
|
|
125
|
+
: dnsNameValidationSchema(t).required(t('ai:Required field')),
|
|
126
|
+
pullSecret: pullSecretValidationSchema(t).required(t('ai:Required field')),
|
|
117
127
|
diskEncryptionTangServers: Yup.array().when('diskEncryptionMode', {
|
|
118
128
|
is: (diskEncryptionMode: DiskEncryption['mode']) => {
|
|
119
129
|
return diskEncryptionMode === 'tang';
|
|
@@ -11,11 +11,8 @@ import {
|
|
|
11
11
|
ModalVariant,
|
|
12
12
|
ModalHeader,
|
|
13
13
|
} from '@patternfly/react-core';
|
|
14
|
-
import {
|
|
15
|
-
|
|
16
|
-
AdditionalNTPSourcesField,
|
|
17
|
-
StatusErrorType,
|
|
18
|
-
} from '../../../common';
|
|
14
|
+
import { AdditionalNTPSourcesField, StatusErrorType } from '../../../common';
|
|
15
|
+
import { ntpSourceValidationSchema } from '../../validationSchemas/ntpValidation';
|
|
19
16
|
import { AlertFormikError } from '../../../common/components/ui';
|
|
20
17
|
import { useTranslation } from '../../hooks/use-translation-wrapper';
|
|
21
18
|
import {
|
|
@@ -43,7 +40,7 @@ const AdditionalNTPSourcesForm = ({
|
|
|
43
40
|
|
|
44
41
|
const getValidationSchema = (t: TFunction) =>
|
|
45
42
|
Yup.object().shape({
|
|
46
|
-
additionalNtpSource: ntpSourceValidationSchema.required(t('ai:Required field')),
|
|
43
|
+
additionalNtpSource: ntpSourceValidationSchema(t).required(t('ai:Required field')),
|
|
47
44
|
});
|
|
48
45
|
|
|
49
46
|
const { t } = useTranslation();
|
|
@@ -14,14 +14,8 @@ import {
|
|
|
14
14
|
import { Formik } from 'formik';
|
|
15
15
|
import { TFunction } from 'i18next';
|
|
16
16
|
import { Host, Inventory } from '@openshift-assisted/types/assisted-installer-service';
|
|
17
|
-
import {
|
|
18
|
-
|
|
19
|
-
RichInputField,
|
|
20
|
-
StaticTextField,
|
|
21
|
-
hostnameValidationMessages,
|
|
22
|
-
getRichTextValidation,
|
|
23
|
-
AlertFormikError,
|
|
24
|
-
} from '../ui';
|
|
17
|
+
import { RichInputField, StaticTextField, getRichTextValidation, AlertFormikError } from '../ui';
|
|
18
|
+
import { richHostnameValidationSchema, hostnameValidationMessages } from '../../validationSchemas';
|
|
25
19
|
import { canHostnameBeChanged } from './utils';
|
|
26
20
|
import GridGap from '../ui/GridGap';
|
|
27
21
|
import { EditHostFormValues } from './types';
|
|
@@ -23,14 +23,12 @@ import { t_global_icon_color_status_info_default as blueInfoColor } from '@patte
|
|
|
23
23
|
import { InfoCircleIcon } from '@patternfly/react-icons/dist/js/icons/info-circle-icon';
|
|
24
24
|
import { TFunction } from 'i18next';
|
|
25
25
|
|
|
26
|
+
import { RichInputField, getRichTextValidation, ModalProgress } from '../ui';
|
|
26
27
|
import {
|
|
27
|
-
RichInputField,
|
|
28
|
-
getRichTextValidation,
|
|
29
|
-
richHostnameValidationSchema,
|
|
30
|
-
hostnameValidationMessages,
|
|
31
|
-
ModalProgress,
|
|
32
28
|
FORBIDDEN_HOSTNAMES,
|
|
33
|
-
|
|
29
|
+
hostnameValidationMessages,
|
|
30
|
+
richHostnameValidationSchema,
|
|
31
|
+
} from '../../validationSchemas';
|
|
34
32
|
import { Host } from '@openshift-assisted/types/assisted-installer-service';
|
|
35
33
|
import { getHostname as getHostnameUtils, getInventory } from './utils';
|
|
36
34
|
import { ActionCheck } from './types';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { isMajorMinorVersionEqualOrGreater } from '../utils';
|
|
2
2
|
|
|
3
|
-
const LATEST_OPENSHIFT_DOCS_VERSION = '4.
|
|
3
|
+
const LATEST_OPENSHIFT_DOCS_VERSION = '4.21';
|
|
4
4
|
const MIN_OPENSHIFT_DOCS_VERSION = '4.14';
|
|
5
5
|
|
|
6
6
|
const getDocsOpenshiftVersion = (ocpVersion?: string): string => {
|
package/lib/common/index.ts
CHANGED
package/lib/common/utils.ts
CHANGED
|
@@ -2,13 +2,12 @@ import filesize from 'filesize.js';
|
|
|
2
2
|
import camelCase from 'lodash-es/camelCase.js';
|
|
3
3
|
import isString from 'lodash-es/isString.js';
|
|
4
4
|
import { loadAll } from 'js-yaml';
|
|
5
|
+
import { TFunction } from 'i18next';
|
|
5
6
|
import { MAX_FILE_SIZE_BYTES, MAX_FILE_SIZE_OFFSET_FACTOR } from './configurations';
|
|
6
7
|
|
|
7
8
|
export const FILENAME_REGEX = /^[^\/]*\.(json|ya?ml(\.patch_?[a-zA-Z0-9_]*)?)$/;
|
|
8
9
|
|
|
9
10
|
export const FILE_TYPE_MESSAGE = 'Unsupported file type. Please provide a valid YAML file.';
|
|
10
|
-
export const INCORRECT_TYPE_FILE_MESSAGE =
|
|
11
|
-
'File type is not supported. File type must be yaml, yml ,json , yaml.patch. or yml.patch.';
|
|
12
11
|
|
|
13
12
|
export const getErrorMessage = (error: unknown): string => {
|
|
14
13
|
if (error instanceof Error) {
|
|
@@ -60,11 +59,10 @@ export const fileSize: typeof filesize = (...args) =>
|
|
|
60
59
|
.toUpperCase()
|
|
61
60
|
.replace(/I/, 'i');
|
|
62
61
|
|
|
63
|
-
export const getMaxFileSizeMessage =
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
)}.`;
|
|
62
|
+
export const getMaxFileSizeMessage = (t: TFunction) =>
|
|
63
|
+
t('ai:File size is too big. The file size must be less than {{value}}.', {
|
|
64
|
+
value: fileSize(MAX_FILE_SIZE_BYTES, 0, 'si'),
|
|
65
|
+
});
|
|
68
66
|
|
|
69
67
|
export const validateFileName = (fileName: string) => {
|
|
70
68
|
return new RegExp(FILENAME_REGEX).test(fileName || '');
|
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
nameValidationSchema,
|
|
11
11
|
noProxyValidationSchema,
|
|
12
12
|
pullSecretValidationSchema,
|
|
13
|
-
} from '
|
|
13
|
+
} from './..';
|
|
14
14
|
import { TFunction } from 'react-i18next';
|
|
15
15
|
import { CLUSTER_NAME_MAX_LENGTH } from './constants';
|
|
16
16
|
|
|
@@ -32,7 +32,7 @@ describe('validationSchemas', () => {
|
|
|
32
32
|
|
|
33
33
|
await Promise.all(
|
|
34
34
|
valid.map((value) =>
|
|
35
|
-
noProxyValidationSchema
|
|
35
|
+
noProxyValidationSchema(t)
|
|
36
36
|
.validate(value)
|
|
37
37
|
.catch(() => expect(value).toBe('was rejected but is valid')),
|
|
38
38
|
),
|
|
@@ -45,10 +45,12 @@ describe('validationSchemas', () => {
|
|
|
45
45
|
let counter = 0;
|
|
46
46
|
await Promise.all(
|
|
47
47
|
invalid.map((value) =>
|
|
48
|
-
noProxyValidationSchema
|
|
49
|
-
(
|
|
50
|
-
(
|
|
51
|
-
|
|
48
|
+
noProxyValidationSchema(t)
|
|
49
|
+
.validate(value)
|
|
50
|
+
.then(
|
|
51
|
+
() => expect(value).toBe('should be rejected since it is invalid'),
|
|
52
|
+
() => counter++,
|
|
53
|
+
),
|
|
52
54
|
),
|
|
53
55
|
);
|
|
54
56
|
|
|
@@ -106,7 +108,7 @@ describe('validationSchemas', () => {
|
|
|
106
108
|
|
|
107
109
|
await Promise.all(
|
|
108
110
|
valid.map((value) =>
|
|
109
|
-
pullSecretValidationSchema
|
|
111
|
+
pullSecretValidationSchema(t)
|
|
110
112
|
.validate(value)
|
|
111
113
|
.catch((msg: string) => expect(value).toBe(`was rejected but is valid: ${msg}`)),
|
|
112
114
|
),
|
|
@@ -115,10 +117,12 @@ describe('validationSchemas', () => {
|
|
|
115
117
|
let counter = 0;
|
|
116
118
|
await Promise.all(
|
|
117
119
|
invalid.map((value) =>
|
|
118
|
-
pullSecretValidationSchema
|
|
119
|
-
(
|
|
120
|
-
(
|
|
121
|
-
|
|
120
|
+
pullSecretValidationSchema(t)
|
|
121
|
+
.validate(value)
|
|
122
|
+
.then(
|
|
123
|
+
() => expect(value).toBe('should be rejected since it is invalid'),
|
|
124
|
+
() => counter++,
|
|
125
|
+
),
|
|
122
126
|
),
|
|
123
127
|
);
|
|
124
128
|
|
|
@@ -147,7 +151,7 @@ describe('validationSchemas', () => {
|
|
|
147
151
|
|
|
148
152
|
await Promise.all(
|
|
149
153
|
valid.map((value) =>
|
|
150
|
-
ipValidationSchema
|
|
154
|
+
ipValidationSchema(t)
|
|
151
155
|
.validate(value)
|
|
152
156
|
.catch((msg: string) => expect(value).toBe(`was rejected but is valid: ${msg}`)),
|
|
153
157
|
),
|
|
@@ -156,10 +160,12 @@ describe('validationSchemas', () => {
|
|
|
156
160
|
let counter = 0;
|
|
157
161
|
await Promise.all(
|
|
158
162
|
invalid.map((value) =>
|
|
159
|
-
ipValidationSchema
|
|
160
|
-
(
|
|
161
|
-
(
|
|
162
|
-
|
|
163
|
+
ipValidationSchema(t)
|
|
164
|
+
.validate(value)
|
|
165
|
+
.then(
|
|
166
|
+
() => expect(value).toBe('should be rejected since it is invalid'),
|
|
167
|
+
() => counter++,
|
|
168
|
+
),
|
|
163
169
|
),
|
|
164
170
|
);
|
|
165
171
|
|
|
@@ -182,7 +188,7 @@ describe('validationSchemas', () => {
|
|
|
182
188
|
|
|
183
189
|
await Promise.all(
|
|
184
190
|
valid.map((value) =>
|
|
185
|
-
macAddressValidationSchema
|
|
191
|
+
macAddressValidationSchema(t)
|
|
186
192
|
.validate(value)
|
|
187
193
|
.catch((msg: string) => expect(value).toBe(`was rejected but is valid: ${msg}`)),
|
|
188
194
|
),
|
|
@@ -191,10 +197,12 @@ describe('validationSchemas', () => {
|
|
|
191
197
|
let counter = 0;
|
|
192
198
|
await Promise.all(
|
|
193
199
|
invalid.map((value) =>
|
|
194
|
-
macAddressValidationSchema
|
|
195
|
-
(
|
|
196
|
-
(
|
|
197
|
-
|
|
200
|
+
macAddressValidationSchema(t)
|
|
201
|
+
.validate(value)
|
|
202
|
+
.then(
|
|
203
|
+
() => expect(value).toBe('should be rejected since it is invalid'),
|
|
204
|
+
() => counter++,
|
|
205
|
+
),
|
|
198
206
|
),
|
|
199
207
|
);
|
|
200
208
|
|
|
@@ -211,7 +219,7 @@ describe('validationSchemas', () => {
|
|
|
211
219
|
'192.0.0.0/8' /* Overlap */,
|
|
212
220
|
];
|
|
213
221
|
|
|
214
|
-
const validationSchema = ipBlockValidationSchema(['192.168.1.0']);
|
|
222
|
+
const validationSchema = ipBlockValidationSchema(['192.168.1.0'], t);
|
|
215
223
|
await Promise.all(
|
|
216
224
|
valid.map((value) =>
|
|
217
225
|
validationSchema
|
|
@@ -249,7 +257,7 @@ describe('validationSchemas', () => {
|
|
|
249
257
|
|
|
250
258
|
await Promise.all(
|
|
251
259
|
valid.map((value) =>
|
|
252
|
-
dnsNameValidationSchema
|
|
260
|
+
dnsNameValidationSchema(t)
|
|
253
261
|
.validate(value)
|
|
254
262
|
.catch((msg: string) => expect(value).toBe(`was rejected but is valid: ${msg}`)),
|
|
255
263
|
),
|
|
@@ -258,10 +266,12 @@ describe('validationSchemas', () => {
|
|
|
258
266
|
let counter = 0;
|
|
259
267
|
await Promise.all(
|
|
260
268
|
invalid.map((value) =>
|
|
261
|
-
dnsNameValidationSchema
|
|
262
|
-
(
|
|
263
|
-
(
|
|
264
|
-
|
|
269
|
+
dnsNameValidationSchema(t)
|
|
270
|
+
.validate(value)
|
|
271
|
+
.then(
|
|
272
|
+
() => expect(value).toBe('should be rejected since it is invalid'),
|
|
273
|
+
() => counter++,
|
|
274
|
+
),
|
|
265
275
|
),
|
|
266
276
|
);
|
|
267
277
|
|
|
@@ -272,7 +282,7 @@ describe('validationSchemas', () => {
|
|
|
272
282
|
const valid = [16, 25];
|
|
273
283
|
const invalid = ['', 'a', 0, 1, 33, 15, 26];
|
|
274
284
|
|
|
275
|
-
const validationSchema = hostPrefixValidationSchema('192.168.0.0/16');
|
|
285
|
+
const validationSchema = hostPrefixValidationSchema('192.168.0.0/16', t);
|
|
276
286
|
await Promise.all(
|
|
277
287
|
valid.map((value) =>
|
|
278
288
|
validationSchema
|
|
@@ -298,7 +308,7 @@ describe('validationSchemas', () => {
|
|
|
298
308
|
const valid = [8, 32, 128];
|
|
299
309
|
const invalid = ['', 'a', 0, 1, 7, 129];
|
|
300
310
|
|
|
301
|
-
const validationSchema = hostPrefixValidationSchema('2002::1234:abcd:ffff:c0a8:101/64');
|
|
311
|
+
const validationSchema = hostPrefixValidationSchema('2002::1234:abcd:ffff:c0a8:101/64', t);
|
|
302
312
|
await Promise.all(
|
|
303
313
|
valid.map((value) =>
|
|
304
314
|
validationSchema
|
|
@@ -330,7 +340,7 @@ describe('validationSchemas', () => {
|
|
|
330
340
|
|
|
331
341
|
await Promise.all(
|
|
332
342
|
valid.map((value) =>
|
|
333
|
-
baseDomainValidationSchema
|
|
343
|
+
baseDomainValidationSchema(t)
|
|
334
344
|
.validate(value)
|
|
335
345
|
.catch(() => expect(value).toBe(`was rejected but is valid`)),
|
|
336
346
|
),
|
|
@@ -339,10 +349,12 @@ describe('validationSchemas', () => {
|
|
|
339
349
|
let counter = 0;
|
|
340
350
|
await Promise.all(
|
|
341
351
|
invalid.map((value) =>
|
|
342
|
-
baseDomainValidationSchema
|
|
343
|
-
(
|
|
344
|
-
(
|
|
345
|
-
|
|
352
|
+
baseDomainValidationSchema(t)
|
|
353
|
+
.validate(value)
|
|
354
|
+
.then(
|
|
355
|
+
() => expect(value).toBe('should be rejected since it is invalid'),
|
|
356
|
+
() => counter++,
|
|
357
|
+
),
|
|
346
358
|
),
|
|
347
359
|
);
|
|
348
360
|
|
|
@@ -351,7 +363,7 @@ describe('validationSchemas', () => {
|
|
|
351
363
|
|
|
352
364
|
describe('dualStackValidationSchema', () => {
|
|
353
365
|
describe('OCP < 4.12 (legacy behavior)', () => {
|
|
354
|
-
const schema = dualStackValidationSchema('machine networks', '4.11');
|
|
366
|
+
const schema = dualStackValidationSchema('machine networks', t, '4.11');
|
|
355
367
|
|
|
356
368
|
test('validates IPv4 as primary and IPv6 as secondary', async () => {
|
|
357
369
|
const validValues = [[{ cidr: '192.168.1.0/24' }, { cidr: '2001:db8::/64' }]];
|
|
@@ -373,7 +385,7 @@ describe('validationSchemas', () => {
|
|
|
373
385
|
});
|
|
374
386
|
|
|
375
387
|
describe('OCP >= 4.12 (new behavior)', () => {
|
|
376
|
-
const schema = dualStackValidationSchema('machine networks', '4.12');
|
|
388
|
+
const schema = dualStackValidationSchema('machine networks', t, '4.12');
|
|
377
389
|
|
|
378
390
|
test('validates IPv4 as primary and IPv6 as secondary', async () => {
|
|
379
391
|
const validValues = [[{ cidr: '192.168.1.0/24' }, { cidr: '2001:db8::/64' }]];
|
|
@@ -393,7 +405,7 @@ describe('validationSchemas', () => {
|
|
|
393
405
|
});
|
|
394
406
|
|
|
395
407
|
describe('no version specified (defaults to legacy behavior)', () => {
|
|
396
|
-
const schema = dualStackValidationSchema('machine networks');
|
|
408
|
+
const schema = dualStackValidationSchema('machine networks', t);
|
|
397
409
|
|
|
398
410
|
test('validates IPv4 as primary and IPv6 as secondary', async () => {
|
|
399
411
|
const validValues = [[{ cidr: '192.168.1.0/24' }, { cidr: '2001:db8::/64' }]];
|
|
@@ -416,7 +428,7 @@ describe('validationSchemas', () => {
|
|
|
416
428
|
|
|
417
429
|
describe('edge cases', () => {
|
|
418
430
|
test('validates maximum 2 networks', async () => {
|
|
419
|
-
const schema = dualStackValidationSchema('machine networks', '4.12');
|
|
431
|
+
const schema = dualStackValidationSchema('machine networks', t, '4.12');
|
|
420
432
|
const invalidValue = [
|
|
421
433
|
{ cidr: '192.168.1.0/24' },
|
|
422
434
|
{ cidr: '2001:db8::/64' },
|
|
@@ -424,7 +436,7 @@ describe('validationSchemas', () => {
|
|
|
424
436
|
];
|
|
425
437
|
|
|
426
438
|
await expect(schema.validate(invalidValue)).rejects.toThrow(
|
|
427
|
-
'Maximum number of
|
|
439
|
+
'ai:Maximum number of {{field}} subnets in dual stack is 2',
|
|
428
440
|
);
|
|
429
441
|
});
|
|
430
442
|
});
|