import React, { useState } from 'react'; import PropTypes from 'prop-types'; import { Button, Flex, FlexItem, Modal, ModalVariant, Dropdown, DropdownItem, DropdownToggle, } from '@patternfly/react-core'; import { CaretDownIcon } from '@patternfly/react-icons'; import { translate as __ } from 'foremanReact/common/I18n'; import { useSelector, useDispatch } from 'react-redux'; import { selectAPIResponse } from 'foremanReact/redux/API/APISelectors'; import { installTracerPackage } from './HostTracesActions'; import { katelloPackageInstallUrl } from '../customizedRexUrlHelpers'; import { KATELLO_TRACER_PACKAGE } from './HostTracesConstants'; const EnableTracerModal = ({ isOpen, setIsOpen }) => { const title = __('Enable Tracer'); const body = __('Enabling will install the katello-host-tools-tracer package on the host.'); const [isDropdownOpen, setIsDropdownOpen] = useState(false); const [buttonLoading, setButtonLoading] = useState(false); const toggleDropdownOpen = () => setIsDropdownOpen(prev => !prev); const dropdownOptions = [ __('via remote execution'), __('via customized remote execution'), ]; const [selectedOption, setSelectedOption] = useState(dropdownOptions[0]); const dispatch = useDispatch(); const hostDetails = useSelector(state => selectAPIResponse(state, 'HOST_DETAILS')); const { name: hostname } = hostDetails; const handleSelect = () => { setIsDropdownOpen(false); }; const enableTracer = () => { dispatch(installTracerPackage({ hostname })); setIsOpen(false); }; const dropdownItems = dropdownOptions.map(text => ( setSelectedOption(text)}>{text} )); const customizedRexUrl = katelloPackageInstallUrl({ hostname, packages: KATELLO_TRACER_PACKAGE }); const getEnableTracerButton = () => { const [viaRex] = dropdownOptions; if (selectedOption === viaRex) { return ( ); } return ( ); }; return ( setIsOpen(false)} actions={[ getEnableTracerButton(), , ]} > {body}
{__('Select a provider to install katello-host-tools-tracer')}
{selectedOption} } onSelect={handleSelect} isOpen={isDropdownOpen} dropdownItems={dropdownItems} menuAppendTo="parent" />
); }; EnableTracerModal.propTypes = { isOpen: PropTypes.bool.isRequired, setIsOpen: PropTypes.func.isRequired, }; export default EnableTracerModal;