web-interface.assets.bb8c8232-7170.8f93011170f0d6eb4a50.js.map Maven / Gradle / Ivy
{"version":3,"file":"bb8c8232-7170.8f93011170f0d6eb4a50.js","mappings":"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","sources":["webpack://graylog-web-interface/./src/components/common/EntityDataTable/MoreActions.tsx","webpack://graylog-web-interface/./src/components/common/PageNavigation.tsx","webpack://graylog-web-interface/./src/components/datanode/DataNodeList/DataNodeActions.tsx","webpack://graylog-web-interface/./src/components/datanode/DataNodePageNavigation.tsx","webpack://graylog-web-interface/./src/components/datanode/hooks/useDataNodes.ts","webpack://graylog-web-interface/./src/components/datanode/DataNodeList/DataNodeBadge.tsx","webpack://graylog-web-interface/./src/components/datanode/DataNodeConfiguration/CertificateRenewal.tsx","webpack://graylog-web-interface/./src/components/datanode/hooks/useDataNode.ts","webpack://graylog-web-interface/./src/pages/DataNodePage.tsx","webpack://graylog-web-interface/./src/preflight/components/common/Badge.tsx","webpack://graylog-web-interface/./src/preflight/components/common/Button.tsx","webpack://graylog-web-interface/./src/preflight/components/common/Col.tsx","webpack://graylog-web-interface/./src/preflight/components/common/Dropzone.tsx","webpack://graylog-web-interface/./src/preflight/components/common/TextInput.tsx","webpack://graylog-web-interface/./src/preflight/components/common/FormikTextInput.tsx","webpack://graylog-web-interface/./src/preflight/components/common/Grid.tsx","webpack://graylog-web-interface/./src/preflight/components/common/Input.tsx","webpack://graylog-web-interface/./src/preflight/components/common/List.tsx","webpack://graylog-web-interface/./src/preflight/components/common/Row.tsx","webpack://graylog-web-interface/./src/preflight/components/common/Section.tsx","webpack://graylog-web-interface/./src/preflight/components/common/Select.tsx","webpack://graylog-web-interface/./src/preflight/components/common/Space.tsx","webpack://graylog-web-interface/./src/preflight/components/common/Tabs.tsx","webpack://graylog-web-interface/./src/preflight/components/common/Title.tsx"],"sourcesContent":["/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\n\nimport DropdownButton from 'components/bootstrap/DropdownButton';\n\nimport { MORE_ACTIONS_TITLE, MORE_ACTIONS_HOVER_TITLE } from './Constants';\n\ntype Props = React.PropsWithChildren<{\n disabled?: boolean,\n}>\nconst MoreActions = ({ children, disabled }: Props) => (\n \n {children}\n \n);\n\nMoreActions.defaultProps = {\n disabled: false,\n};\n\nexport default MoreActions;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { Button, ButtonToolbar } from 'components/bootstrap';\nimport { LinkContainer } from 'components/common/router';\nimport { IfPermitted } from 'components/common';\nimport NavItemStateIndicator, {\n hoverIndicatorStyles,\n activeIndicatorStyles,\n} from 'components/common/NavItemStateIndicator';\n\nconst Container = styled(ButtonToolbar)`\n margin-bottom: 10px;\n`;\n\nconst StyledButton = styled(Button)(({ theme }) => css`\n font-family: ${theme.fonts.family.navigation};\n font-size: ${theme.fonts.size.navigation};\n color: ${theme.colors.variant.darker.default};\n \n &:hover,\n &:focus {\n background: inherit;\n text-decoration: none;\n }\n\n &:hover {\n color: inherit;\n ${hoverIndicatorStyles(theme)}\n }\n\n &.active {\n color: ${theme.colors.global.textDefault};\n\n ${activeIndicatorStyles(theme)}\n\n &:hover,\n &:focus {\n ${activeIndicatorStyles(theme)}\n }\n`);\n\nStyledButton.displayName = 'Button';\n\ntype Props = {\n /**\n * List of nav items. Define permissions, if the item should only be displayed for users with specific permissions.\n * By default, an item is active if the current URL starts with the item URL.\n * If you only want to display an item as active only when its path matches exactly, set `exactPathMatch` to true.\n */\n items: Array<{\n title: string,\n path: string,\n permissions?: string | Array\n exactPathMatch?: boolean,\n }>\n}\n\n/**\n * Simple tab navigation to allow navigating to subareas of a page.\n */\nconst PageNavigation = ({ items }: Props) => (\n \n {items.map(({ path, title, permissions, exactPathMatch }) => {\n if (!path) {\n return null;\n }\n\n return (\n \n \n \n \n {title}\n \n \n \n \n );\n })}\n \n);\n\nexport default PageNavigation;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\nimport { useState } from 'react';\nimport styled from 'styled-components';\n\nimport { ConfirmDialog } from 'components/common';\nimport { Button, MenuItem } from 'components/bootstrap';\nimport type { DataNode } from 'preflight/types';\nimport MoreActions from 'components/common/EntityDataTable/MoreActions';\n\nimport {\n rejoinDataNode,\n removeDataNode,\n renewDatanodeCertificate,\n stopDataNode,\n startDataNode,\n} from '../hooks/useDataNodes';\n\nconst ActionButton = styled(Button)`\n margin-left: 4px;\n`;\n\ntype Props = {\n dataNode: DataNode,\n displayAs?: 'dropdown'|'buttons',\n};\n\nconst DIALOG_TYPES = {\n STOP: 'stop',\n REJOIN: 'rejoin',\n REMOVE: 'remove',\n RENEW_CERT: 'renew',\n};\n\nconst DIALOG_TEXT = {\n [DIALOG_TYPES.REJOIN]: {\n dialogTitle: 'Rejoin Data Node',\n dialogBody: (datanode: string) => `Are you sure you want to rejoin Data Node \"${datanode}\"?`,\n },\n [DIALOG_TYPES.REMOVE]: {\n dialogTitle: 'Remove Data Node',\n dialogBody: (datanode: string) => `Are you sure you want to remove Data Node \"${datanode}\"?`,\n },\n [DIALOG_TYPES.STOP]: {\n dialogTitle: 'Stop Data Node',\n dialogBody: (datanode: string) => `Are you sure you want to stop Data Node \"${datanode}\"?`,\n },\n};\n\nconst DataNodeActions = ({ dataNode, displayAs }: Props) => {\n const [showDialog, setShowDialog] = useState(false);\n const [dialogType, setDialogType] = useState(null);\n\n const updateState = ({ show, type }) => {\n setShowDialog(show);\n setDialogType(type);\n };\n\n const handleAction = (action) => {\n switch (action) {\n case DIALOG_TYPES.REJOIN:\n updateState({ show: true, type: DIALOG_TYPES.REJOIN });\n\n break;\n case DIALOG_TYPES.REMOVE:\n updateState({ show: true, type: DIALOG_TYPES.REMOVE });\n\n break;\n case DIALOG_TYPES.STOP:\n updateState({ show: true, type: DIALOG_TYPES.STOP });\n\n break;\n default:\n break;\n }\n };\n\n const handleClearState = () => {\n updateState({ show: false, type: null });\n };\n\n const handleConfirm = () => {\n switch (dialogType) {\n case 'rejoin':\n rejoinDataNode(dataNode.node_id).then(() => {\n handleClearState();\n });\n\n break;\n case 'remove':\n removeDataNode(dataNode.node_id).then(() => {\n handleClearState();\n });\n\n break;\n case 'stop':\n stopDataNode(dataNode.node_id).then(() => {\n handleClearState();\n });\n\n break;\n default:\n break;\n }\n };\n\n const isDatanodeRunning = dataNode.data_node_status === 'AVAILABLE';\n const isDatanodeRemoved = dataNode.data_node_status === 'REMOVED';\n const isRemovingDatanode = dataNode.data_node_status === 'REMOVING';\n\n return (\n <>\n {displayAs === 'dropdown' && (\n \n \n {!isDatanodeRunning && }\n {isDatanodeRunning && }\n {isDatanodeRemoved && }\n {(!isDatanodeRemoved || isRemovingDatanode) && }\n \n )}\n {displayAs === 'buttons' && (\n <>\n {!isDatanodeRunning && startDataNode(dataNode.node_id)} bsSize=\"small\">Start }\n {isDatanodeRunning && handleAction(DIALOG_TYPES.STOP)} bsSize=\"small\">Stop }\n {isDatanodeRemoved && handleAction(DIALOG_TYPES.REJOIN)} bsSize=\"small\">Rejoin }\n {(!isDatanodeRemoved || isRemovingDatanode) && handleAction(DIALOG_TYPES.REMOVE)} bsSize=\"small\">Remove }\n >\n )}\n {showDialog && (\n \n {DIALOG_TEXT[dialogType].dialogBody(dataNode.hostname)}\n \n )}\n >\n );\n};\n\nDataNodeActions.defaultProps = {\n displayAs: 'dropdown',\n};\n\nexport default DataNodeActions;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\n\nimport AppConfig from 'util/AppConfig';\nimport PageNavigation from 'components/common/PageNavigation';\nimport Routes from 'routing/Routes';\nimport { Row } from 'components/bootstrap';\n\nconst enableDataNodeMigration = AppConfig.isFeatureEnabled('data_node_migration');\n\nconst NAV_ITEMS = [\n { title: 'Data Nodes', path: Routes.SYSTEM.DATANODES.LIST, exactPathMatch: true },\n { title: 'Cluster Management', path: Routes.SYSTEM.DATANODES.CLUSTER },\n { title: 'Configuration', path: Routes.SYSTEM.DATANODES.CONFIGURATION },\n enableDataNodeMigration && { title: 'Migration', path: Routes.SYSTEM.DATANODES.MIGRATION },\n];\n\nconst DataNodesPageNavigation = () => (\n \n \n
\n);\n\nexport default DataNodesPageNavigation;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport { useQuery } from '@tanstack/react-query';\n\nimport { qualifyUrl } from 'util/URLUtils';\nimport PaginationURL from 'util/PaginationURL';\nimport UserNotification from 'util/UserNotification';\nimport fetch from 'logic/rest/FetchProvider';\nimport type { Attribute, SearchParams, PaginatedResponseType } from 'stores/PaginationTypes';\nimport type FetchError from 'logic/errors/FetchError';\nimport type { DataNodes } from 'components/datanode/Types';\n\nexport const bulkRemoveDataNode = async (entity_ids: string[], selectBackFailedEntities: (entity_ids: string[]) => void) => {\n try {\n const { failures, successfully_performed } = await fetch('POST', qualifyUrl('/datanode/bulk_remove'), { entity_ids });\n\n if (failures?.length) {\n selectBackFailedEntities(failures.map(({ entity_id }) => entity_id));\n }\n\n if (failures?.length === entity_ids.length) {\n UserNotification.error(`Removing Data Node failed with status: ${JSON.stringify(failures)}`, 'Could not remove Data Nodes.');\n }\n\n if (successfully_performed) {\n UserNotification.success(`${successfully_performed} Data Node${successfully_performed > 1 ? 's' : ''} removed successfully.`);\n }\n } catch (errorThrown) {\n UserNotification.error(`Removing Data Node failed with status: ${errorThrown}`, 'Could not remove Data Nodes.');\n }\n};\n\nexport const bulkStartDataNode = async (entity_ids: string[], selectBackFailedEntities: (entity_ids: string[]) => void) => {\n try {\n const { failures, successfully_performed } = await fetch('POST', qualifyUrl('/datanode/bulk_start'), { entity_ids });\n\n if (failures?.length) {\n selectBackFailedEntities(failures.map(({ entity_id }) => entity_id));\n }\n\n if (failures?.length === entity_ids.length) {\n UserNotification.error(`Starting Data Node failed with status: ${JSON.stringify(failures)}`, 'Could not start Data Nodes.');\n }\n\n if (successfully_performed) {\n UserNotification.success(`${successfully_performed} Data Node${successfully_performed > 1 ? 's' : ''} started successfully.`);\n }\n } catch (errorThrown) {\n UserNotification.error(`Starting Data Node failed with status: ${errorThrown}`, 'Could not start Data Nodes.');\n }\n};\n\nexport const bulkStopDataNode = async (entity_ids: string[], selectBackFailedEntities: (entity_ids: string[]) => void) => {\n try {\n const { failures, successfully_performed } = await fetch('POST', qualifyUrl('/datanode/bulk_stop'), { entity_ids });\n\n if (failures?.length) {\n selectBackFailedEntities(failures.map(({ entity_id }) => entity_id));\n }\n\n if (failures?.length === entity_ids.length) {\n UserNotification.error(`Stopping Data Node failed with status: ${JSON.stringify(failures)}`, 'Could not stop Data Nodes.');\n }\n\n if (successfully_performed) {\n UserNotification.success(`${successfully_performed} Data Node${successfully_performed > 1 ? 's' : ''} stopped successfully.`);\n }\n } catch (errorThrown) {\n UserNotification.error(`Stopping Data Node failed with status: ${errorThrown}`, 'Could not stop Data Nodes.');\n }\n};\n\nexport const removeDataNode = async (datanodeId: string) => {\n try {\n await fetch('DELETE', qualifyUrl(`/datanode/${datanodeId}`));\n\n UserNotification.success(`Data Node \"${datanodeId}\" removed successfully.`);\n } catch (errorThrown) {\n UserNotification.error(`Removing Data Node failed with status: ${errorThrown}`, 'Could not remove the Data Node.');\n }\n};\n\nexport const startDataNode = async (datanodeId: string) => {\n try {\n await fetch('POST', qualifyUrl(`/datanode/${datanodeId}/start`));\n\n UserNotification.success(`Data Node \"${datanodeId}\" started successfully.`);\n } catch (errorThrown) {\n UserNotification.error(`Starting Data Node failed with status: ${errorThrown}`, 'Could not start the Data Node.');\n }\n};\n\nexport const stopDataNode = async (datanodeId: string) => {\n try {\n await fetch('POST', qualifyUrl(`/datanode/${datanodeId}/stop`));\n\n UserNotification.success(`Data Node \"${datanodeId}\" stopped successfully.`);\n } catch (errorThrown) {\n UserNotification.error(`Stopping Data Node failed with status: ${errorThrown}`, 'Could not stop the Data Node.');\n }\n};\n\nexport const rejoinDataNode = async (datanodeId: string) => {\n try {\n await fetch('POST', qualifyUrl(`/datanode/${datanodeId}/reset`));\n\n UserNotification.success(`Data Node \"${datanodeId}\" rejoined successfully.`);\n } catch (errorThrown) {\n UserNotification.error(`Rejoining Data Node failed with status: ${errorThrown}`, 'Could not rejoin the Data Node.');\n }\n};\n\ntype Options = {\n enabled: boolean,\n}\n\nexport const renewDatanodeCertificate = (nodeId: string) => fetch('POST', qualifyUrl(`/certrenewal/${nodeId}`))\n .then(() => {\n UserNotification.success('Certificate renewed successfully.');\n })\n .catch((error) => {\n UserNotification.error(`Certificate renewal failed with error: ${error}`);\n });\n\nconst fetchDataNodes = async (params?: Partial) => {\n const url = PaginationURL('/system/cluster/datanodes', params?.page, params?.pageSize, params?.query, { sort: params?.sort?.attributeId, order: params?.sort?.direction });\n\n return fetch('GET', qualifyUrl(url));\n};\n\nexport type DataNodeResponse = {\n elements: DataNodes,\n pagination: PaginatedResponseType,\n attributes: Array\n}\n\nconst useDataNodes = (params: Partial = {\n query: '',\n page: 1,\n pageSize: 0,\n}, { enabled }: Options = { enabled: true }, refetchInterval : number | false = 5000) : {\n data: DataNodeResponse,\n refetch: () => void,\n isInitialLoading: boolean,\n error: FetchError,\n} => {\n const { data, refetch, isInitialLoading, error } = useQuery(\n ['datanodes'],\n () => fetchDataNodes(params),\n {\n onError: (errorThrown) => {\n UserNotification.error(`Loading Data Nodes failed with status: ${errorThrown}`,\n 'Could not load Data Nodes.');\n },\n notifyOnChangeProps: ['data', 'error'],\n refetchInterval,\n enabled,\n },\n );\n\n return ({\n data: data || {\n attributes: [],\n elements: [],\n pagination: {\n query: '',\n page: 1,\n per_page: 0,\n total: 0,\n count: 0,\n },\n },\n refetch,\n isInitialLoading,\n error,\n });\n};\n\nexport default useDataNodes;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\nimport styled from 'styled-components';\n\nimport type { DataNodeStatus } from 'preflight/types';\nimport { Badge } from 'preflight/components/common';\nimport Icon from 'components/common/Icon';\nimport Spinner from 'components/common/Spinner';\n\nconst NodeId = styled(Badge)`\n margin-right: 3px;\n`;\n\nconst SecureIcon: React.ComponentType<{ name: 'lock' | 'lock_open' }> = styled(Icon)`\n margin-right: 3px;\n`;\n\ntype NodeProps = {\n status: DataNodeStatus,\n nodeId: string,\n transportAddress: string,\n};\n\nconst isSecure = (address: string) => address?.toLocaleLowerCase().startsWith('https://');\n\nconst colorByState = (status: DataNodeStatus, address: string) => {\n if (status === 'CONNECTING') {\n return 'yellow';\n }\n\n if (status === 'ERROR') {\n return 'red';\n }\n\n if (!address) {\n return 'grey';\n }\n\n return isSecure(address) ? 'green' : 'red';\n};\n\nconst lockIcon = (address: string) => (isSecure(address) ? 'lock' : 'lock_open');\nconst isConnecting = (status: DataNodeStatus) => status === 'CONNECTING';\nconst ConnectingSpinner = () => ;\n\nconst DataNodeBadge = ({ nodeId, transportAddress, status }: NodeProps) => (\n \n {nodeId}\n {isConnecting(status) ? <>{' '} > : null}\n \n);\n\nexport default DataNodeBadge;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\nimport { useQuery } from '@tanstack/react-query';\nimport styled from 'styled-components';\nimport { useState } from 'react';\nimport moment from 'moment';\n\nimport { qualifyUrl, getPathnameWithoutId } from 'util/URLUtils';\nimport fetch, { fetchPeriodically } from 'logic/rest/FetchProvider';\nimport type { DataNode } from 'preflight/types';\nimport UserNotification from 'util/UserNotification';\nimport { Spinner } from 'components/common';\nimport { Alert, ListGroup, ListGroupItem, Button } from 'components/bootstrap';\nimport { defaultCompare } from 'logic/DefaultCompare';\nimport useSendTelemetry from 'logic/telemetry/useSendTelemetry';\nimport { Badge } from 'preflight/components/common';\nimport useLocation from 'routing/useLocation';\nimport { TELEMETRY_EVENT_TYPE } from 'logic/telemetry/Constants';\n\nimport DataNodeBadge from '../DataNodeList/DataNodeBadge';\n\nconst StyledList = styled(ListGroup)`\n max-width: fit-content;\n \n .list-group-item {\n display: flex;\n justify-content: space-between;\n }\n`;\n\nconst DataNodeInfos = styled.div`\n display: flex;\n align-items: center;\n gap: 3px;\n margin-right: 10px;\n`;\n\nconst NodeIdColumn = styled.div`\n width: 100px;\n`;\n\nexport const fetchDataNodes = () => fetchPeriodically>('GET', qualifyUrl('/certrenewal'));\n\nconst useDataNodes = () => {\n const { data, isInitialLoading } = useQuery({\n queryKey: ['data-nodes', 'overview'],\n queryFn: fetchDataNodes,\n onError: (errorThrown) => {\n UserNotification.error(`Loading Data Nodes failed with status: ${errorThrown}`,\n 'Could not load streams');\n },\n keepPreviousData: true,\n refetchInterval: 3000,\n\n });\n\n return ({\n data,\n isInitialLoading,\n });\n};\n\nconst RightCol = styled.div`\n display: flex;\n align-items: center;\n gap: 6px;\n`;\n\nconst renewalWording = {\n buttonTitle: 'Renew certificate',\n buttonLoadingTitle: 'Renewing certificate',\n successActionTitle: 'renewed',\n errorActionTitle: 'renewal',\n telemetryAppSection: 'renewing-certificate',\n buttonStyle: 'primary',\n} as const;\n\nconst provisioningWording = {\n buttonTitle: 'Provision certificate',\n buttonLoadingTitle: 'Provisioning certificate...',\n successActionTitle: 'provisioned',\n errorActionTitle: 'provisioning',\n telemetryAppSection: 'provisioning-certificate',\n buttonStyle: 'success',\n} as const;\n\nexport const CertRenewalButton = ({ nodeId, status }: { nodeId: string, status: DataNode['status'] }) => {\n const sendTelemetry = useSendTelemetry();\n const { pathname } = useLocation();\n const [isRenewing, setIsRenewing] = useState(false);\n const {\n buttonTitle,\n buttonLoadingTitle,\n successActionTitle,\n errorActionTitle,\n telemetryAppSection,\n buttonStyle,\n } = status === 'UNCONFIGURED' ? provisioningWording : renewalWording;\n\n const onCertificateRenewal = () => {\n setIsRenewing(true);\n\n sendTelemetry(TELEMETRY_EVENT_TYPE.CONFIGURATIONS.CERTIFICATE_RENEWAL_UPDATED, {\n app_pathname: getPathnameWithoutId(pathname),\n app_section: 'data-node',\n app_action_value: telemetryAppSection,\n });\n\n fetch('POST', qualifyUrl(`/certrenewal/${nodeId}`))\n .then(() => {\n UserNotification.success(`Certificate ${successActionTitle} successfully`);\n })\n .catch((error) => {\n UserNotification.error(`Certificate ${errorActionTitle} failed with error: ${error}`);\n })\n .finally(() => {\n setIsRenewing(false);\n });\n };\n\n return (\n \n );\n};\n\nconst ErrorBadge = styled(Badge)`\n margin-left: 5px;\n`;\nconst Error = ({ message }: { message: string }) => {message} ;\n\nconst CertificateRenewal = () => {\n const { data: dataNodes, isInitialLoading: isInitialLoadingDataNodes } = useDataNodes();\n const sortedDataNodes = dataNodes?.sort((d1, d2) => defaultCompare(d1.cert_valid_until, d2.cert_valid_until));\n\n return (\n \n Certificate Renewal & Provisioning
\n \n Here you can manually trigger the certificate renewal or provisioning for Graylog Data Nodes.\n It is only necessary to manually provision certificates when the renewal policy mode "Manual" is configured and\n Data Nodes have been started after the initial certificate provisioning.\n
\n\n {!!sortedDataNodes?.length && (\n \n {sortedDataNodes.map(({\n node_id,\n hostname,\n transport_address,\n short_node_id,\n cert_valid_until,\n status,\n error_msg,\n }) => (\n \n \n \n \n \n {transport_address}{' – '}\n {hostname}\n {error_msg && }\n \n \n {cert_valid_until && (valid until {moment(cert_valid_until).from(moment())}{' '})}\n \n \n \n ))}\n \n )}\n\n {isInitialLoadingDataNodes && }\n {(!sortedDataNodes?.length && !isInitialLoadingDataNodes) && (\n \n No Data Nodes have been found.\n \n )}\n \n );\n};\n\nexport default CertificateRenewal;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport { useQuery } from '@tanstack/react-query';\n\nimport { qualifyUrl } from 'util/URLUtils';\nimport type { DataNode } from 'preflight/types';\nimport UserNotification from 'util/UserNotification';\nimport fetch from 'logic/rest/FetchProvider';\n\nconst fetchDataNode = async (datanodeId: string) => fetch('GET', qualifyUrl(`/datanode/${datanodeId}`));\n\nconst useDataNode = (datanodeId: string) : {\n data: DataNode,\n refetch: () => void,\n isInitialLoading: boolean,\n error: any,\n} => {\n const { data, refetch, isInitialLoading, error } = useQuery(\n ['datanode'],\n () => fetchDataNode(datanodeId),\n {\n onError: (errorThrown) => {\n UserNotification.error(`Loading Data Node failed with status: ${errorThrown}`,\n 'Could not load Data Node');\n },\n notifyOnChangeProps: ['data', 'error'],\n refetchInterval: 5000,\n },\n );\n\n return ({\n data,\n refetch,\n isInitialLoading,\n error,\n });\n};\n\nexport default useDataNode;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\nimport styled, { css } from 'styled-components';\n\nimport type { DataNode } from 'preflight/types';\nimport useParams from 'routing/useParams';\nimport DataNodesPageNavigation from 'components/datanode/DataNodePageNavigation';\nimport DocsHelper from 'util/DocsHelper';\nimport { Row, Col, Label } from 'components/bootstrap';\nimport { DocumentTitle, NoSearchResult, PageHeader, RelativeTime, Spinner } from 'components/common';\nimport { CertRenewalButton } from 'components/datanode/DataNodeConfiguration/CertificateRenewal';\nimport Icon from 'components/common/Icon';\nimport useDataNode from 'components/datanode/hooks/useDataNode';\nimport DataNodeActions from 'components/datanode/DataNodeList/DataNodeActions';\n\nconst StyledHorizontalDl = styled.dl(({ theme }) => css`\n margin: ${theme.spacings.md} 0;\n \n > dt {\n clear: left;\n float: left;\n margin-bottom: ${theme.spacings.md};\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n width: 160px;\n }\n \n > *:not(dt) {\n margin-bottom: ${theme.spacings.md};\n margin-left: 140px;\n }\n`);\nconst StatusLabel = styled(Label)`\n display: inline-flex;\n justify-content: center;\n gap: 4px;\n`;\nconst BooleanIcon = styled(Icon)<{ value: boolean }>(({ theme, value }) => css`\n color: ${value ? theme.colors.variant.success : theme.colors.variant.danger};\n`);\nconst BooleanValue = ({ value }: { value: boolean }) => (\n <> {value ? 'yes' : 'no'}>\n);\n\nconst ActionsCol = styled(Col)`\n text-align: right;\n`;\n\nconst DataNodePage = () => {\n const { dataNodeId } = useParams();\n const { data, isInitialLoading, error } = useDataNode(dataNodeId);\n\n if (isInitialLoading) {\n return ;\n }\n\n if (!isInitialLoading && (!data || error)) {\n return Error: {error?.message} ;\n }\n\n const datanode = data as DataNode;\n const datanodeDisabled = datanode.data_node_status !== 'AVAILABLE';\n\n return (\n \n \n \n \n \n \n Details:
\n \n Hostname: \n {datanode.hostname} \n Transport address: \n {datanode.transport_address || '-'} \n Status: \n \n \n {datanode.data_node_status || 'N/A'}\n \n \n Is leader: \n \n Certificate valid until: \n \n \n \n \n \n \n \n
\n \n );\n};\n\nexport default DataNodePage;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\nimport type { BadgeProps } from '@mantine/core';\nimport { Badge as MantineBadge } from '@mantine/core';\n\ntype Props = BadgeProps & {\n title: string,\n}\n\nconst Badge = ({ children, ...props }: Props) => (\n \n {children}\n \n);\nexport default Badge;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\nimport { forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\nimport type { DefaultTheme } from 'styled-components';\nimport { Button as MantineButton } from '@mantine/core';\nimport type { ButtonProps } from '@mantine/core';\nimport type { ComponentPropsWithoutRef, ComponentProps } from 'react';\n\ntype StyledMantineButtonProps = ComponentProps<'button'> & ButtonProps & {\n theme: DefaultTheme,\n};\n\nconst StyledButton = styled(MantineButton)>(({ theme }: StyledMantineButtonProps) => css`\n ${theme.components.button}\n`);\n\ninterface HTMLButtonProps extends ComponentPropsWithoutRef<'button'> {\n type?: 'submit' | 'button' | 'reset';\n children: React.ReactNode;\n}\n\ninterface ReactRouterButtonProps {\n children: React.ReactNode;\n component: React.ReactElement;\n to: string;\n}\n\nexport type CustomButtonProps = HTMLButtonProps | ReactRouterButtonProps | StyledMantineButtonProps;\n\nconst Button = forwardRef(({ children, ...otherProps }: CustomButtonProps, ref) => (\n \n {children}\n \n));\n\nButton.defaultProps = {\n type: 'button',\n};\n\nexport default Button;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\nimport { Grid } from '@mantine/core';\n\nconst Col = ({ children, ...props }: React.ComponentProps) => (\n // eslint-disable-next-line react/prop-types\n \n {children}\n \n);\n\nexport default Col;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\nimport type { DropzoneProps } from '@mantine/dropzone';\nimport { Dropzone as MantineDropzone } from '@mantine/dropzone';\n\ntype Props = DropzoneProps\n\nconst Dropzone = ({ children, ...props }: Props) => (\n \n {children}\n \n);\n\nDropzone.Accept = MantineDropzone.Accept;\nDropzone.Reject = MantineDropzone.Reject;\nDropzone.Reject = MantineDropzone.Reject;\nDropzone.Idle = MantineDropzone.Idle;\nexport default Dropzone;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\nimport { TextInput as MantineTextInput } from '@mantine/core';\n\nconst TextInput = (props: React.ComponentProps) => (\n \n);\n\nexport default TextInput;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\n\nimport * as React from 'react';\nimport { Field } from 'formik';\n\nimport TextInput from 'preflight/components/common/TextInput';\n\ntype Props = {\n name: string,\n label: React.ReactNode,\n placeholder?: string,\n type?: string\n required?: boolean,\n}\n\nconst FormikTextInput = ({ name, placeholder, label, type, required }: Props) => (\n \n {({ field: { value, onChange, onBlur }, meta: { error: validationError } }) => (\n \n )}\n \n);\n\nFormikTextInput.defaultProps = {\n placeholder: undefined,\n type: undefined,\n required: false,\n};\n\nexport default FormikTextInput;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\nimport type { GridProps } from '@mantine/core';\nimport { Grid as MantineGrid } from '@mantine/core';\n\ntype Props = GridProps\n\nconst Grid = ({ children, ...props }: Props) => (\n \n {children}\n \n);\n\nGrid.Col = MantineGrid.Col;\nexport default Grid;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\nimport { Input as MantineInput } from '@mantine/core';\n\nconst Input = (props: React.ComponentProps) => (\n \n);\n\nInput.Error = MantineInput.Error;\nInput.Label = MantineInput.Label;\n\nexport default Input;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\nimport styled, { css } from 'styled-components';\nimport type { ListProps } from '@mantine/core';\nimport { List as MantineList } from '@mantine/core';\n\nconst StyledList = styled(MantineList)(({ theme }) => css`\n color: ${theme.colors.global.textDefault};\n`);\n\ntype ListComponent = ((props: ListProps) => React.ReactElement) & {\n Item: typeof MantineList.Item\n}\n\nconst List: ListComponent = ({ children, ...props }: ListProps) => (\n \n {children}\n \n);\n\nList.Item = MantineList.Item;\nexport default List;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\nimport { Grid } from '@mantine/core';\n\nconst Row = ({ children, ...props }: React.ComponentProps) => (\n \n {children}\n \n);\n\nexport default Row;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\nimport styled, { css } from 'styled-components';\nimport type { DefaultTheme } from 'styled-components';\nimport { Box } from '@mantine/core';\nimport type { BoxProps, TitleOrder } from '@mantine/core';\n\nimport Col from 'preflight/components/common/Col';\nimport Row from 'preflight/components/common/Row';\nimport { Title } from 'preflight/components/common';\n\ntype ContainerType = BoxProps & {\n theme: DefaultTheme,\n component: any;\n};\n\nconst TitleActionContainer = styled(Box)`\n display: flex;\n justify-content: flex-end;\n gap: 5px;\n`;\nconst SubsectionContainer = styled(Box)>(({ theme }: ContainerType) => css`\n padding: ${theme.spacings.md};\n margin-bottom: ${theme.spacings.xs};\n`);\n\nconst SectionContainer = styled(SubsectionContainer)(({ theme }: ContainerType) => css`\n background-color: ${theme.colors.global.contentBackground};\n border: 1px solid ${theme.colors.variant.lighter.default};\n border-radius: 4px;\n`);\n\ntype Props = {\n title: React.ReactNode,\n actions?: React.ReactNode,\n titleOrder?: TitleOrder\n dataTestid?: string,\n};\n\nconst SectionHeader = ({ title, actions, titleOrder }: Props) => (\n \n \n {title} \n \n \n {actions} \n \n
\n);\n\nSectionHeader.defaultProps = {\n actions: undefined,\n titleOrder: 2,\n};\n\nexport const Subsection = ({ title, children, actions, titleOrder }: React.PropsWithChildren) => (\n \n \n {children}\n \n);\n\nSubsection.defaultProps = {\n actions: undefined,\n titleOrder: undefined,\n};\n\nconst Section = ({ title, children, actions, titleOrder, dataTestid }: React.PropsWithChildren) => (\n \n \n {children}\n \n);\n\nSection.defaultProps = {\n actions: undefined,\n titleOrder: undefined,\n};\n\nexport default Section;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\nimport type { SelectProps } from '@mantine/core';\nimport { Select as MantineSelect } from '@mantine/core';\nimport { useTheme } from 'styled-components';\n\nconst Select = ({ children, ...otherProps }: SelectProps) => {\n const theme = useTheme();\n const SelectStyles = () => ({\n input: {\n color: theme.colors.input.color,\n backgroundColor: theme.colors.input.background,\n borderColor: theme.colors.input.border,\n },\n dropdown: {\n color: theme.colors.input.color,\n backgroundColor: theme.colors.input.background,\n },\n });\n\n return (\n \n {children}\n \n );\n};\n\nexport default Select;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\nimport type { SpaceProps } from '@mantine/core';\nimport { Space as MantineSpace } from '@mantine/core';\n\ntype Props = SpaceProps\n\nconst Space = (props: Props) => (\n \n);\nexport default Space;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\nimport type { TabsProps } from '@mantine/core';\nimport { Tabs as MantineTabs } from '@mantine/core';\n\ntype Props = TabsProps\n\nconst Tabs = ({ children, ...props }: Props) => (\n \n {children}\n \n);\n\nTabs.List = MantineTabs.List;\nTabs.Tab = MantineTabs.Tab;\nTabs.Panel = MantineTabs.Panel;\nexport default Tabs;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\nimport type { TitleProps } from '@mantine/core';\nimport { Title as MantineTitle } from '@mantine/core';\n\ntype Props = TitleProps;\nconst Title = ({ children, ...props }: Props) => (\n \n {children}\n \n);\nexport default Title;\n"],"names":["MoreActions","children","disabled","Container","StyledButton","theme","items","path","title","permissions","exactPathMatch","ActionButton","DIALOG_TYPES","DIALOG_TEXT","datanode","DataNodeActions","dataNode","displayAs","showDialog","setShowDialog","dialogType","setDialogType","updateState","show","type","handleAction","action","handleClearState","handleConfirm","isDatanodeRunning","isDatanodeRemoved","isRemovingDatanode","enableDataNodeMigration","NAV_ITEMS","bulkRemoveDataNode","entity_ids","selectBackFailedEntities","failures","successfully_performed","entity_id","errorThrown","bulkStartDataNode","bulkStopDataNode","removeDataNode","datanodeId","startDataNode","stopDataNode","rejoinDataNode","renewDatanodeCertificate","nodeId","error","fetchDataNodes","params","url","enabled","refetchInterval","data","refetch","isInitialLoading","NodeId","SecureIcon","Icon","isSecure","address","colorByState","status","lockIcon","isConnecting","ConnectingSpinner","transportAddress","StyledList","DataNodeInfos","NodeIdColumn","useDataNodes","RightCol","renewalWording","provisioningWording","CertRenewalButton","sendTelemetry","useSendTelemetry","pathname","useLocation","isRenewing","setIsRenewing","buttonTitle","buttonLoadingTitle","successActionTitle","errorActionTitle","telemetryAppSection","buttonStyle","onCertificateRenewal","ErrorBadge","Error","message","CertificateRenewal","dataNodes","isInitialLoadingDataNodes","sortedDataNodes","d1","d2","node_id","hostname","transport_address","short_node_id","cert_valid_until","error_msg","fetchDataNode","StyledHorizontalDl","StatusLabel","BooleanIcon","value","BooleanValue","ActionsCol","dataNodeId","useParams","datanodeDisabled","DocsHelper","props","Button","otherProps","ref","Dropzone","FormikTextInput","name","placeholder","label","required","onChange","onBlur","validationError","Grid","Input","List","TitleActionContainer","SubsectionContainer","SectionContainer","SectionHeader","actions","titleOrder","Subsection","Section","dataTestid","Select","SelectStyles","Tabs"],"sourceRoot":""}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy