UNPKG

@openshift-assisted/ui-lib

Version:

React component library for the Assisted Installer UI

76 lines 5.04 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const react_1 = tslib_1.__importDefault(require("react")); const isEqual_js_1 = tslib_1.__importDefault(require("lodash-es/isEqual.js")); const react_core_1 = require("@patternfly/react-core"); const SwitchField_1 = tslib_1.__importDefault(require("../../ui/formik/SwitchField")); const DiskEncryptionMode_1 = require("./DiskEncryptionMode"); const ui_1 = require("../../ui"); const formik_1 = require("formik"); const use_translation_wrapper_1 = require("../../../hooks/use-translation-wrapper"); const hasFilledTangServers = (tangServers) => { if (!tangServers || tangServers.length === 0) { return false; } const emptyServer = { url: '', thumbprint: '', }; return (tangServers.find((server) => !(0, isEqual_js_1.default)(server, emptyServer) && !(0, isEqual_js_1.default)(server, {})) !== undefined); }; const DiskEncryptionControlGroup = ({ values, isSNO = false, isDisabled = false, docVersion, }) => { const { enableDiskEncryptionOnMasters, enableDiskEncryptionOnWorkers, enableDiskEncryptionOnArbiters, diskEncryptionMode, diskEncryptionTangServers, } = values; const fieldId = 'diskEncryption'; const hasEnabledDiskEncryption = enableDiskEncryptionOnMasters || enableDiskEncryptionOnWorkers || enableDiskEncryptionOnArbiters; const { setFieldValue, setFieldTouched } = (0, formik_1.useFormikContext)(); react_1.default.useEffect(() => { if (!hasEnabledDiskEncryption) { if (diskEncryptionMode !== 'tpmv2') { setFieldValue('diskEncryptionMode', 'tpmv2'); } if (hasFilledTangServers(diskEncryptionTangServers)) { setFieldTouched('diskEncryptionTangServers', false, false); setFieldValue('diskEncryptionTangServers', [{}], false); } } }, [ diskEncryptionMode, diskEncryptionTangServers, setFieldTouched, setFieldValue, hasEnabledDiskEncryption, ]); react_1.default.useEffect(() => { if (isSNO) { setFieldValue('enableDiskEncryptionOnWorkers', false); } }, [isSNO, setFieldValue]); const { t } = (0, use_translation_wrapper_1.useTranslation)(); const disableMessage = t('ai:This option is not editable after the draft cluster is created'); const tooltipProps = { hidden: !isDisabled, content: disableMessage, }; return (react_1.default.createElement(react_core_1.FormGroup, { id: `form-control__${fieldId}`, label: "Encryption of installation disks" }, react_1.default.createElement(react_core_1.Stack, { hasGutter: true }, react_1.default.createElement(react_core_1.StackItem, null, react_1.default.createElement(SwitchField_1.default, { tooltipProps: tooltipProps, name: "enableDiskEncryptionOnMasters", label: isSNO ? t('ai:Control plane node, worker') : t('ai:Control plane nodes'), isDisabled: isDisabled })), react_1.default.createElement(ui_1.RenderIf, { condition: !isSNO }, react_1.default.createElement(react_core_1.StackItem, null, react_1.default.createElement(SwitchField_1.default, { tooltipProps: tooltipProps, name: "enableDiskEncryptionOnWorkers", isDisabled: isDisabled, label: t('ai:Workers') }))), react_1.default.createElement(react_core_1.StackItem, null, react_1.default.createElement(SwitchField_1.default, { tooltipProps: tooltipProps, name: "enableDiskEncryptionOnArbiters", label: t('ai:Arbiter'), isDisabled: isDisabled })), react_1.default.createElement(ui_1.RenderIf, { condition: enableDiskEncryptionOnMasters || (enableDiskEncryptionOnWorkers && !isSNO) || enableDiskEncryptionOnArbiters }, react_1.default.createElement(react_core_1.StackItem, null, react_1.default.createElement(DiskEncryptionMode_1.DiskEncryptionMode, { diskEncryptionMode: diskEncryptionMode, isDisabled: isDisabled, tooltipProps: tooltipProps, docVersion: docVersion || '' })))), hasEnabledDiskEncryption && (react_1.default.createElement(react_core_1.Alert, { variant: react_core_1.AlertVariant.warning, "data-testid": "alert-tpmv2-bios", isInline: true, title: react_1.default.createElement(react_core_1.FlexItem, null, diskEncryptionMode === 'tpmv2' && (react_1.default.createElement(react_1.default.Fragment, null, "To use this encryption method, enable TPMv2 encryption in the BIOS of each selected host.")), diskEncryptionMode === 'tang' && (react_1.default.createElement(react_1.default.Fragment, null, "The use of Tang encryption mode to encrypt your disks is only supported for bare metal or vSphere installations on user-provisioned infrastructure."))) })))); }; exports.default = DiskEncryptionControlGroup; //# sourceMappingURL=DiskEncryptionControlGroup.js.map