UNPKG

@openshift-assisted/ui-lib

Version:

React component library for the Assisted Installer UI

92 lines 5.78 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const react_1 = tslib_1.__importStar(require("react")); const formik_1 = require("formik"); const react_core_1 = require("@patternfly/react-core"); const AdvancedNetworkFields_1 = tslib_1.__importDefault(require("../../../common/components/clusterConfiguration/AdvancedNetworkFields")); const ip_address_1 = require("ip-address"); const networkingSteps_1 = require("../../../common/components/clusterWizard/networkingSteps"); const common_1 = require("../../../common"); const use_translation_wrapper_1 = require("../../../common/hooks/use-translation-wrapper"); const NetworkTypeControlGroup_1 = require("../../../common/components/clusterWizard/networkingSteps/NetworkTypeControlGroup"); const NetworkConfiguration = ({ cluster, hostSubnets, isVipDhcpAllocationDisabled, defaultNetworkSettings, hideManagedNetworking, }) => { var _a; const { t } = (0, use_translation_wrapper_1.useTranslation)(); const { setFieldValue, values, touched, validateField } = (0, formik_1.useFormikContext)(); const isMultiNodeCluster = !(0, common_1.isSNO)(cluster); const isClusterCIDRIPv6 = ip_address_1.Address6.isValid(values.clusterNetworkCidr || ''); const { isIPv6, isSDNSelectable } = react_1.default.useMemo(() => { const isIPv6 = (0, common_1.isSubnetInIPv6)({ machineNetworkCidr: cluster.machineNetworkCidr, clusterNetworkCidr: values.clusterNetworkCidr, serviceNetworkCidr: values.serviceNetworkCidr, }); return { isIPv6, isSDNSelectable: (0, common_1.canSelectNetworkTypeSDN)(!isMultiNodeCluster, isIPv6), }; }, [ isMultiNodeCluster, values.clusterNetworkCidr, cluster.machineNetworkCidr, values.serviceNetworkCidr, ]); const [isAdvanced, setAdvanced] = react_1.default.useState((0, common_1.isAdvNetworkConf)(cluster, defaultNetworkSettings)); const toggleAdvConfiguration = (checked) => { setAdvanced(checked); if (!checked) { setFieldValue('clusterNetworkCidr', defaultNetworkSettings.clusterNetworkCidr); setFieldValue('serviceNetworkCidr', defaultNetworkSettings.serviceNetworkCidr); setFieldValue('clusterNetworkHostPrefix', defaultNetworkSettings.clusterNetworkHostPrefix); } }; const isUserManagedNetworking = values.managedNetworkingType === 'userManaged'; const firstSubnet = (_a = hostSubnets[0]) === null || _a === void 0 ? void 0 : _a.subnet; (0, react_1.useEffect)(() => { if (isUserManagedNetworking && isMultiNodeCluster) { values.hostSubnet !== common_1.NO_SUBNET_SET && setFieldValue('hostSubnet', common_1.NO_SUBNET_SET, false); } else if (values.hostSubnet === common_1.NO_SUBNET_SET && firstSubnet) { setFieldValue('hostSubnet', firstSubnet, false); } }, [isUserManagedNetworking, isMultiNodeCluster, values.hostSubnet, setFieldValue, firstSubnet]); (0, react_1.useEffect)(() => { if (!cluster.networkType) { setFieldValue('networkType', common_1.NETWORK_TYPE_OVN); } // Skipping "cluster.networkType" as it's ultimately the value we are setting in the form // eslint-disable-next-line react-hooks/exhaustive-deps }, [isIPv6, isMultiNodeCluster, setFieldValue]); (0, react_1.useEffect)(() => { if (isUserManagedNetworking) { const shouldValidate = !!touched.hostSubnet; // We need to reset these fields' values in order to align with the values the server sends setFieldValue('vipDhcpAllocation', false); setFieldValue('ingressVips', [], shouldValidate); setFieldValue('apiVips', [], shouldValidate); } else { if (!values.vipDhcpAllocation) { validateField('ingressVips'); validateField('apiVips'); } } }, [ touched.hostSubnet, isMultiNodeCluster, isUserManagedNetworking, setFieldValue, values.vipDhcpAllocation, validateField, ]); return (react_1.default.createElement(react_core_1.Grid, { hasGutter: true }, !hideManagedNetworking && react_1.default.createElement(networkingSteps_1.ManagedNetworkingControlGroup, null), isUserManagedNetworking && (react_1.default.createElement(networkingSteps_1.UserManagedNetworkingTextContent, { shouldDisplayLoadBalancersBullet: isMultiNodeCluster, docVersion: cluster.openshiftVersion })), react_1.default.createElement(NetworkTypeControlGroup_1.NetworkTypeControlGroup, { isSDNSelectable: isSDNSelectable }), !(isMultiNodeCluster && isUserManagedNetworking) && (react_1.default.createElement(networkingSteps_1.AvailableSubnetsControl, { hostSubnets: hostSubnets, hosts: cluster.hosts || [], isRequired: !isUserManagedNetworking, isMultiNodeCluster: isMultiNodeCluster })), !isUserManagedNetworking && (react_1.default.createElement(networkingSteps_1.VirtualIPControlGroup, { cluster: cluster, hostSubnets: hostSubnets, isVipDhcpAllocationDisabled: isVipDhcpAllocationDisabled })), react_1.default.createElement(react_core_1.Checkbox, { id: "useAdvancedNetworking", label: t('ai:Use advanced networking'), description: t('ai:Configure advanced networking properties (e.g. CIDR ranges).'), isChecked: isAdvanced, onChange: (_event, checked) => toggleAdvConfiguration(checked), body: isAdvanced && react_1.default.createElement(AdvancedNetworkFields_1.default, { isClusterCIDRIPv6: isClusterCIDRIPv6 }) }))); }; exports.default = NetworkConfiguration; //# sourceMappingURL=NetworkConfiguration.js.map