All Downloads are FREE. Search and download functionalities are using the official Maven repository.

web-interface.assets.325e2d4b-1396.9d207ff9177d9fba2cc1.js.map Maven / Gradle / Ivy

There is a newer version: 6.0.1
Show newest version
{"version":3,"file":"325e2d4b-1396.9d207ff9177d9fba2cc1.js","mappings":"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","sources":["webpack://graylog-web-interface/./src/components/sidecars/common/CollectorIndicator.jsx","webpack://graylog-web-interface/./src/components/sidecars/common/ColorLabel.tsx","webpack://graylog-web-interface/./src/stores/sidecars/SidecarsAdministrationStore.js","webpack://graylog-web-interface/./src/components/sidecars/administration/CollectorConfigurationModal.tsx","webpack://graylog-web-interface/./src/components/sidecars/administration/CollectorConfigurationModalContainer.tsx","webpack://graylog-web-interface/./src/components/sidecars/administration/CollectorProcessControl.tsx","webpack://graylog-web-interface/./src/components/sidecars/administration/CollectorsAdministrationActions.tsx","webpack://graylog-web-interface/./src/components/sidecars/administration/CollectorsAdministrationFilters.jsx","webpack://graylog-web-interface/./src/components/sidecars/administration/FiltersSummary.css?e0a2","webpack://graylog-web-interface/./src/components/sidecars/administration/FiltersSummary.jsx","webpack://graylog-web-interface/./src/components/sidecars/administration/CollectorsAdministration.tsx","webpack://graylog-web-interface/./src/components/sidecars/administration/CollectorsAdministrationContainer.jsx","webpack://graylog-web-interface/./src/pages/SidecarAdministrationPage.jsx","webpack://graylog-web-interface/./src/util/SortUtils.ts","webpack://graylog-web-interface/./src/components/sidecars/administration/FiltersSummary.css","webpack://graylog-web-interface/./src/components/sidecars/common/CommonSidecarStyles.css","webpack://graylog-web-interface/./src/components/sidecars/common/CommonSidecarStyles.css?9855"],"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 React from 'react';\nimport createReactClass from 'create-react-class';\nimport PropTypes from 'prop-types';\nimport lodash from 'lodash';\n\nimport OperatingSystemIcon from './OperatingSystemIcon';\n\nconst CollectorIndicator = createReactClass({\n  propTypes: {\n    collector: PropTypes.string.isRequired,\n    operatingSystem: PropTypes.string,\n  },\n\n  getDefaultProps() {\n    return {\n      operatingSystem: undefined,\n    };\n  },\n\n  render() {\n    const { collector, operatingSystem } = this.props;\n\n    return (\n      \n         {collector}\n        {operatingSystem &&  on {lodash.upperFirst(operatingSystem)}}\n      \n    );\n  },\n});\n\nexport default CollectorIndicator;\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';\nimport type { DefaultTheme } from 'styled-components';\nimport styled, { css, withTheme } from 'styled-components';\n\nimport { themePropTypes } from 'theme';\nimport { Label } from 'components/bootstrap';\n\ntype Size = 'normal' | 'small' | 'xsmall';\n\ninterface ColorLabelWrapProps {\n  size: Size,\n  theme: DefaultTheme\n}\n\ninterface ColorLabelProps {\n  color: string,\n  size?: Size,\n  text?: string | React.ReactNode,\n  theme: DefaultTheme,\n}\n\nconst ColorLabelWrap = styled.span(({ size, theme }: ColorLabelWrapProps) => {\n  const { body, small, tiny } = theme.fonts.size;\n  const fontSize = size === 'small' ? small : body;\n\n  return css`\n    vertical-align: middle;\n    font-size: ${size === 'xsmall' ? tiny : fontSize};\n  `;\n});\n\nconst ColorLabel = ({ color, size, text, theme }: ColorLabelProps) => {\n  const borderColor = theme.utils.colorLevel(color, 5);\n  const textColor = theme.utils.contrastingColor(color);\n\n  return (\n    \n      \n    \n  );\n};\n\nColorLabel.propTypes = {\n  color: PropTypes.string.isRequired,\n  text: PropTypes.oneOfType([PropTypes.string, PropTypes.element]),\n  size: PropTypes.oneOf(['normal', 'small', 'xsmall']),\n  theme: themePropTypes.isRequired,\n};\n\nColorLabel.defaultProps = {\n  text: ,\n  size: 'normal',\n};\n\nexport default withTheme(ColorLabel);\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';\nimport lodash from 'lodash';\n\nimport * as URLUtils from 'util/URLUtils';\nimport UserNotification from 'util/UserNotification';\nimport { fetchPeriodically } from 'logic/rest/FetchProvider';\nimport { singletonStore, singletonActions } from 'logic/singleton';\n\nexport const SidecarsAdministrationActions = singletonActions(\n  'core.SidecarsAdministration',\n  () => Reflux.createActions({\n    list: { asyncResult: true },\n    refreshList: { asyncResult: true },\n    setAction: { asyncResult: true },\n  }),\n);\n\nexport const SidecarsAdministrationStore = singletonStore(\n  'core.SidecarsAdministration',\n  () => Reflux.createStore({\n    listenables: [SidecarsAdministrationActions],\n    sourceUrl: '/sidecar',\n    sidecars: undefined,\n    filters: undefined,\n    pagination: {\n      count: undefined,\n      page: undefined,\n      pageSize: undefined,\n      total: undefined,\n    },\n    query: undefined,\n\n    propagateChanges() {\n      this.trigger({\n        sidecars: this.sidecars,\n        filters: this.filters,\n        query: this.query,\n        pagination: this.pagination,\n      });\n    },\n\n    list({ query = '', page = 1, pageSize = 50, filters }) {\n      const body = {\n        query: query,\n        page: page,\n        per_page: pageSize,\n        filters: filters,\n      };\n\n      const promise = fetchPeriodically('POST', URLUtils.qualifyUrl(`${this.sourceUrl}/administration`), body);\n\n      promise.then(\n        (response) => {\n          this.sidecars = response.sidecars;\n          this.query = response.query;\n          this.filters = response.filters;\n\n          this.pagination = {\n            total: response.pagination.total,\n            count: response.pagination.count,\n            page: response.pagination.page,\n            pageSize: response.pagination.per_page,\n          };\n\n          this.propagateChanges();\n\n          return response;\n        },\n        (error) => {\n          UserNotification.error(error.status === 400 ? error.responseMessage : `Fetching Sidecars failed with status: ${error.message}`,\n            'Could not retrieve Sidecars');\n        },\n      );\n\n      SidecarsAdministrationActions.list.promise(promise);\n    },\n\n    refreshList() {\n      this.list({ query: this.query, page: this.pagination.page, pageSize: this.pagination.pageSize, filters: this.filters });\n    },\n\n    setAction(action, collectors) {\n      const sidecarIds = Object.keys(collectors);\n      const formattedCollectors = sidecarIds.map((sidecarId) => ({\n        sidecar_id: sidecarId,\n        collector_ids: collectors[sidecarId],\n      }));\n      const body = {\n        action: action,\n        collectors: formattedCollectors,\n      };\n\n      const promise = fetchPeriodically('PUT', URLUtils.qualifyUrl(`${this.sourceUrl}/administration/action`), body);\n\n      promise.then(\n        (response) => {\n          UserNotification.success('', `${lodash.upperFirst(action)} for ${formattedCollectors.length} collectors requested`);\n\n          return response;\n        },\n        (error) => {\n          UserNotification.error(`Requesting ${action} failed with status: ${error}`,\n            `Could not ${action} collectors`);\n        },\n      );\n\n      SidecarsAdministrationActions.setAction.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 React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport lodash from 'lodash';\nimport styled, { css } from 'styled-components';\n\nimport Routes from 'routing/Routes';\nimport { Table, BootstrapModalWrapper, Button, Modal } from 'components/bootstrap';\nimport { SearchForm, Icon } from 'components/common';\nimport CollectorIndicator from 'components/sidecars/common/CollectorIndicator';\nimport ColorLabel from 'components/sidecars/common/ColorLabel';\nimport { Link } from 'components/common/router';\n\nimport type { Collector, Configuration, SidecarSummary } from '../types';\n\nconst ConfigurationContainer = styled.div`\n  overflow: auto;\n  height: 360px;\n  margin-top: 8px;\n`;\n\nconst ConfigurationTable = styled(Table)`\n  margin-bottom: 0;\n`;\n\nconst NoConfigurationMessage = styled.div`\n  display: flex;\n  justify-content: center;\n`;\n\nconst AddNewConfiguration = styled.div`\n  display: flex;\n  justify-content: center;\n  align-items: center;\n`;\n\nconst SecondaryText = styled.div`\n  overflow: hidden;\n  white-space: nowrap;\n  text-overflow: ellipsis;\n  color: #aaaaaa;\n  margin-top: -4px;\n  margin-bottom: -2px;\n`;\n\nconst TableRow = styled.tr(({ disabled = false }: {disabled?: boolean}) => css`\n  cursor: ${disabled ? 'auto' : 'pointer'};\n  background-color: ${disabled ? '#E8E8E8 !important' : 'initial'};\n  border-bottom: 1px solid lightgray;\n  height: 49px;\n`);\n\nconst StickyTableRowFooter = styled.tr`\n  height: 32px;\n  position: sticky;\n  bottom: -1px;\n`;\n\nconst IconTableCell = styled.td`\n  width: 32px;\n`;\n\nconst CollectorTableCell = styled.td`\n  width: 140px;\n  text-align: right;\n`;\n\nconst ConfigurationTableCell = styled.td`\n  flex: 1;\n  overflow: hidden;\n  white-space: nowrap;\n  text-overflow: ellipsis;\n  max-width: 0;\n`;\n\nconst UnselectTableCell = styled.td`\n  width: 32px;\n  text-align: center;\n`;\n\nconst ModalTitle = styled(Modal.Title)`\n  font-size: 1.266rem !important;\n  line-height: 1.1;\n`;\n\nconst ModalSubTitle = styled.div`\n  overflow: hidden;\n  white-space: nowrap;\n  text-overflow: ellipsis;\n`;\n\nconst StyledSearchForm = styled(SearchForm)`\n  .form-group, .query {\n    width: 100% !important;\n  }\n`;\n\nconst getFilterQuery = (_query: string) => {\n  try {\n    return new RegExp(_query, 'i');\n  } catch (error) {\n    return ' ';\n  }\n};\n\ntype Props = {\n  show: boolean,\n  onCancel: () => void,\n  onSave: (selectedConfigurations: string[], partiallySelectedConfigurations: string[]) => void,\n  selectedCollectorName: string,\n  selectedSidecarNames: string[],\n  initialAssignedConfigs: string[],\n  initialPartiallyAssignedConfigs: string[],\n  unassignedConfigs: string[],\n  getRowData: (configName: string) => {\n    configuration: Configuration,\n    collector: Collector,\n    sidecars: SidecarSummary[],\n    autoAssignedTags: string[],\n  }\n};\n\nconst CollectorConfigurationModal = ({\n  show,\n  onCancel,\n  onSave,\n  selectedCollectorName,\n  selectedSidecarNames,\n  initialAssignedConfigs,\n  initialPartiallyAssignedConfigs,\n  unassignedConfigs,\n  getRowData,\n}: Props) => {\n  const [searchQuery, setSearchQuery] = useState('');\n  const [selectedConfigurations, setSelectedConfigurations] = useState(initialAssignedConfigs);\n  const [partiallySelectedConfigurations, setPartiallySelectedConfigurations] = useState(initialPartiallyAssignedConfigs);\n\n  const onReset = () => {\n    setSelectedConfigurations(initialAssignedConfigs);\n    setPartiallySelectedConfigurations(initialPartiallyAssignedConfigs);\n    setSearchQuery('');\n  };\n\n  const isNotDirty = lodash.isEqual(selectedConfigurations, initialAssignedConfigs) && lodash.isEqual(partiallySelectedConfigurations, initialPartiallyAssignedConfigs);\n\n  const filteredOptions = [...initialAssignedConfigs, ...initialPartiallyAssignedConfigs, ...unassignedConfigs].filter((configuration) => configuration.match(getFilterQuery(searchQuery)));\n\n  const rows = filteredOptions.map((configName) => {\n    const { configuration, collector, sidecars, autoAssignedTags } = getRowData(configName);\n\n    const selected = selectedConfigurations.includes(configName);\n    const partiallySelected = !selected && partiallySelectedConfigurations.includes(configName);\n    const secondaryText = (selected && selectedSidecarNames.join(', ')) || (partiallySelected && sidecars.map((sidecar) => sidecar.node_name).join(', ')) || '';\n    const isAssignedFromTags = autoAssignedTags.length > 0;\n\n    return (\n       {\n                  if (!isAssignedFromTags) {\n                    if (partiallySelected) {\n                      setPartiallySelectedConfigurations(partiallySelectedConfigurations.filter((name) => name !== configName));\n                    } else {\n                      setSelectedConfigurations(selected ? selectedConfigurations.filter((name) => name !== configName) : [...selectedConfigurations, configName]);\n                    }\n                  }\n                }}>\n        \n          {selected && }\n          {partiallySelected && }\n        \n        \n        \n          {configName}\n          \n            {secondaryText}\n          \n        \n        \n          {isAssignedFromTags && }\n        \n        \n          \n            {collector\n              ? \n              : Unknown collector}\n          \n        \n        {(selected || partiallySelected) && !isAssignedFromTags && }\n      \n    );\n  });\n\n  return (\n    \n      \n        \n          Edit {selectedCollectorName} Configurations\n          \n            \n              {`${selectedSidecarNames.length} sidecar${selectedSidecarNames.length > 1 ? 's' : ''}: `}\n              {selectedSidecarNames.join(', ')}\n            \n          \n        \n      \n      \n         setSearchQuery(q)}\n                          topMargin={0} />\n        \n          \n            \n              {(rows.length === 0) ? (\n                \n                  \n                    No configurations available for the selected log collector.\n                  \n                \n              ) : (\n                rows\n              )}\n              \n                \n                  \n                     Add a new configuration\n                  \n                \n              \n            \n          \n        \n      \n      \n        \n        \n        \n      \n    \n  );\n};\n\nCollectorConfigurationModal.propTypes = {\n  show: PropTypes.bool.isRequired,\n  selectedCollectorName: PropTypes.string.isRequired,\n  selectedSidecarNames: PropTypes.array.isRequired,\n  initialAssignedConfigs: PropTypes.array.isRequired,\n  initialPartiallyAssignedConfigs: PropTypes.array.isRequired,\n  unassignedConfigs: PropTypes.array.isRequired,\n  onCancel: PropTypes.func.isRequired,\n  onSave: PropTypes.func.isRequired,\n  getRowData: PropTypes.func.isRequired,\n};\n\nexport default CollectorConfigurationModal;\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, { useState, useRef, useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport lodash from 'lodash';\nimport styled from 'styled-components';\n\nimport { naturalSortIgnoreCase } from 'util/SortUtils';\nimport { BootstrapModalConfirm } from 'components/bootstrap';\n\nimport CollectorConfigurationModal from './CollectorConfigurationModal';\n\nimport type { Collector, Configuration, SidecarCollectorPairType, SidecarSummary } from '../types';\n\nconst ConfigurationSummary = styled.div`\n  word-break: break-all;\n`;\n\ntype Props = {\n  collectors: Collector[],\n  configurations: Configuration[],\n  selectedSidecarCollectorPairs: SidecarCollectorPairType[],\n  onConfigurationSelectionChange: (pairs: SidecarCollectorPairType[], configs: Configuration[], callback: () => void) => void,\n  show: boolean,\n  onCancel: () => void,\n};\n\nconst CollectorConfigurationModalContainer = ({\n  collectors,\n  configurations,\n  selectedSidecarCollectorPairs,\n  onConfigurationSelectionChange,\n  show,\n  onCancel,\n}: Props) => {\n  const [nextAssignedConfigurations, setNextAssignedConfigurations] = useState([]);\n  const [nextPartiallyAssignedConfigurations, setNextPartiallyAssignedConfigurations] = useState([]);\n  const modalConfirm = useRef(null);\n\n  const getSelectedLogCollector = () => {\n    return (lodash.uniq(selectedSidecarCollectorPairs.map(({ collector }) => collector)))[0];\n  };\n\n  const sortConfigurationNames = (configs: Configuration[]) => {\n    return configs.sort((config1, config2) => naturalSortIgnoreCase(config1.name, config2.name))\n      .map((config) => config.name);\n  };\n\n  const getAssignedConfigurations = (_selectedSidecarCollectorPairs: SidecarCollectorPairType[], selectedCollector: Collector) => {\n    const assignments = _selectedSidecarCollectorPairs.map(({ sidecar }) => sidecar).reduce((accumulator, sidecar) => accumulator.concat(sidecar.assignments), []);\n\n    const filteredAssignments = assignments.map((assignment) => configurations.find((configuration) => configuration.id === assignment.configuration_id))\n      .filter((configuration) => selectedCollector?.id === configuration.collector_id);\n\n    return sortConfigurationNames(filteredAssignments);\n  };\n\n  const getUnassignedConfigurations = (assignedConfigurations: string[], selectedCollector: Collector) => {\n    const filteredConfigs = configurations.filter((config) => !assignedConfigurations.includes(config.name) && (selectedCollector?.id === config.collector_id));\n\n    return sortConfigurationNames(filteredConfigs);\n  };\n\n  const getFullyAndPartiallyAssignments = (_assignedConfigurations: string[]) => {\n    const occurrences = lodash.countBy(_assignedConfigurations);\n\n    return [\n      lodash.uniq(_assignedConfigurations.filter((config) => occurrences[config] === selectedSidecarCollectorPairs.length)),\n      lodash.uniq(_assignedConfigurations.filter((config) => occurrences[config] < selectedSidecarCollectorPairs.length)),\n    ];\n  };\n\n  const onSave = (fullyAssignedConfigs: string[], partiallyAssignedConfigs: string[]) => {\n    setNextAssignedConfigurations(fullyAssignedConfigs);\n    setNextPartiallyAssignedConfigurations(partiallyAssignedConfigs);\n    modalConfirm.current.open();\n  };\n\n  const confirmConfigurationChange = (doneCallback: () => void) => {\n    const assignedConfigurationsToSave = configurations.filter((config) => nextAssignedConfigurations.includes(config.name));\n\n    selectedSidecarCollectorPairs.forEach((sidecarCollectorPair) => {\n      let configs = assignedConfigurationsToSave;\n\n      if (nextPartiallyAssignedConfigurations.length) {\n        const selectedLogCollector = getSelectedLogCollector();\n        const assignments = getAssignedConfigurations([sidecarCollectorPair], selectedLogCollector);\n        const assignmentsToKeep = lodash.intersection(assignments, nextPartiallyAssignedConfigurations);\n        const assignedConfigurationsToKeep = configurations.filter((config) => assignmentsToKeep.includes(config.name));\n        configs = [...assignedConfigurationsToSave, ...assignedConfigurationsToKeep];\n      }\n\n      onConfigurationSelectionChange([sidecarCollectorPair], configs, doneCallback);\n    });\n\n    onCancel();\n  };\n\n  const cancelConfigurationChange = () => {\n    setNextAssignedConfigurations([]);\n  };\n\n  const getConfiguration = (configName: string) => {\n    return configurations.find((config) => config.name === configName);\n  };\n\n  const getCollector = (configName: string) => {\n    const configuration = getConfiguration(configName);\n\n    return collectors.find((collector) => collector.id === configuration.collector_id);\n  };\n\n  const getSidecars = (configName: string) => {\n    const configuration = getConfiguration(configName);\n\n    return selectedSidecarCollectorPairs.filter(({ sidecar }) => sidecar.assignments.map((assignment) => assignment.configuration_id).includes(configuration.id)).map((assignment) => assignment.sidecar);\n  };\n\n  const getAssignedFromTags = (configId: string, collectorId: string, sidecars: SidecarSummary[]) => {\n    const assigned_from_tags = sidecars.reduce((accumulator, sidecar) => {\n      return accumulator.concat(\n        sidecar.assignments.find((assignment) => (assignment.collector_id === collectorId) && (assignment.configuration_id === configId)).assigned_from_tags,\n      );\n    }, []);\n\n    return lodash.uniq(assigned_from_tags);\n  };\n\n  const getRowData = (configName: string) => {\n    const configuration = getConfiguration(configName);\n    const collector = getCollector(configName);\n    const sidecars = getSidecars(configName);\n    const autoAssignedTags = getAssignedFromTags(configuration.id, collector.id, sidecars);\n\n    return { configuration, collector, sidecars, autoAssignedTags };\n  };\n\n  const renderConfigurationSummary = () => {\n    const sidecarsSummary = selectedSidecarCollectorPairs.map(({ sidecar }) => sidecar.node_name).join(', ');\n    const numberOfSidecarsSummary = `${selectedSidecarCollectorPairs.length} sidecars`;\n    const summary = selectedSidecarCollectorPairs.length <= 5 ? sidecarsSummary : numberOfSidecarsSummary;\n\n    return (\n      \n        \n          

Are you sure you want to proceed with this action for {summary}?

\n
\n
\n );\n };\n\n const MemoizedConfigurationModal = useMemo(() => {\n const renderConfigurationModal = () => {\n const selectedCollector = getSelectedLogCollector();\n const assignedConfigurations = getAssignedConfigurations(selectedSidecarCollectorPairs, selectedCollector);\n const unassignedConfigurations = getUnassignedConfigurations(assignedConfigurations, selectedCollector);\n const [initialAssignedConfigs, initialPartiallyAssignedConfigs] = getFullyAndPartiallyAssignments(assignedConfigurations);\n\n return (\n sidecar.node_name)}\n initialAssignedConfigs={initialAssignedConfigs}\n initialPartiallyAssignedConfigs={initialPartiallyAssignedConfigs}\n unassignedConfigs={unassignedConfigurations}\n onCancel={onCancel}\n onSave={onSave}\n getRowData={getRowData} />\n );\n };\n\n return renderConfigurationModal;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [show]);\n\n return (\n <>\n \n {renderConfigurationSummary()}\n \n );\n};\n\nCollectorConfigurationModalContainer.propTypes = {\n collectors: PropTypes.array.isRequired,\n configurations: PropTypes.array.isRequired,\n selectedSidecarCollectorPairs: PropTypes.array.isRequired,\n onConfigurationSelectionChange: PropTypes.func.isRequired,\n show: PropTypes.bool.isRequired,\n onCancel: PropTypes.func.isRequired,\n};\n\nexport default CollectorConfigurationModalContainer;\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, { useState, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport lodash from 'lodash';\n\nimport { Button, Panel, BootstrapModalConfirm } from 'components/bootstrap';\nimport { Pluralize, SelectPopover } from 'components/common';\n\nimport type { SidecarCollectorPairType } from '../types';\n\nconst PROCESS_ACTIONS = ['start', 'restart', 'stop'];\n\ntype Props = {\n selectedSidecarCollectorPairs: SidecarCollectorPairType[],\n onProcessAction: (action: string, pairs: SidecarCollectorPairType[], callback: () => void) => void,\n};\n\nconst CollectorProcessControl = ({ selectedSidecarCollectorPairs, onProcessAction }: Props) => {\n const [selectedAction, setSelectedAction] = useState('');\n const [isConfigurationWarningHidden, setIsConfigurationWarningHidden] = useState(false);\n const modalRef = useRef(null);\n\n const resetSelectedAction = () => {\n setSelectedAction(undefined);\n };\n\n const handleProcessActionSelect = (processAction: string[], hideCallback: () => void) => {\n hideCallback();\n setSelectedAction(processAction ? processAction[0] : undefined);\n modalRef.current?.open();\n };\n\n const confirmProcessAction = (doneCallback: () => void) => {\n const callback = () => {\n doneCallback();\n resetSelectedAction();\n };\n\n onProcessAction(selectedAction, selectedSidecarCollectorPairs, callback);\n };\n\n const cancelProcessAction = () => {\n resetSelectedAction();\n };\n\n const hideConfigurationWarning = () => {\n setIsConfigurationWarningHidden(true);\n };\n\n const renderSummaryContent = (selectedSidecars: string[]) => {\n return (\n <>\n

\n You are going to {selectedAction} log collectors in \n :\n

\n

{selectedSidecars.join(', ')}

\n

Are you sure you want to proceed with this action?

\n \n );\n };\n\n const renderConfigurationWarning = () => {\n return (\n \n

\n At least one selected Collector is not configured yet. To start a new Collector, assign a\n Configuration to it and the Sidecar will start the process for you.\n

\n

\n {lodash.capitalize(selectedAction)}ing a Collector without Configuration will have no effect.\n

\n \n
\n );\n };\n\n const renderProcessActionSummary = () => {\n const selectedSidecars = lodash.uniq(selectedSidecarCollectorPairs.map(({ sidecar }) => sidecar.node_name));\n\n // Check if all selected collectors have assigned configurations\n const allHaveConfigurationsAssigned = selectedSidecarCollectorPairs.every(({ collector, sidecar }) => {\n return sidecar.assignments.some(({ collector_id }) => collector_id === collector.id);\n });\n\n const shouldShowConfigurationWarning = !isConfigurationWarningHidden && !allHaveConfigurationsAssigned;\n\n return (\n \n
\n {shouldShowConfigurationWarning\n ? renderConfigurationWarning()\n : renderSummaryContent(selectedSidecars)}\n
\n
\n );\n };\n\n const actionFormatter = (action: string) => lodash.capitalize(action);\n\n return (\n \n Process\n )}\n items={PROCESS_ACTIONS}\n itemFormatter={actionFormatter}\n selectedItems={selectedAction ? [selectedAction] : []}\n displayDataFilter={false}\n onItemSelect={handleProcessActionSelect} />\n {renderProcessActionSummary()}\n \n );\n};\n\nCollectorProcessControl.propTypes = {\n selectedSidecarCollectorPairs: PropTypes.array.isRequired,\n onProcessAction: PropTypes.func.isRequired,\n};\n\nexport default CollectorProcessControl;\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, { useState, useCallback } from 'react';\nimport PropTypes from 'prop-types';\nimport lodash from 'lodash';\nimport styled from 'styled-components';\n\nimport { ButtonToolbar, Button } from 'components/bootstrap';\nimport { Icon } from 'components/common';\n\nimport CollectorConfigurationModalContainer from './CollectorConfigurationModalContainer';\nimport CollectorProcessControl from './CollectorProcessControl';\n\nimport type { Collector, Configuration, SidecarCollectorPairType } from '../types';\n\nconst ConfigurationButton = styled(Button)`\n margin-right: 6px\n`;\n\ntype Props = {\n collectors: Collector[],\n configurations: Configuration[],\n selectedSidecarCollectorPairs: SidecarCollectorPairType[],\n onConfigurationSelectionChange: (pairs: SidecarCollectorPairType[], configs: Configuration[], callback: () => void) => void,\n onProcessAction: (action: string, pairs: SidecarCollectorPairType[], callback: () => void) => void,\n};\n\nconst CollectorsAdministrationActions = ({\n collectors,\n configurations,\n selectedSidecarCollectorPairs,\n onConfigurationSelectionChange,\n onProcessAction,\n}: Props) => {\n const [showConfigurationModal, setShowConfigurationModal] = useState(false);\n const onCancelConfigurationModal = useCallback(() => setShowConfigurationModal(false), []);\n\n const selectedLogCollectorsNames = lodash.uniq(selectedSidecarCollectorPairs.map(({ collector }) => collector.name));\n const configButtonTooltip = `Cannot change configurations of ${selectedLogCollectorsNames.join(', ')} collectors simultaneously`;\n\n return (\n \n 1) ? configButtonTooltip : undefined}\n bsStyle=\"primary\"\n bsSize=\"small\"\n disabled={selectedLogCollectorsNames.length !== 1}\n onClick={() => setShowConfigurationModal(true)}>\n Assign Configurations\n \n \n \n \n );\n};\n\nCollectorsAdministrationActions.propTypes = {\n collectors: PropTypes.array.isRequired,\n configurations: PropTypes.array.isRequired,\n selectedSidecarCollectorPairs: PropTypes.array.isRequired,\n onConfigurationSelectionChange: PropTypes.func.isRequired,\n onProcessAction: PropTypes.func.isRequired,\n};\n\nexport default CollectorsAdministrationActions;\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 createReactClass from 'create-react-class';\nimport PropTypes from 'prop-types';\nimport lodash from 'lodash';\n\nimport { SelectPopover } from 'components/common';\nimport { Button, ButtonToolbar } from 'components/bootstrap';\nimport { naturalSortIgnoreCase } from 'util/SortUtils';\nimport CollectorIndicator from 'components/sidecars/common/CollectorIndicator';\nimport ColorLabel from 'components/sidecars/common/ColorLabel';\nimport SidecarStatusEnum from 'logic/sidecar/SidecarStatusEnum';\n\nconst CollectorsAdministrationFilters = createReactClass({\n propTypes: {\n collectors: PropTypes.array.isRequired,\n configurations: PropTypes.array.isRequired,\n filters: PropTypes.object.isRequired,\n filter: PropTypes.func.isRequired,\n },\n\n onFilterChange(name, value, callback) {\n const { filter } = this.props;\n\n filter(name, value);\n callback();\n },\n\n getCollectorsFilter() {\n const { collectors, filters } = this.props;\n const collectorMapper = (collector) => `${collector.id};${collector.name}`;\n\n const collectorItems = collectors\n .sort((c1, c2) => naturalSortIgnoreCase(c1.name, c2.name))\n // TODO: Hack to be able to filter in SelectPopover. We should change that to avoid this hack.\n .map(collectorMapper);\n\n const collectorFormatter = (collectorId) => {\n const [id] = collectorId.split(';');\n const collector = lodash.find(collectors, { id: id });\n\n return ;\n };\n\n const filter = ([collectorId], callback) => {\n const [id] = collectorId ? collectorId.split(';') : [];\n\n this.onFilterChange('collector', id, callback);\n };\n\n let collectorFilter;\n\n if (filters.collector) {\n const collector = collectors.find((c) => c.id === filters.collector);\n\n collectorFilter = collector ? collectorMapper(collector) : undefined;\n }\n\n return (\n Collector }\n items={collectorItems}\n itemFormatter={collectorFormatter}\n onItemSelect={filter}\n selectedItems={collectorFilter ? [collectorFilter] : []}\n filterPlaceholder=\"Filter by collector\" />\n );\n },\n\n getConfigurationFilter() {\n const { configurations, filters } = this.props;\n\n const configurationMapper = (configuration) => `${configuration.id};${configuration.name}`;\n const configurationItems = configurations\n .sort((c1, c2) => naturalSortIgnoreCase(c1.name, c2.name))\n // TODO: Hack to be able to filter in SelectPopover. We should change that to avoid this hack.\n .map(configurationMapper);\n\n const configurationFormatter = (configurationId) => {\n const [id] = configurationId.split(';');\n const configuration = lodash.find(configurations, { id: id });\n\n return {configuration.name};\n };\n\n const filter = ([configurationId], callback) => {\n const [id] = configurationId ? configurationId.split(';') : [];\n\n this.onFilterChange('configuration', id, callback);\n };\n\n let configurationFilter;\n\n if (filters.configuration) {\n const configuration = configurations.find((c) => c.id === filters.configuration);\n\n configurationFilter = configuration ? configurationMapper(configuration) : undefined;\n }\n\n return (\n Configuration }\n items={configurationItems}\n itemFormatter={configurationFormatter}\n onItemSelect={filter}\n selectedItems={configurationFilter ? [configurationFilter] : []}\n filterPlaceholder=\"Filter by configuration\" />\n );\n },\n\n getOSFilter() {\n const { collectors, filters } = this.props;\n\n const operatingSystems = lodash\n .uniq(collectors.map((collector) => lodash.upperFirst(collector.node_operating_system)))\n .sort(naturalSortIgnoreCase);\n\n const filter = ([os], callback) => this.onFilterChange('os', os, callback);\n\n const osFilter = filters.os;\n\n return (\n OS }\n items={operatingSystems}\n onItemSelect={filter}\n selectedItems={osFilter ? [osFilter] : []}\n filterPlaceholder=\"Filter by OS\" />\n );\n },\n\n getStatusFilter() {\n const { filters } = this.props;\n const status = Object.keys(SidecarStatusEnum.properties).map((key) => String(key));\n const filter = ([statusCode], callback) => this.onFilterChange('status', statusCode, callback);\n\n const statusFilter = filters.status;\n const statusFormatter = (statusCode) => lodash.upperFirst(SidecarStatusEnum.toString(statusCode));\n\n return (\n Collector Status }\n items={status}\n itemFormatter={statusFormatter}\n onItemSelect={filter}\n selectedItems={statusFilter ? [statusFilter] : []}\n filterPlaceholder=\"Filter by collector status\" />\n );\n },\n\n render() {\n return (\n \n {this.getCollectorsFilter()}\n {this.getConfigurationFilter()}\n {this.getStatusFilter()}\n {this.getOSFilter()}\n \n );\n },\n});\n\nexport default CollectorsAdministrationFilters;\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[6].use[1]!./FiltersSummary.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[6].use[1]!./FiltersSummary.css\";\n export default content && content.locals ? content.locals : undefined;\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';\nimport lodash from 'lodash';\n\nimport { Button, Col, Row } from 'components/bootstrap';\nimport { Icon } from 'components/common';\nimport SidecarStatusEnum from 'logic/sidecar/SidecarStatusEnum';\n\nimport style from './FiltersSummary.css';\n\nclass FiltersSummary extends React.Component {\n static propTypes = {\n collectors: PropTypes.array.isRequired,\n configurations: PropTypes.array.isRequired,\n filters: PropTypes.object.isRequired,\n onResetFilters: PropTypes.func.isRequired,\n };\n\n formatFilter = (type, value) => {\n const { collectors, configurations } = this.props;\n\n if (type === 'collector') {\n // Get collector name\n const collector = collectors.find((c) => c.id === value);\n\n return `${collector.name} on ${collector.node_operating_system}`;\n }\n\n if (type === 'configuration') {\n // Get configuration name\n return configurations.find((c) => c.id === value).name;\n }\n\n if (type === 'status') {\n // Convert status code to string\n return SidecarStatusEnum.toString(value);\n }\n\n return value;\n };\n\n formatFilters = (filters) => {\n return Object.keys(filters).map((filterKey) => {\n return
  • {filterKey}: {this.formatFilter(filterKey, filters[filterKey])}
  • ;\n });\n };\n\n render() {\n const { filters, onResetFilters } = this.props;\n\n if (lodash.isEmpty(filters)) {\n return null;\n }\n\n return (\n \n \n
      \n
    • Filters
    • \n {this.formatFilters(filters)}\n
    • \n \n
    • \n
    \n \n
    \n );\n }\n}\n\nexport default FiltersSummary;\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, { useState, useRef, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport lodash from 'lodash';\nimport styled, { css } from 'styled-components';\n\nimport { naturalSortIgnoreCase } from 'util/SortUtils';\nimport { Link } from 'components/common/router';\nimport { ControlledTableList, PaginatedList, IconButton } from 'components/common';\nimport Routes from 'routing/Routes';\nimport { Col, Row, Input } from 'components/bootstrap';\nimport ColorLabel from 'components/sidecars/common/ColorLabel';\nimport OperatingSystemIcon from 'components/sidecars/common/OperatingSystemIcon';\nimport SidecarSearchForm from 'components/sidecars/common/SidecarSearchForm';\nimport StatusIndicator from 'components/sidecars/common/StatusIndicator';\nimport commonStyle from 'components/sidecars/common/CommonSidecarStyles.css';\nimport type { Pagination } from 'views/stores/DashboardsStore';\n\nimport CollectorsAdministrationActions from './CollectorsAdministrationActions';\nimport CollectorsAdministrationFilters from './CollectorsAdministrationFilters';\nimport CollectorConfigurationModalContainer from './CollectorConfigurationModalContainer';\nimport FiltersSummary from './FiltersSummary';\n\nimport type { Collector, Configuration, SidecarCollectorPairType, SidecarSummary } from '../types';\n\nconst HeaderComponentsWrapper = styled.div(({ theme }) => css`\n float: right;\n margin: 5px 0;\n\n .btn-link {\n color: ${theme.colors.variant.darker.default};\n }\n`);\n\nconst CollectorEntry = styled.div`\n .row {\n margin-bottom: 5px;\n }\n .form-group {\n display: inline-block;\n margin: 0 10px 0 0;\n }\n .checkbox {\n margin-top: 5px;\n margin-bottom: 5px;\n }\n .checkbox label {\n font-size: 1rem; /* theme.fonts.size.body */\n }\n`;\n\nconst DisabledCollector = styled(CollectorEntry)(({ theme }) => css`\n color: ${theme.colors.variant.light.default};\n margin-left: 20px;\n`);\n\nconst AdditionalContent = styled.span`\n display: flex;\n margin-top: 5px;\n flex-wrap: wrap;\n`;\n\nconst AlignedInformation = styled.span`\n margin-left: 20px;\n`;\n\nconst PaginatedListContainer = styled.div`\n .page-size {\n padding-top: 4px;\n }\n .search {\n margin-bottom: 15px;\n }\n`;\n\nconst StyledColorLabelContainer = styled.span`\n .color-label-wrapper {\n display: flex;\n }\n`;\n\nexport const PAGE_SIZES = [10, 25, 50, 100];\n\ntype Props = {\n collectors: Collector[],\n configurations: Configuration[],\n sidecarCollectorPairs: SidecarCollectorPairType[],\n query: string,\n filters: { [_key: string]: string },\n pagination: Pagination,\n onPageChange: (currentPage: number, pageSize: number) => void,\n onFilter: (collectorIds?: string[], callback?: () => void) => void,\n onQueryChange: (query?: string, callback?: () => void) => void,\n onConfigurationChange: (pairs: SidecarCollectorPairType[], configs: Configuration[], callback: () => void) => void,\n onProcessAction: (action: string, collectorDict: { [sidecarId: string]: string[] }, callback: () => void) => void,\n};\n\nconst CollectorsAdministration = ({\n configurations,\n collectors,\n onPageChange,\n pagination,\n query,\n sidecarCollectorPairs,\n filters,\n onFilter,\n onQueryChange,\n onConfigurationChange,\n onProcessAction,\n}: Props) => {\n const [showConfigurationModal, setShowConfigurationModal] = useState(false);\n const [selected, setSelected] = useState([]);\n const selectAllInput = useRef(null);\n\n // Filter out sidecars with no compatible collectors\n const enabledCollectors = sidecarCollectorPairs.filter(({ collector }) => !lodash.isEmpty(collector));\n\n const sidecarCollectorId = (sidecar: SidecarSummary, collector: Collector) => {\n return `${sidecar.node_id}-${collector.name}`;\n };\n\n const isAllSelected = (_collectors: (SidecarCollectorPairType|Collector)[], _selected: string[]) => {\n return _collectors.length > 0 && _collectors.length === _selected.length;\n };\n\n useEffect(() => {\n const selectAllCheckbox = selectAllInput ? selectAllInput.current.getInputDOMNode() : undefined;\n\n if (selectAllCheckbox) {\n // Set the select all checkbox as indeterminate if some but not all items are selected.\n selectAllCheckbox.indeterminate = selected.length > 0 && !isAllSelected(collectors, selected);\n }\n }, [selectAllInput, collectors, selected]);\n\n const handleConfigurationChange = (selectedSidecars: SidecarCollectorPairType[], selectedConfigurations: Configuration[], doneCallback: () => void) => {\n onConfigurationChange(selectedSidecars, selectedConfigurations, doneCallback);\n };\n\n const handleProcessAction = (action: string, selectedSidecarCollectorPairs: SidecarCollectorPairType[], doneCallback: () => void) => {\n const selectedCollectors = {};\n\n selectedSidecarCollectorPairs.forEach(({ sidecar, collector }) => {\n if (selectedCollectors[sidecar.node_id]) {\n selectedCollectors[sidecar.node_id].push(collector.id);\n } else {\n selectedCollectors[sidecar.node_id] = [collector.id];\n }\n });\n\n onProcessAction(action, selectedCollectors, doneCallback);\n };\n\n const toggleSelectAll = (event) => {\n const newSelection = (event.target.checked\n ? enabledCollectors.map(({ sidecar, collector }) => sidecarCollectorId(sidecar, collector))\n : []);\n\n setSelected(newSelection);\n };\n\n const formatHeader = (selectedSidecarCollectorPairs: SidecarCollectorPairType[]) => {\n const selectedItems = selected.length;\n\n let headerMenu;\n\n if (selectedItems === 0) {\n headerMenu = (\n \n );\n } else {\n headerMenu = (\n \n );\n }\n\n return (\n \n {headerMenu}\n\n \n \n );\n };\n\n const handleSidecarCollectorSelect = (collectorId: string) => {\n return (event) => {\n const newSelection = (event.target.checked\n ? lodash.union(selected, [collectorId])\n : lodash.without(selected, collectorId));\n\n setSelected(newSelection);\n };\n };\n\n const formatSidecarNoCollectors = (sidecar: SidecarSummary) => {\n return (\n \n \n \n \n

    \n {sidecar.node_name} \n  {sidecar.node_id}\n

    \n \n
    \n \n \n \n No collectors compatible with {sidecar.node_details.operating_system}\n \n \n \n
    \n
    \n );\n };\n\n const formatCollector = (sidecar: SidecarSummary, collector: Collector, _configurations: Configuration[]) => {\n const collectorId = sidecarCollectorId(sidecar, collector);\n const configAssignmentIDs = sidecar.assignments.filter((assignment) => assignment.collector_id === collector.id).map((assignment) => assignment.configuration_id);\n const configAssignments = _configurations.filter((config) => configAssignmentIDs.includes(config.id)).sort((c1, c2) => naturalSortIgnoreCase(c1.name, c2.name));\n let collectorStatus = { status: null, message: null, id: null };\n\n try {\n const result = sidecar.node_details.status.collectors.find((c) => c.collector_id === collector.id);\n\n if (result) {\n collectorStatus = {\n status: result.status,\n message: result.message,\n id: result.collector_id,\n };\n }\n } catch (e) {\n // Do nothing\n }\n\n return (\n \n \n \n \n \n \n {(configAssignments.length > 0) && (\n \n )}\n \n \n \n \n {(configAssignments.length > 0)\n && (\n {\n setSelected([collectorId]);\n setShowConfigurationModal(true);\n }} />\n )}\n {configAssignments.map((configuration) => (\n \n \n \n \n \n ),\n )}\n \n \n \n );\n };\n\n const formatSidecar = (sidecar: SidecarSummary, _collectors: Collector[], _configurations: Configuration[]) => {\n if (_collectors.length === 0) {\n return formatSidecarNoCollectors(sidecar);\n }\n\n return (\n \n \n \n \n \n {sidecar.node_name} \n  {sidecar.node_id} {!sidecar.active && — inactive}\n \n \n \n {_collectors.map((collector) => formatCollector(sidecar, collector, _configurations))}\n \n \n );\n };\n\n const handleSearch = (_query: string, callback: () => void) => {\n onQueryChange(_query, callback);\n };\n\n const handleReset = () => {\n onQueryChange();\n };\n\n const handleResetFilters = () => {\n onFilter();\n };\n\n const handlePageChange = (page: number, pageSize: number) => {\n setSelected([]);\n onPageChange(page, pageSize);\n };\n\n const selectedSidecarCollectorPairs = selected.map((selectedSidecarCollectorId) => {\n return sidecarCollectorPairs.find(({ sidecar, collector }) => sidecarCollectorId(sidecar, collector) === selectedSidecarCollectorId);\n });\n\n let formattedCollectors;\n\n if (sidecarCollectorPairs.length === 0) {\n formattedCollectors = (\n \n {sidecarCollectorPairs.length === 0 ? 'There are no collectors to display' : 'Filters do not match any collectors'}\n \n );\n } else {\n const sidecars = lodash.uniq(sidecarCollectorPairs.map(({ sidecar }) => sidecar));\n\n formattedCollectors = sidecars.map((sidecarToMap) => {\n const sidecarCollectors = sidecarCollectorPairs\n .filter(({ sidecar }) => sidecar.node_id === sidecarToMap.node_id)\n .map(({ collector }) => collector)\n .filter((collector) => !lodash.isEmpty(collector));\n\n return formatSidecar(sidecarToMap, sidecarCollectors, configurations);\n });\n }\n\n return (\n \n \n \n \n \n \n \n {formatHeader(selectedSidecarCollectorPairs)}\n {formattedCollectors}\n \n \n \n \n {\n setSelected([]);\n setShowConfigurationModal(false);\n }} />\n \n );\n};\n\nCollectorsAdministration.propTypes = {\n sidecarCollectorPairs: PropTypes.array.isRequired,\n collectors: PropTypes.array.isRequired,\n configurations: PropTypes.array.isRequired,\n pagination: PropTypes.object.isRequired,\n query: PropTypes.string.isRequired,\n filters: PropTypes.object.isRequired,\n onPageChange: PropTypes.func.isRequired,\n onFilter: PropTypes.func.isRequired,\n onQueryChange: PropTypes.func.isRequired,\n onConfigurationChange: PropTypes.func.isRequired,\n onProcessAction: PropTypes.func.isRequired,\n};\n\nexport default CollectorsAdministration;\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';\n// eslint-disable-next-line no-restricted-imports\nimport createReactClass from 'create-react-class';\nimport PropTypes from 'prop-types';\nimport Reflux from 'reflux';\nimport lodash from 'lodash';\n\nimport { naturalSortIgnoreCase } from 'util/SortUtils';\nimport { Spinner } from 'components/common';\nimport withPaginationQueryParameter from 'components/common/withPaginationQueryParameter';\nimport { CollectorConfigurationsActions, CollectorConfigurationsStore } from 'stores/sidecars/CollectorConfigurationsStore';\nimport { CollectorsActions, CollectorsStore } from 'stores/sidecars/CollectorsStore';\nimport { SidecarsActions } from 'stores/sidecars/SidecarsStore';\nimport { SidecarsAdministrationActions, SidecarsAdministrationStore } from 'stores/sidecars/SidecarsAdministrationStore';\n\nimport CollectorsAdministration, { PAGE_SIZES } from './CollectorsAdministration';\n\nconst CollectorsAdministrationContainer = createReactClass({\n // eslint-disable-next-line react/no-unused-class-component-methods\n propTypes: {\n nodeId: PropTypes.string,\n paginationQueryParameter: PropTypes.object.isRequired,\n },\n\n mixins: [Reflux.connect(CollectorsStore, 'collectors'), Reflux.connect(SidecarsAdministrationStore, 'sidecars'), Reflux.connect(CollectorConfigurationsStore, 'configurations')],\n\n getDefaultProps() {\n return {\n nodeId: undefined,\n };\n },\n\n componentDidMount() {\n this.loadData(this.props.nodeId);\n this.interval = setInterval(this.reloadSidecars, 5000);\n },\n\n componentDidUpdate(prevProps) {\n if (prevProps.nodeId !== this.props.nodeId) {\n // This means the user changed the URL, so we don't need to keep the previous state.\n this.loadData(this.props.nodeId);\n }\n },\n\n componentWillUnmount() {\n if (this.interval) {\n clearInterval(this.interval);\n }\n },\n\n handlePageChange(page, pageSize) {\n const { filters, query } = this.state.sidecars;\n\n SidecarsAdministrationActions.list({ query, filters, page, pageSize });\n },\n\n handleFilter(property, value) {\n const { resetPage, pageSize } = this.props.paginationQueryParameter;\n const { filters, query } = this.state.sidecars;\n let newFilters;\n\n if (property) {\n newFilters = lodash.cloneDeep(filters);\n newFilters[property] = value;\n } else {\n newFilters = {};\n }\n\n resetPage();\n\n SidecarsAdministrationActions.list({ query, filters: newFilters, pageSize, page: 1 });\n },\n\n handleQueryChange(query = '', callback = () => {}) {\n const { resetPage, pageSize } = this.props.paginationQueryParameter;\n const { filters } = this.state.sidecars;\n\n resetPage();\n\n SidecarsAdministrationActions.list({ query, filters, pageSize, page: 1 }).finally(callback);\n },\n\n handleConfigurationChange(selectedSidecars, selectedConfigurations, doneCallback) {\n SidecarsActions.assignConfigurations(selectedSidecars, selectedConfigurations).then((response) => {\n doneCallback();\n const { query, filters } = this.state.sidecars;\n const { page, pageSize } = this.props.paginationQueryParameter;\n\n SidecarsAdministrationActions.list({ query, filters, pageSize, page });\n\n return response;\n });\n },\n\n handleProcessAction(action, selectedCollectors, doneCallback) {\n SidecarsAdministrationActions.setAction(action, selectedCollectors).then((response) => {\n doneCallback();\n\n return response;\n });\n },\n\n reloadSidecars() {\n if (this.state.sidecars) {\n SidecarsAdministrationActions.refreshList();\n }\n },\n\n loadData(nodeId) {\n const { page, pageSize } = this.props.paginationQueryParameter;\n const query = nodeId ? `node_id:${nodeId}` : '';\n\n CollectorsActions.all();\n SidecarsAdministrationActions.list({ query, page, pageSize });\n CollectorConfigurationsActions.all();\n },\n\n render() {\n const { collectors, configurations, sidecars } = this.state;\n\n if (!collectors || !collectors.collectors || !sidecars || !sidecars.sidecars || !configurations || !configurations.configurations) {\n return ;\n }\n\n const sidecarCollectors = [];\n\n sidecars.sidecars\n .sort((s1, s2) => naturalSortIgnoreCase(s1.node_name, s2.node_name))\n .forEach((sidecar) => {\n const compatibleCollectorIds = sidecar.collectors;\n\n if (lodash.isEmpty(compatibleCollectorIds)) {\n sidecarCollectors.push({ collector: {}, sidecar: sidecar });\n\n return;\n }\n\n compatibleCollectorIds\n .map((id) => lodash.find(collectors.collectors, { id: id }))\n .forEach((compatibleCollector) => {\n sidecarCollectors.push({ collector: compatibleCollector, sidecar: sidecar });\n });\n });\n\n return (\n \n );\n },\n});\n\nexport default withPaginationQueryParameter(CollectorsAdministrationContainer, { pageSizes: PAGE_SIZES });\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\nimport { Col, Row } from 'components/bootstrap';\nimport DocsHelper from 'util/DocsHelper';\nimport { DocumentTitle, PageHeader } from 'components/common';\nimport CollectorsAdministrationContainer from 'components/sidecars/administration/CollectorsAdministrationContainer';\nimport SidecarsPageNavigation from 'components/sidecars/common/SidecarsPageNavigation';\nimport withLocation from 'routing/withLocation';\n\nconst SidecarAdministrationPage = ({ location: { query: { node_id: nodeId } } }) => (\n \n \n \n \n The Graylog collectors can reliably forward contents of log files or Windows EventLog from your servers.\n \n \n\n \n \n \n \n \n \n);\n\nSidecarAdministrationPage.propTypes = {\n location: PropTypes.object.isRequired,\n};\n\nexport default withLocation(SidecarAdministrationPage);\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 moment from 'moment';\n\nimport { defaultCompare as naturalSort } from 'logic/DefaultCompare';\n\ntype SortOrder = 'asc' | 'desc';\n\nexport function sortByDate(d1: string, d2: string, sortOrder: SortOrder = 'asc') {\n const d1Time = moment(d1);\n const d2Time = moment(d2);\n\n if (sortOrder === 'asc') {\n return (d1Time.isBefore(d2Time) ? -1 : d2Time.isBefore(d1Time) ? 1 : 0);\n }\n\n return (d2Time.isBefore(d1Time) ? -1 : d1Time.isBefore(d2Time) ? 1 : 0);\n}\n\nexport function naturalSortIgnoreCase(s1: string, s2: string, sortOrder: SortOrder = 'asc') {\n return (sortOrder === 'asc' ? naturalSort(s1.toLowerCase(), s2.toLowerCase()) : naturalSort(s2.toLowerCase(), s1.toLowerCase()));\n}\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".Lrll75Yl_6CGdqA_fws8 {\\n vertical-align: baseline;\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/sidecars/administration/FiltersSummary.css\"],\"names\":[],\"mappings\":\"AAAA;IACI,wBAAwB;AAC5B\",\"sourcesContent\":[\":local(.deleteButton) {\\n vertical-align: baseline;\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"deleteButton\": \"Lrll75Yl_6CGdqA_fws8\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".zL2vwyqmPLuE_eSRQt1q {\\n margin-top: 10px;\\n}\\n\\n.zL2vwyqmPLuE_eSRQt1q dt {\\n float: left;\\n clear: left;\\n}\\n\\n.zL2vwyqmPLuE_eSRQt1q dd {\\n margin-left: 160px;\\n}\\n\\n.m4So8k7QXl39uuSoP2WS {\\n margin-top: 10px;\\n}\\n\\n.Bfhoisypey7je2baSbGs {\\n opacity: 0.5;\\n z-index: 20;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/sidecars/common/CommonSidecarStyles.css\"],\"names\":[],\"mappings\":\"AAAA;IACI,gBAAgB;AACpB;;AAEA;IACI,WAAW;IACX,WAAW;AACf;;AAEA;IACI,kBAAkB;AACtB;;AAEA;IACI,gBAAgB;AACpB;;AAEA;IACI,YAAY;IACZ,WAAW;AACf\",\"sourcesContent\":[\":local(.deflist) {\\n margin-top: 10px;\\n}\\n\\n:local(.deflist) dt {\\n float: left;\\n clear: left;\\n}\\n\\n:local(.deflist) dd {\\n margin-left: 160px;\\n}\\n\\n:local(.topMargin) {\\n margin-top: 10px;\\n}\\n\\n:local(.greyedOut) {\\n opacity: 0.5;\\n z-index: 20;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"deflist\": \"zL2vwyqmPLuE_eSRQt1q\",\n\t\"topMargin\": \"m4So8k7QXl39uuSoP2WS\",\n\t\"greyedOut\": \"Bfhoisypey7je2baSbGs\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[6].use[1]!./CommonSidecarStyles.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[6].use[1]!./CommonSidecarStyles.css\";\n export default content && content.locals ? content.locals : undefined;\n"],"names":["createReactClass","propTypes","collector","PropTypes","operatingSystem","getDefaultProps","undefined","render","this","props","lodash","ColorLabelWrap","styled","size","theme","body","small","tiny","fonts","fontSize","css","ColorLabel","color","text","borderColor","utils","colorLevel","textColor","contrastingColor","className","style","backgroundColor","border","overflow","textOverflow","maxWidth","marginRight","marginBottom","themePropTypes","defaultProps","withTheme","SidecarsAdministrationActions","singletonActions","Reflux","list","asyncResult","refreshList","setAction","SidecarsAdministrationStore","singletonStore","listenables","sourceUrl","sidecars","filters","pagination","count","page","pageSize","total","query","propagateChanges","trigger","per_page","promise","fetchPeriodically","URLUtils","then","response","error","UserNotification","status","responseMessage","message","action","collectors","formattedCollectors","Object","keys","map","sidecarId","sidecar_id","collector_ids","length","ConfigurationContainer","ConfigurationTable","Table","NoConfigurationMessage","AddNewConfiguration","SecondaryText","TableRow","disabled","StickyTableRowFooter","IconTableCell","CollectorTableCell","ConfigurationTableCell","UnselectTableCell","ModalTitle","Modal","ModalSubTitle","StyledSearchForm","SearchForm","CollectorConfigurationModal","show","onCancel","onSave","selectedCollectorName","selectedSidecarNames","initialAssignedConfigs","initialPartiallyAssignedConfigs","unassignedConfigs","getRowData","searchQuery","setSearchQuery","useState","selectedConfigurations","setSelectedConfigurations","partiallySelectedConfigurations","setPartiallySelectedConfigurations","isNotDirty","rows","filter","configuration","match","_query","RegExp","getFilterQuery","configName","autoAssignedTags","selected","includes","partiallySelected","secondaryText","join","sidecar","node_name","isAssignedFromTags","key","onClick","name","title","type","CollectorIndicator","node_operating_system","showModal","onHide","onQueryChange","q","topMargin","colSpan","to","Routes","bsStyle","ConfigurationSummary","CollectorConfigurationModalContainer","configurations","selectedSidecarCollectorPairs","onConfigurationSelectionChange","nextAssignedConfigurations","setNextAssignedConfigurations","nextPartiallyAssignedConfigurations","setNextPartiallyAssignedConfigurations","modalConfirm","useRef","getSelectedLogCollector","sortConfigurationNames","configs","sort","config1","config2","naturalSortIgnoreCase","config","getAssignedConfigurations","_selectedSidecarCollectorPairs","selectedCollector","filteredAssignments","reduce","accumulator","concat","assignments","assignment","find","id","configuration_id","collector_id","fullyAssignedConfigs","partiallyAssignedConfigs","current","open","confirmConfigurationChange","doneCallback","assignedConfigurationsToSave","forEach","sidecarCollectorPair","selectedLogCollector","assignmentsToKeep","assignedConfigurationsToKeep","cancelConfigurationChange","getConfiguration","getCollector","getSidecars","configId","collectorId","assigned_from_tags","getAssignedFromTags","MemoizedConfigurationModal","useMemo","assignedConfigurations","unassignedConfigurations","filteredConfigs","getUnassignedConfigurations","_assignedConfigurations","occurrences","getFullyAndPartiallyAssignments","sidecarsSummary","numberOfSidecarsSummary","summary","ref","onConfirm","renderConfigurationSummary","PROCESS_ACTIONS","CollectorProcessControl","onProcessAction","selectedAction","setSelectedAction","isConfigurationWarningHidden","setIsConfigurationWarningHidden","modalRef","resetSelectedAction","confirmProcessAction","cancelProcessAction","hideConfigurationWarning","triggerNode","bsSize","items","itemFormatter","selectedItems","displayDataFilter","onItemSelect","processAction","hideCallback","selectedSidecars","allHaveConfigurationsAssigned","every","some","shouldShowConfigurationWarning","confirmButtonDisabled","header","singular","plural","value","renderSummaryContent","renderProcessActionSummary","ConfigurationButton","Button","CollectorsAdministrationActions","showConfigurationModal","setShowConfigurationModal","onCancelConfigurationModal","useCallback","selectedLogCollectorsNames","configButtonTooltip","onFilterChange","callback","getCollectorsFilter","collectorMapper","collectorItems","c1","c2","collectorFilter","c","split","filterPlaceholder","getConfigurationFilter","configurationMapper","configurationItems","configurationFilter","configurationId","getOSFilter","operatingSystems","osFilter","os","getStatusFilter","SidecarStatusEnum","String","statusFilter","statusCode","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","FiltersSummary","React","filterKey","formatFilter","onResetFilters","md","formatFilters","HeaderComponentsWrapper","colors","variant","darker","default","CollectorEntry","DisabledCollector","light","AdditionalContent","AlignedInformation","PaginatedListContainer","StyledColorLabelContainer","PAGE_SIZES","CollectorsAdministration","onPageChange","sidecarCollectorPairs","onFilter","onConfigurationChange","setSelected","selectAllInput","enabledCollectors","sidecarCollectorId","node_id","isAllSelected","_collectors","_selected","useEffect","selectAllCheckbox","getInputDOMNode","indeterminate","handleConfigurationChange","handleProcessAction","selectedCollectors","push","toggleSelectAll","event","newSelection","target","checked","handleSidecarCollectorSelect","formatSidecar","_configurations","OperatingSystemIcon","node_details","operating_system","formatSidecarNoCollectors","active","commonStyle","configAssignmentIDs","configAssignments","collectorStatus","result","e","lg","xs","label","onChange","StatusIndicator","lastSeen","last_seen","formatCollector","selectedSidecarCollectorId","sidecarToMap","sidecarCollectors","pageSizes","totalItems","SidecarSearchForm","onSearch","onReset","headerMenu","wrapperClassName","formatHeader","CollectorsAdministrationContainer","nodeId","paginationQueryParameter","mixins","CollectorsStore","CollectorConfigurationsStore","componentDidMount","loadData","interval","setInterval","reloadSidecars","componentDidUpdate","prevProps","componentWillUnmount","clearInterval","handlePageChange","state","handleFilter","property","resetPage","newFilters","handleQueryChange","finally","SidecarsActions","CollectorsActions","CollectorConfigurationsActions","s1","s2","compatibleCollectorIds","compatibleCollector","withPaginationQueryParameter","SidecarAdministrationPage","location","SidecarsPageNavigation","documentationLink","path","DocsHelper","withLocation","sortByDate","d1","d2","sortOrder","d1Time","moment","d2Time","isBefore","naturalSort","toLowerCase","___CSS_LOADER_EXPORT___","module","locals"],"sourceRoot":""}




    © 2015 - 2024 Weber Informatics LLC | Privacy Policy