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

web-interface.assets.1255d548-1149.5a24f2309d40a78fe7aa.js.map Maven / Gradle / Ivy

There is a newer version: 6.1.4
Show newest version
{"version":3,"file":"1255d548-1149.5a24f2309d40a78fe7aa.js","mappings":"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","sources":["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/SidecarSearchForm.css","webpack://graylog-web-interface/./src/components/sidecars/common/StatusIndicator.css","webpack://graylog-web-interface/./src/components/common/withPaginationQueryParameter.tsx","webpack://graylog-web-interface/./src/components/sidecars/common/SidecarSearchForm.css?304c","webpack://graylog-web-interface/./src/components/sidecars/common/SidecarSearchForm.jsx","webpack://graylog-web-interface/./src/components/sidecars/common/StatusIndicator.css?492e","webpack://graylog-web-interface/./src/components/sidecars/common/StatusIndicator.tsx","webpack://graylog-web-interface/./src/logic/sidecar/SidecarStatusEnum.js","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?ad7e","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.tsx","webpack://graylog-web-interface/./src/stores/sidecars/SidecarsStore.js","webpack://graylog-web-interface/./src/util/SortUtils.ts","webpack://graylog-web-interface/./node_modules/lodash/_baseIntersection.js","webpack://graylog-web-interface/./node_modules/lodash/_castArrayLikeObject.js","webpack://graylog-web-interface/./node_modules/lodash/countBy.js","webpack://graylog-web-interface/./node_modules/lodash/intersection.js","webpack://graylog-web-interface/./node_modules/lodash/lowerCase.js","webpack://graylog-web-interface/./node_modules/lodash/union.js","webpack://graylog-web-interface/./src/components/sidecars/common/CommonSidecarStyles.css?ba64"],"sourcesContent":["// 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","// 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, `.popover.i3CKk4UXmnkyBYYZ5r2x {\n    max-width: 500px;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/sidecars/common/SidecarSearchForm.css\"],\"names\":[],\"mappings\":\"AAAA;IACI,gBAAgB;AACpB\",\"sourcesContent\":[\".popover:local(.popoverWide) {\\n    max-width: 500px;\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"popoverWide\": `i3CKk4UXmnkyBYYZ5r2x`\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, `.xUMQPeRwYREG_QMMJHzD {\n    white-space: nowrap;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/sidecars/common/StatusIndicator.css\"],\"names\":[],\"mappings\":\"AAAA;IACI,mBAAmB;AACvB\",\"sourcesContent\":[\":local(.indicator) {\\n    white-space: nowrap;\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"indicator\": `xUMQPeRwYREG_QMMJHzD`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\n\nimport usePaginationQueryParameter from 'hooks/usePaginationQueryParameter';\n\nexport type PaginationQueryParameterObject = {\n  pageSizes?: number[];\n};\n\nconst withPaginationQueryParameter = >>(Component: C, obj?: PaginationQueryParameterObject) => function WrappedComponent(props: any) {\n  const result = usePaginationQueryParameter(obj?.pageSizes);\n\n  return ;\n};\n\nexport default withPaginationQueryParameter;\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[4].use[1]!./SidecarSearchForm.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[4].use[1]!./SidecarSearchForm.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';\n\nimport { OverlayTrigger, SearchForm, Icon } from 'components/common';\nimport { Popover, Table, Button } from 'components/bootstrap';\n\nimport style from './SidecarSearchForm.css';\n\nconst queryHelpPopover = (\n  \n    

Available search fields

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
FieldDescription
nameSidecar name
statusStatus of the sidecar as it appears in the list, i.e. running, failing, or unknown
operating_systemOperating system the sidecar is running on
last_seenDate and time when the sidecar last communicated with Graylog
node_idIdentifier of the sidecar
sidecar_versionSidecar version
\n

Examples

\n

\n Find sidecars that did not communicate with Graylog since a date:
\n {'last_seen:<=2018-04-10'}
\n

\n

\n Find sidecars with failing or unknown status:
\n status:failing status:unknown
\n

\n
\n);\n\nconst queryHelp = (\n \n \n \n);\n\nconst SidecarSearchForm = ({ query, onSearch, onReset, children }) => (\n \n {children}\n \n);\n\nSidecarSearchForm.propTypes = {\n query: PropTypes.string.isRequired,\n onSearch: PropTypes.func.isRequired,\n onReset: PropTypes.func.isRequired,\n children: PropTypes.element,\n};\n\nSidecarSearchForm.defaultProps = {\n children: undefined,\n};\n\nexport default SidecarSearchForm;\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[4].use[1]!./StatusIndicator.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[4].use[1]!./StatusIndicator.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 upperFirst from 'lodash/upperFirst';\n\nimport { Popover } from 'components/bootstrap';\nimport { OverlayTrigger, Icon } from 'components/common';\nimport SidecarStatusEnum from 'logic/sidecar/SidecarStatusEnum';\nimport { relativeDifference } from 'util/DateTime';\nimport useUserDateTime from 'hooks/useUserDateTime';\n\nimport style from './StatusIndicator.css';\n\ntype Props = {\n message: string,\n status: number,\n lastSeen: string,\n id: string,\n}\n\nconst StatusIndicator = ({ message: messageProp, status, lastSeen, id }: Props) => {\n const { toUserTimezone } = useUserDateTime();\n let message = messageProp;\n const text = upperFirst(SidecarStatusEnum.toString(status));\n const lastSeenDateTime = toUserTimezone(lastSeen);\n\n let icon;\n let className;\n\n switch (status) {\n case SidecarStatusEnum.RUNNING:\n className = 'text-success';\n icon = 'play';\n break;\n case SidecarStatusEnum.FAILING:\n className = 'text-danger';\n icon = 'exclamation-triangle';\n break;\n case SidecarStatusEnum.STOPPED:\n className = 'text-danger';\n icon = 'stop';\n break;\n default:\n className = 'text-info';\n icon = 'question-circle';\n message += ` (${relativeDifference(lastSeenDateTime)})`;\n }\n\n if (message && id) {\n const popover = (\n \n {message}\n \n );\n\n return (\n \n \n {text}\n \n \n );\n }\n\n return (\n \n {text}\n \n );\n};\n\nStatusIndicator.propTypes = {\n id: PropTypes.string,\n lastSeen: PropTypes.string,\n message: PropTypes.string,\n status: PropTypes.number,\n};\n\nStatusIndicator.defaultProps = {\n id: '',\n lastSeen: undefined,\n message: '',\n status: -1,\n};\n\nexport default StatusIndicator;\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 lowerCase from 'lodash/lowerCase';\nimport toNumber from 'lodash/toNumber';\n\nconst SidecarStatusEnum = {\n RUNNING: 0,\n UNKNOWN: 1,\n FAILING: 2,\n STOPPED: 3,\n properties: {\n 0: { name: 'running' },\n 1: { name: 'unknown' },\n 2: { name: 'failing' },\n 3: { name: 'stopped' },\n },\n\n isValidStatusCode(statusCode) {\n return Object.keys(this.properties).includes(String(statusCode));\n },\n\n toStatusCode(stringStatus) {\n const status = lowerCase(stringStatus);\n\n if (status === this.properties[this.RUNNING].name) {\n return this.RUNNING;\n }\n\n if (status === this.properties[this.FAILING].name) {\n return this.FAILING;\n }\n\n if (status === this.properties[this.STOPPED].name) {\n return this.STOPPED;\n }\n\n return this.UNKNOWN;\n },\n\n toString(statusCode) {\n switch (toNumber(statusCode)) {\n case this.RUNNING:\n return 'running';\n case this.FAILING:\n return 'failing';\n case this.STOPPED:\n return 'stopped';\n default:\n return 'unknown';\n }\n },\n};\n\nexport default SidecarStatusEnum;\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 upperFirst from 'lodash/upperFirst';\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 getInitialState() {\n return {\n sidecars: this.sidecars,\n filters: this.filters,\n query: this.query,\n pagination: this.pagination,\n };\n },\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('', `${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 isEqual from 'lodash/isEqual';\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';\nimport Alert from 'components/bootstrap/Alert';\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: #aaa;\n margin-top: -4px;\n margin-bottom: -2px;\n`;\n\nconst TableRow = styled.tr<{ disabled?: boolean }>(({ disabled = false }) => 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,\n .query {\n width: 100% !important;\n }\n`;\n\nconst InfoContainer = styled(Alert)`\n border: unset;\n margin-bottom: 0;\n margin-top: 4px;\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 = isEqual(selectedConfigurations, initialAssignedConfigs) && 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 });\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 {(rows.length > 0) && (\n \n Collector configurations that have a lock icon    have been assigned\n using tags and cannot be changed here.\n \n )}\n \n \n \n {(rows.length === 0) ? (\n \n \n No configurations available for the selected log\n collector.\n \n \n \n ) : (\n rows\n )}\n \n \n \n  Add a new\n configuration\n \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, useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport countBy from 'lodash/countBy';\nimport intersection from 'lodash/intersection';\nimport uniq from 'lodash/uniq';\nimport styled from 'styled-components';\n\nimport { naturalSortIgnoreCase } from 'util/SortUtils';\nimport { BootstrapModalConfirm } from 'components/bootstrap';\nimport useSendTelemetry from 'logic/telemetry/useSendTelemetry';\nimport { TELEMETRY_EVENT_TYPE } from 'logic/telemetry/Constants';\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 [showConfirmModal, setShowConfirmModal] = useState(false);\n const sendTelemetry = useSendTelemetry();\n\n const getSelectedLogCollector = () => (uniq(selectedSidecarCollectorPairs.map(({ collector }) => collector)))[0];\n\n const sortConfigurationNames = (configs: Configuration[]) => configs.sort((config1, config2) => naturalSortIgnoreCase(config1.name, config2.name))\n .map((config) => config.name);\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 = countBy(_assignedConfigurations);\n\n return [\n uniq(_assignedConfigurations.filter((config) => occurrences[config] === selectedSidecarCollectorPairs.length)),\n 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 setShowConfirmModal(true);\n };\n\n const cancelConfigurationChange = () => {\n setNextAssignedConfigurations([]);\n setNextPartiallyAssignedConfigurations([]);\n setShowConfirmModal(false);\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 = intersection(assignments, nextPartiallyAssignedConfigurations);\n const assignedConfigurationsToKeep = configurations.filter((config) => assignmentsToKeep.includes(config.name));\n configs = [...assignedConfigurationsToSave, ...assignedConfigurationsToKeep];\n }\n\n sendTelemetry(TELEMETRY_EVENT_TYPE.SIDECARS.CONFIGURATION_ASSIGNED, {\n app_pathname: 'sidecars',\n app_section: 'administration',\n });\n\n onConfigurationSelectionChange([sidecarCollectorPair], configs, doneCallback);\n });\n\n cancelConfigurationChange();\n onCancel();\n };\n\n const getConfiguration = (configName: string) => configurations.find((config) => config.name === configName);\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) => accumulator.concat(\n sidecar.assignments.find((assignment) => (assignment.collector_id === collectorId) && (assignment.configuration_id === configId)).assigned_from_tags,\n ), []);\n\n return 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 } from 'react';\nimport PropTypes from 'prop-types';\nimport capitalize from 'lodash/capitalize';\nimport uniq from 'lodash/uniq';\n\nimport { Button, Panel, BootstrapModalConfirm } from 'components/bootstrap';\nimport { Pluralize, SelectPopover } from 'components/common';\nimport useSendTelemetry from 'logic/telemetry/useSendTelemetry';\nimport { TELEMETRY_EVENT_TYPE } from 'logic/telemetry/Constants';\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 [showModal, setShowModal] = useState(false);\n const sendTelemetry = useSendTelemetry();\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 setShowModal(true);\n };\n\n const cancelProcessAction = () => {\n resetSelectedAction();\n setShowModal(false);\n };\n\n const confirmProcessAction = (doneCallback?: () => void) => {\n const callback = () => {\n if (doneCallback && typeof doneCallback === 'function') {\n doneCallback();\n }\n\n cancelProcessAction();\n };\n\n sendTelemetry(TELEMETRY_EVENT_TYPE.SIDECARS.PROCESS_ACTION_SET, {\n app_pathname: 'sidecars',\n app_section: 'administration',\n event_details: {\n action: selectedAction,\n },\n });\n\n onProcessAction(selectedAction, selectedSidecarCollectorPairs, callback);\n };\n\n const hideConfigurationWarning = () => {\n setIsConfigurationWarningHidden(true);\n };\n\n const renderSummaryContent = (selectedSidecars: string[]) => (\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 const renderConfigurationWarning = () => (\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 {capitalize(selectedAction)}ing a Collector without Configuration will have no effect.\n

\n \n
\n );\n\n const renderProcessActionSummary = () => {\n const selectedSidecars = uniq(selectedSidecarCollectorPairs.map(({ sidecar }) => sidecar.node_name));\n\n // Check if all selected collectors have assigned configurations\n const allHaveConfigurationsAssigned = selectedSidecarCollectorPairs.every(({ collector, sidecar }) => sidecar.assignments.some(({ collector_id }) => collector_id === collector.id));\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) => 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 uniq from 'lodash/uniq';\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 = uniq(selectedSidecarCollectorPairs.map(({ collector }) => collector.name));\n const disableConfigButton = !selectedSidecarCollectorPairs.length || selectedLogCollectorsNames.length !== 1;\n\n const getConfigButtonTooltip = () => {\n if (!selectedSidecarCollectorPairs.length) {\n return 'Incompatible collectors, please check your sidecar configuration.';\n }\n\n if (selectedLogCollectorsNames.length !== 1) {\n return `Cannot change configurations of ${selectedLogCollectorsNames.join(', ')} collectors simultaneously.`;\n }\n\n return 'Assign Configurations';\n };\n\n return (\n \n 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 find from 'lodash/find';\nimport uniq from 'lodash/uniq';\nimport upperFirst from 'lodash/upperFirst';\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 = 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 = 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 = uniq(collectors.map((collector) => 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) => 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[4].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[4].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 isEmpty from 'lodash/isEmpty';\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) => Object.keys(filters).map((filterKey) =>
  • {filterKey}: {this.formatFilter(filterKey, filters[filterKey])}
  • );\n\n render() {\n const { filters, onResetFilters } = this.props;\n\n if (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 isEmpty from 'lodash/isEmpty';\nimport union from 'lodash/union';\nimport uniq from 'lodash/uniq';\nimport without from 'lodash/without';\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';\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 .btn-toolbar {\n display: flex;\n max-height: 29px;\n }\n`);\n\nconst CollectorEntry = styled.div`\n .row {\n margin-bottom: 5px;\n }\n\n .form-group {\n display: inline-block;\n margin: 0 10px 0 0;\n }\n\n .checkbox {\n margin-top: 5px;\n margin-bottom: 5px;\n }\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\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: {\n total: number;\n count: number;\n page: number;\n perPage: number;\n },\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 }) => !isEmpty(collector));\n\n const sidecarCollectorId = (sidecar: SidecarSummary, collector: Collector) => `${sidecar.node_id}-${collector.name}`;\n\n const isAllSelected = (_collectors: (SidecarCollectorPairType|Collector)[], _selected: string[]) => _collectors.length > 0 && _collectors.length === _selected.length;\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) => (event) => {\n const newSelection = (event.target.checked\n ? union(selected, [collectorId])\n : without(selected, collectorId));\n\n setSelected(newSelection);\n };\n\n const formatSidecarNoCollectors = (sidecar: SidecarSummary) => (\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 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) => sidecarCollectorPairs.find(\n ({ sidecar, collector }) => sidecarCollectorId(sidecar, collector) === selectedSidecarCollectorId),\n ).filter((sidecarCollectorPair) => !!sidecarCollectorPair?.collector && !!sidecarCollectorPair?.sidecar);\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 = 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) => !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 cloneDeep from 'lodash/cloneDeep';\nimport find from 'lodash/find';\nimport isEmpty from 'lodash/isEmpty';\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 = 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 (isEmpty(compatibleCollectorIds)) {\n sidecarCollectors.push({ collector: {}, sidecar: sidecar });\n\n return;\n }\n\n compatibleCollectorIds\n .map((id) => 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';\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 useQuery from 'routing/useQuery';\n\nconst SidecarAdministrationPage = () => {\n const { node_id: nodeId } = useQuery();\n\n return (\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};\n\nexport default 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 Reflux from 'reflux';\nimport URI from 'urijs';\n\nimport * as URLUtils from 'util/URLUtils';\nimport UserNotification from 'util/UserNotification';\nimport fetch, { fetchPeriodically } from 'logic/rest/FetchProvider';\nimport { singletonStore, singletonActions } from 'logic/singleton';\n\nexport const SidecarsActions = singletonActions(\n 'core.Sidecars',\n () => Reflux.createActions({\n listPaginated: { asyncResult: true },\n getSidecar: { asyncResult: true },\n getSidecarActions: { asyncResult: true },\n restartCollector: { asyncResult: true },\n assignConfigurations: { asyncResult: true },\n }),\n);\n\nexport const SidecarsStore = singletonStore(\n 'core.Sidecars',\n () => Reflux.createStore({\n listenables: [SidecarsActions],\n sourceUrl: '/sidecars',\n sidecars: undefined,\n onlyActive: undefined,\n pagination: {\n count: undefined,\n page: undefined,\n pageSize: undefined,\n total: undefined,\n },\n query: undefined,\n sort: {\n field: undefined,\n order: undefined,\n },\n\n init() {\n this.propagateChanges();\n },\n\n propagateChanges() {\n this.trigger({\n sidecars: this.sidecars,\n query: this.query,\n onlyActive: this.onlyActive,\n pagination: this.pagination,\n sort: this.sort,\n });\n },\n\n listPaginated({ query = '', page = 1, pageSize = 50, onlyActive = false, sortField = 'node_name', order = 'asc' }) {\n const search = {\n query: query,\n page: page,\n per_page: pageSize,\n only_active: onlyActive,\n sort: sortField,\n order: order,\n };\n\n const uri = URI(this.sourceUrl).search(search).toString();\n const promise = fetchPeriodically('GET', URLUtils.qualifyUrl(uri));\n\n promise.then(\n (response) => {\n this.sidecars = response.sidecars;\n this.query = response.query;\n this.onlyActive = response.only_active;\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.sort = {\n field: response.sort,\n order: response.order,\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 SidecarsActions.listPaginated.promise(promise);\n },\n\n getSidecar(sidecarId) {\n const promise = fetchPeriodically('GET', URLUtils.qualifyUrl(`${this.sourceUrl}/${sidecarId}`));\n\n promise.catch((error) => {\n let errorMessage = `Fetching Sidecar failed with status: ${error}`;\n\n if (error.status === 404) {\n errorMessage = `Unable to find a sidecar with ID <${sidecarId}>, maybe it was inactive for too long.`;\n }\n\n UserNotification.error(errorMessage, 'Could not retrieve Sidecar');\n });\n\n SidecarsActions.getSidecar.promise(promise);\n },\n\n restartCollector(sidecarId, collector) {\n const action = {};\n\n action.collector = collector;\n action.properties = {};\n action.properties.restart = true;\n const promise = fetch('PUT', URLUtils.qualifyUrl(`${this.sourceUrl}/${sidecarId}/action`), [action]);\n\n promise\n .catch(\n (error) => {\n UserNotification.error(`Restarting Sidecar failed with status: ${error}`,\n 'Could not restart Sidecar');\n },\n );\n\n SidecarsActions.restartCollector.promise(promise);\n },\n\n getSidecarActions(sidecarId) {\n const promise = fetchPeriodically('GET', URLUtils.qualifyUrl(`${this.sourceUrl}/${sidecarId}/action`));\n\n promise\n .catch(\n (error) => {\n UserNotification.error(`Fetching Sidecar actions failed with status: ${error}`,\n 'Could not retrieve Sidecar actions');\n },\n );\n\n SidecarsActions.getSidecarActions.promise(promise);\n },\n\n toConfigurationAssignmentDto(nodeId, collectorId, configurationId) {\n return {\n node_id: nodeId,\n collector_id: collectorId,\n configuration_id: configurationId,\n };\n },\n\n assignConfigurations(sidecars, configurations) {\n const nodes = sidecars.map(({ sidecar, collector }) => {\n // Add all previous assignments, but the one that was changed\n const assignments = sidecar.assignments.filter((assignment) => assignment.collector_id !== collector.id);\n\n // Add new assignments\n configurations.forEach((configuration) => {\n assignments.push({ collector_id: collector.id, configuration_id: configuration.id });\n });\n\n return { node_id: sidecar.node_id, assignments: assignments };\n });\n\n const promise = fetch('PUT', URLUtils.qualifyUrl(`${this.sourceUrl}/configurations`), { nodes: nodes });\n\n promise\n .then(\n (response) => {\n UserNotification.success('', `Configuration change for ${sidecars.length} collectors requested`);\n\n return response;\n },\n (error) => {\n UserNotification.error(`Fetching Sidecar actions failed with status: ${error}`,\n 'Could not retrieve Sidecar actions');\n },\n );\n\n SidecarsActions.assignConfigurations.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 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","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n arrayMap = require('./_arrayMap'),\n baseUnary = require('./_baseUnary'),\n cacheHas = require('./_cacheHas');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin = Math.min;\n\n/**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\nfunction baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseIntersection;\n","var isArrayLikeObject = require('./isArrayLikeObject');\n\n/**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\nfunction castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n}\n\nmodule.exports = castArrayLikeObject;\n","var baseAssignValue = require('./_baseAssignValue'),\n createAggregator = require('./_createAggregator');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the number of times the key was returned by `iteratee`. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': 1, '6': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\nvar countBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n ++result[key];\n } else {\n baseAssignValue(result, key, 1);\n }\n});\n\nmodule.exports = countBy;\n","var arrayMap = require('./_arrayMap'),\n baseIntersection = require('./_baseIntersection'),\n baseRest = require('./_baseRest'),\n castArrayLikeObject = require('./_castArrayLikeObject');\n\n/**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\nvar intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n});\n\nmodule.exports = intersection;\n","var createCompounder = require('./_createCompounder');\n\n/**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\nvar lowerCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toLowerCase();\n});\n\nmodule.exports = lowerCase;\n","var baseFlatten = require('./_baseFlatten'),\n baseRest = require('./_baseRest'),\n baseUniq = require('./_baseUniq'),\n isArrayLikeObject = require('./isArrayLikeObject');\n\n/**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\nvar union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n});\n\nmodule.exports = union;\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[4].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[4].use[1]!./CommonSidecarStyles.css\";\n export default content && content.locals ? content.locals : undefined;\n"],"names":["___CSS_LOADER_EXPORT___","module","Component","obj","props","result","options","update","queryHelpPopover","queryHelp","query","onSearch","onReset","children","messageProp","status","lastSeen","id","toUserTimezone","useUserDateTime","message","text","SidecarStatusEnum","lastSeenDateTime","icon","className","popover","statusCode","stringStatus","SidecarsAdministrationActions","singleton","SidecarsAdministrationStore","page","pageSize","filters","body","promise","URLUtils","response","error","UserNotification","action","collectors","formattedCollectors","sidecarId","ConfigurationContainer","ConfigurationTable","NoConfigurationMessage","AddNewConfiguration","SecondaryText","TableRow","disabled","StickyTableRowFooter","IconTableCell","CollectorTableCell","ConfigurationTableCell","UnselectTableCell","ModalTitle","ModalSubTitle","StyledSearchForm","InfoContainer","Alert","getFilterQuery","_query","CollectorConfigurationModal","show","onCancel","onSave","selectedCollectorName","selectedSidecarNames","initialAssignedConfigs","initialPartiallyAssignedConfigs","unassignedConfigs","getRowData","searchQuery","setSearchQuery","selectedConfigurations","setSelectedConfigurations","partiallySelectedConfigurations","setPartiallySelectedConfigurations","isNotDirty","rows","configuration","configName","collector","sidecars","autoAssignedTags","selected","partiallySelected","secondaryText","sidecar","isAssignedFromTags","name","ColorLabel","CollectorIndicator","q","Routes","ConfigurationSummary","CollectorConfigurationModalContainer","configurations","selectedSidecarCollectorPairs","onConfigurationSelectionChange","nextAssignedConfigurations","setNextAssignedConfigurations","nextPartiallyAssignedConfigurations","setNextPartiallyAssignedConfigurations","showConfirmModal","setShowConfirmModal","sendTelemetry","useSendTelemetry","getSelectedLogCollector","sortConfigurationNames","configs","config1","config2","config","getAssignedConfigurations","_selectedSidecarCollectorPairs","selectedCollector","filteredAssignments","accumulator","assignment","getUnassignedConfigurations","assignedConfigurations","filteredConfigs","getFullyAndPartiallyAssignments","_assignedConfigurations","occurrences","fullyAssignedConfigs","partiallyAssignedConfigs","cancelConfigurationChange","confirmConfigurationChange","doneCallback","assignedConfigurationsToSave","sidecarCollectorPair","selectedLogCollector","assignments","assignmentsToKeep","assignedConfigurationsToKeep","getConfiguration","getCollector","getSidecars","getAssignedFromTags","configId","collectorId","assigned_from_tags","renderConfigurationSummary","sidecarsSummary","numberOfSidecarsSummary","summary","MemoizedConfigurationModal","unassignedConfigurations","PROCESS_ACTIONS","CollectorProcessControl","onProcessAction","selectedAction","setSelectedAction","isConfigurationWarningHidden","setIsConfigurationWarningHidden","showModal","setShowModal","resetSelectedAction","handleProcessActionSelect","processAction","hideCallback","cancelProcessAction","confirmProcessAction","callback","hideConfigurationWarning","renderSummaryContent","selectedSidecars","renderConfigurationWarning","renderProcessActionSummary","allHaveConfigurationsAssigned","collector_id","shouldShowConfigurationWarning","actionFormatter","ConfigurationButton","CollectorsAdministrationActions","showConfigurationModal","setShowConfigurationModal","onCancelConfigurationModal","selectedLogCollectorsNames","disableConfigButton","getConfigButtonTooltip","value","filter","collectorMapper","collectorItems","c1","c2","collectorFormatter","collectorFilter","c","configurationMapper","configurationItems","configurationFormatter","configurationId","configurationFilter","operatingSystems","os","osFilter","key","statusFilter","statusFormatter","type","filterKey","onResetFilters","HeaderComponentsWrapper","theme","CollectorEntry","DisabledCollector","AdditionalContent","AlignedInformation","PaginatedListContainer","StyledColorLabelContainer","PAGE_SIZES","CollectorsAdministration","onPageChange","pagination","sidecarCollectorPairs","onFilter","onQueryChange","onConfigurationChange","setSelected","selectAllInput","enabledCollectors","sidecarCollectorId","isAllSelected","_collectors","_selected","selectAllCheckbox","handleConfigurationChange","handleProcessAction","selectedCollectors","toggleSelectAll","event","newSelection","formatHeader","selectedItems","headerMenu","handleSidecarCollectorSelect","formatSidecarNoCollectors","OperatingSystemIcon","formatCollector","_configurations","configAssignmentIDs","configAssignments","collectorStatus","StatusIndicator","formatSidecar","handleSearch","handleReset","handleResetFilters","handlePageChange","selectedSidecarCollectorId","sidecarToMap","sidecarCollectors","SidecarSearchForm","CollectorsAdministrationContainer","CollectorsStore","CollectorConfigurationsStore","prevProps","property","resetPage","newFilters","nodeId","s1","s2","compatibleCollectorIds","compatibleCollector","withPaginationQueryParameter","useQuery","SidecarsPageNavigation","DocsHelper","SidecarsActions","SidecarsStore","onlyActive","sortField","order","search","uri","errorMessage","nodes","sortByDate","d1","d2","sortOrder","d1Time","d2Time","naturalSortIgnoreCase","SetCache","arrayIncludes","arrayIncludesWith","arrayMap","baseUnary","cacheHas","nativeMin","baseIntersection","arrays","iteratee","comparator","includes","length","othLength","othIndex","caches","maxLength","array","index","seen","outer","computed","cache","isArrayLikeObject","castArrayLikeObject","baseAssignValue","createAggregator","objectProto","hasOwnProperty","countBy","baseRest","intersection","mapped","createCompounder","lowerCase","word","baseFlatten","baseUniq","union"],"sourceRoot":""}




    © 2015 - 2024 Weber Informatics LLC | Privacy Policy