web-interface.assets.bb8c8232-9099.9b2b292086f3eed4211a.js.map Maven / Gradle / Ivy
{"version":3,"file":"bb8c8232-9099.9b2b292086f3eed4211a.js","mappings":"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","sources":["webpack://graylog-web-interface/./src/components/inputs/InputDropdown.tsx","webpack://graylog-web-interface/./src/components/inputs/CreateInputControl.jsx","webpack://graylog-web-interface/./src/components/inputs/InputForm.jsx","webpack://graylog-web-interface/./src/components/inputs/InputListItem.jsx","webpack://graylog-web-interface/./src/stores/nodes/SingleNodeStore.js","webpack://graylog-web-interface/./src/components/inputs/InputsList.tsx","webpack://graylog-web-interface/./src/logic/inputs/InputStateComparator.js","webpack://graylog-web-interface/./src/components/inputs/InputStateBadge.tsx","webpack://graylog-web-interface/./src/components/inputs/InputStateControl.jsx","webpack://graylog-web-interface/./src/components/inputs/InputThroughput.jsx","webpack://graylog-web-interface/./src/components/inputs/InputStaticFields.jsx","webpack://graylog-web-interface/./src/components/inputs/NodeOrGlobalSelect.tsx","webpack://graylog-web-interface/./src/components/inputs/StaticFieldForm.jsx","webpack://graylog-web-interface/./src/stores/inputs/InputStatesStore.js","webpack://graylog-web-interface/./src/stores/inputs/InputTypesStore.ts","webpack://graylog-web-interface/./src/util/TimeRangeHelper.ts"],"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';\nimport { useCallback, useMemo, useState } from 'react';\nimport * as PropTypes from 'prop-types';\nimport styled from 'styled-components';\nimport * as Immutable from 'immutable';\n\nimport { Button, Input } from 'components/bootstrap';\nimport Spinner from 'components/common/Spinner';\n\nconst LoaderContainer = styled.div`\n display: flex;\n flex-wrap: wrap;\n\n .form-group {\n margin: 0 15px 0 0;\n }\n`;\n\nconst StyledInputDropdown = styled(Input)`\n min-width: 400px;\n`;\n\nconst PLACEHOLDER = 'placeholder';\n\ntype InputType = {\n id: string,\n title: string,\n type: string,\n};\n\nconst _formatInput = ({ id, title, type }: InputType) => ;\n\nconst _sortByTitle = (input1: InputType, input2: InputType) => input1.title.localeCompare(input2.title);\n\nconst StaticInput = ({ input: { type, title } }: { input: InputType }) => (\n \n \n \n);\n\ntype Props = {\n disabled?: boolean,\n inputs: Immutable.Map,\n preselectedInputId?: string,\n onLoadMessage: (inputId: string) => any,\n title: string,\n};\n\nconst InputDropdown = ({ disabled, inputs, onLoadMessage, preselectedInputId, title }: Props) => {\n const [selectedInput, setSelectedInput] = useState(preselectedInputId || PLACEHOLDER);\n const onSelectedInputChange = useCallback((event) => setSelectedInput(event.target.value), []);\n const _onLoadMessage = useCallback(() => onLoadMessage(selectedInput), [onLoadMessage, selectedInput]);\n const preselectedInput = useMemo(() => inputs?.get(preselectedInputId), [inputs, preselectedInputId]);\n\n // When an input is pre-selected, show a static dropdown\n if (preselectedInput) {\n return (\n \n \n\n \n \n );\n }\n\n if (inputs) {\n const inputOptions = inputs.sort(_sortByTitle).map(_formatInput);\n\n return (\n \n \n \n {inputOptions.toArray()}\n \n\n \n \n );\n }\n\n return ;\n};\n\nInputDropdown.propTypes = {\n inputs: PropTypes.object,\n title: PropTypes.string.isRequired,\n preselectedInputId: PropTypes.string,\n onLoadMessage: PropTypes.func,\n disabled: PropTypes.bool,\n};\n\nInputDropdown.defaultProps = {\n inputs: Immutable.Map(),\n onLoadMessage: () => {},\n preselectedInputId: undefined,\n disabled: false,\n};\n\nexport default InputDropdown;\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 React from 'react';\nimport PropTypes from 'prop-types';\n// eslint-disable-next-line no-restricted-imports\nimport createReactClass from 'create-react-class';\nimport Reflux from 'reflux';\nimport styled from 'styled-components';\nimport { PluginStore } from 'graylog-web-plugin/plugin';\n\nimport { Col, Row, Button } from 'components/bootstrap';\nimport { ExternalLinkButton, Select } from 'components/common';\nimport { InputForm } from 'components/inputs';\nimport { InputsActions } from 'stores/inputs/InputsStore';\nimport { InputTypesActions, InputTypesStore } from 'stores/inputs/InputTypesStore';\nimport withTelemetry from 'logic/telemetry/withTelemetry';\nimport { getPathnameWithoutId } from 'util/URLUtils';\nimport { TELEMETRY_EVENT_TYPE } from 'logic/telemetry/Constants';\nimport withLocation from 'routing/withLocation';\n\nconst NewInputRow = styled(Row)`\n margin-bottom: 8px;\n`;\n\nconst StyledForm = styled.form`\n display: flex;\n gap: 0.25em;\n`;\n\nconst CreateInputControl = createReactClass({\n // eslint-disable-next-line react/no-unused-class-component-methods\n displayName: 'CreateInputControl',\n\n // eslint-disable-next-line react/no-unused-class-component-methods\n propTypes: {\n sendTelemetry: PropTypes.func.isRequired,\n location: PropTypes.object.isRequired,\n },\n\n mixins: [Reflux.connect(InputTypesStore)],\n\n getInitialState() {\n return {\n selectedInput: undefined,\n selectedInputDefinition: undefined,\n };\n },\n\n _formatSelectOptions() {\n let options = [];\n\n const { inputTypes } = this.state;\n\n if (inputTypes) {\n const inputTypesIds = Object.keys(inputTypes);\n\n options = inputTypesIds.map((id) => ({ value: id, label: inputTypes[id] }));\n\n options.sort((inputTypeA, inputTypeB) => inputTypeA.label.toLowerCase().localeCompare(inputTypeB.label.toLowerCase()));\n } else {\n options.push({ value: 'none', label: 'No inputs available', disabled: true });\n }\n\n return options;\n },\n\n _onInputSelect(selectedInput) {\n if (selectedInput === '') {\n this.setState(this.getInitialState());\n }\n\n this.setState({ selectedInput: selectedInput });\n\n this.props.sendTelemetry(TELEMETRY_EVENT_TYPE.INPUTS.INPUT_SELECTED, {\n app_pathname: getPathnameWithoutId(this.props.location.pathname),\n app_action_value: 'input-select',\n event_details: { value: selectedInput },\n });\n\n InputTypesActions.get.triggerPromise(selectedInput).then((inputDefinition) => this.setState({ selectedInputDefinition: inputDefinition }));\n },\n\n _openModal(event) {\n event.preventDefault();\n const { selectedInput } = this.state;\n\n const customConfiguration = PluginStore.exports('inputConfiguration')\n .find((inputConfig) => inputConfig.type === selectedInput);\n\n if (customConfiguration) {\n const onClose = () => this.setState({ customInputsComponent: undefined });\n const CustomInputsConfiguration = customConfiguration.component;\n\n this.setState({\n customInputsComponent: ,\n });\n }\n\n this.configurationForm.open();\n },\n\n _createInput(data) {\n this.props.sendTelemetry(TELEMETRY_EVENT_TYPE.INPUTS.INPUT_CREATED, {\n app_pathname: getPathnameWithoutId(this.props.location.pathname),\n app_action_value: 'input-create',\n });\n\n InputsActions.create(data).then(() => {\n this.setState(this.getInitialState());\n });\n },\n\n render() {\n let inputModal;\n const { selectedInputDefinition, selectedInput, inputTypes, customInputsComponent } = this.state;\n\n if (selectedInputDefinition && !customInputsComponent) {\n const inputTypeName = inputTypes[selectedInput];\n\n inputModal = (\n {\n this.configurationForm = configurationForm;\n }}\n key=\"configuration-form-input\"\n configFields={selectedInputDefinition.requested_configuration}\n title={Launch new {inputTypeName} input}\n submitButtonText=\"Launch Input\"\n helpBlock=\"Select a name of your new input that describes it.\"\n typeName={selectedInput}\n submitAction={this._createInput} />\n );\n }\n\n return (\n \n \n \n \n \n \n \n \n {\n this.props.sendTelemetry(TELEMETRY_EVENT_TYPE.INPUTS.FIND_MORE_CLICKED, {\n app_pathname: getPathnameWithoutId(this.props.location.pathname),\n app_action_value: 'inputs-find-more',\n });\n }}\n style={{ marginLeft: 10 }}>\n Find more inputs\n \n \n {inputModal || customInputsComponent}\n \n \n );\n },\n});\n\nexport default withLocation(withTelemetry(CreateInputControl));\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 PropTypes from 'prop-types';\nimport React from 'react';\nimport jQuery from 'jquery';\n\nimport { NodeOrGlobalSelect } from 'components/inputs';\nimport { ConfigurationForm } from 'components/configurationforms';\nimport HideOnCloud from 'util/conditional/HideOnCloud';\nimport AppConfig from 'util/AppConfig';\n\nclass InputForm extends React.Component {\n static propTypes = {\n globalValue: PropTypes.bool,\n nodeValue: PropTypes.string,\n titleValue: PropTypes.string,\n submitAction: PropTypes.func.isRequired,\n values: PropTypes.object,\n submitButtonText: PropTypes.string.isRequired,\n };\n\n static defaultProps = {\n globalValue: undefined,\n nodeValue: undefined,\n titleValue: undefined,\n values: undefined,\n };\n\n constructor(props) {\n super(props);\n\n this.configurationForm = React.createRef();\n\n this.state = {\n global: this.props.globalValue !== undefined ? this.props.globalValue : false,\n node: this.props.nodeValue !== undefined ? this.props.nodeValue : undefined,\n };\n }\n\n _handleChange = (field, value) => {\n const state = {};\n\n state[field] = value;\n this.setState(state);\n };\n\n _onSubmit = (data) => {\n const newData = jQuery.extend(data, {\n global: AppConfig.isCloud() || this.state.global,\n node: this.state.node,\n });\n this.props.submitAction(newData);\n };\n\n // eslint-disable-next-line react/no-unused-class-component-methods\n open = () => {\n if (this.configurationForm.current) {\n this.configurationForm.current.open();\n }\n };\n\n getValues = () => {\n const { values } = this.props;\n\n if (values) {\n return values;\n }\n\n if (this.configurationForm.current) {\n return this.configurationForm.current.getValue().configuration;\n }\n\n return {};\n };\n\n getTitleValue = () => {\n const { titleValue } = this.props;\n\n if (titleValue) {\n return titleValue;\n }\n\n if (this.configurationForm.current) {\n return this.configurationForm.current.getValue().titleValue;\n }\n\n return '';\n };\n\n render() {\n const values = this.getValues();\n const titleValue = this.getTitleValue();\n\n return (\n \n \n \n \n \n );\n }\n}\n\nexport default InputForm;\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 PropTypes from 'prop-types';\nimport React from 'react';\n// eslint-disable-next-line no-restricted-imports\nimport createReactClass from 'create-react-class';\nimport Reflux from 'reflux';\n\nimport AppConfig from 'util/AppConfig';\nimport { LinkContainer } from 'components/common/router';\nimport { DropdownButton, MenuItem, Col, Button } from 'components/bootstrap';\nimport { EntityListItem, IfPermitted, LinkToNode, Spinner } from 'components/common';\nimport { ConfigurationWell } from 'components/configurationforms';\nimport PermissionsMixin from 'util/PermissionsMixin';\nimport Routes from 'routing/Routes';\nimport recentMessagesTimeRange from 'util/TimeRangeHelper';\nimport {\n InputForm,\n InputStateBadge,\n InputStateControl,\n InputStaticFields,\n InputThroughput,\n StaticFieldForm,\n} from 'components/inputs';\nimport { InputsActions } from 'stores/inputs/InputsStore';\nimport { InputTypesStore } from 'stores/inputs/InputTypesStore';\nimport withTelemetry from 'logic/telemetry/withTelemetry';\nimport { getPathnameWithoutId } from 'util/URLUtils';\nimport { TELEMETRY_EVENT_TYPE } from 'logic/telemetry/Constants';\nimport withLocation from 'routing/withLocation';\n\nconst InputListItem = createReactClass({\n // eslint-disable-next-line react/no-unused-class-component-methods\n displayName: 'InputListItem',\n\n // eslint-disable-next-line react/no-unused-class-component-methods\n propTypes: {\n input: PropTypes.object.isRequired,\n currentNode: PropTypes.object.isRequired,\n permissions: PropTypes.array.isRequired,\n sendTelemetry: PropTypes.func.isRequired,\n location: PropTypes.object.isRequired,\n },\n\n mixins: [PermissionsMixin, Reflux.connect(InputTypesStore)],\n\n _deleteInput() {\n this.props.sendTelemetry(TELEMETRY_EVENT_TYPE.INPUTS.INPUT_DELETED, {\n app_pathname: getPathnameWithoutId(this.props.location.pathname),\n app_action_value: 'input-delete',\n });\n\n // eslint-disable-next-line no-alert\n if (window.confirm(`Do you really want to delete input '${this.props.input.title}'?`)) {\n InputsActions.delete(this.props.input);\n }\n },\n\n _openStaticFieldForm() {\n this.staticFieldForm.open();\n },\n\n _editInput() {\n const { sendTelemetry, location } = this.props;\n this.configurationForm.open();\n\n sendTelemetry(TELEMETRY_EVENT_TYPE.INPUTS.INPUT_EDIT_CLICKED, {\n app_pathname: getPathnameWithoutId(location.pathname),\n app_action_value: 'show-received-messages',\n });\n },\n\n _updateInput(data) {\n InputsActions.update(this.props.input.id, data);\n\n this.props.sendTelemetry(TELEMETRY_EVENT_TYPE.INPUTS.INPUT_UPDATED, {\n app_pathname: getPathnameWithoutId(this.props.location.pathname),\n app_action_value: 'input-edit',\n });\n },\n\n render() {\n if (!this.state.inputTypes) {\n return ;\n }\n\n const { input, sendTelemetry, location } = this.props;\n const definition = this.state.inputDescriptions[input.type];\n\n const titleSuffix = (\n \n {this.props.input.name}\n \n ({this.props.input.id})\n \n \n \n );\n\n const actions = [];\n const queryField = (input.type === 'org.graylog.plugins.forwarder.input.ForwarderServiceInput') ? 'gl2_forwarder_input' : 'gl2_source_input';\n\n if (this.isPermitted(this.props.permissions, ['searches:relative'])) {\n actions.push(\n \n \n ,\n );\n }\n\n if (this.isPermitted(this.props.permissions, [`inputs:edit:${this.props.input.id}`])) {\n if (!AppConfig.isCloud()) {\n let extractorRoute;\n\n if (this.props.input.global) {\n extractorRoute = Routes.global_input_extractors(this.props.input.id);\n } else {\n extractorRoute = Routes.local_input_extractors(this.props.currentNode?.node?.node_id, this.props.input.id);\n }\n\n actions.push(\n \n \n ,\n );\n }\n\n actions.push( );\n }\n\n let showMetricsMenuItem;\n\n if (!this.props.input.global) {\n showMetricsMenuItem = (\n \n \n \n );\n }\n\n actions.push(\n \n \n \n \n\n {showMetricsMenuItem}\n\n \n \n \n\n \n \n \n \n \n \n ,\n );\n\n let subtitle;\n\n if (!this.props.input.global && this.props.input.node) {\n subtitle = (\n \n On node{' '} \n \n );\n }\n\n const inputForm = definition\n ? (\n {\n this.configurationForm = configurationForm;\n }}\n key={`edit-form-input-${input.id}`}\n globalValue={input.global}\n nodeValue={input.node}\n configFields={definition.requested_configuration}\n title={`Editing Input ${input.title}`}\n titleValue={input.title}\n typeName={input.type}\n includeTitleField\n submitAction={this._updateInput}\n submitButtonText=\"Update input\"\n values={input.attributes} />\n ) : null;\n\n const additionalContent = (\n \n \n \n {\n this.staticFieldForm = staticFieldForm;\n }}\n input={this.props.input} />\n \n \n \n \n \n {inputForm}\n \n );\n\n return (\n \n );\n },\n});\n\nexport default withLocation(withTelemetry(InputListItem));\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 Reflux from 'reflux';\n\nimport * as URLUtils from 'util/URLUtils';\nimport fetch from 'logic/rest/FetchProvider';\nimport { singletonStore, singletonActions } from 'logic/singleton';\n\nexport const SingleNodeActions = singletonActions(\n 'core.SingleNode',\n () => Reflux.createActions({\n get: { asyncResult: true },\n }),\n);\n\nexport const SingleNodeStore = singletonStore(\n 'core.SingleNode',\n () => Reflux.createStore({\n listenables: [SingleNodeActions],\n sourceUrl: '/system/cluster/node',\n node: undefined,\n\n init() {\n this._propagateState();\n },\n\n getInitialState() {\n return this._getNodeInfo();\n },\n\n _getNodeInfo() {\n return { node: this.node };\n },\n\n _propagateState() {\n this.trigger(this._getNodeInfo());\n },\n\n get(nodeId) {\n const promise = fetch('GET', URLUtils.qualifyUrl(nodeId ? URLUtils.concatURLPath(this.sourceUrl, nodeId) : this.sourceUrl))\n .then((response) => {\n this.node = response;\n this._propagateState();\n });\n\n SingleNodeActions.get.promise(promise);\n },\n }),\n);\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 { useCallback, useEffect, useMemo, useState } from 'react';\nimport styled from 'styled-components';\n\nimport { Row, Col } from 'components/bootstrap';\nimport { IfPermitted, Spinner, SearchForm } from 'components/common';\nimport { naturalSortIgnoreCase } from 'util/SortUtils';\nimport EntityList from 'components/common/EntityList';\nimport { InputsActions, InputsStore } from 'stores/inputs/InputsStore';\nimport { InputTypesActions } from 'stores/inputs/InputTypesStore';\nimport { SingleNodeActions, SingleNodeStore } from 'stores/nodes/SingleNodeStore';\nimport { useStore } from 'stores/connect';\nimport type { StoreState } from 'stores/StoreTypes';\nimport type { NodeInfo } from 'stores/nodes/NodesStore';\nimport type { Input } from 'components/messageloaders/Types';\n\nimport InputListItem from './InputListItem';\nimport CreateInputControl from './CreateInputControl';\n\nconst InputListRow = styled(Row)`\n h2 {\n margin-bottom: 5px;\n }\n\n .alert {\n margin-top: 10px;\n }\n\n .static-fields {\n margin-top: 10px;\n margin-left: 3px;\n\n ul {\n margin: 0;\n padding: 0;\n\n .remove-static-field {\n margin-left: 5px;\n }\n }\n }\n`;\n\nconst _splitInputs = (state: StoreState, node: NodeInfo) => {\n const { inputs } = state ?? {};\n const globalInputs = inputs?.filter((input) => input.global === true)\n .sort((inputA, inputB) => naturalSortIgnoreCase(inputA.title, inputB.title));\n let localInputs = inputs?.filter((input) => input.global === false)\n .sort((inputA, inputB) => naturalSortIgnoreCase(inputA.title, inputB.title));\n\n if (node?.node_id) {\n localInputs = localInputs?.filter((input) => input.node === node.node_id);\n }\n\n return {\n globalInputs,\n localInputs,\n };\n};\n\nconst _onFilterInputs = (globalInputs: Array, localInputs: Array, filter: string) => {\n const regExp = RegExp(filter, 'i');\n const filterMethod = (input: Input) => regExp.test(input.title);\n\n return ((!globalInputs || !localInputs) || (!filter || filter.length <= 0))\n ? {\n filteredGlobalInputs: globalInputs,\n filteredLocalInputs: localInputs,\n }\n : {\n filteredGlobalInputs: globalInputs.filter(filterMethod),\n filteredLocalInputs: localInputs.filter(filterMethod),\n };\n};\n\ntype Props = {\n permissions: Array,\n node: NodeInfo,\n}\n\nconst InputsList = ({ permissions, node }: Props) => {\n useEffect(() => {\n InputTypesActions.list();\n InputsActions.list();\n SingleNodeActions.get();\n }, []);\n\n const currentNode = useStore(SingleNodeStore);\n const { globalInputs, localInputs } = useStore(InputsStore, (inputsStore) => _splitInputs(inputsStore, node));\n const [filter, setFilter] = useState();\n const resetFilter = useCallback(() => setFilter(undefined), []);\n const { filteredGlobalInputs, filteredLocalInputs } = useMemo(\n () => _onFilterInputs(globalInputs, localInputs, filter),\n [filter, globalInputs, localInputs]);\n\n const nodeAffix = node ? ' on this node' : '';\n\n if (!(localInputs && globalInputs && currentNode && filteredLocalInputs && filteredGlobalInputs)) {\n return ;\n }\n\n return (\n \n {!node && (\n \n \n \n )}\n\n \n \n \n
\n \n Global inputs\n \n {globalInputs.length} configured{nodeAffix}\n
\n (\n \n ))} />\n
\n
\n \n Local inputs\n \n {localInputs.length} configured{nodeAffix}\n
\n (\n \n ))} />\n \n \n \n );\n};\n\nexport default InputsList;\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 */\nclass InputStateComparator {\n constructor() {\n this.mapping = {\n CREATED: 0,\n INITIALIZED: 1,\n INVALID_CONFIGURATION: 2,\n STARTING: 3,\n RUNNING: 4,\n FAILED: 2,\n STOPPING: 1,\n STOPPED: 0,\n TERMINATED: 0,\n };\n }\n\n compare(state1, state2) {\n return this.mapping[state1.toUpperCase()] - this.mapping[state2.toUpperCase()];\n }\n}\n\nexport default InputStateComparator;\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 PropTypes from 'prop-types';\nimport React from 'react';\n\nimport { OverlayTrigger, LinkToNode, Spinner } from 'components/common';\nimport { Label } from 'components/bootstrap';\nimport InputStateComparator from 'logic/inputs/InputStateComparator';\nimport { InputStatesStore } from 'stores/inputs/InputStatesStore';\nimport { NodesStore } from 'stores/nodes/NodesStore';\nimport type { Input } from 'components/messageloaders/Types';\nimport { useStore } from 'stores/connect';\n\ntype Props = {\n input: Input,\n}\n\nconst comparator = new InputStateComparator();\n\ntype InputState = {\n count: number,\n state:\n | 'RUNNING'\n | 'FAILED'\n | 'STOPPED'\n | 'STARTING'\n}\ntype InputStates = {\n [inputId: string]: InputState,\n}\n\nconst InputStateBadge = ({ input }: Props) => {\n const { inputStates } = useStore(InputStatesStore) as { inputStates: InputStates };\n const { nodes } = useStore(NodesStore);\n\n const _labelClassForState = (sortedStates) => {\n const nodesWithKnownState = sortedStates.reduce((numberOfNodes, state) => numberOfNodes + state.count, 0);\n\n if (input.global && nodesWithKnownState !== Object.keys(nodes).length) {\n return 'warning';\n }\n\n const { state } = sortedStates[0];\n\n switch (state) {\n case 'RUNNING':\n return 'success';\n case 'FAILED':\n case 'STOPPED':\n return 'danger';\n case 'STARTING':\n return 'info';\n default:\n return 'warning';\n }\n };\n\n const _textForState = (sortedStates) => (input.global\n ? sortedStates.map((state) => `${state.count} ${state.state}`).join(', ')\n : sortedStates[0].state);\n\n const isLoading = !(inputStates && nodes);\n\n if (isLoading) {\n return ;\n }\n\n const inputId = input.id;\n const sortedInputStates = {};\n\n if (inputStates[inputId]) {\n Object.keys(inputStates[inputId]).forEach((node) => {\n const { state } = inputStates[inputId][node];\n\n if (!sortedInputStates[state]) {\n sortedInputStates[state] = [];\n }\n\n sortedInputStates[state].push(node);\n });\n }\n\n const sorted = Object.keys(sortedInputStates).sort(comparator.compare.bind(comparator)).map((state) => ({\n state: state,\n count: sortedInputStates[state].length,\n }));\n\n if (sorted.length > 0) {\n const popOverText = sorted.map((state) => sortedInputStates[state.state].map((node) => (\n : {state.state}
\n \n )));\n\n return (\n \n \n \n );\n }\n\n const text = input.global || input.node === undefined ? '0 RUNNING' : 'NOT RUNNING';\n\n return (\n \n );\n};\n\nInputStateBadge.propTypes = {\n input: PropTypes.object.isRequired,\n};\n\nexport default InputStateBadge;\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 PropTypes from 'prop-types';\nimport React from 'react';\n// eslint-disable-next-line no-restricted-imports\nimport createReactClass from 'create-react-class';\nimport Reflux from 'reflux';\n\nimport { Button } from 'components/bootstrap';\nimport { InputStatesStore } from 'stores/inputs/InputStatesStore';\nimport withTelemetry from 'logic/telemetry/withTelemetry';\nimport { getPathnameWithoutId } from 'util/URLUtils';\nimport { TELEMETRY_EVENT_TYPE } from 'logic/telemetry/Constants';\nimport withLocation from 'routing/withLocation';\n\nfunction inputStateFilter(state) {\n return state.inputStates ? state.inputStates[this.props.input.id] : undefined;\n}\n\nconst InputStateControl = createReactClass({\n // eslint-disable-next-line react/no-unused-class-component-methods\n displayName: 'InputStateControl',\n\n // eslint-disable-next-line react/no-unused-class-component-methods\n propTypes: {\n input: PropTypes.object.isRequired,\n sendTelemetry: PropTypes.func.isRequired,\n location: PropTypes.object.isRequired,\n },\n\n mixins: [Reflux.connectFilter(InputStatesStore, 'inputState', inputStateFilter)],\n\n getInitialState() {\n return {\n loading: false,\n };\n },\n\n _isInputRunning() {\n if (!this.state.inputState) {\n return false;\n }\n\n const nodeIDs = Object.keys(this.state.inputState);\n\n if (nodeIDs.length === 0) {\n return false;\n }\n\n return nodeIDs.some((nodeID) => {\n const nodeState = this.state.inputState[nodeID];\n\n return nodeState.state === 'RUNNING' || nodeState.state === 'STARTING' || nodeState.state === 'FAILING';\n });\n },\n\n _startInput() {\n this.setState({ loading: true });\n\n this.props.sendTelemetry(TELEMETRY_EVENT_TYPE.INPUTS.INPUT_START_CLICKED, {\n app_pathname: getPathnameWithoutId(this.props.location.pathname),\n app_action_value: 'start-input',\n });\n\n InputStatesStore.start(this.props.input)\n .finally(() => {\n this.setState({ loading: false });\n });\n },\n\n _stopInput() {\n this.setState({ loading: true });\n\n this.props.sendTelemetry(TELEMETRY_EVENT_TYPE.INPUTS.INPUT_STOP_CLICKED, {\n app_pathname: getPathnameWithoutId(this.props.location.pathname),\n app_action_value: 'stop-input',\n });\n\n InputStatesStore.stop(this.props.input)\n .finally(() => {\n this.setState({ loading: false });\n });\n },\n\n render() {\n if (this._isInputRunning()) {\n return (\n \n );\n }\n\n return (\n \n );\n },\n});\n\nexport default withLocation(withTelemetry(InputStateControl));\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/* eslint-disable no-restricted-globals */\nimport PropTypes from 'prop-types';\nimport React from 'react';\n// eslint-disable-next-line no-restricted-imports\nimport createReactClass from 'create-react-class';\nimport Reflux from 'reflux';\nimport numeral from 'numeral';\nimport styled, { css } from 'styled-components';\n\nimport NumberUtils from 'util/NumberUtils';\nimport { Icon, LinkToNode, Spinner } from 'components/common';\nimport { MetricsActions, MetricsStore } from 'stores/metrics/MetricsStore';\n\nconst InputIO = styled.span(({ theme }) => css`\n .total {\n color: ${theme.colors.gray[70]};\n }\n\n .value {\n font-family: ${theme.fonts.family.monospace};\n }\n\n .persec {\n margin-left: 3px;\n }\n\n .channel-direction {\n position: relative;\n left: -1px;\n }\n\n .channel-direction-down {\n position: relative;\n top: 1px;\n }\n\n .channel-direction-up {\n position: relative;\n top: -1px;\n }\n`);\n\nconst InputThroughput = createReactClass({\n displayName: 'InputThroughput',\n\n propTypes: {\n input: PropTypes.object.isRequired,\n },\n\n mixins: [Reflux.connect(MetricsStore)],\n\n getInitialState() {\n return {\n showDetails: false,\n };\n },\n\n UNSAFE_componentWillMount() {\n this._metricNames().forEach((metricName) => MetricsActions.addGlobal(metricName));\n },\n\n componentWillUnmount() {\n this._metricNames().forEach((metricName) => MetricsActions.removeGlobal(metricName));\n },\n\n _metricNames() {\n return [\n this._prefix('incomingMessages'),\n this._prefix('emptyMessages'),\n this._prefix('open_connections'),\n this._prefix('total_connections'),\n this._prefix('written_bytes_1sec'),\n this._prefix('written_bytes_total'),\n this._prefix('read_bytes_1sec'),\n this._prefix('read_bytes_total'),\n ];\n },\n\n _prefix(metric) {\n const { input } = this.props;\n\n return `${input.type}.${input.id}.${metric}`;\n },\n\n _getValueFromMetric(metric) {\n if (metric === null || metric === undefined) {\n return undefined;\n }\n\n switch (metric.type) {\n case 'meter':\n return metric.metric.rate.mean;\n case 'gauge':\n return metric.metric.value;\n case 'counter':\n return metric.metric.count;\n default:\n return undefined;\n }\n },\n\n _calculateMetrics(metrics) {\n const result = {};\n\n this._metricNames().forEach((metricName) => {\n result[metricName] = Object.keys(metrics).reduce((previous, nodeId) => {\n if (!metrics[nodeId][metricName]) {\n return previous;\n }\n\n const value = this._getValueFromMetric(metrics[nodeId][metricName]);\n\n if (value !== undefined) {\n return isNaN(previous) ? value : previous + value;\n }\n\n return previous;\n }, NaN);\n });\n\n return result;\n },\n\n _formatCount(count) {\n return numeral(count).format('0,0');\n },\n\n _formatNetworkStats(writtenBytes1Sec, writtenBytesTotal, readBytes1Sec, readBytesTotal) {\n const network = (\n \n Network IO: \n \n \n {NumberUtils.formatBytes(readBytes1Sec)} \n\n \n {NumberUtils.formatBytes(writtenBytes1Sec)}\n \n\n \n (total: \n \n {NumberUtils.formatBytes(readBytesTotal)} \n\n \n {NumberUtils.formatBytes(writtenBytesTotal)}\n )\n \n
\n \n );\n\n return network;\n },\n\n _formatConnections(openConnections, totalConnections) {\n return (\n \n Active connections: {this._formatCount(openConnections)} \n ({this._formatCount(totalConnections)} total)\n
\n \n );\n },\n\n _formatAllNodeDetails(metrics) {\n return (\n \n
\n {Object.keys(metrics).map((nodeId) => this._formatNodeDetails(nodeId, metrics[nodeId]))}\n \n );\n },\n\n _formatNodeDetails(nodeId, metrics) {\n const { input } = this.props;\n const openConnections = this._getValueFromMetric(metrics[this._prefix('open_connections')]);\n const totalConnections = this._getValueFromMetric(metrics[this._prefix('total_connections')]);\n const emptyMessages = this._getValueFromMetric(metrics[this._prefix('emptyMessages')]);\n const writtenBytes1Sec = this._getValueFromMetric(metrics[this._prefix('written_bytes_1sec')]);\n const writtenBytesTotal = this._getValueFromMetric(metrics[this._prefix('written_bytes_total')]);\n const readBytes1Sec = this._getValueFromMetric(metrics[this._prefix('read_bytes_1sec')]);\n const readBytesTotal = this._getValueFromMetric(metrics[this._prefix('read_bytes_total')]);\n\n return (\n \n \n
\n {!isNaN(writtenBytes1Sec) && this._formatNetworkStats(writtenBytes1Sec, writtenBytesTotal, readBytes1Sec, readBytesTotal)}\n {!isNaN(openConnections) && this._formatConnections(openConnections, totalConnections)}\n {!isNaN(emptyMessages) && Empty messages discarded: {this._formatCount(emptyMessages)}
}\n {isNaN(writtenBytes1Sec) && isNaN(openConnections) && No metrics available for this node}\n
\n \n );\n },\n\n _toggleShowDetails(evt) {\n evt.preventDefault();\n const { showDetails } = this.state;\n\n this.setState({ showDetails: !showDetails });\n },\n\n render() {\n const { metrics, showDetails } = this.state;\n const { input } = this.props;\n\n if (!metrics) {\n return ;\n }\n\n const calculatedMetrics = this._calculateMetrics(metrics);\n const incomingMessages = calculatedMetrics[this._prefix('incomingMessages')];\n const emptyMessages = calculatedMetrics[this._prefix('emptyMessages')];\n const openConnections = calculatedMetrics[this._prefix('open_connections')];\n const totalConnections = calculatedMetrics[this._prefix('total_connections')];\n const writtenBytes1Sec = calculatedMetrics[this._prefix('written_bytes_1sec')];\n const writtenBytesTotal = calculatedMetrics[this._prefix('written_bytes_total')];\n const readBytes1Sec = calculatedMetrics[this._prefix('read_bytes_1sec')];\n const readBytesTotal = calculatedMetrics[this._prefix('read_bytes_total')];\n\n return (\n \n Throughput / Metrics
\n \n {isNaN(incomingMessages) && isNaN(writtenBytes1Sec) && isNaN(openConnections) && No metrics available for this input}\n {!isNaN(incomingMessages) && 1 minute average rate: {this._formatCount(incomingMessages)} msg/s
}\n {!isNaN(writtenBytes1Sec) && this._formatNetworkStats(writtenBytes1Sec, writtenBytesTotal, readBytes1Sec, readBytesTotal)}\n {!isNaN(openConnections) && this._formatConnections(openConnections, totalConnections)}\n {!isNaN(emptyMessages) && Empty messages discarded: {this._formatCount(emptyMessages)}
}\n {/* eslint-disable-next-line jsx-a11y/anchor-is-valid */}\n {!isNaN(writtenBytes1Sec) && input.global && {showDetails ? 'Hide' : 'Show'} details}\n {!isNaN(writtenBytes1Sec) && showDetails && this._formatAllNodeDetails(metrics)}\n \n \n );\n },\n});\n\nexport default InputThroughput;\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 PropTypes from 'prop-types';\nimport React from 'react';\n\nimport { Button } from 'components/bootstrap';\nimport { Icon } from 'components/common';\nimport { InputStaticFieldsStore } from 'stores/inputs/InputStaticFieldsStore';\n\nclass InputStaticFields extends React.Component {\n static propTypes = {\n input: PropTypes.object.isRequired,\n };\n\n _deleteStaticField = (fieldName) => () => {\n if (window.confirm(`Are you sure you want to remove static field '${fieldName}' from '${this.props.input.title}'?`)) {\n InputStaticFieldsStore.destroy(this.props.input, fieldName);\n }\n };\n\n _deleteButton = (fieldName) => (\n \n );\n\n _formatStaticFields = (staticFields) => {\n const formattedFields = [];\n const staticFieldNames = Object.keys(staticFields);\n\n staticFieldNames.forEach((fieldName) => {\n formattedFields.push(\n \n {fieldName}: {staticFields[fieldName]} {this._deleteButton(fieldName)}\n ,\n );\n });\n\n return formattedFields;\n };\n\n render() {\n const staticFieldNames = Object.keys(this.props.input.static_fields);\n\n if (staticFieldNames.length === 0) {\n return ;\n }\n\n return (\n \n Static fields
\n \n {this._formatStaticFields(this.props.input.static_fields)}\n
\n \n );\n }\n}\n\nexport default InputStaticFields;\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 PropTypes from 'prop-types';\nimport React, { useCallback, useState, useEffect } from 'react';\n\nimport { useStore } from 'stores/connect';\nimport { Input } from 'components/bootstrap';\nimport { Spinner } from 'components/common';\nimport { NodesStore } from 'stores/nodes/NodesStore';\n\ntype Props = {\n global: boolean,\n node: string,\n onChange: (type: 'node' | 'global', value: boolean | string | undefined | null) => void,\n};\n\nconst NodeOrGlobalSelect = ({ global = false, node, onChange }: Props) => {\n const { nodes } = useStore(NodesStore);\n const [globalState, setGlobal] = useState(global);\n const [nodeState, setNode] = useState(node);\n\n useEffect(() => {\n if (!node && nodes) {\n const nodeIds = Object.keys(nodes);\n\n if (nodeIds.length === 1) {\n onChange('node', nodeIds[0]);\n setNode(nodeIds[0]);\n }\n }\n }, [nodes]);\n\n const _onChangeGlobal = useCallback((evt) => {\n const isGlobal = evt.target.checked;\n\n setGlobal(isGlobal);\n\n if (isGlobal) {\n setNode('placeholder');\n onChange('node', undefined);\n } else {\n onChange('node', nodeState);\n }\n\n onChange('global', isGlobal);\n }, [onChange, nodeState, setNode, setGlobal]);\n\n const _onChangeNode = useCallback((evt) => {\n setNode(evt.target.value);\n onChange('node', evt.target.value);\n }, [setNode, onChange]);\n\n if (!nodes) {\n return ;\n }\n\n const options = Object.keys(nodes)\n .map((nodeId) => );\n\n const nodeSelect = !globalState ? (\n \n \n {options}\n \n ) : null;\n\n return (\n \n \n {nodeSelect}\n \n );\n};\n\nNodeOrGlobalSelect.propTypes = {\n global: PropTypes.bool,\n onChange: PropTypes.func.isRequired,\n node: PropTypes.string,\n};\n\nNodeOrGlobalSelect.defaultProps = {\n global: false,\n node: undefined,\n};\n\nexport default NodeOrGlobalSelect;\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 PropTypes from 'prop-types';\nimport React from 'react';\n\nimport { BootstrapModalForm, Input } from 'components/bootstrap';\nimport { InputStaticFieldsStore } from 'stores/inputs/InputStaticFieldsStore';\n\nclass StaticFieldForm extends React.Component {\n static propTypes = {\n input: PropTypes.object.isRequired,\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n showModal: false,\n };\n }\n\n // eslint-disable-next-line react/no-unused-class-component-methods\n open = () => {\n this.setState({ showModal: true });\n };\n\n close = () => {\n this.setState({ showModal: false });\n };\n\n _addStaticField = () => {\n const fieldName = this.fieldName.getValue();\n const fieldValue = this.fieldValue.getValue();\n\n InputStaticFieldsStore.create(this.props.input, fieldName, fieldValue).then(() => this.close());\n };\n\n render() {\n return (\n \n Define a static field that is added to every message that comes in via this input. The field is not\n overwritten If the message already has that key. Key must only contain alphanumeric characters or\n underscores and not be a reserved field.\n
\n { this.fieldName = fieldName; }}\n type=\"text\"\n id=\"field-name\"\n label=\"Field name\"\n required\n pattern=\"[A-Za-z0-9_]*\"\n title=\"Should consist only of alphanumeric characters and underscores.\"\n autoFocus />\n { this.fieldValue = fieldValue; }}\n type=\"text\"\n id=\"field-value\"\n label=\"Field value\"\n required />\n \n );\n }\n}\n\nexport default StaticFieldForm;\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 Reflux from 'reflux';\n\nimport UserNotification from 'util/UserNotification';\nimport * as URLUtils from 'util/URLUtils';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport fetch from 'logic/rest/FetchProvider';\nimport { singletonStore } from 'logic/singleton';\n\n// eslint-disable-next-line import/prefer-default-export\nexport const InputStatesStore = singletonStore(\n 'core.InputStates',\n () => Reflux.createStore({\n listenables: [],\n\n init() {\n this.list();\n },\n\n getInitialState() {\n return { inputStates: this.inputStates };\n },\n\n list() {\n const url = URLUtils.qualifyUrl(ApiRoutes.ClusterInputStatesController.list().url);\n\n return fetch('GET', url)\n .then((response) => {\n const result = {};\n\n Object.keys(response).forEach((node) => {\n if (!response[node]) {\n return;\n }\n\n response[node].forEach((input) => {\n if (!result[input.id]) {\n result[input.id] = {};\n }\n\n result[input.id][node] = input;\n });\n });\n\n this.inputStates = result;\n this.trigger({ inputStates: this.inputStates });\n\n return result;\n });\n },\n\n _checkInputStateChangeResponse(input, response, action) {\n const nodes = Object.keys(response).filter((node) => (input.global ? true : node === input.node));\n const failedNodes = nodes.filter((nodeId) => response[nodeId] === null);\n\n if (failedNodes.length === 0) {\n UserNotification.success(`Request to ${action.toLowerCase()} input '${input.title}' was sent successfully.`,\n `Input '${input.title}' will be ${action === 'START' ? 'started' : 'stopped'} shortly`);\n } else if (failedNodes.length === nodes.length) {\n UserNotification.error(`Request to ${action.toLowerCase()} input '${input.title}' failed. Check your Graylog logs for more information.`,\n `Input '${input.title}' could not be ${action === 'START' ? 'started' : 'stopped'}`);\n } else {\n UserNotification.warning(`Request to ${action.toLowerCase()} input '${input.title}' failed in some nodes. Check your Graylog logs for more information.`,\n `Input '${input.title}' could not be ${action === 'START' ? 'started' : 'stopped'} in all nodes`);\n }\n },\n\n start(input) {\n const url = URLUtils.qualifyUrl(ApiRoutes.ClusterInputStatesController.start(input.id).url);\n\n return fetch('PUT', url)\n .then(\n (response) => {\n this._checkInputStateChangeResponse(input, response, 'START');\n this.list();\n\n return response;\n },\n (error) => {\n UserNotification.error(`Error starting input '${input.title}': ${error}`, `Input '${input.title}' could not be started`);\n },\n );\n },\n\n stop(input) {\n const url = URLUtils.qualifyUrl(ApiRoutes.ClusterInputStatesController.stop(input.id).url);\n\n return fetch('DELETE', url)\n .then(\n (response) => {\n this._checkInputStateChangeResponse(input, response, 'STOP');\n this.list();\n\n return response;\n },\n (error) => {\n UserNotification.error(`Error stopping input '${input.title}': ${error}`, `Input '${input.title}' could not be stopped`);\n },\n );\n },\n }),\n);\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 Reflux from 'reflux';\n\nimport { qualifyUrl } from 'util/URLUtils';\nimport fetch from 'logic/rest/FetchProvider';\nimport UserNotification from 'util/UserNotification';\nimport { singletonStore, singletonActions } from 'logic/singleton';\n\ntype InputTypesActionsType = {\n list: () => Promise,\n get: (inputTypeId: string) => Promise,\n}\nexport const InputTypesActions = singletonActions(\n 'core.InputTypes',\n () => Reflux.createActions({\n list: { asyncResult: true },\n get: { asyncResult: true },\n }),\n);\n\nexport type InputTypes = {\n [type: string]: string,\n};\n\nexport type ConfigurationField = {\n field_type: 'boolean' | 'text' | 'dropdown' | 'list' | 'number',\n name: string,\n human_name: string,\n description: string,\n default_value: any,\n is_optional: boolean,\n attributes: Array,\n additional_info: any,\n position: number,\n is_encrypted: boolean,\n};\n\nexport type InputDescription = {\n type: string,\n name: string,\n is_exclusive: boolean,\n requested_configuration: {\n [key: string]: ConfigurationField,\n },\n link_to_docs: string,\n};\n\nexport type InputDescriptions = {\n [type: string]: InputDescription,\n};\n\nexport const InputTypesStore = singletonStore(\n 'core.InputTypes',\n () => Reflux.createStore({\n listenables: [InputTypesActions],\n sourceUrl: '/system/inputs/types',\n inputTypes: undefined,\n inputDescriptions: undefined,\n\n init() {\n this.list();\n },\n\n getInitialState(): { inputTypes: InputTypes, inputDescriptions: InputDescriptions } {\n return { inputTypes: this.inputTypes, inputDescriptions: this.inputDescriptions };\n },\n\n list() {\n const promiseTypes = fetch('GET', qualifyUrl(this.sourceUrl));\n const promiseDescriptions = fetch('GET', qualifyUrl(`${this.sourceUrl}/all`));\n const promise: Promise<[{ types: InputTypes }, InputDescriptions]> = Promise.all([promiseTypes, promiseDescriptions]);\n\n promise\n .then(\n ([typesResponse, descriptionsResponse]) => {\n this.inputTypes = typesResponse.types;\n this.inputDescriptions = descriptionsResponse;\n this.trigger(this.getInitialState());\n },\n (error) => {\n UserNotification.error(`Fetching Input Types failed with status: ${error}`,\n 'Could not retrieve Inputs');\n },\n );\n\n InputTypesActions.list.promise(promise);\n },\n\n get(inputTypeId: string) {\n const promise = fetch('GET', qualifyUrl(`${this.sourceUrl}/${inputTypeId}`));\n\n promise\n .catch((error) => {\n UserNotification.error(`Fetching input ${inputTypeId} failed with status: ${error}`,\n 'Could not retrieve input');\n });\n\n InputTypesActions.get.promise(promise);\n },\n }),\n);\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 type { AbsoluteRangeQueryParameter } from 'views/logic/TimeRange';\n\n/**\n * Creates an absolute time range that can be used to look up recently received messages.\n * It accommodates for the eventuality that messages can have timestamps from the future\n * due to wrong timezone parsing or wrong system clocks.\n */\nconst recentMessagesTimeRange = (): AbsoluteRangeQueryParameter => {\n const now = Date.now();\n // The biggest possible time difference on earth is 26 hours.\n // It's between Kiribati (UTC+14) and the Howland Islands (UTC-12)\n // So we are going to create an absolute range\n // from 26 hours in the past to 26 hours into the future.\n const fromDate = new Date(now - 26 * 60 * 60000).toISOString();\n const toDate = new Date(now + 26 * 60 * 60000).toISOString();\n\n return { rangetype: 'absolute', from: fromDate, to: toDate };\n};\n\nexport default recentMessagesTimeRange;\n"],"names":["LoaderContainer","StyledInputDropdown","PLACEHOLDER","_formatInput","id","title","type","_sortByTitle","input1","input2","StaticInput","InputDropdown","disabled","inputs","onLoadMessage","preselectedInputId","selectedInput","setSelectedInput","onSelectedInputChange","event","_onLoadMessage","preselectedInput","inputOptions","NewInputRow","StyledForm","CreateInputControl","InputTypesStore","options","inputTypes","inputTypeA","inputTypeB","inputDefinition","customConfiguration","inputConfig","onClose","CustomInputsConfiguration","data","inputModal","selectedInputDefinition","customInputsComponent","inputTypeName","configurationForm","withLocation","withTelemetry","InputForm","props","field","value","state","newData","AppConfig","values","titleValue","HideOnCloud","InputListItem","PermissionsMixin","sendTelemetry","location","input","definition","titleSuffix","actions","queryField","Routes","extractorRoute","showMetricsMenuItem","subtitle","inputForm","additionalContent","staticFieldForm","SingleNodeActions","singleton","SingleNodeStore","nodeId","promise","URLUtils","response","InputListRow","_splitInputs","node","globalInputs","inputA","inputB","localInputs","_onFilterInputs","filter","regExp","filterMethod","permissions","currentNode","InputsStore","inputsStore","setFilter","resetFilter","filteredGlobalInputs","filteredLocalInputs","nodeAffix","EntityList","InputStateComparator","state1","state2","comparator","InputStateBadge","inputStates","InputStatesStore","nodes","NodesStore","_labelClassForState","sortedStates","nodesWithKnownState","numberOfNodes","_textForState","inputId","sortedInputStates","sorted","popOverText","text","inputStateFilter","InputStateControl","nodeIDs","nodeID","nodeState","InputIO","theme","MetricsStore","metricName","metric","metrics","result","previous","count","writtenBytes1Sec","writtenBytesTotal","readBytes1Sec","readBytesTotal","NumberUtils","openConnections","totalConnections","emptyMessages","evt","showDetails","calculatedMetrics","incomingMessages","InputStaticFields","fieldName","InputStaticFieldsStore","staticFields","formattedFields","NodeOrGlobalSelect","global","onChange","globalState","setGlobal","setNode","nodeIds","_onChangeGlobal","isGlobal","_onChangeNode","nodeSelect","StaticFieldForm","fieldValue","url","action","failedNodes","error","InputTypesActions","promiseTypes","promiseDescriptions","typesResponse","descriptionsResponse","inputTypeId","now","fromDate","toDate"],"sourceRoot":""}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy